{"_id":"4rest","_rev":"15-046acfc1be01b656c0232abb35a02b4f","name":"4rest","dist-tags":{"latest":"2.0.0"},"versions":{"1.0.0":{"name":"4rest","version":"1.0.0","main":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"build":"tsc","test":"jest","test:cover":"jest --coverage","lint":"npx eslint **/*.{ts,tsx}","lint:fix":"npx eslint **/*.{ts,tsx} --fix","commit":"git-cz"},"release":{"branches":["main"]},"author":{"name":"Lior Vainer"},"license":"MIT","devDependencies":{"@babel/core":"^7.17.2","@babel/plugin-proposal-decorators":"^7.17.2","@babel/preset-env":"^7.16.11","@babel/preset-typescript":"^7.16.7","@types/jest":"^27.4.0","@typescript-eslint/eslint-plugin":"^4.29.0","@typescript-eslint/parser":"^4.29.0","axios-mock-adapter":"^1.20.0","babel-jest":"^27.5.1","cz-conventional-changelog":"3.3.0","eslint":"^6.8.0","eslint-config-airbnb":"^18.1.0","eslint-config-prettier":"^8.3.0","eslint-plugin-import":"^2.21.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-react":"^7.20.0","eslint-plugin-react-hooks":"^4.2.0","jest":"^27.5.1","semantic-release":"^19.0.2","ts-node":"^10.5.0","typescript":"^4.5.5"},"dependencies":{"axios":"0.22.0","cachios":"^3.1.1"},"repository":{"type":"git","url":"git+https://github.com/LiorVainer/forest.git"},"bugs":{"url":"https://github.com/LiorVainer/forest/issues"},"homepage":"https://github.com/LiorVainer/forest#readme","description":"REST Client built on top of axios and cachios","keywords":["Typescript","axios","cachios","rest","restful","crud","client","api-client","fetch"],"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"gitHead":"1257d4289481326ef1ec76e5ea362a8226dc47fa","_id":"4rest@1.0.0","_nodeVersion":"14.17.1","_npmVersion":"6.14.13","dist":{"integrity":"sha512-Arl3d+8+ZFId8Z4w+foQUqdE6AJ6M8IkfE51nI+sx3UFNsbPsLLEJj4YwBPRXBwtRhwS8bWD/YDuTvy978m5gw==","shasum":"38161db6fcece70532f682bdd74f91ff98108fac","tarball":"https://registry.npmjs.org/4rest/-/4rest-1.0.0.tgz","fileCount":39,"unpackedSize":56741,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiE3vrACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpYSA/+MwNW7al6THMG/xeC8Q2uIipTrR+w82La1B7SlnZLRl1F0mf3\r\n9/qGIRemYEW0HIUtQvuI6zaw98xOa0WvUS3W5uczU1mps+hgYTQSlLnwmwUK\r\n670bOl2Ljm52gypiKa6iqiDyPr+EU9qxGEHc764RVJHd0xpECMpvkMCphwk+\r\nIgTp/Wwsd2OKeQLO/493ZcbRM6NDW2RcxYkf6QCSeAuk/mxxEVqQs8KFoQm+\r\n7wZt25MGUPwTT8HCA9AiJD8C1PhwuHuNwpNeJbQhXUePfEtKUDOAIDf4MDPm\r\nYAADZc1rCbP3WBIerD9ze4+gRYgrq7Oqm3VWrXvOSBJGGQJGRGsPOiGq6QMB\r\n1JPcyqFEcn0UFZLvIhbhIs9Am3JRFvAVo5rd/VaS9u4DRbbIcC4W5z0gMibB\r\ncSHb92mUV5hq61rCHP6Lt4Phkl5us3JlTX76UwiPWN00nB/72ACn42vC/gID\r\nHvwT+t/7V2uKC4Q/IhGscEIDD/mYppAE5YXzZVd9WTqSCZXO2TElKoftU7kH\r\nwcJsSR2hYwWXO3cAr4bpQdgzV1RTVqbtN8+VxmKShPS7OXH6R7XseCJTgy59\r\nnfa7wbgbTcC6Je6jY0EaCfsqinCLH6xJB7lumxZu0trZfb/rd0xMg1LZ9Ip8\r\n7zC6c3n2WbUieliJYsfQ3PgaIZReRdoZq54=\r\n=Aq7g\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGNvZN4NwwIGVfrs9dDU1XIERXjjSEg/OcHFSP3kGb6BAiEAhetf6eVL0885SjRZch7fw1sIati0yEGtZvPTC/Ht57I="}]},"_npmUser":{"name":"liorvainer","email":"liorvainer@gmail.com"},"directories":{},"maintainers":[{"name":"liorvainer","email":"liorvainer@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/4rest_1.0.0_1645444075760_0.31360441969119623"},"_hasShrinkwrap":false},"1.0.1":{"name":"4rest","version":"1.0.1","main":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"build":"tsc","test":"jest","test:cover":"jest --coverage","lint":"npx eslint **/*.{ts,tsx}","lint:fix":"npx eslint **/*.{ts,tsx} --fix","commit":"git-cz"},"release":{"branches":["main"]},"author":{"name":"Lior Vainer"},"license":"MIT","devDependencies":{"@babel/core":"^7.17.2","@babel/plugin-proposal-decorators":"^7.17.2","@babel/preset-env":"^7.16.11","@babel/preset-typescript":"^7.16.7","@types/jest":"^27.4.0","@typescript-eslint/eslint-plugin":"^4.29.0","@typescript-eslint/parser":"^4.29.0","axios-mock-adapter":"^1.20.0","babel-jest":"^27.5.1","cz-conventional-changelog":"3.3.0","eslint":"^6.8.0","eslint-config-airbnb":"^18.1.0","eslint-config-prettier":"^8.3.0","eslint-plugin-import":"^2.21.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-react":"^7.20.0","eslint-plugin-react-hooks":"^4.2.0","jest":"^27.5.1","semantic-release":"^19.0.2","ts-node":"^10.5.0","typescript":"^4.5.5"},"dependencies":{"axios":"0.22.0","cachios":"^3.1.1"},"repository":{"type":"git","url":"git+https://github.com/LiorVainer/forest.git"},"bugs":{"url":"https://github.com/LiorVainer/forest/issues"},"homepage":"https://github.com/LiorVainer/forest#readme","description":"REST Client built on top of axios and cachios","keywords":["Typescript","axios","cachios","rest","restful","crud","client","api-client","fetch"],"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"gitHead":"8d221f9f59d16bd5556083607d66d905a3b63ccf","_id":"4rest@1.0.1","_nodeVersion":"14.17.1","_npmVersion":"6.14.13","dist":{"integrity":"sha512-guUJdPpDu+kUftVy0lT2sdZ+p5Cyt6vFZW7BFaxRPXgfuJqzUIt9dBBgDHD09O7KXodGc0K9t80pdk0lhFh34g==","shasum":"3923f6e9de918b185cda827a10b244799f5b709d","tarball":"https://registry.npmjs.org/4rest/-/4rest-1.0.1.tgz","fileCount":39,"unpackedSize":56741,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiE35AACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq84Q//dIBJBWb1H5Bz9Ma1Ku3s5jHxjksaFXOoyhqYT3ZADpxC+Ewl\r\ntzsVucqbF1jTZQd6VFANAjQebH+XUbd1Dfd4cNagu1LYIyVX2I9jEZJdeFOb\r\n8t4zwplEC+B0yYdLGAilXCmNACP323mQVbC8pgpLsAA+HLRrnkhaBI8QsKNV\r\nFTRWIJHv3H8Qt2NUgTkZSORXrWJcWsjcAxZXhFS9OxGORKaN2a5pgONC5K1q\r\nmccKVvfsPTc1mpd1kuIL9UfFiwCsqZBtlh1a96vWcy4ODXzJFrNmEK9Z+SzV\r\neis1TcrVa1cFyzcWjHbktgR+lmhUDs3TQB2jPupSAqz9ZimsV2N5oIo+kVWY\r\nd5hRnivC5F4mhvpXPzc0IUD6vG4z/mpcRxFmgOJEED0OyGc4LPRxzRokG06f\r\nqH+r92vEghdHvFagSNxYpiG41NNk1V3VQnEJBoqRn0xcQzdSAzWkXWujb6/7\r\nuB3QszvFVm6SN4kcrF8on0H3EAVzxG8826BBtAN37dTnrctJyaRsJ1yyFcJI\r\nKtRsN/XbIEvzc+pFyh/PyE9uDdvsdvTwf/ChtAvhJg6xkvlul6WTBt4XvB7e\r\ngnDqBOQtEKkQgOr0WgpN2X/h+gOFyjsAD34UCeUUGt+4S/6sWVUZ/fT09Bsv\r\nF9qoTUcM6V1Zb9oFRWwPJFe/6iorTcnSHZ4=\r\n=hPPC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAqyJY8UnenvSMAjRk+yxHIuykO/9u4hOSkjJmArsQ7OAiEAhHLBIphACMp4l4ebqAIWXJf9sHlNxKCDOfN9GsOp8vw="}]},"_npmUser":{"name":"liorvainer","email":"liorvainer@gmail.com"},"directories":{},"maintainers":[{"name":"liorvainer","email":"liorvainer@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/4rest_1.0.1_1645444671857_0.2518220352147018"},"_hasShrinkwrap":false},"1.0.2":{"name":"4rest","version":"1.0.2","main":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"build":"tsc","test":"jest","test:cover":"jest --coverage","lint":"npx eslint **/*.{ts,tsx}","lint:fix":"npx eslint **/*.{ts,tsx} --fix","commit":"git-cz"},"release":{"branches":["main"]},"author":{"name":"Lior Vainer"},"license":"MIT","devDependencies":{"@babel/core":"^7.17.2","@babel/plugin-proposal-decorators":"^7.17.2","@babel/preset-env":"^7.16.11","@babel/preset-typescript":"^7.16.7","@types/jest":"^27.4.0","@typescript-eslint/eslint-plugin":"^4.29.0","@typescript-eslint/parser":"^4.29.0","axios-mock-adapter":"^1.20.0","babel-jest":"^27.5.1","cz-conventional-changelog":"3.3.0","eslint":"^6.8.0","eslint-config-airbnb":"^18.1.0","eslint-config-prettier":"^8.3.0","eslint-plugin-import":"^2.21.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-react":"^7.20.0","eslint-plugin-react-hooks":"^4.2.0","jest":"^27.5.1","semantic-release":"^19.0.2","ts-node":"^10.5.0","typescript":"^4.5.5"},"dependencies":{"axios":"0.22.0","cachios":"^3.1.1"},"repository":{"type":"git","url":"git+https://github.com/LiorVainer/forest.git"},"bugs":{"url":"https://github.com/LiorVainer/forest/issues"},"homepage":"https://github.com/LiorVainer/forest#readme","description":"REST Client built on top of axios and cachios","keywords":["Typescript","axios","cachios","rest","restful","crud","client","api-client","fetch"],"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"gitHead":"8b4154d0cde507c3f4524793315031d1c1040277","_id":"4rest@1.0.2","_nodeVersion":"14.17.1","_npmVersion":"6.14.13","dist":{"integrity":"sha512-zmLrhvnCLU6ka+l+j7pQ62arCpE3SERVtx/TpK2AAP2AqL8vsZnxT2EoDR7pjHy3i0e7EUg54xOEQ47Pij91Cg==","shasum":"e61924367746cff96c575684b3bafc3de620c476","tarball":"https://registry.npmjs.org/4rest/-/4rest-1.0.2.tgz","fileCount":39,"unpackedSize":55191,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiE4TAACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqJaQ/9EtlaupWru+Y7wKitKQHD0DCN4NULksXjQS83zCsrW8wz2wtC\r\n1PDRTt8+KoTonbdk87JZMcww3nSVCPnYVl30doRE0CaouFb3SPrSvRHuY2DI\r\n8fkI0ydvXERgzJSWegjJnOLGTElfoZcNVOOJn7tTKgHO3PQrfxwUINQU/fxj\r\nv5Mlu2DfnjWYiH/2ANVbI8A8BqEVYWr5TIveqVvOrLXxG+3A0RW1jW1AaMqB\r\nqLL6/eGKbnKQoaJEpn7s2m1VKjjRgkkCCtxiDGzUF9zSncUphb70PoqHOyjm\r\nBtFvKALuaTGtWUb2UzFYVy0iSy+YHOpdcIQacw3XvE5G7JZzMmp0zzrHO2/G\r\nQ19F3pjyaKRXzmTqazVbmgctOzqDw0/JvScb4FSr0lP5EQja1VNjitS+R2pK\r\nlPeVQTPWghjCoHUcWbG2NWfRG7Z5bpRCPX7gNayqQAcOcoYhLk6rxshmv3bh\r\nA9YJqTrqkKwlphwFiGOOhDEUyWzChqTYEUeRchnipiL4CA5ZHYs2k7hRNLyT\r\nqpsmN4K5ohDiO8BYHAtyecMRZMv29RMoRWlfFXemf0O8iDPjWBVleAN/mXis\r\n/kqANsNkVgW2rz+wNk98FOox0BO1mS3eITlbUld3F2Me1gNMxQk+8EqUk6Ta\r\ne46S0TWxTDslTIn9lKQSkBHBNkKo+0awRGw=\r\n=XEXk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCnzL6rnSQePEdPX1HwjUEWabogwm2HS0T8vocK5fa9BAIgbCp4Bb8cANfdBtp3i8ScEm7zX/AEtNir3gpMQrvQV24="}]},"_npmUser":{"name":"liorvainer","email":"liorvainer@gmail.com"},"directories":{},"maintainers":[{"name":"liorvainer","email":"liorvainer@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/4rest_1.0.2_1645446336359_0.24001651843596172"},"_hasShrinkwrap":false},"1.0.3":{"name":"4rest","version":"1.0.3","main":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"build":"tsc","test":"jest","test:cover":"jest --coverage","lint":"npx eslint **/*.{ts,tsx}","lint:fix":"npx eslint **/*.{ts,tsx} --fix","commit":"git-cz"},"release":{"branches":["main"]},"author":{"name":"Lior Vainer"},"license":"MIT","devDependencies":{"@babel/core":"^7.17.2","@babel/plugin-proposal-decorators":"^7.17.2","@babel/preset-env":"^7.16.11","@babel/preset-typescript":"^7.16.7","@types/jest":"^27.4.0","@typescript-eslint/eslint-plugin":"^4.29.0","@typescript-eslint/parser":"^4.29.0","axios-mock-adapter":"^1.20.0","babel-jest":"^27.5.1","cz-conventional-changelog":"3.3.0","eslint":"^6.8.0","eslint-config-airbnb":"^18.1.0","eslint-config-prettier":"^8.3.0","eslint-plugin-import":"^2.21.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-react":"^7.20.0","eslint-plugin-react-hooks":"^4.2.0","jest":"^27.5.1","semantic-release":"^19.0.2","ts-node":"^10.5.0","typescript":"^4.5.5"},"dependencies":{"axios":"0.22.0","cachios":"^3.1.1"},"repository":{"type":"git","url":"git+https://github.com/LiorVainer/forest.git"},"bugs":{"url":"https://github.com/LiorVainer/forest/issues"},"homepage":"https://github.com/LiorVainer/forest#readme","description":"REST Client built on top of axios and cachios","keywords":["Typescript","axios","cachios","rest","restful","crud","client","api-client","fetch"],"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"gitHead":"647b1c7c81cf8ad40202cd69184e08a442fc1993","_id":"4rest@1.0.3","_nodeVersion":"14.17.1","_npmVersion":"6.14.13","dist":{"integrity":"sha512-C3zgRBTba4eN2f7bpDckQvY3CJgwYLHcRfsMeDZBckSQe/6IKivDE7WFSlHYwtWCEXyoocE/GgDtDS3xhlhH7g==","shasum":"43042ffc0771c94a40d6ff6dc91d4c0bdad9f2a7","tarball":"https://registry.npmjs.org/4rest/-/4rest-1.0.3.tgz","fileCount":39,"unpackedSize":55189,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiE4VkACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoIfw//S0iSYXROLU8SZc/ANu5KWcXo8tFeNlfPPrxW6qXUbULTWMpJ\r\nW1KH5MzJDhV1XuQfclWcKgwiyvWYa1ORr9hVAPT2Eez5ZuoS8AZgVjssF5LE\r\nMLdjYfo3+iTYxefPJ9AM52pKplhzhhQrjji9psM0eQYn/GOfEnvwAdHYeNj9\r\nPWAl3BqL0t6eB5pwFqkic+RCkuypP7mxceM86+g0U/OT6Mot+YJdtfttmJhx\r\n1rl3kr0oj05v2nOu6UF6ht/RuDt6MJp8zKWNPKj2d9Q//RA6JL7iwR6KOe5f\r\n+G87482vKDoLuQw3Vri/bm3Jpr/LHaBRdsm1KFtjX1Nz4P08z7PF+m50724z\r\nytkfztFdbLRDWI2dQh2AUoZ3gZiRCfKDyztVAVf0CjuJ9WX3uiuyRj5qqulA\r\nLcDOhbdaD8AFFAI2d7TIDXzuMNVC2dZLALVj7UpGxejOZ6l7yns0IV/fTAWs\r\nuoyN5eXhMm+bE62XP5KF6VGVQie61KX25liHcApEBjcxxALYDSdiLF1kHXRO\r\nXForz/yC65l/PqkDhlLPRLuwfqpWjjE4DOCwaz44c5C2mvzxj+nUSkHw6gzr\r\nrkXKlF3HtqRmFZ119LIEjq1dsRwKi7c2fe699z6w7YviAmmn7mO2eAYx1Neh\r\nvC8kj+jtOoyaoqW4AtGN6BsqNGHuHjukqo8=\r\n=emUn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC6tvpsZKzrbfpaukpfs5XME9E2FZrCg+HLlJvJp4EKtwIhANtozG/KFTBaRA/vbblrCT0Hxjsry8LaG2vdfteHTiZQ"}]},"_npmUser":{"name":"liorvainer","email":"liorvainer@gmail.com"},"directories":{},"maintainers":[{"name":"liorvainer","email":"liorvainer@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/4rest_1.0.3_1645446500547_0.6934232902024831"},"_hasShrinkwrap":false},"1.0.4":{"name":"4rest","version":"1.0.4","main":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"build":"tsc","test":"jest","test:cover":"jest --coverage","lint":"npx eslint **/*.{ts,tsx}","lint:fix":"npx eslint **/*.{ts,tsx} --fix","commit":"git-cz"},"release":{"branches":["main"]},"author":{"name":"Lior Vainer"},"license":"MIT","devDependencies":{"@babel/core":"^7.17.2","@babel/plugin-proposal-decorators":"^7.17.2","@babel/preset-env":"^7.16.11","@babel/preset-typescript":"^7.16.7","@types/jest":"^27.4.0","@typescript-eslint/eslint-plugin":"^4.29.0","@typescript-eslint/parser":"^4.29.0","axios-mock-adapter":"^1.20.0","babel-jest":"^27.5.1","cz-conventional-changelog":"3.3.0","eslint":"^6.8.0","eslint-config-airbnb":"^18.1.0","eslint-config-prettier":"^8.3.0","eslint-plugin-import":"^2.21.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-react":"^7.20.0","eslint-plugin-react-hooks":"^4.2.0","jest":"^27.5.1","semantic-release":"^19.0.2","ts-node":"^10.5.0","typescript":"^4.5.5"},"dependencies":{"axios":"0.22.0","cachios":"^3.1.1"},"repository":{"type":"git","url":"git+https://github.com/LiorVainer/forest.git"},"bugs":{"url":"https://github.com/LiorVainer/forest/issues"},"homepage":"https://github.com/LiorVainer/forest#readme","description":"REST Client built on top of axios and cachios","keywords":["Typescript","axios","cachios","rest","restful","crud","client","api-client","fetch"],"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"gitHead":"c0c4abd2170a48c44db99c647e576f5e4c394abf","_id":"4rest@1.0.4","_nodeVersion":"14.17.1","_npmVersion":"6.14.13","dist":{"integrity":"sha512-fZNi4mjue2vYN1qsMxeQoK6qCKSJaL1CJdy5FkYRJt5fQt5WdpeQgxh6LeSzNo6gDve6D4hkmwkVwSD0V8y7Pw==","shasum":"b3b14acbf4ccf0cac865b68e002619f4e88d0258","tarball":"https://registry.npmjs.org/4rest/-/4rest-1.0.4.tgz","fileCount":39,"unpackedSize":55187,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiE4YmACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqk4g//T9L4dpEjD9f+PTJFuyfn6PIkipwmS03tOfoS+kq3oxmD+fJm\r\nQC+xNtuAxKWd+32qObSHelpjAuv+boD1eOCZbdMMvR9zRYWxuCwp9vLjewiP\r\n1x1bcnZvY/wdtHmfEyDjWvSKueDD70wd7XNgK3cOHGQjR3PgS0e1DcBzbL5R\r\nKLw/sew3rIR4flDXgO/OrsRvODrRQFN7eYg2Glk7IlHSswESUSm5QScMpNH9\r\n8k3Tsu8YNZbpUxEVlb8PdwcaK6YUF6gYutEl52Nfz5x6bM6JYFzzHKmTCPv7\r\n+By2u09TlJ7uVqsUNbEJQFh75Q5Xulv4TKRk9UrbmWl9N4ZhDedPs55KqDDB\r\n5mwbyobD/S4rvF45ugkceJTkUH9RfWXvHAq06F0ty58D23sv7PrPdy3DyZmj\r\ncpiA6IyFoC1T/IPv2IdGvKBCJDl/Dpvng6DWE/rjIORe2VK7q2vSACAfHaBh\r\nvvuRoIOlT5vULLADBItMJldnOEbGNhRjdn543hqzqXh+gry2i+62ByMp3I2d\r\nLLIUQBblcPewYz8bEyeDDWhsRDz8eFIIhhyBxRY10SjW+J4eUAq3cyhXh2Jo\r\n7x5u4/QAaujm9stla++tUxzWnHmp6JOgM2TMUN2v9z34egBg1Ma/lsXvKZxW\r\nHHNothTQ44B1kuVn0/zPIIgJ9Cl7260hZBE=\r\n=VxFK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCteOPZYmKbY+eQ8RdBFwIXaIzSWPvgQDibtPNqyTn7DgIhAIKsKDTKnpD8XIlMamckNjCn7YIAhCwdHViADrJ8ecsf"}]},"_npmUser":{"name":"liorvainer","email":"liorvainer@gmail.com"},"directories":{},"maintainers":[{"name":"liorvainer","email":"liorvainer@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/4rest_1.0.4_1645446694212_0.8279661528853899"},"_hasShrinkwrap":false},"1.0.5":{"name":"4rest","version":"1.0.5","main":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"build":"tsc","test":"jest","test:cover":"jest --coverage","lint":"npx eslint **/*.{ts,tsx}","lint:fix":"npx eslint **/*.{ts,tsx} --fix","commit":"git-cz"},"release":{"branches":["main"]},"author":{"name":"Lior Vainer"},"license":"MIT","devDependencies":{"@babel/core":"^7.17.2","@babel/plugin-proposal-decorators":"^7.17.2","@babel/preset-env":"^7.16.11","@babel/preset-typescript":"^7.16.7","@types/jest":"^27.4.0","@typescript-eslint/eslint-plugin":"^4.29.0","@typescript-eslint/parser":"^4.29.0","axios-mock-adapter":"^1.20.0","babel-jest":"^27.5.1","cz-conventional-changelog":"3.3.0","eslint":"^6.8.0","eslint-config-airbnb":"^18.1.0","eslint-config-prettier":"^8.3.0","eslint-plugin-import":"^2.21.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-react":"^7.20.0","eslint-plugin-react-hooks":"^4.2.0","jest":"^27.5.1","semantic-release":"^19.0.2","ts-node":"^10.5.0","typescript":"^4.5.5"},"dependencies":{"axios":"0.22.0","cachios":"^3.1.1"},"repository":{"type":"git","url":"git+https://github.com/LiorVainer/4rest.git"},"bugs":{"url":"https://github.com/LiorVainer/4rest/issues"},"homepage":"https://github.com/LiorVainer/4rest#readme","description":"REST Client built on top of axios and cachios","keywords":["Typescript","axios","cachios","rest","restful","crud","client","api-client","fetch"],"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"gitHead":"53e21efb2f1bf9a993aed7333c0f11af22b19fe6","_id":"4rest@1.0.5","_nodeVersion":"14.17.1","_npmVersion":"6.14.13","dist":{"integrity":"sha512-04SYLCkt1hZCdT9e+st8bWqi2P4hTJeHwmYlAe5WP9ZRJWQ1CQecpGsGYh2SnqbvkJPLnR/Fo063I3Wuhbr6QQ==","shasum":"5a59ead532bceee68084ce46f95d93f89946efa4","tarball":"https://registry.npmjs.org/4rest/-/4rest-1.0.5.tgz","fileCount":39,"unpackedSize":55184,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiE+CdACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqxWg/6AgSMNmdDRVXtQnfSYcZszCPRIDrDxam59KWmWMi56EQjlAZ7\r\nq9ZL/Q6tyCM+ya6d8V5fPYXcq2D5ovMdYyyMWxW0lYd8mAuvGfMQ57nW8kdM\r\nLGNx8zxigZvTLDTRz5nHzVLYkYiwpEBg29I/btFLN0K4tA0NAAtPLNaSrrY+\r\nXKXa3JmSlsEENcfiXYpcvQJpXK/cn5baHSOLwvzS4a2ryft0ciTYN6fiTPjb\r\n8NIrX5mtTvKNNcrmSxbrM9PBJhZWTptOBWFsoH7FPObkQ64mCfX7Fjb4fDt9\r\nVR0AC6PC3xpipgInsYZhPmFYNwP5GrSZtDMQPwOqoOhRqxYrbtXzzsaPzf4j\r\naOZ7he4JmNCfEQPr0xR44xUYKeYBnx/8+hLTFp7SO4Y38imdWc7qUfBFCmfo\r\nigbsnbe8DJc4c2fpACrIwSqs03WnN1Ql/aQ17x09pqQShmsJ/OHRo7Y+x9O1\r\nLpoNNgVek96nggave19FoR+8EDyd+ATYMRm1B3v5zAB0cgHmbF+5XZwspfAC\r\nidy9vddF6CA4DL5ysbKx+WecYG3gaDUqLSFAx3qpBX1tWF1p1yXCbhK28CfL\r\n9b6hNzxlh2PKQfhsTM7i32yLVFKhKNOnf0ekDf3E6zysgIEzQK0FivPYjqpS\r\nBuZDhTyMxBy9Dd6/jU7s5aa2FCZa0xd3cC4=\r\n=s9LK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGM8UlU+lpC0eISkyI7QI/Rd3vIrG5W1FXrPSwsF0dqmAiBJyYlbRYVZgeRyXa+EcGYVXKIlis6B0u0yPx5I06Z7Bg=="}]},"_npmUser":{"name":"liorvainer","email":"liorvainer@gmail.com"},"directories":{},"maintainers":[{"name":"liorvainer","email":"liorvainer@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/4rest_1.0.5_1645469853085_0.714156187099334"},"_hasShrinkwrap":false},"1.0.7":{"name":"4rest","version":"1.0.7","main":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"build":"tsc","test":"jest","test:cover":"jest --coverage","lint":"npx eslint **/*.{ts,tsx}","lint:fix":"npx eslint **/*.{ts,tsx} --fix","commit":"git-cz"},"release":{"branches":["main"]},"author":{"name":"Lior Vainer"},"license":"MIT","devDependencies":{"@babel/core":"^7.17.2","@babel/plugin-proposal-decorators":"^7.17.2","@babel/preset-env":"^7.16.11","@babel/preset-typescript":"^7.16.7","@types/jest":"^27.4.0","@typescript-eslint/eslint-plugin":"^4.29.0","@typescript-eslint/parser":"^4.29.0","axios-mock-adapter":"^1.20.0","babel-jest":"^27.5.1","cz-conventional-changelog":"3.3.0","eslint":"^6.8.0","eslint-config-airbnb":"^18.1.0","eslint-config-prettier":"^8.3.0","eslint-plugin-import":"^2.21.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-react":"^7.20.0","eslint-plugin-react-hooks":"^4.2.0","jest":"^27.5.1","semantic-release":"^19.0.2","ts-node":"^10.5.0","typescript":"^4.5.5"},"dependencies":{"axios":"0.22.0","cachios":"^3.1.1"},"repository":{"type":"git","url":"git+https://github.com/LiorVainer/4rest.git"},"bugs":{"url":"https://github.com/LiorVainer/4rest/issues"},"homepage":"https://github.com/LiorVainer/4rest#readme","description":"REST Client built on top of axios and cachios","keywords":["Typescript","axios","cachios","rest","restful","crud","client","api-client","fetch"],"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"gitHead":"a41881dcfa4b8d24f7021a10f09f85470e50bbbd","_id":"4rest@1.0.7","_nodeVersion":"14.17.1","_npmVersion":"6.14.13","dist":{"integrity":"sha512-3cpC1F/lFS7UNrtDua7bBy9B4zgCxCZ0IHL4RxSQyFNID3tPtVqgay2g0X7TKH5WhgK9dbYo88c7Pkq90v9Dvw==","shasum":"4191aa7f1ffb6899c5c9ac18a21d80188a084803","tarball":"https://registry.npmjs.org/4rest/-/4rest-1.0.7.tgz","fileCount":39,"unpackedSize":55392,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiFJvzACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrKDQ//ZyUxhL0aYoxu+J6uLc462U/I5zzew/d4I3D5vu4OH+BuQ7+H\r\nGjFHkwKmDn9DNmRf98DCMmXJ+1lhgxcpnHo4ATJBYR7Ub6OCzGxBF+4Z6jPw\r\nfeVa64DL1A2b4ZMEB/n6s4yJ7E8ud7nIP3lHvxvgMGOSXj79Dzw3aCI33frW\r\n4yzsa02Tzy+K236K3Rme+OwxJ77wPHdIfz3ansSFUcsgRxTDTm7E9dnHtdbN\r\nAM18MeY9E3HuOceKOzmSTuWJ249oF5SC0lIyDphDS4psiSEGTmYy90zbmeoI\r\nyMk/nzWYJyfZDX/bXspXetBJKcynsV3uG7TwBCq6LkunCKUNKv3UA5WryD1Q\r\nPCCqsvIi41BmqUIL/6rv5MLmIguAgme1lTRIf3Pc9BXLcJXJukTXudqEcZDa\r\njORHHTe3eK2mt9ngXcBXVBN5bBqUpi9Z49LX8tF2Zh5Qo3ZfMMXJ+NHJ01oM\r\n/NuZAaSGAcXj42ZStDvXoB/1mR3QhAxIiAP+Aws3ZjPDwdqJWIZ3YxODsNPq\r\nhaf2r+uurYKjqVQ98+b613voPjsPFJSAVcpqB79qjR68a4Z13S/hUn6yWFfx\r\nTUJbkDOcw5qpeSsu9c5tTSSN5d3WAMO8BLZk1ikgZva83yiK5KRgf/8cYciS\r\n2wQhLefXEUmCes6KA5X9sFNQKvESC5pLjF4=\r\n=LxtB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDbNdkbid/hq83c7M0YCoaOGnT4zbiCfeqKg9eC2eS29AiA6bmBjNIhC/HMzIRbFin2qnNHz0M6i11EJRr5fb73arA=="}]},"_npmUser":{"name":"liorvainer","email":"liorvainer@gmail.com"},"directories":{},"maintainers":[{"name":"liorvainer","email":"liorvainer@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/4rest_1.0.7_1645517811139_0.2853844291636618"},"_hasShrinkwrap":false},"1.0.8":{"name":"4rest","version":"1.0.8","main":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"build":"tsc","test":"jest","test:cover":"jest --coverage","lint":"npx eslint **/*.{ts,tsx}","lint:fix":"npx eslint **/*.{ts,tsx} --fix","commit":"git-cz"},"release":{"branches":["main"]},"author":{"name":"Lior Vainer"},"license":"MIT","devDependencies":{"@babel/core":"^7.17.2","@babel/plugin-proposal-decorators":"^7.17.2","@babel/preset-env":"^7.16.11","@babel/preset-typescript":"^7.16.7","@types/jest":"^27.4.0","@typescript-eslint/eslint-plugin":"^4.29.0","@typescript-eslint/parser":"^4.29.0","axios-mock-adapter":"^1.20.0","babel-jest":"^27.5.1","cz-conventional-changelog":"3.3.0","eslint":"^6.8.0","eslint-config-airbnb":"^18.1.0","eslint-config-prettier":"^8.3.0","eslint-plugin-import":"^2.21.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-react":"^7.20.0","eslint-plugin-react-hooks":"^4.2.0","jest":"^27.5.1","semantic-release":"^19.0.2","ts-node":"^10.5.0","typescript":"^4.5.5"},"dependencies":{"axios":"0.22.0","cachios":"^3.1.1"},"repository":{"type":"git","url":"git+https://github.com/LiorVainer/4rest.git"},"bugs":{"url":"https://github.com/LiorVainer/4rest/issues"},"homepage":"https://github.com/LiorVainer/4rest#readme","description":"REST Client built on top of axios and cachios","keywords":["Typescript","axios","cachios","rest","restful","crud","client","api-client","fetch"],"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"gitHead":"1de8481c0ce9a35a32b901b61f760dcc1e893e8e","_id":"4rest@1.0.8","_nodeVersion":"14.17.1","_npmVersion":"6.14.13","dist":{"integrity":"sha512-Nm0D8CbP7DyAvm69q436SUbGNEIU3jqMEHziR9XBqeAFwgrQ7gl+4Z7vCTzCfCi5eJzVf1isI1YQpZ6L2a1g5w==","shasum":"5255f89535b101a1b8f8eb010cf2f71ac14a1308","tarball":"https://registry.npmjs.org/4rest/-/4rest-1.0.8.tgz","fileCount":105,"unpackedSize":141569,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiHeYlACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpCmA/7BQMOUTJmjKixeO8P6ggSG6ZVX9LnxIN86GvyBv017AQYORuS\r\nIg/xBqMKQgGAA0js6Om1cK2zbZ23+yTheUc8Wo0ietkKMu86q1DjjfK//Hog\r\n/VGpWuSkifrTrC6tes9O58fboLO7sGnXOsY8xZiVtRQjsHWqxueoEU8SA4Zw\r\n8LUqpZUaiPoqPI1C5ITFNh09KznpK29h26wYdX3uJ3ckoVsa38RE5xyz60vL\r\nYw6c36UlvkmXcMtK8jlk9bfNFQpYehhCxHft4uuVzRRSTlKjSZdtYG0CDn40\r\nZdJdQD2vW4ShAtsX1g2pPtuFDzL2rlhoI8r8Ukqqa/SX7JyKLmdNPYwwgWUN\r\nMMlW+3T28s9DoWcHKONY1pIwzbtTXTfZRnhcxtDDcqZVPNQNjAHj4wnaT14r\r\niQEbJn+tVxrRXhN1x+UtvnG31MNf0ub6zwUhGmQ/GEAJWZ97w5ojNTxV+715\r\nlvpSCwY8IDnWk57D1yAxw+hsUo/3BqE1QNl5IANvkOidX3a+cki69X9zX3vN\r\n/RttnNmA0SRuNAXzdHzP/CfvfGfNFnpMWT5EDoFe2UgUzHOFqWC0+HClQHXX\r\n35Ffyx/h2pXF/xCJY1q6IMYamS2viBXnN6GM4S53dHboUB2WqFp6uNKVHln3\r\nL5ujmakGEJNDjEztDNp4aR2jtVcj9xenVuQ=\r\n=t3bx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDWxjEJvW3bBKNDY+H+KQBAojnnQf88sG8gMB5MBNPklQIgF2W6yte2vX/yMmitKckJWbbaWAlpRfs3m0pSUkmrQP4="}]},"_npmUser":{"name":"liorvainer","email":"liorvainer@gmail.com"},"directories":{},"maintainers":[{"name":"liorvainer","email":"liorvainer@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/4rest_1.0.8_1646126629238_0.49791519609410373"},"_hasShrinkwrap":false},"1.0.9":{"name":"4rest","version":"1.0.9","main":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"build":"tsc","test":"jest","test:cover":"jest --coverage","lint":"npx eslint **/*.{ts,tsx}","lint:fix":"npx eslint **/*.{ts,tsx} --fix","commit":"git-cz"},"release":{"branches":["main"]},"author":{"name":"Lior Vainer"},"license":"MIT","devDependencies":{"@babel/core":"^7.17.2","@babel/plugin-proposal-decorators":"^7.17.2","@babel/preset-env":"^7.16.11","@babel/preset-typescript":"^7.16.7","@types/jest":"^27.4.0","@typescript-eslint/eslint-plugin":"^4.29.0","@typescript-eslint/parser":"^4.29.0","axios-mock-adapter":"^1.20.0","babel-jest":"^27.5.1","cz-conventional-changelog":"3.3.0","eslint":"^6.8.0","eslint-config-airbnb":"^18.1.0","eslint-config-prettier":"^8.3.0","eslint-plugin-import":"^2.21.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-react":"^7.20.0","eslint-plugin-react-hooks":"^4.2.0","jest":"^27.5.1","semantic-release":"^19.0.2","ts-node":"^10.5.0","typescript":"^4.5.5"},"dependencies":{"axios":"0.22.0","cachios":"^3.1.1"},"repository":{"type":"git","url":"git+https://github.com/LiorVainer/4rest.git"},"bugs":{"url":"https://github.com/LiorVainer/4rest/issues"},"homepage":"https://github.com/LiorVainer/4rest#readme","description":"REST Client built on top of axios and cachios","keywords":["Typescript","axios","cachios","rest","restful","crud","client","api-client","fetch"],"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"gitHead":"e2a06a2aa57f7f1be21151e87ab42f05c4243994","_id":"4rest@1.0.9","_nodeVersion":"14.17.1","_npmVersion":"6.14.13","dist":{"integrity":"sha512-hjrYOWN988IC86veyaLbZgUA8P+9V1x++q2MEfGQEV+IEa6KX+ldaHDnDcD/m4wzhFJM7FKlnWtWPbPHKeh5qA==","shasum":"fcabada16761d824846b92f435ed4410f4e8856b","tarball":"https://registry.npmjs.org/4rest/-/4rest-1.0.9.tgz","fileCount":105,"unpackedSize":130651,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiHej4ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq2rg//VLpN4uibgIbwFsNmR8OXqs2HVocDmb9JqyEr8ydM7GKA4jsR\r\n5Hk58CsIQ/Eus5c2nWh8GcIemE+TbUCXzPXKfYAJjPdaeS4D6mo72THAJwKg\r\nfWu3OyjoFbUaENpW7Y537Vh1OSF+lOD52xFtxbOrN1VzCxl0mDe9vZwTkAdp\r\nLxo7FqbejyG+bhB13n+jD7Gn6R9p/aSiYpvcI+HCCFkt1KboYUV5XJTDd2Dz\r\n/EG4U7G5UXa8dBzGtFO5/Bc9OjVmYRQ3kViu0xTTYRRHw1JuBb8C+o7/2zAI\r\nwObkDNhqkMznYDC1ZJqs0tG3KJN4UfBGr84ht/xhCejGI1j+wdj0PLYPtOiS\r\nTqRVC/9RLevALsJ39VMHijQ2oU1/kU+IfJenTL7EvWdo7xtEqpn1MCqapPq3\r\nxpSIVekSemzpNnINdWBkRXUHyuBF4yu+ynPkL4lG8SJOe6EVayw9twJusruL\r\nFZAau+UhHak69JV3s7zQya/JzLzM82X6tWyQ6wFiCBWeOST92ZgpQA81H7xr\r\nnNKvxm6eReWIu9Ep2BmmLKaxYgKnqKc3fsEGMwYTfI2gUrwMCs2vlV9kQk3k\r\np/00VuNkFjgwfAUEcF4EXu1JtsSCK3tMk7wYHy9cvidjHkl3e2DtgFAoe5bB\r\n6ILrd0qeleVtxUwgwvAAcgJhumpPLJAte2M=\r\n=nMNO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC7oPLB7Epfqjxlwgv2vtiAGtIHUSZ/jthCTqhXR+q6awIgb1XEv5R9lM/56Xzo19VNRzPCQo92qoCUZbE/irP9xCw="}]},"_npmUser":{"name":"liorvainer","email":"liorvainer@gmail.com"},"directories":{},"maintainers":[{"name":"liorvainer","email":"liorvainer@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/4rest_1.0.9_1646127352158_0.10957028067233798"},"_hasShrinkwrap":false},"1.0.10":{"name":"4rest","version":"1.0.10","main":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"build":"tsc","test":"jest","test:cover":"jest --coverage","lint":"npx eslint **/*.{ts,tsx}","lint:fix":"npx eslint **/*.{ts,tsx} --fix","commit":"git-cz"},"release":{"branches":["main"]},"author":{"name":"Lior Vainer"},"license":"MIT","devDependencies":{"@babel/core":"^7.17.2","@babel/plugin-proposal-decorators":"^7.17.2","@babel/preset-env":"^7.16.11","@babel/preset-typescript":"^7.16.7","@types/jest":"^27.4.0","@typescript-eslint/eslint-plugin":"^4.29.0","@typescript-eslint/parser":"^4.29.0","axios-mock-adapter":"^1.20.0","babel-jest":"^27.5.1","cz-conventional-changelog":"3.3.0","eslint":"^6.8.0","eslint-config-airbnb":"^18.1.0","eslint-config-prettier":"^8.3.0","eslint-plugin-import":"^2.21.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-react":"^7.20.0","eslint-plugin-react-hooks":"^4.2.0","jest":"^27.5.1","semantic-release":"^19.0.2","ts-node":"^10.5.0","typescript":"^4.5.5"},"dependencies":{"axios":"0.22.0","cachios":"^3.1.1"},"repository":{"type":"git","url":"git+https://github.com/LiorVainer/4rest.git"},"bugs":{"url":"https://github.com/LiorVainer/4rest/issues"},"homepage":"https://github.com/LiorVainer/4rest#readme","description":"REST Client built on top of axios and cachios","keywords":["Typescript","axios","cachios","rest","restful","crud","client","api-client","fetch"],"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"gitHead":"46c691c1c18bfa0562ee8ea703db7c0cd5ca385f","_id":"4rest@1.0.10","_nodeVersion":"14.17.1","_npmVersion":"6.14.13","dist":{"integrity":"sha512-mR+7VQnB2+tM8pAh3abKdc2iWS3DwMKPyoaAgfn6mYT+AtYsgeNxpwqv1ht1PLFMQTuoBCSl/iRY6uMTgDuJoQ==","shasum":"6965998b0fa93a7f764cc18b55ead3368b948a0c","tarball":"https://registry.npmjs.org/4rest/-/4rest-1.0.10.tgz","fileCount":39,"unpackedSize":44475,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiHeoJACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqSXA//fTMwsWKeuKqMQETDtkP0P7FaOqYwupqLewBh7gnx3FNIC95K\r\naw54nzahvDJ+eGZn9ccBjrY4rc8mY/+MxrQ2l7FCKcBMuGJ2tNmmtlQbMAAo\r\nA1gIhxsOSsTqiWbxwBDX4BE/so2i5Tp2JWRsfXP5xAj5Upv+ZtJ6MmEYCcWs\r\nY6UILEDQxo9hwIT09nkaD4IByVbAa5shsoya5FV4LPfVsFDsf4I0IlciStTz\r\ndAL07SPiEQlsH72AgPLJpnPefapwvjDUZFgkgXI5Wcy9/dwIf2NCY6jNx+V1\r\njqmZmQy/8wYFRLzoD2PhEPV7Ggcd+UtlRxfcp0dAz2EFQKLDraIgr13/erSV\r\nfLzt/pbTaiqk3MnqlCoYXRFO6SCrfGnkLhhXqUJmWn8jkF+NMk5xPSbjKwT2\r\nD2hQY/CRYsOMKaiNW9p8KBzc1AkI4UPJR9vgfdamj0mi7zUcs1N8qqJXGPOm\r\nWya1rNA9VDdp5oyLaHEcDvxMwQ5rkSwjRFGzZhRfctwf+RhotJS9xqSE/6WV\r\njHn+SYZPsEdQAOPEm8NHIR6brIRN9N6JbLwQ+g0wrXG2y+VpkiCJTQdEIJh2\r\nk883KxGCGSqbpUKxYXIUfQPcNdssBXJg7loXU3SAGST3bybpjQu4rViAFDYw\r\nI0TSxNfLHOhwgwJFF6v8Tb0BUjYGz58aww4=\r\n=ji43\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDsLC9EpxFNhcNnK7oruJGF9Oqvz7IdmHhseLv5MBV3lQIgK9pG98FJOperD5Fz0EGMtwro0fP6+2JLIa+MjpthYO0="}]},"_npmUser":{"name":"liorvainer","email":"liorvainer@gmail.com"},"directories":{},"maintainers":[{"name":"liorvainer","email":"liorvainer@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/4rest_1.0.10_1646127625637_0.46638685595904983"},"_hasShrinkwrap":false},"1.1.0":{"name":"4rest","version":"1.1.0","main":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"build":"tsc","test":"jest","test:cover":"jest --coverage","lint":"npx eslint **/*.{ts,tsx}","lint:fix":"npx eslint **/*.{ts,tsx} --fix","commit":"git-cz"},"release":{"branches":["main"]},"author":{"name":"Lior Vainer"},"license":"MIT","devDependencies":{"@babel/core":"^7.17.2","@babel/plugin-proposal-decorators":"^7.17.2","@babel/preset-env":"^7.16.11","@babel/preset-typescript":"^7.16.7","@types/jest":"^27.4.0","@typescript-eslint/eslint-plugin":"^4.29.0","@typescript-eslint/parser":"^4.29.0","axios-mock-adapter":"^1.20.0","babel-jest":"^27.5.1","cz-conventional-changelog":"3.3.0","eslint":"^6.8.0","eslint-config-airbnb":"^18.1.0","eslint-config-prettier":"^8.3.0","eslint-plugin-import":"^2.21.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-react":"^7.20.0","eslint-plugin-react-hooks":"^4.2.0","jest":"^27.5.1","semantic-release":"^19.0.2","ts-node":"^10.5.0","typescript":"^4.5.5"},"dependencies":{"axios":"^0.26.0"},"repository":{"type":"git","url":"git+https://github.com/LiorVainer/4rest.git"},"bugs":{"url":"https://github.com/LiorVainer/4rest/issues"},"homepage":"https://github.com/LiorVainer/4rest#readme","description":"REST Client built on top of axios","keywords":["Typescript","axios","rest","restful","crud","client","api-client","fetch"],"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"gitHead":"b327292b70e971852dd9118b780c1260a587c7ce","_id":"4rest@1.1.0","_nodeVersion":"14.17.1","_npmVersion":"6.14.13","dist":{"integrity":"sha512-dQHxU/pg0hZBK1z9Sy7wwjpyv1GuIS61JLhep3UxFHGv1IkB4QF80+S653GIz7+sBY5RcgV6jRFR2NqmckdQLw==","shasum":"1c0a21ca048fc4827610ce064b60fc099f981b27","tarball":"https://registry.npmjs.org/4rest/-/4rest-1.1.0.tgz","fileCount":43,"unpackedSize":47821,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiJiWOACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrvxg//Ze6/0vbCx+WpI7A1fgF36lvVOCy09ZvRuetkxhmdcBDBVasO\r\n1h+ICJznsJ4+rb1tzg1oWDtajGkzEu31tUhy2Nlw1/MsMy+bFRbbpfrcD1ea\r\nY0WjJ/dR8rqM1UzilsYdVIciiPOcm7JCQexFS/aGCxop+SHLfK6ZDDUfOmPt\r\ntEhdaupJBuyy/zLN8UgszrW6NMlTV5o3THWTXRiTQexPRIalZMw+SkHri1kv\r\nYq2uiKFBcrXnvqKoI6d503t0Ls5P20vmlMTzKM/08JGldc/h2Ph0yWwDXwP+\r\nm27MxUDfS0BtP8My4wPnBSW1tjl0rfUCS1QXCwpJoOkzcGIcuab+gjOSAh5I\r\nILeWzCYdP5CFYaskXAhrUjh3aqMFD8R86z8VkTag7CIEeP0Gtc+pES35XyiB\r\nT+JRuYmyxqBBkP2X/m4e2bizjQavtQDM0ElgEJig+1SY+oOWNxou2ZlVMxF1\r\nvupveZOVk23jiJF2BloMkyfpfX//7AICkfxAk3iddeZphoAs7SHtvsv4NCkM\r\ncmOOAM94aClbiOCRLGYIarpx0shS7kgIy2Bojv0J9PHur7XKZ189ZHS4j0bd\r\nXep60PEAk0Ee/sshYK/M7rZ51WxCkDIs4K7I6kGM4h+coYLtUXf6UnFMe4rY\r\nANa4oKct+OaRGTc7yIGmgBK97et0xC7Fln4=\r\n=dr02\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDz+1pr5nQvBLOjgYCcuQCg709VpaxpWTKJIIXDivvM1gIgUvSNW07qeRzjC+Slv+uV53tovRjisSDissPvnJCfXKY="}]},"_npmUser":{"name":"liorvainer","email":"liorvainer@gmail.com"},"directories":{},"maintainers":[{"name":"liorvainer","email":"liorvainer@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/4rest_1.1.0_1646667150352_0.9310463512273341"},"_hasShrinkwrap":false},"1.1.1":{"name":"4rest","version":"1.1.1","main":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"build":"tsc","test":"jest","test:cover":"jest --coverage","lint":"npx eslint **/*.{ts,tsx}","lint:fix":"npx eslint **/*.{ts,tsx} --fix","commit":"git-cz"},"release":{"branches":["main"]},"author":{"name":"Lior Vainer"},"license":"MIT","devDependencies":{"@babel/core":"^7.17.2","@babel/plugin-proposal-decorators":"^7.17.2","@babel/preset-env":"^7.16.11","@babel/preset-typescript":"^7.16.7","@types/jest":"^27.4.0","@typescript-eslint/eslint-plugin":"^4.29.0","@typescript-eslint/parser":"^4.29.0","axios-mock-adapter":"^1.20.0","babel-jest":"^27.5.1","cz-conventional-changelog":"3.3.0","eslint":"^6.8.0","eslint-config-airbnb":"^18.1.0","eslint-config-prettier":"^8.3.0","eslint-plugin-import":"^2.21.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-react":"^7.20.0","eslint-plugin-react-hooks":"^4.2.0","jest":"^27.5.1","semantic-release":"^19.0.2","ts-node":"^10.5.0","typescript":"^4.5.5"},"dependencies":{"axios":"^0.26.0"},"repository":{"type":"git","url":"git+https://github.com/LiorVainer/4rest.git"},"bugs":{"url":"https://github.com/LiorVainer/4rest/issues"},"homepage":"https://github.com/LiorVainer/4rest#readme","description":"REST Client built on top of axios","keywords":["Typescript","axios","rest","restful","crud","client","api-client","fetch"],"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"gitHead":"816f453ee9d703a2d3e8a2addbe8543136d026a6","_id":"4rest@1.1.1","_nodeVersion":"14.17.1","_npmVersion":"6.14.13","dist":{"integrity":"sha512-TipXc2sngkbIz1bazMPNhYha26gzCsHJWgyTIi1HVNuF0ETAkhIUignSPkhRmgXCeNbKwDOcT1irCyzGibl8dg==","shasum":"379fed353d4546103acd1e1d268facc1edcfe0bc","tarball":"https://registry.npmjs.org/4rest/-/4rest-1.1.1.tgz","fileCount":41,"unpackedSize":46700,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiJiXrACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr+Xg/+IQYouEkxBU9+aFqIO6bWFI9iZBwhk1JYnVDS5zGYqotlzera\r\nUOsmPTmrQJ/0NNHfLmh7fCG0gEemjzIQLYeL+kvNQLM7wNXplRmRza5P7x3F\r\nY2H+Kc/F6LNys4ZxThGlrB7zOmneCkJctyxZ/zHEgoTp3Ubmig+cTCo01Gy7\r\nBvl2GYeMkLjYeostft5o0tJSVYlnGs8jmVS0XwAH/FuHIg/rc2kehsteKO1s\r\neWmtnSgWgsToFivkjMD9fsz1M//w/CCApWoWWJGMrSRA0n8cjA1hflhiHudr\r\njao1XPQ7/LeGWvz9lTRS2jDyCZjsLo3puRM32EPrSHsYKR/khUPZQaujXofc\r\nGC8x6hL0XwB3W6W7A3L1aXhSS//xxV7RMo/4WsHtqHyGescE11/UCgG6Qk6p\r\nnlgP9H3T6DNCVUrKnxvQ/ZlXTq2hcL1gulx0nIlexagd0a+rTh2uSVCUNjNZ\r\nalWYJo8s8i3nx9R7w690ip6K2+d5OXrqjw0dUpe4MW9oc6q19NceXCU/154G\r\nuxAtuKIHJoaDgnlidsNRkIO0IeSXvKPLM279tuRSLI0B9vuhLj1tfWTLntnn\r\nRuzf8LYZTBmgs3kgW1Kt+yec+3hFOWuD6VVYgkIKt35YC9bQomMYX7yoFlJw\r\nPkcLnvve78tj8tktWTA8UsOnwZgayzrIS28=\r\n=TSf9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEwtkRVlClysDlb9OW5w9HspwJ3j6pZOrML1EKrIxBWTAiEA9WgUHFIjmr6qtPPez5zCkk3HFJzk4hPNmTDVANyiNSA="}]},"_npmUser":{"name":"liorvainer","email":"liorvainer@gmail.com"},"directories":{},"maintainers":[{"name":"liorvainer","email":"liorvainer@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/4rest_1.1.1_1646667243564_0.003053916085181907"},"_hasShrinkwrap":false},"1.2.0":{"name":"4rest","version":"1.2.0","main":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"build":"tsc","test":"jest","test:cover":"jest --coverage","lint":"npx eslint **/*.{ts,tsx}","lint:fix":"npx eslint **/*.{ts,tsx} --fix","commit":"git-cz"},"release":{"branches":["main"]},"author":{"name":"Lior Vainer"},"license":"MIT","devDependencies":{"@babel/core":"^7.17.2","@babel/plugin-proposal-decorators":"^7.17.2","@babel/preset-env":"^7.16.11","@babel/preset-typescript":"^7.16.7","@types/jest":"^27.4.0","@typescript-eslint/eslint-plugin":"^4.29.0","@typescript-eslint/parser":"^4.29.0","axios-mock-adapter":"^1.20.0","babel-jest":"^27.5.1","cz-conventional-changelog":"3.3.0","eslint":"^6.8.0","eslint-config-airbnb":"^18.1.0","eslint-config-prettier":"^8.3.0","eslint-plugin-import":"^2.21.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-react":"^7.20.0","eslint-plugin-react-hooks":"^4.2.0","jest":"^27.5.1","semantic-release":"^19.0.2","ts-node":"^10.5.0","typescript":"^4.5.5"},"dependencies":{"axios":"^0.26.1"},"repository":{"type":"git","url":"git+https://github.com/LiorVainer/4rest.git"},"bugs":{"url":"https://github.com/LiorVainer/4rest/issues"},"homepage":"https://github.com/LiorVainer/4rest#readme","description":"REST Client built on top of axios","keywords":["Typescript","axios","rest","restful","crud","client","api-client","fetch"],"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"gitHead":"852f210cf18d75abeaf7e3ecede299e8b0a23bec","_id":"4rest@1.2.0","_nodeVersion":"16.13.0","_npmVersion":"8.3.0","dist":{"integrity":"sha512-tkd9+PKJC3uazy0JSwcwu6ZaK9xIGqfMOXsD2MDBuy5I4eNdbwQ4nDp3b7FQNgHMKIJsRz9N3273x6majnqKKg==","shasum":"9b37da9684a97ad7356b96d8f69eb714c6c11d37","tarball":"https://registry.npmjs.org/4rest/-/4rest-1.2.0.tgz","fileCount":129,"unpackedSize":158419,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCZha0xjuh+P1LJf+dMwxYIv0mo8hVNFyTfXS++cO1PZwIgRHv9TlIPPWdyT7vnwXFKxV74UjBjPbz4EmgyF2rCGOg="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiYIxJACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmps8g/+PfX6wO7++HNJE2NZeMiL+6Hv2BsorEXRwKu2JFiN/an9ccAv\r\need1Zg3QxEx5iczFU3U4NHIKk1tvUZr/yrOVvRb7+q3gA+bU5cZkOpvbrme2\r\n/QnbS1vGzeqtWpJQsuu7tDN8RpTXK1IUXeh5AesgBlZP1Eof8dTO4qim9kYu\r\ndl7+HcMBmhsQxflBwYKLllMYQ0l5UUvDDFCVHEOfdtGFnZXrVxyn0SrM5Jmv\r\nZ2dRJ12REpD6iLID0LDrw7HJ1ooCs/Q5eDxhccUvhJZUH6WlVUkr/CT6mClT\r\neozwtaNJDstn7QGUoh/7Psbad/Z1/IJGSn9JzPuiZw7UEKCF1Kr2fFx76uXN\r\nIzrzqkTFpLorEcWauGKmN8+4IbusRrUnn9N2H/130s5oZQg59yvTDOGRu/G6\r\nbcWAvAboVqdBjnp8YUHzZL57cyyMStQILw23IJpi8hyU80M09L9bt/OjHYxJ\r\nnNFyMtSwnTfCLLKQN76YvxDafxfza/Eu/lIKLIXmdVyRtazcHValkNKxYfdB\r\nW4yaDaiWxKKSvKo+xayUlwRYXmssGQxlazcIRqXghHhmbCMebjtgs6jA086z\r\nNh39ymg1qRRBnoR5y+Vtw2JdcVejiHe512N/52cjAvXnB6p1FQQHUAbIjQXa\r\nGpZrJmG58QGbvsI1PE72S0dlrkTV26lO+yA=\r\n=9RUW\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"liorvainer","email":"liorvainer@gmail.com"},"directories":{},"maintainers":[{"name":"liorvainer","email":"liorvainer@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/4rest_1.2.0_1650494537364_0.3892658072197328"},"_hasShrinkwrap":false},"1.2.1":{"name":"4rest","version":"1.2.1","main":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"build":"tsc","test":"jest","test:cover":"jest --coverage","lint":"npx eslint **/*.{ts,tsx}","lint:fix":"npx eslint **/*.{ts,tsx} --fix","commit":"git-cz"},"release":{"branches":["main"]},"author":{"name":"Lior Vainer"},"license":"MIT","devDependencies":{"@babel/core":"^7.17.2","@babel/plugin-proposal-decorators":"^7.17.2","@babel/preset-env":"^7.16.11","@babel/preset-typescript":"^7.16.7","@types/jest":"^27.4.0","@typescript-eslint/eslint-plugin":"^4.29.0","@typescript-eslint/parser":"^4.29.0","axios-mock-adapter":"^1.20.0","babel-jest":"^27.5.1","cz-conventional-changelog":"3.3.0","eslint":"^6.8.0","eslint-config-airbnb":"^18.1.0","eslint-config-prettier":"^8.3.0","eslint-plugin-import":"^2.21.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-react":"^7.20.0","eslint-plugin-react-hooks":"^4.2.0","jest":"^27.5.1","semantic-release":"^19.0.2","ts-node":"^10.5.0","typescript":"^4.5.5"},"dependencies":{"axios":"^0.26.1"},"repository":{"type":"git","url":"git+https://github.com/LiorVainer/4rest.git"},"bugs":{"url":"https://github.com/LiorVainer/4rest/issues"},"homepage":"https://github.com/LiorVainer/4rest#readme","description":"REST Client built on top of axios","keywords":["Typescript","axios","rest","restful","crud","client","api-client","fetch"],"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"gitHead":"c4093e3f1abde21ac1f2694ec8f6059e09a6eb34","_id":"4rest@1.2.1","_nodeVersion":"16.13.0","_npmVersion":"8.3.0","dist":{"integrity":"sha512-vYvL9M3iPlTNzOFlGU9v7+pvs80enYEobZDMAkp9KoXFseFXASXRoOrWP4BDXuBf5wAJSrrRDpd0jlfYa+EcUw==","shasum":"b47853230d8892ee2231aee321905619906271e5","tarball":"https://registry.npmjs.org/4rest/-/4rest-1.2.1.tgz","fileCount":129,"unpackedSize":158419,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHO21CPop3/TB/W1JbPOupyTJebDWvOXOhQVgs4QTzzrAiAE95kJWRsy/7dAdFRW7ANeK/0Rn8yPncaNr9lsOzxlUw=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiYI/jACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmobvRAAgLm078egi2JAIUbjsqS+bpHz3VXnFU+7PkRKOkuq9do8U3qN\r\n4LD0nOuaQ1GvQnM0tRqrBidm+Ibj8oxoMWhj5oDA9EEGQaopV8m5U9DUlYFg\r\nGxxLVeJWecwf6CSyJtAhN/eFUAJrTAdD6nJcUM99ALGCI0XbDwwDh/Rj+XvN\r\niOMTbYZlDoV1/g48tnPVdfMPAfwrVez6UDy8uXDS8AmdVCnRdSFyfNlDGqVT\r\nchs2ePi5Ga1fav2wMEp9Fq3b9YPQMaFNPQwC1apCv3YXUdDVymkJpw1g+DuM\r\nj1DqRVRQRL/sDKCsSHNjFztyg30PYtspP+39uMv68B06n18caeitPzNzX1X1\r\nO0ynz7SWwZxH8U10ne+3wKeyMAYIkl9tGhD9Oe5E1Kw7UUhie+wM8YPgORiu\r\nnHQ+fNpts1T/FWypwdXKMDGqtlCMyC08tySq2lexptvTlFYXZCwH4rj//b3+\r\nevvIhEvvqi+iVIMB0x5p79kyHJsdq9HPqO7JTSZcsjCF45s9/cc8Ar+AxSbF\r\nmGoUfszKFIR9GksIElNt5BvZ026wNAvSekWtwaJZbJo8Tmdq3/PP4ZkY8gbB\r\nLOIJ8vrATRn0/1Icq/GSvXEtR7U1SjLNlk2i4pLNGilNkqnaHucWJ2pN9ssH\r\nXZQNW/TG0QW7YnSb0Q3qRFmAnRAjInaAURY=\r\n=kQkH\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"liorvainer","email":"liorvainer@gmail.com"},"directories":{},"maintainers":[{"name":"liorvainer","email":"liorvainer@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/4rest_1.2.1_1650495459395_0.6541597721968901"},"_hasShrinkwrap":false},"2.0.0":{"name":"4rest","version":"2.0.0","main":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"build":"tsc","test":"jest","test:cover":"jest --coverage","lint":"npx eslint **/*.{ts,tsx}","lint:fix":"npx eslint **/*.{ts,tsx} --fix","commit":"git-cz"},"release":{"branches":["main"]},"author":{"name":"Lior Vainer"},"license":"MIT","devDependencies":{"@babel/core":"^7.17.2","@babel/plugin-proposal-decorators":"^7.17.2","@babel/preset-env":"^7.16.11","@babel/preset-typescript":"^7.16.7","@types/jest":"^27.4.0","@typescript-eslint/eslint-plugin":"^4.29.0","@typescript-eslint/parser":"^4.29.0","axios-mock-adapter":"^1.20.0","babel-jest":"^27.5.1","cz-conventional-changelog":"3.3.0","eslint":"^6.8.0","eslint-config-airbnb":"^18.1.0","eslint-config-prettier":"^8.3.0","eslint-plugin-import":"^2.21.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-react":"^7.20.0","eslint-plugin-react-hooks":"^4.2.0","jest":"^27.5.1","semantic-release":"^19.0.2","ts-node":"^10.5.0","typescript":"^4.5.5"},"dependencies":{"axios":"^0.26.1","zod":"^3.14.4"},"repository":{"type":"git","url":"git+https://github.com/LiorVainer/4rest.git"},"bugs":{"url":"https://github.com/LiorVainer/4rest/issues"},"homepage":"https://github.com/LiorVainer/4rest#readme","description":"REST Client built on top of axios and zod packages","keywords":["Typescript","axios","rest","restful","crud","client","api-client","fetch"],"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"gitHead":"2e5d20c869d50294189e54b873f9c29948e7ec62","_id":"4rest@2.0.0","_nodeVersion":"16.13.0","_npmVersion":"8.3.0","dist":{"integrity":"sha512-2fZ1xNMq2RIuSrHRTp1VX/uO8NQ0nW8Ym4KPftTX4miUI0RTtglqNXGWfpcPn0z99+9DgS7WruWgc9xOITieJg==","shasum":"6ebf1dd83f3c3528badeea3d5649d6db1595652a","tarball":"https://registry.npmjs.org/4rest/-/4rest-2.0.0.tgz","fileCount":207,"unpackedSize":274715,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAh3B/tkmvx1Cps6ZbeDQ2P5jU3YPmk1e9WVGQv8lpm+AiEAx693lvKJ2//Ff3POCs/Y6N+iMxIvDvjEiW5pONqSiHo="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJidmiSACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo0uxAAjJdTYVUQQq9zSIXK9zixYbZLsYSXxK3BKh2Y8l9N1xxTBM0I\r\nEmHoMqaoOME309oC9pIB94A2fbJydBzQip0mk/QLjQswnuWxo1gXgXuVeHox\r\nsLKLDosp+ddMaHwKQIBbz2yqOr8qKuUZ1atqdvIOEgYaR2IZ41lvX9kngK7p\r\nNfQcwXrOeWbrP5oxwkDLERjqcKaYmZ2glR9+io4qi8yfSy/K5UBGIMYsGuHa\r\n031EUKQ5DjdKVGI4Ijj2QHMx4EOiIc6HKIUk5hcFWeDryW65h4p5S2MiNvbQ\r\nBTIcJ/otzXhjMMoGVoreb/onNwz33X+QjSTOsILjzRnksNDPH/zFS8tBOU5P\r\nfOAu5CaRMZMzSylMBaKss0MUDr94ZAnkKbvwWPSWUCeVFyjjai4vssUeV751\r\nvXCwJSDdCs3+i7VFAbP/QPUHspVcZRO24Djrix7A5KU5mEoA7vpPAEq538L2\r\nO8w+AiBBtXAG4dPJyvAgodKSfx9SOnr6sHUf1WEBn/q1bKyRXD0a3kxxdzlA\r\nqbYj7GpwTPL2rX86ESl+Gu1SZoelK0nHajqnFLFDvjce6JSGFHl6dMeJt2zu\r\nTG/AbAJ7hYOEgiIfC/7fDhCZj7FhzGx7jmvx98PbW6kzNZ5yP4hOULMpV2NZ\r\nChIzvy5DtnWuwfGRQNcV6BgskWS0QUZ+eMI=\r\n=qti1\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"liorvainer","email":"liorvainer@gmail.com"},"directories":{},"maintainers":[{"name":"liorvainer","email":"liorvainer@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/4rest_2.0.0_1651927186045_0.7020868050563212"},"_hasShrinkwrap":false}},"time":{"created":"2022-02-21T11:47:55.760Z","1.0.0":"2022-02-21T11:47:55.942Z","modified":"2022-05-07T12:39:46.343Z","1.0.1":"2022-02-21T11:57:52.050Z","1.0.2":"2022-02-21T12:25:36.555Z","1.0.3":"2022-02-21T12:28:20.689Z","1.0.4":"2022-02-21T12:31:34.424Z","1.0.5":"2022-02-21T18:57:33.312Z","1.0.7":"2022-02-22T08:16:51.304Z","1.0.8":"2022-03-01T09:23:49.378Z","1.0.9":"2022-03-01T09:35:52.370Z","1.0.10":"2022-03-01T09:40:25.813Z","1.1.0":"2022-03-07T15:32:30.507Z","1.1.1":"2022-03-07T15:34:03.691Z","1.2.0":"2022-04-20T22:42:17.536Z","1.2.1":"2022-04-20T22:57:39.615Z","2.0.0":"2022-05-07T12:39:46.271Z"},"maintainers":[{"name":"liorvainer","email":"liorvainer@gmail.com"}],"description":"REST Client built on top of axios and zod packages","homepage":"https://github.com/LiorVainer/4rest#readme","keywords":["Typescript","axios","rest","restful","crud","client","api-client","fetch"],"repository":{"type":"git","url":"git+https://github.com/LiorVainer/4rest.git"},"author":{"name":"Lior Vainer"},"bugs":{"url":"https://github.com/LiorVainer/4rest/issues"},"license":"MIT","readme":"</br>\r\n<img src=\"https://raw.github.com/LiorVainer/4rest/main/assets/4rest.svg\">\r\n</br>\r\n</br>\r\n\r\n## 4REST\r\n\r\n[![test coverage](https://badgen.net/badge/coverage/100%25/green?icon=github)](https://github.com/LiorVainer/4rest)\r\n[![npm version](https://img.shields.io/npm/v/4rest?color=f00e0e&logo=npm&style=flat)](https://www.npmjs.com/package/4rest)\r\n[![install size](https://packagephobia.com/badge?p=4rest)](https://packagephobia.com/result?p=4rest)\r\n[![minizipped size](https://img.shields.io/bundlephobia/minzip/4rest)](https://packagephobia.com/result?p=4rest)\r\n[![License](https://img.shields.io/github/license/liorvainer/4rest?color=orange)](https://www.npmjs.com/package/4rest)\r\n\r\n<strong>4rest (Forest)</strong> is a promise based, HTTP REST Client built on top of [`axios`](https://www.npmjs.com/package/axios) and [`zod`](https://www.npmjs.com/package/zod) packages suggesting easy to use and extensively customizable, extendable and configurable services with built in CRUD methods and type safe request functions to API.\r\n\r\n<br />\r\n\r\n## Installation\r\n\r\nUsing npm\r\n\r\n```bash\r\n  npm install 4rest\r\n```\r\n\r\nUsing yarn\r\n\r\n```bash\r\n  yarn add 4rest\r\n```\r\n\r\n<br />\r\n\r\n<h2>Table of Contents</h2>\r\n\r\n<ul>\r\n<li><a href=\"#motivation\">Motivation</a></li>\r\n<li><a href=\"#features\">Features</a></li>\r\n<li><a href=\"#usage\">Usage / Examples</a>\r\n<ul><li><a href=\"#usage/basic\">Basic Service</a></li></ul>\r\n<ul><li><a href=\"#usage/extended\">Extended Service</a></li></ul>\r\n<li><a href=\"#config\">Configuration</a>\r\n<ul><li><a href=\"#config/instance\">Instance</a><ul><li><a href=\"#config/instance/instance-creation\">Instance Creation</a></li><li><a href=\"#config/instance/axios-instance-access\">Axios Instance Access</a></li></ul></li></ul>\r\n<ul><li><a href=\"#config/service\">Service</a></li><ul><li><a href=\"#config/service/routes\">Methods Routes</a></li></ul>\r\n<ul><li><a href=\"#config/service/request-config\">Request Config</a></li>\r\n<li><a href=\"#config/service/payload-key\">Payload Data Key</a></li><li><a href=\"#config/service/handlingFunctions\">On Success / On Error Handling</a></li><li><a href=\"#config/service/validation\">Zod Validation</a></li></ul></li></ul>\r\n<ul><li><a href=\"#config/methods-creator\">Methods Creator Helper</a></li></ul>\r\n<li><a href=\"#types\">Types</a>\r\n<ul><li><a href=\"#types/service-generics\">Service Generics</a></li><li><a href=\"#types/service-method-metadata\">Service Method Metadata</a></li><li><a href=\"#types/on-success\">OnSuccess Function</a></li><li><a href=\"#types/on-error\">OnError Function</a></li><li><a href=\"#types/validation\">Validation</a></li></ul></li>\r\n<ul></ul></ul>\r\n\r\n<br />\r\n\r\n<a id=\"motivation\"> <h2>Motivation</h2></a>\r\n\r\nThe package was created to help developers to get their requests functions from client to API up and runing quickly and comfortably, as well as making configuration for requests all centeralized in one spot at the code base of the app.\r\nUsing the package, you can divide your requests functions to API to different services based on the models (data structures) of the API.\r\nWhen you have initiallized your service, you can make request to API at every place in your app with type safety based on the service configuration.\r\n\r\n_Note: The package was meant to be used with <strong>rest</strong> API only and it <strong>does not support graphql._</strong>\r\n\r\n<br />\r\n\r\n<a id=\"features\"> <h2>Features</h2></a>\r\n\r\n💎 <strong> Service with built in CRUD Methods: </strong>\r\n\r\n- getAll\r\n- getById\r\n- deleteAll\r\n- deleteById\r\n- post\r\n- patch\r\n- patchById\r\n- put\r\n- putById\r\n\r\n<br />\r\n\r\n🎨 <strong>Extended Services</strong> with option to add additional methods extending out CRUD methods that comes built in with the base service you create\r\n\r\n🧱 <strong>Services Built</strong> on fully configurable [`axios`](https://www.npmjs.com/package/axios) Instance\r\n\r\n⚙️ <strong>Convenient Configuration</strong> with custom routes, request configuration, and payload data (body property of request) key custom define.\r\nall of that configuration is per service or can be set globally on fetching instance as well\r\n\r\n🛡️ <strong>Data Type Validation</strong> - API fetching requests, payloads and responses data validation with [`zod`](https://www.npmjs.com/package/zod) schemas\r\n\r\n🧪 <strong>Test Proof</strong> - _4rest_ has 100% test coverage\r\n\r\n<br />\r\n\r\n<a id=\"usage\"> <h2>Usage / Examples</h2></a>\r\n\r\n<a id=\"usage/basic\"> <h3>🧱<u>_Basic_</u></h3></a>\r\n\r\n#### 1) Create Instance\r\n\r\n```typescript\r\nimport forest from \"4rest\";\r\n\r\nconst instance = forest.create({ baseURL: \"http://localhost:5000\" });\r\n```\r\n\r\n#### 2) Create Service\r\n\r\n```typescript\r\nimport { instance } from \"./forestInstance\";\r\nimport { UserWithId, User } from \"./types\";\r\n\r\nconst userService = instance.createService<UserWithId, User>(\"user\");\r\n```\r\n\r\n#### 3) Use Service\r\n\r\n- #### GET\r\n\r\n```typescript\r\n// GET http://localhost:5000/user\r\nasync function getUsers() {\r\n  const users: User[] = await (await userService.getAll()).data;\r\n}\r\n\r\n// GET http://localhost:5000/user/:id\r\nasync function getUserById(id: string) {\r\n  const user: User = await (await userService.getById(id)).data;\r\n}\r\n```\r\n\r\n- #### DELETE\r\n\r\n```typescript\r\n// DELETE http://localhost:5000/user\r\nasync function deleteAllUsers() {\r\n  const usersDeleted: User[] = await (await userService.deleteAll()).data;\r\n}\r\n\r\n// DELETE http://localhost:5000/user/:id\r\nasync function deleteUserById(id: ObjectId) {\r\n  const userDeleted: User = await (await userService.deleteById(id)).data;\r\n}\r\n```\r\n\r\n- #### POST\r\n\r\n```typescript\r\n// POST http://localhost:5000/user\r\nasync function createUser(newUser: User) {\r\n  const userCreated: User = await (await userService.post(newUser)).data;\r\n}\r\n```\r\n\r\n- #### PATCH\r\n\r\n```typescript\r\n// PATCH http://localhost:5000/user\r\nasync function updateUser(partialUser: Partial<User>) {\r\n  const updatedUser: User = await (await userService.patch(partialUser)).data;\r\n}\r\n\r\n// PATCH http://localhost:5000/user/:id\r\nasync function updateUserById(id: ObjectId, partialUser: Partial<User>) {\r\n  const updatedUser: User = await (await userService.patchById(id, partialUser)).data;\r\n}\r\n```\r\n\r\n- #### PUT\r\n\r\n```typescript\r\n// PUT http://localhost:5000/user\r\nasync function updateUser(partialUser: Partial<User>) {\r\n  const updatedUser: User = await (await userService.put(partialUser)).data;\r\n}\r\n\r\n// PUT http://localhost:5000/user/:id\r\nasync function updateUserById(id: ObjectId, partialUser: Partial<User>) {\r\n  const updatedUser: User = await (await userService.putById(id, partialUser)).data;\r\n}\r\n```\r\n\r\n<a id=\"usage/extended\"> <h3>🎨 <u>_Extended_</u></h3></a>\r\n\r\n#### 1) Create Extended Service\r\n\r\n```typescript\r\nimport { ForestService } from \"4rest\";\r\n\r\nimport { instance } from \"./forestInstance\";\r\n\r\nexport class UserService extends ForestService<UserWithId, User> {\r\n  constructor() {\r\n    super(\"user\", instance, {\r\n      /* service config will go here */\r\n    });\r\n    /* prefix for request url will be \"user\" */\r\n  }\r\n\r\n  public getByName = (name: string) => this.methodsCreator.getByParam<UserWithId, string>({ suffix: \"name\" })(name);\r\n  public getByNameWithQuery = (name: string) =>\r\n    this.methodsCreator.get<UserWithId>({ route: \"name\", config: { params: { name } } })();\r\n  public isEmailTaken = (email: string) =>\r\n    this.methodsCreator.getByParam<boolean, string>({ route: [\"email\", \"taken\"] })(email);\r\n}\r\n```\r\n\r\n_<strong>Notes:</strong>_\r\n\r\n1. You <strong>_must_</strong> include constructor in the structure that is shown above in your extended service in order for it to work properly\r\n\r\n2. Extended Service will include all the base service methods as well as the additional ones you have added\r\n\r\n3. Read about <a href='#config/methods-creator'>Methods Creator</a> to add new methods to extended service easily\r\n\r\n#### 2) Use Extended Service\r\n\r\n```typescript\r\nconst userService = new UserService();\r\n\r\nasync function getUserName(name: string) {\r\n  const user: User = await (await userService.getByName(name)).data;\r\n}\r\n\r\nasync function getUserNameByQuery(name: string) {\r\n  const user: User = await (await userService.getByNameWithQuery(name)).data;\r\n}\r\n\r\nasync function isEmailTaken(email: string) {\r\n  const isEmailTaken: boolean = await (await userService.isEmailTaken(email)).data;\r\n}\r\n```\r\n\r\n</br>\r\n\r\n<a id=\"config\"> <h2>Configuration</h2></a>\r\n\r\n<a id=\"config/instance\"> <h3>📀 <strong>Forest Instance</strong></h3></a>\r\n\r\n<a id=\"config/instance/instance-creation\"><h4><strong><u>Instance Creation</u></strong></h4></a>\r\n<strong>Create Forest Instance based</strong> `axios` Instance with `forest.create()` Function\r\n\r\n```typescript\r\nimport forest from \"4rest\";\r\n\r\n/* Customised Forest Instance can be based on\r\n   AxiosInstance, AxiosRequestConfig */\r\n\r\nconst forestInstance = forest.create({\r\n    axiosSettings: /* Here goes instance or config*/,\r\n    globalServiceConfig: /* Here goes service configuration that will be applied by default to\r\n                            all created service from these ForestInstance*/\r\n  });\r\n```\r\n\r\nSee What <a href=\"#config/service\">Service Config</a> includes down below.\r\n\r\n_<strong>Note:</strong> if a created service will have a config of it's own, it's config properties will be overriding the global service config properties, which means the more specific property is the one that will be in use eventually_\r\n\r\n<br/>\r\n\r\n<strong>Options to configure</strong> `forest.create()`\r\n\r\n```typescript\r\ninterface InstanceConfig {\r\n  axiosSettings?: AxiosSettings;\r\n  globalServiceConfig?: ServiceConfig;\r\n}\r\n```\r\n\r\n_<strong>Note:</strong> Configuration is completly optional, and if `axiosSettings` are empty the forest instance will be based on the base `AxiosInstance`_\r\n\r\n</br>\r\n\r\n<a id=\"config/instance/axios-instance-access\"><h4><strong><u>Axios Instance Access</u></strong></h4></a>\r\n\r\nYou can access the totally regular `AxiosInstance` that the `ForestInstance` is based on which contains all of [`axios`](https://www.npmjs.com/package/axios) methods on it:\r\n</br>\r\n</br>\r\nAccess it using the `axiosInstance` property on created `ForestInstance`\r\n\r\n```typescript\r\nimport { forestInstance } from \"./instance\";\r\n\r\nconst response = forestInstance.axiosInstance.get(\"localhost:5000/users\" /* Here goes axios config*/);\r\n```\r\n\r\n</br>\r\n\r\n<a id=\"config/service\"> <h3>📀 <strong>Forest Service</strong></h3></a>\r\n\r\n#### <u>Configure Service with `createService()` Method:</u>\r\n\r\n<a id=\"config/service/routes\"> <h4>1) Methods REST Routes</h4></a>\r\n\r\nYou may want to change few of the built in service method _route_ to extend the _prefix_ based on the API you are working with.\r\n\r\nDo it easily by configuring an extended route for each method you want.\r\n\r\n_<strong>Note:</strong> method with no configured extended route will send request to basic route: `baseUrl/prefix` or `baseUrl/prefix/param`_\r\n\r\n<strong>Example:</strong>\r\n\r\n```typescript\r\nimport { instance } from \"./forestInstance\";\r\n\r\nconst userService = instance.createService<User>(\"user\", {\r\n  /* All Service built in CRUD methods route control ( string | string[] ) */\r\n  routes: {\r\n    getAll: [\"get\", \"all\"], // GET http://localhost:5000/user/get/all\r\n    deleteAll: \"all\",       // DELETE http://localhost:5000/user/all\r\n    deleteById: \"id\",       // DELETE http://localhost:5000/user/id/:id\r\n    ...,\r\n    post: \"create\",         // POST http://localhost:5000/user/create\r\n    patch: \"update\"         // PATCH http://localhost:5000/user/update\r\n    patchById: \"update\"     // PATCH http://localhost:5000/user/update/:id\r\n  }\r\n});\r\n```\r\n\r\n<a id=\"config/service/request-config\"> <h4>2) Request Config</h4></a>\r\n\r\nYou can set a `requestConfig` of type `AxiosRequestConfig` for attaching metadata to a request (like headers, params, etc.)\r\n\r\n`requestConfig` can be set for each method seperatly or make one general config for all methods\r\n\r\n_<strong>Note:</strong> if a method has its own specific `requestConfig`, it will be used over the general one_\r\n\r\n<strong>Example:</strong>\r\n\r\n```typescript\r\nimport { instance } from \"./forestInstance\";\r\n\r\nconst userService = instance.createService<UserWithId, User, number>(\"user\", {\r\n  requestConfigByMethod: {\r\n    /* Request Config Per Method */\r\n    getAll: { params: { page: 1, size: 10 } },\r\n    getById: { maxRedirects: 3 },\r\n  },\r\n  requestConfig: {\r\n    /* Request Config For All Methods */\r\n    headers: {\r\n      Authentication: \"Bearer Header\",\r\n    },\r\n  },\r\n});\r\n```\r\n\r\n<a id=\"config/service/payload-key\"> <h4>3) Payload Data Key</h4></a>\r\n\r\nFor HTTP methods with payload (Post, Patch, Put) you can set a `payloadKey` for setting the payload data on the key you want inside the body of the request\r\n\r\n```typescript\r\n// By Default\r\nrequest: {\r\n  body: data,\r\n  ...\r\n}\r\n\r\n// After Setting payloadKey\r\nrequest: {\r\n  body: {\r\n    [payloadKey]: data\r\n  },\r\n  ...\r\n}\r\n```\r\n\r\n`payloadKey` can be set for each HTTP payload method seperatly or set one general config for all methods\r\n\r\n_<strong>Note:</strong> if a method has its own specific `payloadKey`, it will be used over the general one_\r\n\r\n<strong>Example:</strong>\r\n\r\n```typescript\r\nimport { instance } from \"./forestInstance\";\r\n\r\nconst userService = instance.createService<UserWithId, User, number>(\"user\", {\r\n  payloadKey: \"update\",\r\n  payloadKeyByMethod: { post: \"data\" },\r\n});\r\n```\r\n\r\n<a id=\"config/service/handlingFunctions\"> <h4>4) OnSuccess / OnError Handling</h4></a>\r\n\r\nYou can configure in advance how to handle each request when it is completes successfully or failing and throws error.\r\n\r\nSet up <a href=\"#types/on-success\">onSuccess function</a> which parameters will be the <strong>_response_</strong> from successful request and optionally the <a href=\"#types/service-method-metadata\"><strong>_metadata_</strong></a> of the request.\r\n\r\nSet up <a href=\"#types/on-error\">onError function</a> which parameters will be the <strong>_error_</strong> that was thrown from a failed request and optionally the <a href=\"#types/service-method-metadata\"><strong>_metadata_</strong></a> of the request.\r\n\r\n<br>\r\n\r\n<strong>_Without metadata parameter used:_</strong>\r\n\r\n```Typescript\r\nconst userService = forestInstance.createService<UserWithId, User, number>(\"user\", {\r\n    onSuccess: (response) => response.data,\r\n    onError: (error) => {\r\n      return { error, msg: \"error\" };\r\n    },\r\n  });\r\n```\r\n\r\n<strong>_With metadata parameter used:_</strong>\r\n\r\n```Typescript\r\nconst userService = forestInstance.createService<UserWithId, User, number>(\"user\", {\r\n    onSuccess: (response, metadata) => {\r\n      console.log(metadata.serviceConfig.validation);\r\n      return response.data\r\n    },\r\n    onError: (error, metadata) => {\r\n      console.log(metadata.serviceConfig.routes);\r\n      return { error, msg: \"error\" };\r\n    },\r\n  });\r\n```\r\n\r\nYou can also set different onSuccess and onError functions for each service method in the following way:\r\n\r\n```Typescript\r\nconst userService = forestInstance.createService<UserWithId, User, number>(\"user\", {\r\n    onSuccessByMethod: {\r\n      getAll: (response) => response.data,\r\n      getById: (response) => response.status,\r\n      ...,\r\n      post: (response, metadata) => {\r\n        console.log(metadata.serviceFunction);\r\n\r\n        return response.data;\r\n      },\r\n    },\r\n    onErrorByMethod: {\r\n      getById: (error) => {\r\n        return { error, msg: \"errorByMethod\" };\r\n      },\r\n      ...,\r\n      post: (error, metadata) => {\r\n        console.log('error at method:', metadata.serviceFunction);\r\n\r\n        throw error;\r\n      },\r\n    },\r\n  });\r\n```\r\n\r\n<a id=\"config/service/validation\"> <h4>5) Zod Validation</h4></a>\r\n\r\nIf you want to make sure that the data you send to the API or recieved back from it, matches your data model schemas you can set validation config for service with [`zod`](https://www.npmjs.com/package/zod) schemas.\r\n\r\nFirst of all, decalre your validation schemas using zod:\r\n\r\n```typescript\r\nexport const UserSchema = z.object({\r\n  name: z.string(),\r\n  email: z.string().optional(),\r\n});\r\n\r\nexport const UserWithIdSchema = UserSchema.extend({\r\n  _id: z.number(),\r\n});\r\n```\r\n\r\nthen apply zod schemas to the fitting property of service configuration object:\r\n\r\n- <strong>Global validation for all methods on service:</strong>\r\n\r\n```typescript\r\nimport { UserWithIdSchema, UserSchema } from \"../../types/user\";\r\n\r\nconst userService = forestInstance.createService<UserWithId, User, number>(\"user\", {\r\n  validation: {\r\n      types: { resoponseData: UserWithIdSchema },\r\n    }\r\n  }\r\n});\r\n```\r\n\r\n_Examples for data recieved back from API:_\r\n\r\n```typescript\r\n// Valid Data, no error will be thrown\r\n[{ _id: 1, name: \"John Smith\" }];\r\n\r\n// Invalid data, will throw error\r\n[{ name: \"John Smith\" }];\r\n```\r\n<br>\r\n\r\n- <strong>Validation by service method:</strong>\r\n\r\n```typescript\r\nimport { UserWithIdSchema, UserSchema } from \"../../types/user\";\r\n\r\nconst userService = forestInstance.createService<UserWithId, User, number>(\"user\", {\r\n  validation: {\r\n    onMethods: {\r\n      post: { types: { requestPayload: UserSchema, resoponseData: UserWithIdSchema } },\r\n      getById: { types: { resoponseData: UserSchema.strict() } },\r\n    },\r\n  },\r\n});\r\n```\r\n\r\n_Examples for payload sent to API:_\r\n\r\n```typescript\r\n// Valid Data, no error will be thrown\r\n{ name: \"John Smith\", email: \"john.smith@gmail.com\" };\r\n\r\n// Invalid data, will throw error\r\n{ email: \"john.smith@gmail.com\" };\r\n```\r\n<br>\r\n\r\n- <strong>Combination of both:</strong>\r\n\r\n```typescript\r\nimport { UserWithIdSchema, UserSchema } from \"../../types/user\";\r\n\r\nconst userService = forestInstance.createService<UserWithId, User, number>(\"user\", {\r\n  validation: {\r\n    onMethods: {\r\n      post: { types: { requestPayload: UserSchema, resoponseData: UserWithIdSchema } },\r\n      getById: { types: { resoponseData: UserSchema.strict() } },\r\n    },\r\n    types: { resoponseData: UserWithIdSchema },\r\n  },\r\n});\r\n```\r\n\r\n_<strong>Note:</strong> if a method has its own specific validation, it will be used over the global one_\r\n\r\n<br>\r\n\r\n<a id=\"config/methods-creator\"> <h3>📀 <strong>Methods Creator Helper</strong></h3></a>\r\n\r\nTo help you construct new service methods, `ForestService` class comes included with property named `methodsCreator` that you can utilize to create new methods easily.\r\n\r\n`methodsCreator` property includes the following helper methods:\r\n\r\n- get\r\n- getByParam\r\n- delete\r\n- post\r\n- put\r\n- putByParam\r\n- patch\r\n- patchByParam\r\n\r\n<br>\r\n\r\n_Examples_:\r\n\r\n```typescript\r\npublic getByName = (name: string) => this.methodsCreator.getByParam<UserWithId, string>({ suffix: \"name\" })(name);\r\npublic getByNameWithQuery = (name: string) => this.methodsCreator.get<UserWithId>({ route: \"name\", config: { params: { name } } })();\r\npublic isEmailTaken = (email: string) => this.methodsCreator.getByParam<boolean, string>({ route: [\"email\", \"taken\"] })(email);\r\n```\r\n\r\n<br>\r\n\r\n### _Configuration Options_:\r\n\r\n#### _Base Helper Method_:\r\n\r\n```typescript\r\ninterface BaseConfig {\r\n  route?: Route; // string or string[]\r\n  config?: AxiosRequestConfig;\r\n  serviceFunction?: ServiceFunction;\r\n  validation?: MethodValidationConfig; // configuartion object based on Zod Schemas;\r\n  onSuccess?: OnSuccessFunction;\r\n  onError?: OnErrorFunction;\r\n}\r\n```\r\n\r\n#### _Payload Helper Method_:\r\n\r\n```typescript\r\ninterface PayloadConfig {\r\n  route?: Route;\r\n  config?: AxiosRequestConfig;\r\n  validation?: MethodValidationConfig;\r\n  onSuccess?: OnSuccessFunction;\r\n  onError?: OnErrorFunction;\r\n  key?: Key; // string\r\n}\r\n```\r\n\r\n#### _By Param Helper Method_:\r\n\r\n```typescript\r\ninterface ByParamConfig {\r\n  route?: Route;\r\n  suffix?: Route; // string or string[] added after the param in request url\r\n  config?: AxiosRequestConfig;\r\n  validation?: MethodValidationConfig;\r\n  onSuccess?: OnSuccessFunction;\r\n  onError?: OnErrorFunction;\r\n}\r\n```\r\n\r\n#### _Payload By Param Helper Method_:\r\n\r\n```typescript\r\ninterface PayloadByParamConfig {\r\n  route?: Route;\r\n  suffix?: Route;\r\n  config?: AxiosRequestConfig;\r\n  validation?: MethodValidationConfig;\r\n  onSuccess?: OnSuccessFunction;\r\n  onError?: OnErrorFunction;\r\n  key?: Key;\r\n}\r\n```\r\n\r\n<br>\r\n\r\n<a id=\"types\"> <h2>Types</h2></a>\r\n\r\n<a id=\"types/service-generics\"> <h3>Service Generics</h3></a>\r\n\r\n<strong>Service</strong> has _generic types_ to control the following types of the service methods\r\n\r\n- Response Data\r\n- Payload Data\r\n- Id Type\r\n\r\n```typescript\r\nclass ForestService<ResponseData = any, PayloadData = Response, IdType = string>\r\n```\r\n\r\nBy doing so, Typescript will force you to give it the parameters with matching types when calling the service methods or will recognize alone the response data type for more comfortable auto-completion in the future.\r\n\r\nYou pass this generic types when creating new service with `createService()` function of a `forestInstance`\r\n\r\n<strong>Example:</strong>\r\n\r\n```typescript\r\nimport { instance } from \"./forestInstance\";\r\nimport { UserWithId, User } from \"./types\";\r\n\r\nconst userService = instance.createService<UserWithId, User, string>(\"user\");\r\n\r\n// ResponseData - UserWithId\r\n// PayloadData - User\r\n// IdType - string\r\n```\r\n\r\n<strong>By default</strong> the service takes the types you passed to it and transform them to each service method in the following way:\r\n\r\n#### getAll\r\n\r\n- Response Data Type: `ResponseData[]`\r\n\r\n#### getById\r\n\r\n- Response Data Type: `ResponseData`\r\n- Id Type: `IdType`\r\n\r\n#### deleteAll\r\n\r\n- Response Data Type: `ResponseData[]`\r\n\r\n#### deleteById\r\n\r\n- Response Data Type: `ResponseData`\r\n- Id Type: `IdType`\r\n\r\n#### post\r\n\r\n- Response Data Type: `ResponseData`\r\n- Payload Data Type: `PayloadData`\r\n\r\n#### patch\r\n\r\n- Response Data Type: `ResponseData`\r\n- Payload Data Type: `Partial<PayloadData>`\r\n\r\n#### patchById\r\n\r\n- Response Data Type: `ResponseData`\r\n- Payload Data Type: `Partial<PayloadData>`\r\n- Id Type: `IdType`\r\n\r\n#### put\r\n\r\n- Response Data Type: `ResponseData`\r\n- Payload Data Type: `Partial<PayloadData>`\r\n\r\n#### putById\r\n\r\n- Response Data Type: `ResponseData`\r\n- Payload Data Type: `Partial<PayloadData>`\r\n- Id Type: `IdType`\r\n\r\nif you would like to change one or more of this method types, you can do it when calling the method by passing to it generic types that will be relevant to the this method only, at the place you are calling it.\r\n\r\n<br>\r\n\r\n<strong>Example:</strong>\r\n\r\nLets say you would like to change the type of the response data that comes back from calling to the post method from `ResponseData` to `boolean` because the API you working with is returns only with data that indicates whether or not an _User_ has been created successfully\r\n\r\nYou can do that in the following way:\r\n\r\n```typescript\r\nconst data: boolean = await(await userService.post<boolean>(/* newUserData */)).data;\r\n```\r\n\r\n<a id=\"types/service-method-metadata\"><h3>Service Method Metadata</h3></a>\r\n\r\nEach request function (method) in 4rest includes metadata about the current request.\r\n\r\nMethod metadata includes the following properties:\r\n\r\n```typescript\r\ninterface Metadata {\r\n  serviceConfig?: ServiceConfig; // current service config\r\n  serviceFunction?: ServiceFunction; // name of one of the built in base service functions\r\n}\r\n```\r\n\r\n<a id=\"types/on-success\"><h3>OnSuccess Function</h3></a>\r\n\r\nFunction For Handling Successful Requests:\r\n\r\n```typescript\r\ntype OnSuccessFunction = <T>(value: AxiosResponse<T>, metadata?: Metadata) => any;\r\n```\r\n\r\n<a id=\"types/on-error\"><h3>OnError Function</h3></a>\r\n\r\nFunction For Handling Failed Requests:\r\n\r\n```typescript\r\ntype OnSuccessFunction = <T>(value: AxiosResponse<T>, metadata?: Metadata) => any;\r\n```\r\n\r\n<a id=\"types/validation\"><h3>Validation</h3></a>\r\n\r\n<strong>_ValidationTypes_</strong> - validation can be set on either request payload or response data\r\n\r\n```typescript\r\ninterface ValidationTypes<T = ZodSchema> {\r\n  requestPayload?: T;\r\n  resoponseData?: T;\r\n}\r\n```\r\n\r\n<strong>_ServiceValidationConfig_</strong> - lets you set validation on each method seperatly via `onMethods` property or globaly for all methods via `types` property\r\n\r\n```typescript\r\ninterface MethodsValidation {\r\n  types: ValidationTypes;\r\n}\r\n\r\ninterface ServiceValidationConfig {\r\n  types: ValidationTypes;\r\n  onMethods?: Partial<Record<ServiceFunction, MethodsValidation>>;\r\n}\r\n```\r\n<strong>_MethodValidationConfig_</strong> - you can set validation specificlly on custom method you create for your extended service\r\n\r\n\r\n```typescript\r\ntype MethodValidationConfig = ValidationTypes;\r\n```\r\n\r\n<br>\r\n\r\n## License\r\n\r\n[MIT](https://github.com/LiorVainer/forest/blob/main/LICENSE)\r\n","readmeFilename":"README.md"}