{"_id":"@calvear/react-spa-routerizer","_rev":"12-4e87b8d34c1e5eab92e248f08c329f26","name":"@calvear/react-spa-routerizer","dist-tags":{"latest":"1.0.11","alpha":"1.0.5-alpha.0"},"versions":{"1.0.0":{"version":"1.0.0","name":"@calvear/react-spa-routerizer","title":"React SPA Routerizer","description":"React library for application routing (based on React Router) that prevents boilerplate code.","author":{"name":"Alvear Candia, Cristopher Alejandro","email":"calvear93@gmail.com"},"license":"GPL3","private":false,"keywords":["react","react-router","spa","routes","routing","router"],"repository":{"type":"git","url":"git+https://github.com/calvear93/react-spa-routerizer.git"},"peerDependencies":{"react":"^17.0.1","react-router":"^5.2.0","react-router-dom":"^5.2.0"},"devDependencies":{"@testing-library/jest-dom":"^5.11.8","@testing-library/react":"^11.2.3","@testing-library/user-event":"^12.6.0","eslint":"^7.17.0","eslint-plugin-jest":"^24.1.3","eslint-plugin-jsdoc":"^30.7.13","eslint-plugin-react-hooks":"^4.2.0","eslint-plugin-sonarjs":"^0.5.0","jest":"^26.6.3"},"scripts":{"publish":"npm publish --access public","eslint:analyze":"eslint --ext .js,.jsx src/","eslint:fix":"eslint --fix --ext .js,.jsx src/","test":"test --watchAll=false --verbose","packages:update":"npm update --save/--save-dev","packages:force-update":"npx npm-check-updates -u","git:case-sensitive":"git config core.ignorecase false"},"gitHead":"3d040d2edb9931e0829d49a4892b985d2cbf2874","bugs":{"url":"https://github.com/calvear93/react-spa-routerizer/issues"},"homepage":"https://github.com/calvear93/react-spa-routerizer#readme","_id":"@calvear/react-spa-routerizer@1.0.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.11","dist":{"integrity":"sha512-zJjEwZbf75gS776ugg3Ok4SIBx57coyMfWcs01xEyV/XesiEhu6/E1VNvs2MN5UYxAsrXFGZfNi6cCtO1RD44Q==","shasum":"2da78a309f2a369df2c1e8efeb755967d7711e98","tarball":"https://registry.npmjs.org/@calvear/react-spa-routerizer/-/react-spa-routerizer-1.0.0.tgz","fileCount":18,"unpackedSize":68107,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgDd1fCRA9TVsSAnZWagAAimkP/1PyZfwRlSyZLoQW5EcQ\nZD0hdPmJsLz+hnHhX7TTK5ivtOUljFTT5nN/OjKqRBf9S4equdOJd1OFyNia\nE/zLFHxcTJEMGzZkyRo1t4M5hTkFWiMELzaBmKEoyoyNF38i4bzAj4idvSn8\n6BLnGKFdvwZrkGGAtl12WPUWdAPUqjoRaWU/oP4PZZcrRk0j8p77Wp6muPqz\nDMjhEQZNgAmvV2onlSRQGC1isUQbBPtR5PySJJgQScI36HQZdk6ewpLexD1A\nwdcPnb7GmkxvG/No9slDUpm2f3ZqQ3I6Oar9iF+J3YmeSV9NDU2EhZPeIg7s\nnxSMN1+Xteth3mPcUSoPZL7HdYHnEiD/LdpNwRPl4aqSi/Ipa3G0aLkqFpgT\nLF70GUxUi5nhOoa0GVm+R7JLkoZa37ggw6s9HeeoG8pf6IORktn8uQULmjXk\nwtNPsCCZTUd6Yo9mjNtot5gaWvNABQQnqWoOr8bGmxn6EvQXOMTfRo4/VS9R\nwv8dMGUllYSdYG42g3ks4AD0hYBTRXqZw79DxX956CPKXKF+CVN/rupno/0C\n8jV3hfxbnJRoTYn4hZ8PEOb+Ih5P+/sQpyRnJnCKlQjPidXZLhBGkEPZ2LyP\n7cOpjHMAr+edlbEcaof/TbchXKAyxzbZ1rBE1pacrnepcmPtE3OxZbH63DPb\ncThU\r\n=0dBB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDL0JGISOFOZVJuiLzBb2Q/u+apPiWRAXILICP05k8QlQIgdLz7oqFl/21Rjce4hHtrbfQ91HvuQVsHcm6YXGlnPH4="}]},"_npmUser":{"name":"calvear","email":"calvear93@gmail.com"},"directories":{},"maintainers":[{"name":"calvear","email":"calvear93@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-spa-routerizer_1.0.0_1611521375113_0.7297748367671266"},"_hasShrinkwrap":false},"1.0.1":{"version":"1.0.1","name":"@calvear/react-spa-routerizer","title":"React SPA Routerizer","description":"React library for application routing (based on React Router) that prevents boilerplate code.","author":{"name":"Alvear Candia, Cristopher Alejandro","email":"calvear93@gmail.com"},"license":"GPL3","private":false,"main":"src/index.js","keywords":["react","react-router","spa","routes","routing","router"],"repository":{"type":"git","url":"git+https://github.com/calvear93/react-spa-routerizer.git"},"peerDependencies":{"react":"^17.0.1","react-router":"^5.2.0","react-router-dom":"^5.2.0"},"devDependencies":{"@testing-library/jest-dom":"^5.11.8","@testing-library/react":"^11.2.3","@testing-library/user-event":"^12.6.0","eslint":"^7.17.0","eslint-plugin-jest":"^24.1.3","eslint-plugin-jsdoc":"^30.7.13","eslint-plugin-react-hooks":"^4.2.0","eslint-plugin-sonarjs":"^0.5.0","jest":"^26.6.3"},"scripts":{"publish":"npm publish --access public","eslint:analyze":"eslint --ext .js,.jsx src/","eslint:fix":"eslint --fix --ext .js,.jsx src/","test":"test --watchAll=false --verbose","packages:update":"npm update --save/--save-dev","packages:force-update":"npx npm-check-updates -u","git:case-sensitive":"git config core.ignorecase false"},"gitHead":"3d040d2edb9931e0829d49a4892b985d2cbf2874","bugs":{"url":"https://github.com/calvear93/react-spa-routerizer/issues"},"homepage":"https://github.com/calvear93/react-spa-routerizer#readme","_id":"@calvear/react-spa-routerizer@1.0.1","_nodeVersion":"14.15.1","_npmVersion":"6.14.11","dist":{"integrity":"sha512-q20NbVn1T2acMTihbS2toasUgUuYI2iMbATisPS4+AY20wmrTurG9UnGfDbchE5yUltq3gjAdiMTn6hBAfyIkA==","shasum":"db75c24036fd02a48e90b65be2e7dd014e6e53e1","tarball":"https://registry.npmjs.org/@calvear/react-spa-routerizer/-/react-spa-routerizer-1.0.1.tgz","fileCount":18,"unpackedSize":68134,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgDeGTCRA9TVsSAnZWagAA9EEP+wYmi/Ok/LllqUN3Ishb\nC+xWAKucsoAskie/IDDJcIkEp+XqWVCZ36QZLo4mw8O2qx5Mt8JtgF/1MBKc\ngbmJLa2Jm3ok5V4zBBfvQYrcqGessqcpEtde+O7Y4CpWlp9CRSE6+ktI8WHa\n6mcXAJ2ib3FNnvPnjaT9BTVRpHO0fue+UXN4AtAHAlX11c7H//wr5YCFVXgT\np/oLiNRGWNM3gOpcY++yV8gUdwNTW7pZbK9/gmIuhIQWcwDIPECUwmdayNwS\nBqoJfoLvyW/SN32wj+ob42qXZpffjGoKDsSEWduU1RKwKyj82vND4aqYLl9a\n5Y36wIjvMrrt21ODBY+URv4CNidSvsy67duUX7QilP7Ylkh7vHf0dFHz5Fqr\n98+ZkKCoKmTlAhA1gPitwWkvD9GrN2GmlDEsOyXIdHIvkqq+V+f4u+ccBPBr\nAGzKW2Y1u9JLs2LTxPsoNoHIpKRjzx4xF8mJm6SbcTthBZRE9OvDfn+DQAJO\nORnRc0V+hfiKLoeGRQX8GviEUdxoMMXuWtK3k5ByvT0Yx0SG+8fxve1TwiMl\ns7Cvw206vFwq8hB9iPQHAtD2ZUWh9LuHw8qZMxTZa07G0vyhswoauCzCrRmF\nWeAu4w1STDC70i2j2AogD5PnAomTHzWRrNKOZRviqoke73RlWJJmCh766d1w\n+89Q\r\n=fC9w\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC6qqO2KyV2HxL5F+d2xEUAwUwDGLT+ghDCpLOqC/oZtgIhAO6yYYg5BZBlJY8AOiEquxFrtlEGiXfSHvP0oChza3kl"}]},"_npmUser":{"name":"calvear","email":"calvear93@gmail.com"},"directories":{},"maintainers":[{"name":"calvear","email":"calvear93@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-spa-routerizer_1.0.1_1611522450714_0.6108162677118774"},"_hasShrinkwrap":false},"1.0.2":{"version":"1.0.2","name":"@calvear/react-spa-routerizer","title":"React SPA Routerizer","description":"React library for application routing (based on React Router) that prevents boilerplate code.","author":{"name":"Alvear Candia, Cristopher Alejandro","email":"calvear93@gmail.com"},"license":"GPL3","private":false,"repository":{"type":"git","url":"git+https://github.com/calvear93/react-spa-routerizer.git"},"main":"dist/index.js","keywords":["react","react-router","spa","routes","routing","router"],"engines":{"node":">=12","npm":">=6"},"peerDependencies":{"react":"^17.0.1","react-router":"^5.2.0","react-router-dom":"^5.2.0"},"devDependencies":{"@babel/cli":"^7.12.10","@babel/preset-env":"^7.12.11","@babel/preset-react":"^7.12.10","@testing-library/jest-dom":"^5.11.8","@testing-library/react":"^11.2.3","@testing-library/user-event":"^12.6.0","eslint":"^7.17.0","eslint-plugin-jest":"^24.1.3","eslint-plugin-jsdoc":"^30.7.13","eslint-plugin-react-hooks":"^4.2.0","eslint-plugin-sonarjs":"^0.5.0","jest":"^26.6.3"},"scripts":{"build":"npx babel src --out-dir dist --copy-files","publish":"npm login && npm publish --access public","eslint:analyze":"eslint --ext .js,.jsx src/","eslint:fix":"eslint --fix --ext .js,.jsx src/","test":"test --watchAll=false --verbose","packages:update":"npm update --save/--save-dev","packages:force-update":"npx npm-check-updates -u","git:case-sensitive":"git config core.ignorecase false"},"gitHead":"6902e70125a07829b0d12a520a0c7cc6cd3cfefa","bugs":{"url":"https://github.com/calvear93/react-spa-routerizer/issues"},"homepage":"https://github.com/calvear93/react-spa-routerizer#readme","_id":"@calvear/react-spa-routerizer@1.0.2","_nodeVersion":"14.15.1","_npmVersion":"6.14.11","dist":{"integrity":"sha512-sB+vBcohw38vbCYj6hVmkERyFngJMeLW/uRgzKwC36iR8cToQ/1gRdE/hC6cHWUSTrQ8yd70hGUrAhLLRXI1dQ==","shasum":"9baa9b4748030fd102ac9e4201c7fc49cd55fc60","tarball":"https://registry.npmjs.org/@calvear/react-spa-routerizer/-/react-spa-routerizer-1.0.2.tgz","fileCount":12,"unpackedSize":61504,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgDeeiCRA9TVsSAnZWagAAV/cP/R/gRygSlghVJUljAr8h\ngs0pcQAURQkEV4SfToMz5KT5FpOmOkSEKwMBsVHN1/l4QUs+O7SkKcQWmHLp\nx4D1DX8n2Ozca3jNqnR/WntJgyX0zOuLQk/MiSQCV/Mf2Q4BC9DxRCraS02T\nSXLSMWsHeU2WSm+Qxt12laME4cbTgkxas4AP7d/1Je82Puzxg3eo5XOx9iIX\n9ZUz+//DZRgZxH9C8LEEv1Cpw3W5q17DwzQY8udgPyvxxOipuoLGxY9iWD5f\nx/WRRj3qfUKLlW2TuUvk1d8ZxY3m6ua7jrS7cdngcRdRyapVGkjsiTVinc/x\naLsbLSFeEwHW4sLPQgXvsni5z87v+a8Y9fm/8+zyQpUhHf/hdzz1s0I+Mnva\noqkoFyXLvgdu3FtVykCYdPxweuj/IIWgyBaNWlL3Te3BdG+PNUgoYBImHua/\n4ztu3e0FfPEUsdG8GQOj54deGgatG6yLp2ugr33DPlpN+ERsrZXsw9Ggj3wc\nMWPUs7C6RCj3CaIEVOq7H14AFH2Hx0EDGRDANezT5iQeCtXzHJsqWe4pTJcf\nVkbSmce6Zla6YgMZ2kqbmkOgeJ3gg9CsXftOeNmGz1e8h6rnO96V4CUSe3Bo\n6d/JrMLNEv4YER9c58YysLBfOFbT9JOGltsD2B5cHxleOXa8VaS/iGh0niqs\nlDwS\r\n=aQ2+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHYO+jj8O88h1z63vqt8Oo8Fbn2aPisiKMU/o1nUrbcFAiEAhY0Q43Xod0f3mMUMVnILDLYZJH8EY7wjyintaL2tl84="}]},"_npmUser":{"name":"calvear","email":"calvear93@gmail.com"},"directories":{},"maintainers":[{"name":"calvear","email":"calvear93@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-spa-routerizer_1.0.2_1611524001936_0.5234986181893264"},"_hasShrinkwrap":false},"1.0.3":{"version":"1.0.3","name":"@calvear/react-spa-routerizer","title":"React SPA Routerizer","description":"React library for application routing (based on React Router) that prevents boilerplate code.","author":{"name":"Alvear Candia, Cristopher Alejandro","email":"calvear93@gmail.com"},"license":"GPL3","private":false,"repository":{"type":"git","url":"git+https://github.com/calvear93/react-spa-routerizer.git"},"main":"dist/index.js","keywords":["react","react-router","spa","routes","routing","router"],"engines":{"node":">=12","npm":">=6"},"peerDependencies":{"react":"^17.0.1","react-dom":"^17.0.1","react-router":"^5.2.0","react-router-dom":"^5.2.0"},"devDependencies":{"@babel/cli":"^7.12.10","@babel/preset-env":"^7.12.11","@babel/preset-react":"^7.12.10","@testing-library/jest-dom":"^5.11.8","@testing-library/react":"^11.2.3","@testing-library/user-event":"^12.6.0","eslint":"^7.17.0","eslint-plugin-jest":"^24.1.3","eslint-plugin-jsdoc":"^30.7.13","eslint-plugin-react-hooks":"^4.2.0","eslint-plugin-sonarjs":"^0.5.0","jest":"^26.6.3"},"scripts":{"build":"npx babel src --out-dir dist --copy-files","publish":"npm login && npm publish --access public","eslint:analyze":"eslint --ext .js,.jsx src/","eslint:fix":"eslint --fix --ext .js,.jsx src/","test":"test --watchAll=false --verbose","packages:update":"npm update --save/--save-dev","packages:force-update":"npx npm-check-updates -u","git:case-sensitive":"git config core.ignorecase false"},"gitHead":"6902e70125a07829b0d12a520a0c7cc6cd3cfefa","bugs":{"url":"https://github.com/calvear93/react-spa-routerizer/issues"},"homepage":"https://github.com/calvear93/react-spa-routerizer#readme","_id":"@calvear/react-spa-routerizer@1.0.3","_nodeVersion":"14.15.1","_npmVersion":"6.14.11","dist":{"integrity":"sha512-F7RDdvaPA63CI0Gq0xnxu9udGG3sPAmFDGMRLCDPJDKkcRRkF/1ErgOoWVGL7bpeaqPyZ9SlrOE9g1K3LnhBRg==","shasum":"7828794d1d19748406cdcd23b25c2bf7f6d5bc78","tarball":"https://registry.npmjs.org/@calvear/react-spa-routerizer/-/react-spa-routerizer-1.0.3.tgz","fileCount":12,"unpackedSize":63056,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgDepwCRA9TVsSAnZWagAAAhUP/iJaagSf331aE5PRPpUg\neAnvMcKoPIIL+d/HUwRP9khh78rq3t9QZSe5u3TjZd8KDkF/0pLEF0rXfHcL\nfnsESsxJRMEURNbnR/AAWUIl2ZJaxuhGMH0K+WVis6prCAbu/F1UzabE4LY9\n7Ys9imrpujIvJp8q+7PdDtGfgKmLkBfoeOxNnI86qdF7ODkDCfF3Bd2TaqiE\ntQVGzwqZQG74FSwZrAbIgK4Ed/e/mJ4R+vwgcMu8lOy+wBH1fF6rUZnoc8LX\n/lVohVIQwxL7C8MHaB9UXJY/O95uh/7ral7Y33Bf+1BHzZkqC6h/7GeLGFos\nq5ejDqqqDazOq9IL/MdmBLCsXC0w+mfn8/qxKKeUAV7kZFq83MbQ5gH1Kaav\nMgsDPvaw17k4hZpZYF8R2rXlVZp9z0JFuFShZxg1kKL/VRGSTzxZ45smiRUF\nSsPuinKq/QAB5wRGRbvLqXvG8C7EinwjnmqXLxIpxdyQF0RsVzZCoostoQGD\nhXdukraGz82h/3i21h1HyRwGmBBBPzVaGo+F2SVbJdG4nT6nZ10iquzScD+G\nCeXmQ9dFESNFcqXfJWT7HWG49ERW30ZvfRu2CxZGYpSWzD1vzfIzG+4SrY75\nS6N80ViFqDZ4hS0SLEgR6D9RHUnI7IK9kb3mAFlXh1cXlJNdH00jhn/GeZhK\nsfQt\r\n=xoCQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCb39W30wTT8HynhqI3m6f1MmiuQiP0S5yv8g/gFvMbEAIhAK7UDrLo3ZmeZYsVGQQ0Ie6Sp4fA2uXhxr+qNXzzb25n"}]},"_npmUser":{"name":"calvear","email":"calvear93@gmail.com"},"directories":{},"maintainers":[{"name":"calvear","email":"calvear93@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-spa-routerizer_1.0.3_1611524719670_0.6869645374262279"},"_hasShrinkwrap":false},"1.0.4":{"version":"1.0.4","name":"@calvear/react-spa-routerizer","title":"React SPA Routerizer","description":"React library for application routing (based on React Router) that prevents boilerplate code.","author":{"name":"Alvear Candia, Cristopher Alejandro","email":"calvear93@gmail.com"},"license":"GPL3","private":false,"repository":{"type":"git","url":"git+https://github.com/calvear93/react-spa-routerizer.git"},"main":"dist/index.js","keywords":["react","react-router","spa","routes","routing","router"],"engines":{"node":">=12","npm":">=6"},"peerDependencies":{"react":">= 16.8.0","react-dom":">= 16.8.0","react-router":">= 5.1.0","react-router-dom":">= 5.1.0"},"devDependencies":{"@babel/cli":"^7.12.10","@babel/preset-env":"^7.12.11","@babel/preset-react":"^7.12.10","@testing-library/jest-dom":"^5.11.8","@testing-library/react":"^11.2.3","@testing-library/user-event":"^12.6.0","eslint":"^7.17.0","eslint-plugin-jest":"^24.1.3","eslint-plugin-jsdoc":"^30.7.13","eslint-plugin-react-hooks":"^4.2.0","eslint-plugin-sonarjs":"^0.5.0","jest":"^26.6.3"},"scripts":{"build":"npx babel src --out-dir dist --copy-files","upload":"npm login && npm publish --access public","eslint:analyze":"eslint --ext .js,.jsx src/","eslint:fix":"eslint --fix --ext .js,.jsx src/","test":"test --watchAll=false --verbose","packages:update":"npm update --save/--save-dev","packages:force-update":"npx npm-check-updates -u","git:case-sensitive":"git config core.ignorecase false"},"gitHead":"0eae5da9cf5e05b9b33a402b79e4faeb930d759f","bugs":{"url":"https://github.com/calvear93/react-spa-routerizer/issues"},"homepage":"https://github.com/calvear93/react-spa-routerizer#readme","_id":"@calvear/react-spa-routerizer@1.0.4","_nodeVersion":"14.15.1","_npmVersion":"6.14.11","dist":{"integrity":"sha512-f9Y1U7hsaT0bM7bChXRJExgi4094OonRXVemHovDNEwLJD6vo98L0of+MDyi0c0GBUz+PVrpMB2pbrZ2uS5nYw==","shasum":"67833def9c569da52f68ca7512dc58b75618d0c2","tarball":"https://registry.npmjs.org/@calvear/react-spa-routerizer/-/react-spa-routerizer-1.0.4.tgz","fileCount":12,"unpackedSize":63261,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgDsKxCRA9TVsSAnZWagAA7roP/iMR1HxSKvBbdCrIojGB\neMeLNNb2JC8VlXd6/qixlzIJhBdAHg/CXKmgFK6JJ5MYlIvmyMbZuHqhwraC\najcdBFMxQgUzx8okeHN2V4aH6+892RY7LcJIksmbzjSsUjEFb2XUwoQdPjmS\nulhYJjWZsbmECgXafmu5lTjBnb04q1uVRqm8GQarAAL1qEGHioAxF0uE3/hv\npGWPM2aJfI5/NrafNEOig9Dg87HIuPIT0xAqywFEJgR3w0ZUKpCrW63L43Z0\n5eXi0cwKWDNBQTr+zdMIzj5Buqr5Rz+8pvuhEjcvbO3lYBuLcTexY2jcXOeA\nT1NMrCPNSPkxLnZSnlGuH90SFIp1UKUMYE+hJ4dC3yzC7rT+D90vc1AICJgr\ndeQEGD6b0Yn6W5IcApq3W2rv0hy15+N9VnSSHGd3TeGy6FHLGlDEmN9FsUXo\nLzEN3YbbS1ho6Na7wSm7/lCwUFHwP0YrcjdQN+iwIsMzWpucP2X+gws7eFQr\nt3oqvcOd7yovuDlesmUvNsT9u2SQybWgVWXdMsn0hutwecHWsJ+lJMBikYrW\nbbDNFyW6fMV4+W8cXVxWR9AhDEVwX24npEdpV0aC/7covycNeB1EkO1IFqiz\naKx+uKVa5ERYEtDoeW3jySigGVAu9NJZKrSDTGB2XVzUV6F3UDFpzwnoRwRA\narxx\r\n=6paa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDKU9lWR/0+tiuqqgcKJAVI0WYBZqy0FzrDKjvPES3yKQIhAIp5g/2jYdrs7HuDklkizf9Gb/2Z8IkmfQ05ZG36M5Re"}]},"_npmUser":{"name":"calvear","email":"calvear93@gmail.com"},"directories":{},"maintainers":[{"name":"calvear","email":"calvear93@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-spa-routerizer_1.0.4_1611580080924_0.7598514074330305"},"_hasShrinkwrap":false},"1.0.5-alpha.0":{"version":"1.0.5-alpha.0","name":"@calvear/react-spa-routerizer","title":"React SPA Routerizer","description":"React library for application routing (based on React Router) that prevents boilerplate code.","author":{"name":"Alvear Candia, Cristopher Alejandro","email":"calvear93@gmail.com"},"license":"GPL3","private":false,"repository":{"type":"git","url":"git+https://github.com/calvear93/react-spa-routerizer.git"},"main":"dist/index.js","keywords":["react","react-router","spa","routes","routing","router"],"engines":{"node":">=12","npm":">=6"},"peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"dependencies":{"react-router":"^5.2.0","react-router-dom":"^5.2.0"},"devDependencies":{"@babel/cli":"^7.12.10","@babel/preset-env":"^7.12.11","@babel/preset-react":"^7.12.10","@testing-library/jest-dom":"^5.11.8","@testing-library/react":"^11.2.3","@testing-library/user-event":"^12.6.0","eslint":"^7.17.0","eslint-plugin-jest":"^24.1.3","eslint-plugin-jsdoc":"^30.7.13","eslint-plugin-react-hooks":"^4.2.0","eslint-plugin-sonarjs":"^0.5.0","jest":"^26.6.3"},"scripts":{"build":"npx babel src --out-dir dist --copy-files","upload":"npm login && npm publish --access public","upload:beta":"npm login && npm publish --access public --tag beta","upload:alpha":"npm login && npm publish --access public --tag alpha","eslint:analyze":"eslint --ext .js,.jsx src/","eslint:fix":"eslint --fix --ext .js,.jsx src/","test":"test --watchAll=false --verbose","packages:update":"npm update --save/--save-dev","packages:force-update":"npx npm-check-updates -u","git:case-sensitive":"git config core.ignorecase false"},"readme":"# React SPA Routerizer\r\n\r\nReact library for application routing (based on React Router) that prevents boilerplate code.\r\nThis library eases routes definitions and routing job.\r\nExposes a generic Router for create base app router, some hooks and a routes service (for breadcrumbs for example).\r\n\r\n## Structure 📋\r\n\r\n```bash\r\n├── README.md\r\n├── LICENCE.md\r\n├── CHANGELOG.md\r\n├── .vscode/ # Visual Studio shared development config\r\n├── src/\r\n│   ├── router/\r\n│   │   ├── components/\r\n│   │   │   ├── RouteChild.jsx # handle page rendering\r\n│   │   │   ├── Router.jsx # handle Switch and Route definitions\r\n│   │   │   └── RouterProvider.jsx # initializes router.service\r\n│   │   ├── router.hook.js # library hooks\r\n│   │   └── router.service.js # handle current routes\r\n│   └── index.js\r\n├── package.json\r\n├── jsconfig.js\r\n├── .babelrc\r\n├── .eslintrc.json\r\n└── .prettierrc.json\r\n```\r\n\r\n-   **Router.jsx**: contains generic router logic.\r\n-   **RouteChild.jsx**: render current route component (a.k.a. page) and updates document (browser tab) title.\r\n-   **route.hook.js**: contains hooks like useRoutePayload for get specific route payload.\r\n-   **route.service.js**: routes handler. Initializes routing. Calculates complete paths for nested routes and data for breadcrumbs.\r\n-   **index.js**: exports router, hooks and routes handler/service.\r\n\r\n## How To Use 💡\r\n\r\nShould be initialized with RouterProvider on App.jsx like:\r\n```javascript\r\nimport { RouterProvider, Router } from '@calvear/react-spa-routerizer';\r\nimport routes from 'routes'; // your routes definition JSON\r\n\r\nexport default function App()\r\n{\r\n    return (\r\n        <RouterProvider routes={ routes }>\r\n            <Router\r\n                loader={ <div>Loading</div> }\r\n                DefaultChild={ () => <div>Page Not Found</div> }\r\n            />\r\n        </RouterProvider>\r\n    );\r\n}\r\n```\r\n\r\n### Routes format are shown below:\r\n\r\n```javascript\r\n{\r\n    key: 'unique-id',\r\n    title: 'Main Page',\r\n    path: '/',\r\n    Layout: LayoutComponent,\r\n    Child: PageComponent,\r\n    payload: {\r\n        ...\r\n    }\r\n}\r\n```\r\n\r\n- **key**: any unique string for route.\r\n- **title**: title shown in tab browser.\r\n- **path**: relative path of route.\r\n- **Layout**: optional. Layout component.\r\n- **Child**: Route/Page component.\r\n- **payload**: optional. The payload defined for route. May be accessed with useRoutePayload hook.\r\n\r\n### Routers format are shown below:\r\n\r\n```javascript\r\n{\r\n    key: 'unique-id',\r\n    path: '/',\r\n    Layout: LayoutComponent,\r\n    DefaultChild: NotFoundPage,\r\n    payload: {\r\n        ...\r\n    },\r\n    routes: [\r\n        ...\r\n    ]\r\n}\r\n```\r\n\r\n- **key**: any unique string for router.\r\n- **title**: optional. Title for nested routes, shown in tab browser.\r\n- **path**: base path for nested routes.\r\n- **Layout**: optional. Layout component for every child.\r\n- **DefaultChild**: default component on no one defined route.\r\n- **payload**: optional. The payload defined for router. May be accessed with useRoutePayload hook.\r\n    Will be merged with low priority with child payload.\r\n- **routes**: array of sub-routes.\r\n\r\n#### Example:\r\n\r\n```javascript\r\nimport { lazy } from 'react';\r\n\r\n// layouts container.\r\nconst Layouts = {\r\n    Card: lazy(() => import('layouts/card'))\r\n};\r\n\r\n// pages container.\r\nconst Pages = {\r\n    Main: lazy(() => import('pages/main')),\r\n    Detail: lazy(() => import('pages/detail')),\r\n    UserProfile: lazy(() => import('pages/user-profile')),\r\n    UserEdit: lazy(() => import('pages/user-edit'))\r\n};\r\n\r\nexport default [\r\n    {\r\n        key: 'main-page',\r\n        title: 'Main Page',\r\n        path: '/',\r\n        Layout: Layouts.Card,\r\n        Child: Pages.Main,\r\n        payload: {\r\n            header: 'List of Items'\r\n        }\r\n    },\r\n    {\r\n        key: 'detail-page',\r\n        title: 'Detail Page',\r\n        path: '/detail/:name',\r\n        Layout: Layouts.Card,\r\n        Child: Pages.Detail\r\n    },\r\n    {\r\n        key: 'user-router',\r\n        path: '/user',\r\n        Layout: Layouts.Card,\r\n        DefaultChild: () => <div>Page Not Found</div>,\r\n        payload: {\r\n            header: 'User Page'\r\n        },\r\n        routes: [\r\n            {\r\n                key: 'user-profile',\r\n                title: 'User Profile',\r\n                path: '/profile',\r\n                Child: Pages.UserProfile\r\n            },\r\n            {\r\n                key: 'user-edit',\r\n                title: 'User Edit',\r\n                path: '/edit',\r\n                Child: Pages.UserEdit\r\n            }\r\n        ]\r\n    }\r\n];\r\n```\r\n\r\n### Hooks\r\n\r\nLibrary has some hooks for eases route state management.\r\n\r\n- **useRoutePayload**: returns current route payload.\r\n\r\nFor this route definition:\r\n\r\n```javascript\r\n...\r\n\r\nexport default [\r\n    {\r\n        key: 'main-page',\r\n        title: 'Main Page',\r\n        path: '/',\r\n        Child: Pages.Main,\r\n        payload: {\r\n            title: 'Main Page'\r\n        }\r\n    },\r\n    ...\r\n];\r\n```\r\n\r\nWe can access to it's payload, at '/' path, as below:\r\n\r\n```javascript\r\nimport { useRoutePayload } from '@calvear/react-spa-routerizer';\r\n\r\nexport default function MainPage()\r\n{\r\n    const { title } = useRoutePayload();\r\n\r\n    return (\r\n        <div id='main-page'>\r\n            <h1>{title}</h1>\r\n        </div>\r\n    );\r\n}\r\n```\r\n\r\n- **useQueryParams**: returns URL query parameters.\r\n\r\n- **useHashValue**: returns URL hash value.\r\n\r\n- **useRouteState**: returns current route state, from React Router.\r\n\r\n## Linting 🧿\r\n\r\nProject uses ESLint, for code formatting and code styling normalizing.\r\n\r\n-   **eslint**: JavaScript and React linter with Airbnb React base config and some other additions.\r\n-   **prettier**: optional Prettier config.\r\n\r\nFor correct interpretation of linters, is recommended to use [Visual Studio Code](https://code.visualstudio.com/) as IDE and install the plugins in .vscode folder at 'extensions.json', as well as use the config provided in 'settings.json'\r\n\r\n## Changelog 📄\r\n\r\nFor last changes see [CHANGELOG.md](CHANGELOG.md) file for details.\r\n\r\n## Built with 🛠️\r\n\r\n-   [React](https://reactjs.org/) - the most fabulous JavaScript framework.\r\n-   [React Router](https://reactrouter.com/) - React most popular routing library.\r\n\r\n## License 📄\r\n\r\nThis project is licensed under the GPL License - see [LICENSE.md](LICENSE.md) file for details.\r\n\r\n---\r\n\r\n⌨ by [Alvear Candia, Cristopher Alejandro](https://github.com/calvear93)\r\n","readmeFilename":"README.md","gitHead":"001034b5a71500ce3c91d03fd1c7c90d2ae23405","bugs":{"url":"https://github.com/calvear93/react-spa-routerizer/issues"},"homepage":"https://github.com/calvear93/react-spa-routerizer#readme","_id":"@calvear/react-spa-routerizer@1.0.5-alpha.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.11","dist":{"integrity":"sha512-5oWoQ72ZacFwL9bOB2Gvnh/abcq64EobtRNaHeyHmYE/tAEZ5grkPH65MzySlNd4PjwIJuDxnjnrWxElHJlimA==","shasum":"dceb2e51d5f4664ac2f75ba68ed038a9de1010d8","tarball":"https://registry.npmjs.org/@calvear/react-spa-routerizer/-/react-spa-routerizer-1.0.5-alpha.0.tgz","fileCount":12,"unpackedSize":65172,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgEeB6CRA9TVsSAnZWagAAQIYP/2VR/Di2jVg76XF3+WXb\ndZK87sv+UxKf8UizWvHVkVOOi597sWdchda+CyAnUPFPaVmHkYG0RHZwxf8u\nDVefoShIv6TwBBeT4+YF0SSmK+hfajVH9WFkGtxzOGVOLfnEZx3BWeRCBHFh\n+73ztKGNCNl70Kgtlf+6FgpJc+zOG5lyF+CSndU9wCR9lcTLnHApc42/Mf6G\nvWMrPQumEKqCTH6P2f/Jz60mbrgqqh2zYja/qpA7TXODf+XZ2AICXAAvSAzw\nZdPxkL2NqS+k9DanDBIGymYuQdpjq9kLTR6e9FBuki9OrhdubKdInXAxO82X\nLMexwQVr6ScbusrFHJT2elPjCCgwTKnKx7L4H0tr3tTyXv5qIINXQ6GugCiw\n9jLMqFdNOg/JKu36QlFBrbzFF4HM/YPX+UfYVIWq+8fYD1o6ziV3x59dTKoA\nb8tpC/C4YjVrNGXWlRuAoDRpg4NO5jNSbfp5//88grxdRf7r6c5YY6mcnvLG\n17VmIYuT3gs9UgKqrUnEuDsKX2G/1q8kngTOlVioZEKlM5ZTxaKnFvLvKXME\nx+0kUm+241eOgL4EHXDJXrDJd5I8ANxxtnR7kkiv38wJvWHNOECqE0eOMxfK\ngUswQ9uJhuADOqVdMD1I6tKxu005O+1xPCK67ojxwOuvXrZowU1+KClgt1HD\naJSZ\r\n=oNol\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCxoLrlwxb1xboxWKQ6Cu3OQc1J1LjiaxiKP6Ng7RGzMQIgMzerNrrYpAHFVWnF9pOpM4n3InJW78NJNWfDnwCfZBs="}]},"_npmUser":{"name":"calvear","email":"calvear93@gmail.com"},"directories":{},"maintainers":[{"name":"calvear","email":"calvear93@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-spa-routerizer_1.0.5-alpha.0_1611784314410_0.11062953880924886"},"_hasShrinkwrap":false},"1.0.5":{"version":"1.0.5","name":"@calvear/react-spa-routerizer","title":"React SPA Routerizer","description":"React library for application routing (based on React Router) that prevents boilerplate code.","author":{"name":"Alvear Candia, Cristopher Alejandro","email":"calvear93@gmail.com"},"license":"MIT","private":false,"repository":{"type":"git","url":"git+https://github.com/calvear93/react-spa-routerizer.git"},"main":"dist/index.js","keywords":["react","react-router","spa","routes","routing","router"],"engines":{"node":">=12","npm":">=6"},"peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"dependencies":{"react-router":"^5.2.0","react-router-dom":"^5.2.0"},"devDependencies":{"@babel/cli":"^7.12.10","@babel/preset-env":"^7.12.11","@babel/preset-react":"^7.12.10","@testing-library/jest-dom":"^5.11.9","@testing-library/react":"^11.2.3","@testing-library/user-event":"^12.6.2","eslint":"^7.18.0","eslint-plugin-jest":"^24.1.3","eslint-plugin-jsdoc":"^31.4.0","eslint-plugin-react-hooks":"^4.2.0","eslint-plugin-sonarjs":"^0.5.0","jest":"^26.6.3"},"scripts":{"build":"npx babel src --out-dir dist --copy-files","upload":"npm login && npm publish --access public","upload:beta":"npm login && npm publish --access public --tag beta","upload:alpha":"npm login && npm publish --access public --tag alpha","eslint:analyze":"eslint --ext .js,.jsx src/","eslint:fix":"eslint --fix --ext .js,.jsx src/","test":"test --watchAll=false --verbose","packages:update":"npm update --save/--save-dev","packages:force-update":"npx npm-check-updates -u","git:case-sensitive":"git config core.ignorecase false"},"gitHead":"001034b5a71500ce3c91d03fd1c7c90d2ae23405","bugs":{"url":"https://github.com/calvear93/react-spa-routerizer/issues"},"homepage":"https://github.com/calvear93/react-spa-routerizer#readme","_id":"@calvear/react-spa-routerizer@1.0.5","_nodeVersion":"14.15.1","_npmVersion":"6.14.11","dist":{"integrity":"sha512-ZI596HPtlNkLqtZXkGfMOMnHLYef0hIj+d2uVJ2VDYuMC4beNgyxyptemAJZLBLi16XYa/YqfB50axsyknifHQ==","shasum":"01b6bcecc18573c8c6c840b879ba536a418ee77b","tarball":"https://registry.npmjs.org/@calvear/react-spa-routerizer/-/react-spa-routerizer-1.0.5.tgz","fileCount":12,"unpackedSize":31507,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgEefTCRA9TVsSAnZWagAAApAP/iowbtnMSa0nihgykAkC\nukz8gvilDBKptrU1bFBMa7mbgQbvbWyqW5UYMw6uUC9Q/Wn1pCsSK0T9u4v9\nIw8A8K4J+8Juz5vHR8/8/exGZmlm2MWHI0IgT6zFo/nAjhKr9FJAp9b7HfII\n2cI63bOcBHo5HTBus8guRuvKHIB0CFRou6JPfPc2XtkbHXR7mnk8/70lBDKF\nVV/wnC1s06Xj0HjzLBEkTePltJzQNPJ3XWESptWRVBYXL7Xy997ZfN5rSRqS\no7+wMKqdi6DSxEkJqoh0X2QL7SKvmOMouDhPltIhc+l+GbWk9O6d86c10l7Q\n2O8EuImbAIPn/61leItWm3W/r2zOL23Cbk6CjPbNa4jKXIe79o9WjuWuO2Jl\nTs3muYNsNTkRqHbxa7OkADkyDsCBuyec3vaOQux3CQfCRCaJdLb04ODP9Gtj\nKlIx0GcXkVGkcZBJKwvnnqhNc7W0np4bIfyhN+rMJkUeFaeUNjVxDlkt7paw\n0OUUbHnJkuOQaXkqbXyE2uuVX9mAah7uW/b6iawvi7Dr7Vu8UJZCE8sEcvLY\nPWQ/PTiEEAfu05/i9WJGgewFMd02hFnhSFwhn++6yZkHeslwflbhCNdcc152\nTbYaQwBJn6uOMc7tLYZVd3hEU83hLKfhY03FjcNdkDNolByU3bga5aFVubFS\nJXBi\r\n=Sz6H\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDD+UuMp9AJtV1hi5RerC5gkn0u9xPtBj3uPZhTCAV/xgIhAK4GYg7HIPnXhiZkfRPekAO76JuOfP8EPQbypZAznBif"}]},"_npmUser":{"name":"calvear","email":"calvear93@gmail.com"},"directories":{},"maintainers":[{"name":"calvear","email":"calvear93@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-spa-routerizer_1.0.5_1611786195163_0.2486309802079345"},"_hasShrinkwrap":false},"1.0.6":{"version":"1.0.6","name":"@calvear/react-spa-routerizer","title":"React SPA Routerizer","description":"React library for application routing (based on React Router) that prevents boilerplate code.","author":{"name":"Alvear Candia, Cristopher Alejandro","email":"calvear93@gmail.com"},"license":"MIT","private":false,"repository":{"type":"git","url":"git+https://github.com/calvear93/react-spa-routerizer.git"},"main":"dist/index.js","keywords":["react","react-router","spa","routes","routing","router"],"engines":{"node":">=12","npm":">=6"},"peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"dependencies":{"react-router":"^5.2.0","react-router-dom":"^5.2.0"},"devDependencies":{"@babel/cli":"^7.12.13","@babel/preset-env":"^7.12.13","@babel/preset-react":"^7.12.13","@testing-library/jest-dom":"^5.11.9","@testing-library/react":"^11.2.5","@testing-library/user-event":"^12.6.3","eslint":"^7.19.0","eslint-plugin-jest":"^24.1.3","eslint-plugin-jsdoc":"^31.6.0","eslint-plugin-react-hooks":"^4.2.0","eslint-plugin-sonarjs":"^0.5.0","jest":"^26.6.3"},"scripts":{"build":"npx babel src --out-dir dist --copy-files","upload":"npm login && npm publish --access public","upload:beta":"npm login && npm publish --access public --tag beta","upload:alpha":"npm login && npm publish --access public --tag alpha","eslint:analyze":"eslint --ext .js,.jsx src/","eslint:fix":"eslint --fix --ext .js,.jsx src/","test":"test --watchAll=false --verbose","packages:update":"npm update --save/--save-dev","packages:force-update":"npx npm-check-updates -u","git:case-sensitive":"git config core.ignorecase false"},"gitHead":"495561a4d43e808c877a2209ace299a90d3c50ef","bugs":{"url":"https://github.com/calvear93/react-spa-routerizer/issues"},"homepage":"https://github.com/calvear93/react-spa-routerizer#readme","_id":"@calvear/react-spa-routerizer@1.0.6","_nodeVersion":"14.15.4","_npmVersion":"7.5.1","dist":{"integrity":"sha512-FdFc1TOlZewpDctNx5u0BDPgzNjrNnhR/kuM2tFg+e0KSeLaZvcp4EXVlaRqFZzws/qAlQ6TmS0TCgUN6TSDKA==","shasum":"a022fec402fe528dc22c44ea971a79dbb709c327","tarball":"https://registry.npmjs.org/@calvear/react-spa-routerizer/-/react-spa-routerizer-1.0.6.tgz","fileCount":12,"unpackedSize":31325,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgHstDCRA9TVsSAnZWagAAKAwQAIlKTRiOaakRWjT4uAhH\n39mThy3pj9NZ4oK6c9evGkD73Ydv+u97O83c7Pm9XkjWMCOvZYli7c3bCtpo\nRaLBrxCylrQXCgTOsmrPK3lTTIuo+14WsGa4EWY0roz7gcF5auZpO2kB1yn4\nc4DhiUwg45W/mQetn6Qu9FfvFSKwPYeJjUeVShgoZF4KToiVPQx4w4X7xZeR\n2VAsoZqGvjV2TemwiPEqz5tBGGYednI3QZtfUSpUegleeuM4L0ZldJbgIvL3\nNX+OIO9ntSgZPdRLCaGPdnckdUFH3cHxShCRD8rH0lJubwuvgli+c7k+0KTB\noQoJpidSsNdT0EGpGb6PM7Ipcm7XkN5YMs1e7ccJQIA/Dsr5QF1A03YuyasQ\nw5U7xR7IFxNsEVeNSOkR60Q5gGkR2O0WuETs2gMoEzXHlZJhiXzisEEGPDQS\nsEhQDvrAEGgLizfPyAc9Tf2ETdVavCwJTeWecGxikkr1/ufYDa7tXsHFOK5w\nqlrhoFDOUURnpAy/wNu44s/993kR7tHvPvpGC7lp2US5q1hfTSQxiClvlVoe\nAiXn+hnV8YrU8hDcaaiRhpEikIQ7QuXGHm4Z4NLsQrBBMzepG3oTEHZWlFzu\n4BXYsH6k/SsIctwVnt3xzl+W+rfH8EjZHHuGZllz34Vh6Tfkx6c2OG/Vf5f5\nf6r6\r\n=YtvT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAUCLYzQiu6OQ85ZJWF0SAlti9IVl6dhJchkP9vKQBsyAiEApgl5b2TaOiMcUgj44nVJhge9sVStp2Prn3GroQFJsTk="}]},"_npmUser":{"name":"calvear","email":"calvear93@gmail.com"},"directories":{},"maintainers":[{"name":"calvear","email":"calvear93@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-spa-routerizer_1.0.6_1612630851218_0.19530150375483823"},"_hasShrinkwrap":false},"1.0.7":{"version":"1.0.7","name":"@calvear/react-spa-routerizer","title":"React SPA Routerizer","description":"React library for application routing (based on React Router) that prevents boilerplate code.","author":{"name":"Alvear Candia, Cristopher Alejandro","email":"calvear93@gmail.com"},"license":"MIT","private":false,"repository":{"type":"git","url":"git+https://github.com/calvear93/react-spa-routerizer.git"},"main":"dist/index.js","keywords":["react","react-router","spa","routes","routing","router"],"engines":{"node":">=12","npm":">=6"},"peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"dependencies":{"react-router":"^5.2.0","react-router-dom":"^5.2.0"},"devDependencies":{"@babel/cli":"^7.12.13","@babel/preset-env":"^7.12.13","@babel/preset-react":"^7.12.13","@testing-library/jest-dom":"^5.11.9","@testing-library/react":"^11.2.5","@testing-library/user-event":"^12.6.3","eslint":"^7.19.0","eslint-plugin-jest":"^24.1.3","eslint-plugin-jsdoc":"^31.6.1","eslint-plugin-react-hooks":"^4.2.0","eslint-plugin-sonarjs":"^0.5.0","jest":"^26.6.3"},"scripts":{"build":"npx babel src --out-dir dist --copy-files","upload":"npm login && npm publish --access public","upload:beta":"npm login && npm publish --access public --tag beta","upload:alpha":"npm login && npm publish --access public --tag alpha","eslint:analyze":"eslint --ext .js,.jsx src/","eslint:fix":"eslint --fix --ext .js,.jsx src/","test":"test --watchAll=false --verbose","packages:update":"npm update --save/--save-dev","packages:force-update":"npx npm-check-updates -u","git:case-sensitive":"git config core.ignorecase false","prebuild":"rimraf dist/**"},"gitHead":"0b454c7df1df3704213e26c23245479e24e428bb","bugs":{"url":"https://github.com/calvear93/react-spa-routerizer/issues"},"homepage":"https://github.com/calvear93/react-spa-routerizer#readme","_id":"@calvear/react-spa-routerizer@1.0.7","_nodeVersion":"10.21.0","_npmVersion":"7.5.2","dist":{"integrity":"sha512-NfJl0HQcStdjMPXfrEs3Z68EwCvCUbyjgGPVy8tD6oBcfAJo459Qw+t3zcEhMdF2RFjilHNFSbVOibLoa8coTQ==","shasum":"7d408fa4b835fd0c72e7dc8b6d44a4721cd7f7db","tarball":"https://registry.npmjs.org/@calvear/react-spa-routerizer/-/react-spa-routerizer-1.0.7.tgz","fileCount":13,"unpackedSize":35323,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgIaH2CRA9TVsSAnZWagAAbCwP/Amg+LBvXHsS/+oiGaQC\nsUUSXSwQIIika08tYcJLUaKzDkMWtRXCaBQPwSJHFWVgvfsOPGkcoZRUP8iR\nz1Fj4DRrfp1QrsoopqFn68wBVLdbFYKJir1X32nqGSmpNaNsHEV3TtMmTTuk\ncc/NV9HeZr3AbXrO6J+VWSrbwekHc4vOmzccPiz/ia7x1P/4NFy3/EYjudx2\nAnaVcC2FdYNkJSjIwVPujLTCXjQsptil25Q7GfqCIB7a3M+siNGQtGvk/DdL\nucfRgvAr7Mn7sOLxlxA12SCNMSJoFb5sraWzzmu7PmmchZ4tqKt9CO0wScVN\nmFjmZzn0NSrbeacg83C9yp70BuP5GxIizkt5c//Kbsxeqyz6YmCC5CHb8nIy\nh9evg8xmi4C60NHQexKGvXSANc1LJs6UN4Z+5H7TBKw/WqBE6a5qCS75M0BB\nXsPdvGZAkUdVpgrmMK+uflnBoGqnghvKI55Nivm1V8bC7Ek1N91V9lqBT4xL\nRHB0ZTBm4kHu93p116q5oNqOcgzYXsAjZzYvLWkGzVfsXVnWtRomHmchgGLy\nvtXdVMIIiAeoI4teUO37jmpH02NNFzLvxhyPFevw71wdnmfXfu2N/YyTHdk/\n58lUma9jWAhSVi4qghXfESVV0sKWo9BNFERZA0vEwvHhrbB6V7J8oDG8v1fk\nj6D7\r\n=LqkG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC8YlS55OSlpX38i1oeiWMqpndhF8rjSiSs9/RYxni4iAiEAszYMQ6eAqC7Uj0+IjBogtapnw2EyN4y0j5YPDTUBapg="}]},"_npmUser":{"name":"calvear","email":"calvear93@gmail.com"},"directories":{},"maintainers":[{"name":"calvear","email":"calvear93@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-spa-routerizer_1.0.7_1612816885483_0.24072714124476313"},"_hasShrinkwrap":false},"1.0.8":{"version":"1.0.8","name":"@calvear/react-spa-routerizer","title":"React SPA Routerizer","description":"React library for application routing (based on React Router) that prevents boilerplate code.","author":{"name":"Alvear Candia, Cristopher Alejandro","email":"calvear93@gmail.com"},"license":"MIT","private":false,"repository":{"type":"git","url":"git+https://github.com/calvear93/react-spa-routerizer.git"},"main":"dist/index.js","keywords":["react","react-router","spa","routes","routing","router"],"engines":{"node":">=12","npm":">=6"},"peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"dependencies":{"react-router":"^5.2.0","react-router-dom":"^5.2.0"},"devDependencies":{"@babel/cli":"^7.12.13","@babel/preset-env":"^7.12.13","@babel/preset-react":"^7.12.13","@testing-library/jest-dom":"^5.11.9","@testing-library/react":"^11.2.5","@testing-library/user-event":"^12.6.3","eslint":"^7.19.0","eslint-plugin-jest":"^24.1.3","eslint-plugin-jsdoc":"^31.6.1","eslint-plugin-react-hooks":"^4.2.0","eslint-plugin-sonarjs":"^0.5.0","jest":"^26.6.3"},"scripts":{"build":"npx babel src --out-dir dist --copy-files","upload":"npm login && npm publish --access public","upload:beta":"npm login && npm publish --access public --tag beta","upload:alpha":"npm login && npm publish --access public --tag alpha","eslint:analyze":"eslint --ext .js,.jsx src/","eslint:fix":"eslint --fix --ext .js,.jsx src/","test":"test --watchAll=false --verbose","packages:update":"npm update --save/--save-dev","packages:force-update":"npx npm-check-updates -u","git:case-sensitive":"git config core.ignorecase false","prebuild":"rimraf dist/**"},"gitHead":"1ac82c8dcccabacf9576ff21ac53e5c5c7fab4ca","bugs":{"url":"https://github.com/calvear93/react-spa-routerizer/issues"},"homepage":"https://github.com/calvear93/react-spa-routerizer#readme","_id":"@calvear/react-spa-routerizer@1.0.8","_nodeVersion":"10.21.0","_npmVersion":"7.5.2","dist":{"integrity":"sha512-+Vx8/4mDMlnrW7ylfokTwV6KSnApy9WqwR0Z0n+nuIlXZZtIPN1QALczteVWMlUgOEBRvggtxeoApz7a443MGA==","shasum":"daa8fc293fe44b53cf080c531cfd750533866d47","tarball":"https://registry.npmjs.org/@calvear/react-spa-routerizer/-/react-spa-routerizer-1.0.8.tgz","fileCount":14,"unpackedSize":37452,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgIondCRA9TVsSAnZWagAASdIP/i7N6UIkLvBiogMUhqja\njkowv5yS9KOyQkTT7pfSGY5Y1kp2nZsf9tVwgjE+WsUme8zIdTIzqM2k96E4\np2RqRa3ECyN2+FBJCIhqktH8+0bgFOBHxCtQZ6+SXpP765fOzdn1nDegcHrm\n43FhXEINvrKscHk5sT5fPpHTl48IEOGyN5qpANsEIoQ0QUA+coTie1X5rkp8\n0iHvbrj1yDT6pgR88XCfPDfcu3b7SZkML4sm0FDXhqGXp1WGRmmSOlotGhbw\nOXAGxB5ASDCIh/E5lDYo/ONAwdwtH6K5tslEOESXIXfa7lD3G6/o6weTrQKq\n+cE40a/3kOvF8J8RyUNX6uEYPRNp0cF/HA027Pz5MS6zw6DopgFJHdPwgI79\nNq+F9RpNQQLTUI3EeiFwgcjxVVvZqop450X1fb1Y7nbZM2cG3m6R2nSA0fKq\n1B8i6FGI35O4ipYLnwFhf67IUZxHtjqwiPFtyANZhPuKQuyuuA/6615Cb7du\nhAaHUqs1KlhhbGTE9KLvtrnBzzmatRL4FxsfYnmEEOFkuJQBSnobkHqURAf4\nWf4eE/ZPWzFYstploWODLRtp9xQpsbBq/ElBVsJe4xCq7JvyeOUaQD5d0Y+O\nczs7+elicf3FDSrUAhUZf/dfASzpgVhHt8Sxhv+bZaehDNvXE9BpE1XEv930\nEXqT\r\n=t2+5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCkVwb3Qi/vwsO692JLuirkUg0ciLC1UU2a0PGcspKnNAIhAKOV5tNQHZa1iwirkP7gsxX7nJlKX+DjDM31SMQwWHqh"}]},"_npmUser":{"name":"calvear","email":"calvear93@gmail.com"},"directories":{},"maintainers":[{"name":"calvear","email":"calvear93@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-spa-routerizer_1.0.8_1612876252774_0.1640743881396003"},"_hasShrinkwrap":false},"1.0.9":{"version":"1.0.9","name":"@calvear/react-spa-routerizer","title":"React SPA Routerizer","description":"React library for application routing (based on React Router) that prevents boilerplate code.","author":{"name":"Alvear Candia, Cristopher Alejandro","email":"calvear93@gmail.com"},"license":"MIT","private":false,"repository":{"type":"git","url":"git+https://github.com/calvear93/react-spa-routerizer.git"},"main":"dist/index.js","keywords":["react","react-router","spa","routes","routing","router"],"engines":{"node":">=12","npm":">=6"},"peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"dependencies":{"react-router":"^5.2.0","react-router-dom":"^5.2.0"},"devDependencies":{"@babel/cli":"^7.12.13","@babel/eslint-parser":"^7.12.13","@babel/preset-env":"^7.12.13","@babel/preset-react":"^7.12.13","@testing-library/jest-dom":"^5.11.9","@testing-library/react":"^11.2.5","@testing-library/user-event":"^12.6.3","eslint":"^7.19.0","eslint-plugin-import":"^2.22.1","eslint-plugin-jest":"^24.1.3","eslint-plugin-jsdoc":"^31.6.1","eslint-plugin-react":"^7.22.0","eslint-plugin-react-hooks":"^4.2.0","eslint-plugin-sonarjs":"^0.5.0","jest":"^26.6.3"},"scripts":{"build":"npx babel src --out-dir dist --copy-files","upload":"npm run build && npm login && npm publish --access public","upload:beta":"npm run build && npm login && npm publish --access public --tag beta","upload:alpha":"npm run build && npm login && npm publish --access public --tag alpha","eslint:analyze":"eslint --ext .js,.jsx src/","eslint:fix":"eslint --fix --ext .js,.jsx src/","test":"test --watchAll=false --verbose","packages:update":"npm update --save/--save-dev","packages:force-update":"npx npm-check-updates -u","git:case-sensitive":"git config core.ignorecase false","prebuild":"rimraf dist/**"},"gitHead":"282a120a69e636217b475e4f35c7ddc77fac56e5","bugs":{"url":"https://github.com/calvear93/react-spa-routerizer/issues"},"homepage":"https://github.com/calvear93/react-spa-routerizer#readme","_id":"@calvear/react-spa-routerizer@1.0.9","_nodeVersion":"15.8.0","_npmVersion":"7.5.1","dist":{"integrity":"sha512-IHFAttwZjE1yaUNP4g29jg2Y1+LhiZlwyh7Q56mavKBnuX8fykasXWcraCYhpXQtsMGa7l0Uuk7DFIpMOObNdA==","shasum":"cf8978799d3f3143f409f68fd584b1d1e8d00dcc","tarball":"https://registry.npmjs.org/@calvear/react-spa-routerizer/-/react-spa-routerizer-1.0.9.tgz","fileCount":14,"unpackedSize":39664,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgI+pyCRA9TVsSAnZWagAALOUP/RYeFkkyNCkWnflNpBya\nZe0Dx8AC4LFtOe8q+aFcwUMbrdT2dUUbiBbUrmgkMjfmE8Ko7IEeLwEUVdi0\nOfia44+TOswmKgooIfmTSd3Qc23o3lj9wlV1D6TS3ghp0WkIK7YkOMcTJsMn\n207EzpS5xR/4SjAJjJnF1DgsQIIKnv23jHUz4+j/5cHKzS+Xr24aq4xGH0sc\nmVC9/S7I8R2iDhjOmmL6h793qvp8wQdYA1Nlh44L+rOx53aGF3W+n8X3GGUW\nvcQx9HMePCb7tAU1V/Us6aAQWvPZ3fvQvv+fovVOOe+alZhVDhuf+PnENCO0\nFonZDsCf12HcxIhSd6G2CSeA+US+YbDZrcypAvORghli97ldUQ4HrRgknrVj\n9t7xkjppBxwEzZT/GNWWr/+Y6DdgMWzEejMGSJ7dzkxxUQafsz9x/hKyKS7H\n9PuZ7Fe+eOgU1z6STYm4NpfW9kmDZsaLDriCQ+BDjwt68+05yxf5I2EL+ERG\nheM2udKrL9xKoU4nEKSUhIsKRLAKU2+1KRsBaAnlzlK3ldktNoSEoeAiD/bq\nyLzJKznnfVIH/ilgbE6M0LhmVUuNymm/wgrPlzFd2TmdMY+YN3AWEQOb9PVl\nXTtknId7XO/8aBE1myL9zF9pn7KZdB5h6Krt9Tnj42LUte7vDgmq4ETPluN5\n+DB2\r\n=JLCE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDEYfLBReVAdOEKn3wNtqk6Po2RFwGuNPX+Q7eMSycyxAIhANR64pZk0CyzdvFQqFNsReGCUkzyTAGqE3V63OBRIntM"}]},"_npmUser":{"name":"calvear","email":"calvear93@gmail.com"},"directories":{},"maintainers":[{"name":"calvear","email":"calvear93@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-spa-routerizer_1.0.9_1612966513511_0.0640009344007102"},"_hasShrinkwrap":false},"1.0.11":{"version":"1.0.11","name":"@calvear/react-spa-routerizer","title":"React SPA Routerizer","description":"React library for application routing (based on React Router) that prevents boilerplate code.","author":{"name":"Alvear Candia, Cristopher Alejandro","email":"calvear93@gmail.com"},"license":"MIT","private":false,"repository":{"type":"git","url":"git+https://github.com/calvear93/react-spa-routerizer.git"},"main":"dist/index.js","keywords":["react","react-router","spa","routes","routing","router"],"engines":{"node":">=12","npm":">=6"},"peerDependencies":{"react":">=16.13.1","react-dom":">=16.13.1"},"dependencies":{"react-router":"^5.2.0","react-router-dom":"^5.2.0"},"devDependencies":{"@babel/cli":"^7.13.0","@babel/eslint-parser":"^7.13.8","@babel/preset-env":"^7.13.8","@babel/preset-react":"^7.12.13","@testing-library/jest-dom":"^5.11.9","@testing-library/react":"^11.2.5","@testing-library/user-event":"^12.7.3","eslint":"^7.20.0","eslint-plugin-import":"^2.22.1","eslint-plugin-jest":"^24.1.5","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-radar":"^0.2.1","eslint-plugin-react":"^7.22.0","eslint-plugin-react-hooks":"^4.2.0","jest":"^26.6.3"},"scripts":{"build":"npx babel src --out-dir dist --copy-files --source-maps","upload":"npm run build && npm login && npm publish --access public","upload:beta":"npm run build && npm login && npm publish --access public --tag beta","upload:alpha":"npm run build && npm login && npm publish --access public --tag alpha","eslint:analyze":"eslint --ext .js,.jsx src/","eslint:fix":"eslint --fix --ext .js,.jsx src/","test":"test --watchAll=false --verbose","_packages:update":"npm update --save/--save-dev","_packages:force-update":"npx npm-check-updates -u","_git:case-sensitive":"git config core.ignorecase false","prebuild":"rimraf dist/**"},"gitHead":"4241e91a5daa936788096a0ca104dee755285401","bugs":{"url":"https://github.com/calvear93/react-spa-routerizer/issues"},"homepage":"https://github.com/calvear93/react-spa-routerizer#readme","_id":"@calvear/react-spa-routerizer@1.0.11","_nodeVersion":"15.8.0","_npmVersion":"7.5.1","dist":{"integrity":"sha512-xvdEk4wgWNxFYbTUnRtVGNLejxA5Pe209jMn/0p/piGet0bQki2P21pCC/0tRxReh4dJeurZyjPDcypI6aOi/w==","shasum":"7b82ef5ad4126b5c6717d55ca4cf949826121589","tarball":"https://registry.npmjs.org/@calvear/react-spa-routerizer/-/react-spa-routerizer-1.0.11.tgz","fileCount":22,"unpackedSize":59946,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgOkEQCRA9TVsSAnZWagAARFEP/07+10G3vFwKseKQc+VX\nm8j6NBAV21pj1p8g+3VUzlHVv3nyvHCTwKpQPaZZrheOaRL6NHT3Uwx4jUnJ\nLpEEhKtcdXAgDpnvUjiKoooMkpKkEJd1SJyYJe1JuiWpoeERy0C4+eUQR/xP\nuwrMYSvJE6lTORZ7i4o8aY0ZbQIhwCbKMJ4T7fd7UAyjDg98BskwW3gtT+16\nbNvoLFz7cRLesZMx0BgGAhi7xQrNUTRnG4xDhZL+vd2Xa+oP9Uma8SkJnPap\nw5Xf56KTkYsrixqotnI6mdGR46SF460Q62+m4Bh86Q2E1NK40DiMMcOKPqLn\ny5GgQLvqRC05bW/PUMvjzuPbkMl6TJuS4VLNHO/ku4BV52/l82gk/+hQY0cu\nmjDWXVg90aStwrp+vCYjluGSSBPSePU3+ECJMYw4F50PaMcZi9HhLgI3WaTE\nPwX7NRrMCLeblXbVUdozWjFOZntxyhD9qcVA767sCZcL8Rk6fEeB8uETu+fq\ngt8k7q1WQ86DWSLeVeq4U0RTVR0YPhwVbo3ZhyzyZHuBAFOFcwzf6y5jRTe0\n5oEGMlthCl7XVVWXwSukJmZOH2KIY7E/O7dwrK47LGZnQ8C2T68RWHOWeR1u\nkXtxQjACdsKUYCo59qlQJWdnA+5WrbxRuphvblNXJ1u9wvH3ymeMQmuLaHHk\n/ToY\r\n=BItw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIER5xjFleakwZD/o8mewNxIT17WJSQ9P2JfDbkZ6jonaAiAd/HpePdjiq49DYxgMTJEE3aSVHUfWUiYJCZ983AIYCA=="}]},"_npmUser":{"name":"calvear","email":"calvear93@gmail.com"},"directories":{},"maintainers":[{"name":"calvear","email":"calvear93@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-spa-routerizer_1.0.11_1614430480089_0.3217885430139267"},"_hasShrinkwrap":false}},"time":{"created":"2021-01-24T20:49:35.076Z","1.0.0":"2021-01-24T20:49:35.233Z","modified":"2022-04-04T21:33:31.953Z","1.0.1":"2021-01-24T21:07:30.836Z","1.0.2":"2021-01-24T21:33:22.052Z","1.0.3":"2021-01-24T21:45:19.791Z","1.0.4":"2021-01-25T13:08:01.027Z","1.0.5-alpha.0":"2021-01-27T21:51:54.537Z","1.0.5":"2021-01-27T22:23:15.309Z","1.0.6":"2021-02-06T17:00:51.441Z","1.0.7":"2021-02-08T20:41:25.628Z","1.0.8":"2021-02-09T13:10:52.948Z","1.0.9":"2021-02-10T14:15:13.739Z","1.0.11":"2021-02-27T12:54:40.276Z"},"maintainers":[{"name":"calvear","email":"calvear93@gmail.com"}],"description":"React library for application routing (based on React Router) that prevents boilerplate code.","homepage":"https://github.com/calvear93/react-spa-routerizer#readme","keywords":["react","react-router","spa","routes","routing","router"],"repository":{"type":"git","url":"git+https://github.com/calvear93/react-spa-routerizer.git"},"author":{"name":"Alvear Candia, Cristopher Alejandro","email":"calvear93@gmail.com"},"bugs":{"url":"https://github.com/calvear93/react-spa-routerizer/issues"},"license":"MIT","readme":"# React SPA Routerizer\r\n\r\nReact library for application routing (based on React Router) that prevents boilerplate code.\r\nThis library eases routes definitions and routing job.\r\nExposes a generic Router for create base app router, some hooks and a routes service (for breadcrumbs for example).\r\n\r\n## Structure 📋\r\n\r\n```bash\r\n├── README.md\r\n├── LICENCE.md\r\n├── CHANGELOG.md\r\n├── .vscode/ # vscode shared development config\r\n├── src/\r\n│   ├── router/\r\n│   │   ├── components/\r\n│   │   │   ├── RouteChild.jsx # handle page rendering\r\n│   │   │   ├── Router.jsx # handle Switch and Route definitions\r\n│   │   │   └── RouterProvider.jsx # initializes router.service\r\n│   │   ├── router.hook.js # library hooks\r\n│   │   └── router.service.js # handle current routes\r\n│   └── index.js\r\n├── package.json\r\n├── jsconfig.js\r\n├── .babelrc\r\n├── .eslintrc.json\r\n└── .prettierrc.json\r\n```\r\n\r\n- **Router.jsx**: contains generic router logic.\r\n- **RouteChild.jsx**: render current route component (a.k.a. page) and updates document (browser tab) title.\r\n- **route.hook.js**: contains hooks like useRoutePayload for get specific route payload.\r\n- **route.service.js**: routes handler. Initializes routing. Calculates complete paths for nested routes and data for breadcrumbs.\r\n- **index.js**: exports router, hooks and routes handler/service.\r\n\r\n## How To Use 💡\r\n\r\nShould be initialized with RouterProvider on App.jsx like:\r\n```javascript\r\nimport { RouterProvider, Router } from '@calvear/react-spa-routerizer';\r\nimport routes from 'routes'; // your routes definition JSON\r\n\r\nexport default function App()\r\n{\r\n    return (\r\n        <RouterProvider routes={ routes }>\r\n            <Router\r\n                loader={ <div>Loading</div> }\r\n                DefaultChild={ () => <div>Page Not Found</div> }\r\n            />\r\n        </RouterProvider>\r\n    );\r\n}\r\n```\r\n\r\n### Routes format are shown below:\r\n\r\n```javascript\r\n{\r\n    key: 'unique-id',\r\n    title: 'Main Page',\r\n    path: '/',\r\n    Layout: LayoutComponent,\r\n    Child: PageComponent,\r\n    payload: {\r\n        ...\r\n    }\r\n}\r\n```\r\n\r\n- **key**: any unique string for route.\r\n- **title**: title shown in tab browser.\r\n- **path**: relative path of route.\r\n- **Layout**: optional. Layout component.\r\n- **Child**: Route/Page component.\r\n- **payload**: optional. The payload defined for route. May be accessed with useRoutePayload hook.\r\n\r\n### Routers format are shown below:\r\n\r\n```javascript\r\n{\r\n    key: 'unique-id',\r\n    path: '/',\r\n    Layout: LayoutComponent,\r\n    DefaultChild: NotFoundPage,\r\n    payload: {\r\n        ...\r\n    },\r\n    routes: [\r\n        ...\r\n    ]\r\n}\r\n```\r\n\r\n- **key**: any unique string for router.\r\n- **title**: optional. Title for nested routes, shown in tab browser.\r\n- **path**: base path for nested routes.\r\n- **Layout**: optional. Layout component for every child.\r\n- **DefaultChild**: default component on no one defined route.\r\n- **payload**: optional. The payload defined for router. May be accessed with useRoutePayload hook.\r\n    Will be merged with low priority with child payload.\r\n- **routes**: array of sub-routes.\r\n\r\n#### Example:\r\n\r\n```javascript\r\nimport { lazy } from 'react';\r\n\r\n// layouts container.\r\nconst Layouts = {\r\n    Card: lazy(() => import('layouts/card'))\r\n};\r\n\r\n// pages container.\r\nconst Pages = {\r\n    Main: lazy(() => import('pages/main')),\r\n    Detail: lazy(() => import('pages/detail')),\r\n    UserProfile: lazy(() => import('pages/user-profile')),\r\n    UserEdit: lazy(() => import('pages/user-edit'))\r\n};\r\n\r\nexport default [\r\n    {\r\n        key: 'main-page',\r\n        title: 'Main Page',\r\n        path: '/',\r\n        Layout: Layouts.Card,\r\n        Child: Pages.Main,\r\n        payload: {\r\n            header: 'List of Items'\r\n        }\r\n    },\r\n    {\r\n        key: 'detail-page',\r\n        title: 'Detail Page',\r\n        path: '/detail/:name',\r\n        Layout: Layouts.Card,\r\n        Child: Pages.Detail\r\n    },\r\n    {\r\n        key: 'user-router',\r\n        path: '/user',\r\n        Layout: Layouts.Card,\r\n        DefaultChild: () => <div>Page Not Found</div>,\r\n        payload: {\r\n            header: 'User Page'\r\n        },\r\n        routes: [\r\n            {\r\n                key: 'user-profile',\r\n                title: 'User Profile',\r\n                path: '/profile',\r\n                Child: Pages.UserProfile\r\n            },\r\n            {\r\n                key: 'user-edit',\r\n                title: 'User Edit',\r\n                path: '/edit',\r\n                Child: Pages.UserEdit\r\n            }\r\n        ]\r\n    }\r\n];\r\n```\r\n\r\n### Hooks\r\n\r\nLibrary has some hooks for eases route state management.\r\n\r\n- **useRoutePayload**: returns current route payload.\r\n\r\nFor this route definition:\r\n\r\n```javascript\r\n...\r\n\r\nexport default [\r\n    {\r\n        key: 'main-page',\r\n        title: 'Main Page',\r\n        path: '/',\r\n        Child: Pages.Main,\r\n        payload: {\r\n            title: 'Main Page'\r\n        }\r\n    },\r\n    ...\r\n];\r\n```\r\n\r\nWe can access to it's payload, at '/' path, as below:\r\n\r\n```javascript\r\nimport { useRoutePayload } from '@calvear/react-spa-routerizer';\r\n\r\nexport default function MainPage()\r\n{\r\n    const { title } = useRoutePayload();\r\n\r\n    return (\r\n        <div id='main-page'>\r\n            <h1>{title}</h1>\r\n        </div>\r\n    );\r\n}\r\n```\r\n\r\n- **useQueryParams**: returns URL query parameters.\r\n\r\n- **useHashValue**: returns URL hash value.\r\n\r\n- **useRouteState**: returns current route state, from React Router.\r\n\r\nAlso, this library exports every hook from 'react-router' - see [React Router Hooks](https://reactrouter.com/web/api/Hooks) for more information.\r\n\r\n- **useHistory**: gives you access to the history instance that you may use to navigate.\r\n\r\n- **useLocation**: returns the location object that represents the current URL.\r\n\r\n- **useParams**: useParams returns an object of key/value pairs of URL parameters.\r\n\r\n- **useRouteMatch**: attempts to match the current URL in the same way that a <Route> would.\r\n\r\n## Recipes 📖\r\n\r\n- Public and Private routes.\r\n\r\n```javascript\r\n// public.routes.js\r\nimport { lazy } from 'react';\r\n\r\nconst Pages = {\r\n    Login: lazy(() => import('pages/login')),\r\n    Unauthorized: lazy(() => import('pages/unauthorized'))\r\n};\r\n\r\nexport default [\r\n    {\r\n        key: 'login-page',\r\n        title: 'Sign In',\r\n        path: '/login',\r\n        Child: Pages.Login\r\n    },\r\n    {\r\n        key: 'unauthorized-page',\r\n        title: 'Unauthorized',\r\n        path: '/403',\r\n        Child: Pages.Unauthorized\r\n    }\r\n];\r\n```\r\n\r\n```javascript\r\n// private.routes.js\r\nimport { lazy } from 'react';\r\n\r\nconst Pages = {\r\n    Main: lazy(() => import('pages/main'))\r\n};\r\n\r\nexport default [\r\n    {\r\n        key: 'main-page',\r\n        title: 'Welcome to my app',\r\n        path: '/',\r\n        Child: Pages.Main\r\n    }\r\n];\r\n```\r\n\r\n```javascript\r\n// app.routes.js\r\nimport { lazy } from 'react';\r\nimport privateRoutes from 'routes/private.routes';\r\nimport publicRoutes from 'routes/public.routes';\r\n\r\nconst Layouts = {\r\n    App: lazy(() => import('layouts/app'))\r\n};\r\n\r\nexport default [\r\n    {\r\n        key: 'public-router',\r\n        path: '/',\r\n        routes: publicRoutes\r\n    },\r\n    {\r\n        key: 'private-router',\r\n        path: '/',\r\n        routes: privateRoutes,\r\n        Layout: Layouts.App,\r\n        payload: {\r\n            secured: true\r\n        }\r\n    }\r\n];\r\n```\r\n\r\n```javascript\r\n// App.router.js\r\nimport { lazy } from 'react';\r\nimport { useRoutePayload, Redirect, Router } from '@calvear/react-spa-routerizer';\r\nimport { useIsAuthenticated } from 'security'; // custom security validation\r\n\r\nconst DefaultPage = lazy(() => import('pages/not-found'));\r\n\r\nexport default function AppRouter()\r\n{\r\n    const { secured } = useRoutePayload();\r\n    const { authenticated } = useIsAuthenticated();\r\n\r\n    if (!secured && authenticated)\r\n        return <Redirect to='/' />;\r\n\r\n    if (secured && !authenticated)\r\n        return <Redirect to='/login' />;\r\n\r\n    return (\r\n        <Router DefaultChild={ DefaultPage } />\r\n    );\r\n}\r\n```\r\n\r\nYou should declare two routes files, and merge them in a main routes file.\r\n\r\n## Linting 🧿\r\n\r\nProject uses ESLint, for code formatting and code styling normalizing.\r\n\r\n- **eslint**: JavaScript and React linter with Airbnb React base config and some other additions.\r\n- **prettier**: optional Prettier config.\r\n\r\nFor correct interpretation of linters, is recommended to use [Visual Studio Code](https://code.visualstudio.com/) as IDE and install the plugins in .vscode folder at 'extensions.json', as well as use the config provided in 'settings.json'\r\n\r\n## Changelog 📄\r\n\r\nFor last changes see [CHANGELOG.md](CHANGELOG.md) file for details.\r\n\r\n## Built with 🛠️\r\n\r\n- [React](https://reactjs.org/) - the most fabulous JavaScript framework.\r\n- [React Router](https://reactrouter.com/) - React most popular routing library.\r\n\r\n## License 📄\r\n\r\nThis project is licensed under the MIT License - see [LICENSE.md](LICENSE.md) file for details.\r\n\r\n---\r\n\r\n⌨ by [Alvear Candia, Cristopher Alejandro](https://github.com/calvear93)\r\n","readmeFilename":"README.md"}