{"_id":"@butterjs/router","_rev":"8-8a88bace82906d7cf400621504ae45a2","name":"@butterjs/router","dist-tags":{"latest":"0.0.8"},"versions":{"0.0.1":{"name":"@butterjs/router","version":"0.0.1","main":"dist/index.js","license":"MIT","scripts":{"build":"yarn clean && babel src -d dist","build:watch":"nodemon --ignore dist --exec 'yarn build'","prepublishOnly":"yarn clean && yarn build","clean":"rm -rf dist"},"dependencies":{"core-js":"3.6.4"},"gitHead":"eb1addd253172389922892f336d0157b7ad56036","description":"This is the built-in router for Forecastr apps. It takes inspiration from Ruby on Rails, React Router, and Reach Router, but is very opinionated in its own way.","_id":"@butterjs/router@0.0.1","_nodeVersion":"12.10.0","_npmVersion":"lerna/3.20.2/node@v12.10.0+x64 (darwin)","dist":{"integrity":"sha512-BYiZ/AJGCsBP0lyqGgojjybmtFo5rueRRJi8LBo74NE9fruYN73i9eoJj/NboacWSMGlgUiwPg3wO/STQa+sRg==","shasum":"cbbac7a4a4141f591ff7831d24bde307cfc5b8af","tarball":"https://registry.npmjs.org/@butterjs/router/-/router-0.0.1.tgz","fileCount":12,"unpackedSize":39402,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeQikACRA9TVsSAnZWagAAKuwQAI6We6/b5MZ/f//Q2gAw\nOA6q4+Z7MznXHaRC1mcuP3f1kygKTJ0BxKxp4zHVxEyrUf6aLIReirmxjBuD\nol33dEBMJfdAtY4OEdvdRyDCoYALCFJAEuvHvg0uLww3YuK2NM4o1cKOcBUG\n7TM1No4DMq6nMFi4tswcmJxCvVm9/E5ozt03sZcDHmtEJwfja1UyD0kWYqVW\nDhmrPON988A9/ktigzWsA7EtD1r+Ex9kONuEQSrKOdHvT2GCTmW8vtHpw8bu\nuKbjfNgEJTsXJN44dDB7vjsWxrzYJPNDqDxg9p2NQ9bwm13u0vq8gD6T7cX2\njdSKS9dOzmegw2E4mPTM+9Sv3xTsbTc4WwO8GeMReuoA92zoPiCaY9I6ekZb\nmaGv8nb0YYs3/glW52G1IjuxGy5da2i0aHxkxtlU6jmPKEvf5J0Wk8y4UGWp\ndUMk9/5Y5UOmnoXzjeo4El8WCQqoyEsbf1YIc39JJHG5lhWLgSI0q/+UW2zh\nA0HRwkluX5WKh/0przlVzWsToTIRSkOGf8d010ESpPU7aZVqEnGYcM5/CMou\nUzJyS9zeT1bJA+icFHchBhm6ll1YBWQi8jmYMf2ViiGUpMjY9ZiePbFWst8U\nXom0uiXQc1ai2GGeJkY2elv+7v56ian/18JuSGAK/QEZp1T8FwDi64UunBOV\nzPTO\r\n=fPPp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGEriLMaeVrB0jjHpmv+YqH9aC1s0IVSGTemtmspg67dAiBnHYnRK1CaVGbTSFkUwM2ybAWtyhA/DdVqMiJ+DwbbIQ=="}]},"maintainers":[{"name":"stevenambs","email":"stevenambs@gmail.com"}],"_npmUser":{"name":"stevenambs","email":"stevenambs@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/router_0.0.1_1581394176216_0.9551695186188376"},"_hasShrinkwrap":false},"0.0.2":{"name":"@butterjs/router","version":"0.0.2","main":"dist/index.js","license":"MIT","scripts":{"build":"yarn clean && babel src -d dist","build:watch":"nodemon --ignore dist --exec 'yarn build'","prepublishOnly":"yarn clean && yarn build","clean":"rm -rf dist"},"dependencies":{"core-js":"3.6.4"},"gitHead":"f14437fd2579780705a154c44d6e659f752ff60b","description":"This is the built-in router for Forecastr apps. It takes inspiration from Ruby on Rails, React Router, and Reach Router, but is very opinionated in its own way.","_id":"@butterjs/router@0.0.2","_nodeVersion":"12.10.0","_npmVersion":"lerna/3.20.2/node@v12.10.0+x64 (darwin)","dist":{"integrity":"sha512-LFM+QS9AxSPpOyfNODtR6sknQwxhTQvBSgV++SHeTFb5/Qg1tzyJkFo+qz4MJSEbWcp76pA498HLnK0eJIgA9w==","shasum":"d9a9387915f2af25cbd17bbab0ca0128ada0a6d0","tarball":"https://registry.npmjs.org/@butterjs/router/-/router-0.0.2.tgz","fileCount":12,"unpackedSize":39402,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeQiuvCRA9TVsSAnZWagAAGqwP/0IUeABaEEasSSLc3Hj5\nYfB7D0Mzj7dYkOYuwzSNSl/rPMuFmK0vMlLD1/rPr1To7BZnqcZDv1VUapFE\nSfmuoldHldAI93jM3bkQU4iHKPFPk5rjS3fNArPTw44XCFpNxrM6eMWD5uR8\n6vn8xwzlUamIll434vD0F+YKBNMMjjsryCSJGi2sK2crqXa7ElvM38ZrEj7c\noQ/Py3b7NHfaO/C7/tHt5DCybO57FK10dV4SHQAaa54y84nYtSJFKlkSeXPp\ny42mfaot3Gj3fHR1qSH6KKxtOVCIeik8N0wFC5DsFHshs2SSoNgONF/vzc3J\nOBy+KKnPojFZvBN5UFD6YqWYeFlbNgWB5hHjEdI9M5Wm2ljrti1ukhTar/cV\nOJHJgI0W2IelAriaMed6GRuIH1kaeGXC2JthAgg2I8Xnso2XHRYgPVHH5uxU\n5cxlnQG2chFBU0JdJNOOB3swoTgUismtSBiDGdgwob8OoMlmTKRtzzC6S0Fd\n5Brk3YpiDqGk67hPx9x/jQc3iUtmJAFZWJ+62TjE3EPuefAEd8mPR5rnJ2RR\nTfiZUHKv2uVQPp6vw3+Qk93q2upbNiEMjIba+OlsPIDTO4RBj1EescAvKvDk\nKjAkHXx+Tkbi2CyKrUqybDZRNbT/BkMHtiTbx/Rnarx/ZdbgBbtiIca2kgvf\n2pZg\r\n=E3Ty\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICMnF2VXZp6NF7/3JvrHy286zDNW2L+K6TJQHeHMyN7ZAiByuJk8HxjQXlADJ4AXXTXttSRzgyZnzv65obpDJp0upQ=="}]},"maintainers":[{"name":"stevenambs","email":"stevenambs@gmail.com"}],"_npmUser":{"name":"stevenambs","email":"stevenambs@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/router_0.0.2_1581394863469_0.9370926787175993"},"_hasShrinkwrap":false},"0.0.3":{"name":"@butterjs/router","version":"0.0.3","main":"dist/index.js","license":"MIT","scripts":{"build":"yarn clean && babel src -d dist","build:watch":"nodemon --ignore dist --exec 'yarn build'","prepublishOnly":"yarn clean && yarn build","clean":"rm -rf dist"},"dependencies":{"core-js":"3.6.4"},"gitHead":"8a8ecd52e9368f77325e0ba21cf8edbeceadae87","description":"This is the built-in router for Forecastr apps. It takes inspiration from Ruby on Rails, React Router, and Reach Router, but is very opinionated in its own way.","_id":"@butterjs/router@0.0.3","_nodeVersion":"12.10.0","_npmVersion":"lerna/3.20.2/node@v12.10.0+x64 (darwin)","dist":{"integrity":"sha512-hCHcPwTqb19RTrEN9YWoCkaaBj8bV/ne+18z8j9mSJ1tNMoc9hktaJHcc7rsqvTn07dkIClIcHvadxm7mNSM2g==","shasum":"27414a4671cd613eaadebca4b278c80e9f1feb33","tarball":"https://registry.npmjs.org/@butterjs/router/-/router-0.0.3.tgz","fileCount":12,"unpackedSize":39402,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeQi2WCRA9TVsSAnZWagAAp7kP+wbWxBewRhmGcrGEhzUB\nJM25YOoe/lBIw89gT2YKE3DF29jcQtNvLPy2vmVka0XCK48qU2KzhqF3FheX\nzbD5A8T4JSugEv8PwhM6Tgli2zFPssfh48AdD9/cjfh7GXHyXAQ+H/3gVR9I\n7MeQq8FJqGj0vw9kzSgjkkZt3LyXgUhOnmpvXNORMnsOJdvzpLKhtIlpYZXc\nFN3YGUG+aRRBTNZ+UvjsnksQJZtxJtum1hspiaVTUNERuMiQsq0wnfDGf0ev\nk5hvwtHtRkie5fUHBmO/X89yTWFlJ3tpR1QJSoOQ38fuAnFSO8oSZEx22ObS\nhm2IUFwdiILFXuRwr378yeG3+GePEMj7/SkSXMFUW3igjREG16bnzf1eTql+\nEh29yPkcPK1A3FyavpgfpiA+fQps0QwkHmePOoIZBe2ufnjRjdOgEvHk5Q7Q\nWELvOGSEgdTmDWWNhjIbsY8ekIX99rDDRLZkSJLkVcsN/y7LuN5ZiC/JgzYR\nI3nYjVfHrYeJlluq1/TK2vffhdYRdtugdxA5UKcVMO1Us5CYc2tm+GCJM7s3\nl8G5RQ4MheRg3/5qS2bDODmibTjnPQXUWjq8gEwlZf3ci1+GSiA7PmDcwFwb\nzTd6OL6Tuj9yR/uDke2fkwP4/9iQxjjTwgIU7RYRcqU6Pd7m5/WIobZgcYF1\nA73E\r\n=f//6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA5wq2efC6Kc7r0RP/RNFkzbyYQadsIIWUQBK9XV6z6PAiEAn6nJAeZgYGxHVbIFSdKs5+SQ+aeqn1v5O5Ih5QVRT8Y="}]},"maintainers":[{"name":"stevenambs","email":"stevenambs@gmail.com"}],"_npmUser":{"name":"stevenambs","email":"stevenambs@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/router_0.0.3_1581395349955_0.6024392105262664"},"_hasShrinkwrap":false},"0.0.4":{"name":"@butterjs/router","version":"0.0.4","main":"dist/index.js","license":"MIT","scripts":{"build":"yarn clean && babel src -d dist","build:watch":"nodemon --ignore dist --exec 'yarn build'","prepublishOnly":"yarn clean && yarn build","clean":"rm -rf dist"},"dependencies":{"core-js":"3.6.4"},"gitHead":"8728449368aa9b4ad24d89cdcc235f1526d17c7a","description":"This is the built-in router for Forecastr apps. It takes inspiration from Ruby on Rails, React Router, and Reach Router, but is very opinionated in its own way.","_id":"@butterjs/router@0.0.4","_nodeVersion":"12.10.0","_npmVersion":"lerna/3.20.2/node@v12.10.0+x64 (darwin)","dist":{"integrity":"sha512-UYV6/iuNuRX6tjXZ6tY5/2PD0JSDQAsDDEOSGfg3GNODXXy/wXaIuuN8H9V7HeQnhmgb57WnHpv8pTlOmnzSQg==","shasum":"ec5ca8c8879980049187903255cf8d4b23df059a","tarball":"https://registry.npmjs.org/@butterjs/router/-/router-0.0.4.tgz","fileCount":12,"unpackedSize":39402,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeQi6lCRA9TVsSAnZWagAANUwP/2P5Jxl143RRScUe2/Hj\njb16/go2qDfEAiWXdj87Dvn//xPxFgKCaoCTtLm3QTPruqksRLAbn64ygITZ\nWKuWKLFKLAXa3BGXOtTu3GeCbgPoZ+Cp+hNdLMd7hCH4TznKcM0n27dqhKXu\nKM/3CfcCDNxw6ND4vCNjUnOJcjEYr2lwYpiNgmsVcqUcS+HGq5IQ08pVJ7Fv\nVKSwG9p/OJcJFjkmZM7HzgxFfR2euehDc24kignlkBT5b1iRaxNz2WqdWQ5D\nYyIb2UpXu1oti2h7rJyP4e68qAN1SAW9HhKXFQaLVV7Ax/lHxHPuZC8rc9J0\nzyHLM00DDbRuZalUsfirUUuSjMRxrQVejMn1/TvaJFGIsHgR4pGBiNJ0FfOH\no9zdKjxOodXcLwh9pRJuqyg66CRXMuh4IHgoNHH2XGc9LdOdW7Jk4mJC7obJ\nZjtp3WDI2gHHavYS4dRrL1ZpgdwTiMlPEj9dwP7S8xBP6J7GfvaSTqRrAcN9\nyc/Oofh4YjodaJJnNZRMqWnNFx7CHvqgDW3NG57b6XOkG2LJqGmX+XWIWrkP\nDpq4+sRNq/cq7SMbw/gTKIMeVE4vAoKF79NOhqW8+VLBKrUTOYQ2UogApba5\nOPMUYeljGPEm+ajXrDe0nG9mE8icGkSh37qVWwEanlXzEff/x5KA4zljbOK9\nLzR5\r\n=zl1u\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCB0W2dKJSTLed9zwhFi6Y5rEjjKnHG/5B8MM+L9AOxggIhAJm2QRGIXrcFcp4IXtPKpV/ZQegOhdGr/+NCbt9M9fUV"}]},"maintainers":[{"name":"stevenambs","email":"stevenambs@gmail.com"}],"_npmUser":{"name":"stevenambs","email":"stevenambs@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/router_0.0.4_1581395621410_0.19391767909381086"},"_hasShrinkwrap":false},"0.0.5":{"name":"@butterjs/router","version":"0.0.5","main":"dist/index.js","license":"MIT","scripts":{"build":"yarn clean && babel src -d dist","build:watch":"nodemon --ignore dist --exec 'yarn build'","prepublishOnly":"yarn clean && yarn build","clean":"rm -rf dist"},"dependencies":{"core-js":"3.6.4"},"gitHead":"c1d1548132d35895c12e15da476ae8afd4dc24b1","description":"This is the built-in router for Forecastr apps. It takes inspiration from Ruby on Rails, React Router, and Reach Router, but is very opinionated in its own way.","_id":"@butterjs/router@0.0.5","_nodeVersion":"12.10.0","_npmVersion":"lerna/3.20.2/node@v12.10.0+x64 (darwin)","dist":{"integrity":"sha512-Q7neip8qUy18CVsB8hlyJQelWEjwNbQkg0cLfQFX3ilmpLe8ozlIcw1fEmGlI0t820YRY5nEBzTYpFKf+KS6rA==","shasum":"18a0539df4d0dcd17911fbfbd68a650b637df291","tarball":"https://registry.npmjs.org/@butterjs/router/-/router-0.0.5.tgz","fileCount":12,"unpackedSize":39402,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeQjFpCRA9TVsSAnZWagAARlAP/iun+k48vxFqLeSgQmGS\nZogJdmA4geNe2UAb5NAEHH2Q+vYvXe5sZobMNM0j/OwI6ZlLIpentao6FbM8\njrSyCenQ0yJannt0rdAGDzIam3RGCVGv+39Nfn8pPsJkdc1k7kIwKNGXzmq5\nwx45Jl1N9gn09cGeCbhUe/8WcjuQKhnH48Ym6z7Ro2IX09ftY+w3tg1PH2Wl\nGovKZlUCbh9StjkzYYFbIz2uUHS+acXnKBx5wGildsn0o31rdqlLL5SowUG8\nZwa4Xdjna1QL0pvzKu/4MpsQY82r1E6TbRq4xcK+u4m4XxFJAFvlQ4bnWDJu\nSyOEtOPslqCvxZUBvr2KppFwJHx7b7kEJxDugD5U0oAXcDDqK9qzumDScNf6\nZfWB2EAH2sFMhX3TuV6ewEezOzflcWe4FbdXqwgLnZjG66/AeUtlTf7IrjEX\nziGcyDhAGAOG/qPlTdaEEmlD722DuWRKfTsTeyk9Xa1nKREe2t0Sifu23OUX\n7fy0r69sJsYWtmx3jXxrxEoM3A66B6begdqTFxUaHT8AzXJXG12/TFYOdfzA\nh/gjT6rmxUbx5FjGQYb6ddEG4KzyDYi/zDlKInF7GmX6vrvQ4sEn5+vnuIrb\nRRK7LGMdK2sE45jkZX8+f2LHXazw0+PcAUIDqZvgkoFXnpoSZbRcPFmVm909\n9unQ\r\n=XRBT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDi9kQ+42iJC7dkQeL2WN+WitBvxGcf2b+UKPFLAj4SwwIgGrxKIaslTRZUQtxabNEqnxl1+96iHUrzDG9+TYK3GY0="}]},"maintainers":[{"name":"stevenambs","email":"stevenambs@gmail.com"}],"_npmUser":{"name":"stevenambs","email":"stevenambs@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/router_0.0.5_1581396329038_0.04401742411429299"},"_hasShrinkwrap":false},"0.0.6":{"name":"@butterjs/router","version":"0.0.6","main":"dist/index.js","license":"MIT","scripts":{"build":"yarn clean && babel src -d dist","build:watch":"nodemon --ignore dist --exec 'yarn build'","prepublishOnly":"yarn clean && yarn build","clean":"rm -rf dist"},"dependencies":{"core-js":"3.6.4"},"gitHead":"1e84d1a93e9e3bb0ffe5bb34a9c8a70f6c599569","description":"This is the built-in router for Forecastr apps. It takes inspiration from Ruby on Rails, React Router, and Reach Router, but is very opinionated in its own way.","_id":"@butterjs/router@0.0.6","_nodeVersion":"12.10.0","_npmVersion":"lerna/3.20.2/node@v12.10.0+x64 (darwin)","dist":{"integrity":"sha512-dgIWcumYyoG6cZEq4Qf+IJYIar8qPd4P8ke16If0zL2LtngJxR8QfKBppZr9JYX0hIjo2KI3+eFGZ1OyVJQhyA==","shasum":"2a244ffc94c19eb0ce7cd8d8a478df179da2e864","tarball":"https://registry.npmjs.org/@butterjs/router/-/router-0.0.6.tgz","fileCount":12,"unpackedSize":39402,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeQjNzCRA9TVsSAnZWagAAIyMP/jIx7MHjzOerR1asne7m\nQ/tWtH9wKgG8QPYJ5kaUbNWQnrm2tSK3WkqCbkrnd3K0GB6QZddEhLZ1RYXR\nJWAffHpfDcvRV0Ujfwjzp2Hg6hyQQynTob/w5dCYa9EZFntVFk1MgcRRQ3oM\npi/52J3KZ2JhILbdQ151z5Kyf08z5rSFPRVm12GuMpXF3/Bp/BUo1LiLUWo7\npiMV2epD3aplEvoRNvwXw/t3VksrEBENjqB/tzDrBXD429p3QuAyjxGHakAW\nyXSGWM2LVIe7QpdirDagVHByjatr5ebuLaiJTVl7IDcMyYVZx8WtcptnTImy\n5rxJdd7GeXAosmO5hX8gkny0SQsNzapsMYvm+BobaTTaIaw3obAMj/dxxgeg\nOvyYA6piI9TXod0IMRy6FDi2CTh7AlS4oO/AxrDkXCX9jwHmUF70dyrKqkLt\nA+7Nuf+xDG2O1fV9+mdDT/sUG2VqwqkFMeD6M5nJqacW0OCjSeXUWueXpbjb\nnqaQXkyWrSiS1gVltv1q+AO7j/miHlsMT/ZEOuahrnHtnlqHNZAAQDJa+J4K\nJ6RHvArBBlDnscBgmjc1Gprz9KnGU5231Hg10/rKQBhmwDmYk3er2lt0iC2h\n2LCZq4raL2hp2L1aqhI03RRozTfTTbWakG8nLiYQV8APnuWcl+WK3598zGZN\n8aoM\r\n=TXPP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDfl+H6USWAtzNa+j6e/wbP/RKtpx022gKmILEeXzaiKQIgS2JKG1fbWLErIvs7GDovwkx9FHxdc4PX52EVm3q6j2Y="}]},"maintainers":[{"name":"stevenambs","email":"stevenambs@gmail.com"}],"_npmUser":{"name":"stevenambs","email":"stevenambs@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/router_0.0.6_1581396851120_0.2798971564214403"},"_hasShrinkwrap":false},"0.0.7":{"name":"@butterjs/router","version":"0.0.7","main":"dist/index.js","license":"MIT","scripts":{"build":"yarn clean && babel src -d dist","build:watch":"nodemon --ignore dist --exec 'yarn build'","prepublishOnly":"yarn clean && yarn build","clean":"rm -rf dist"},"dependencies":{"core-js":"3.6.4"},"gitHead":"a356fc0e517426ccf36c971b5f90cde17a2be4bb","description":"This is the built-in router for Forecastr apps. It takes inspiration from Ruby on Rails, React Router, and Reach Router, but is very opinionated in its own way.","_id":"@butterjs/router@0.0.7","_nodeVersion":"12.10.0","_npmVersion":"lerna/3.20.2/node@v12.10.0+x64 (darwin)","dist":{"integrity":"sha512-2p4Cay+Vf/hat+UaWELkNpZRgasIRkKHiMpGOB6ZXU6XiLNthdIdsHYZ8MVCS4RUCzsyxaNiKes+jYZzjEUWsA==","shasum":"015541095fb47532466bdc716bb45251aab04dca","tarball":"https://registry.npmjs.org/@butterjs/router/-/router-0.0.7.tgz","fileCount":12,"unpackedSize":39402,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeQjWzCRA9TVsSAnZWagAAHQMQAIeBsjXb49KlUiW+qBvF\nqnKVLDOQaxOL1ll36OgDgZFcETvBKoJpYeYzBJD2ILW3KBjjvlXxc2+xXkPF\nGnFuiebW6QFMsH1ZsF7UO/HK6sQx71yjKUYZPmA/fvMooNQUUmrNdFdzeC9J\nOPw3dNNhbNx1znobGd3/+/2GZvsuHiLA7CM6fnW9gF7kT37xkTPhG+RAYEp9\npO3Rm85MAJOhs2+nI4ZpfrPkYNZguVdRmStLg7UMzk3n/HlydFqal4F7BkBz\n3yO/ZyjAG8DlpVcZanYG089bDDANCFLQVOek7kgfdazGqH1JkbLGYv+uwSVn\n2IYKhQfCeTrCnZXDfiZl/9WW7anr4aId/ziRBxkRBFUXQffkSLVoy/CEvhd/\nCul5Y625bmZCohT+IxZ9SwfPdDiBFaf2P+F5frs52+QomQrypZvslfYIv1sN\nSagN24JltjFJ7LfO/WP2SnlrPwlo5xb//rMBNK7V3PvC+Zs0wyxzj1/kmmbH\nImd7NuoJ1n0aCD2sHL24lIPKlHU+vBZ0eiMqpIDOTxNZMIO3Zu6v+k+9Ampv\nlZuSNx1ffl2vlX3hYNOM33qj6Xeutcp4CMBKszxkAsPJNUt6kUPjdPvFYv3I\nxZxlNs6IjIz5KMecd7q4dLVXCxSGY4/yTCMfdddcf0BBHSp7resemfD5B9Jx\nJJ+r\r\n=S+pW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDjwDgrwBZHd5Wp275Hlx5tG69Y2inUhyXR77J3GbXlvQIhAN8TbsnQfyT01yZx9aEkhZFzi+QID4bQTJz9nn6L1ttD"}]},"maintainers":[{"name":"stevenambs","email":"stevenambs@gmail.com"}],"_npmUser":{"name":"stevenambs","email":"stevenambs@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/router_0.0.7_1581397427447_0.5374796120843339"},"_hasShrinkwrap":false},"0.0.8":{"name":"@butterjs/router","version":"0.0.8","main":"dist/index.js","license":"MIT","scripts":{"build":"yarn clean && babel src -d dist","build:watch":"nodemon --ignore dist --exec 'yarn build'","prepublishOnly":"yarn clean && yarn build","clean":"rm -rf dist"},"dependencies":{"core-js":"3.6.4"},"gitHead":"7f5bea5b28a6a86430617dfe4d88c61d96f9dfbb","description":"This is the built-in router for Forecastr apps. It takes inspiration from Ruby on Rails, React Router, and Reach Router, but is very opinionated in its own way.","_id":"@butterjs/router@0.0.8","_nodeVersion":"12.10.0","_npmVersion":"lerna/3.20.2/node@v12.10.0+x64 (darwin)","dist":{"integrity":"sha512-Yc6NzsWw8iAXjBhPkWMvxPBTe8G6S51lExaN7ZizKLuT0jW1bgkXXKoL5Xm0pGBe2gDr46mL9xldHoXsqVgziw==","shasum":"439fec41bdcb2b2ebf82643f49b6da5c7de574a1","tarball":"https://registry.npmjs.org/@butterjs/router/-/router-0.0.8.tgz","fileCount":12,"unpackedSize":39402,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeQjblCRA9TVsSAnZWagAABHUP/2r9shilOVhayMP3w1O8\nclmlWa5jgcWBaMjogRoXMEpaK2BvrcZLlvnlQaAkMQtDsTpt52g9+iQWNT/c\naV5VVM19v2h4CdnoGoyqMgVBXQh4JKx4ERSfNO3iS0nQ/r41HhtR/bCZkbKW\nS1VrSsw9DfB8lCro7/C2hoME7ztJnWI0vBNMk0lU/tytaUJieG3xgpVSnjDn\ntpEqBwvcS4ep+sl4DtWtZt9WETzeDnGizXjqTt1HjTewBl2ss/EkNt+iMmf1\nQb1lFqs+utG6s4YuloTME9wqfqPOPnJl18X7k8uFuEp5zHQ7aWhQXxWMUHIr\nEdkpZjAPEfSZUsMOGUqby4RLpLpuMzbaPd2TMxRm8GbW/jUGm1RiFYAJ99Zz\ne31Oej7mwcRlHgLFT+JD0ZGrF64twgdkmZ14mphzGimnQFPI6ikcvCbXZbVf\nUDuZPpbdIf/5Tqpn0fl7AdI5hU0PZFto/CDcofLMQzVEppKVGQEPzFLXRXKE\nI3wa1AAnWmhxWVnb3HSyoBPa3vXdO/Rob6oRbsEW4/DWHF9UZfCKGORjqX/m\nE3TJwcB9LtyxGwxOgapQPIjWXgSJ1sfkwzTnZbUDb+L2EtxdF8CpGKpDSjXO\ngstfwBV8gfDOTrKk4e7ncWiNTeCjtaYsUzbLoaQgOCj1pT32lxDDJuR2R5Sq\nA/wr\r\n=7yY+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCOZBhWPhGbQ/L5g6q0+UEx6YoDqYF0D2qQ3YHqOCyLUQIhAKL71GcQ93R38atC3uHnH8oon2jv0MsPs+Q9MabdxHpR"}]},"maintainers":[{"name":"stevenambs","email":"stevenambs@gmail.com"}],"_npmUser":{"name":"stevenambs","email":"stevenambs@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/router_0.0.8_1581397733383_0.03149025200953459"},"_hasShrinkwrap":false}},"time":{"created":"2020-02-11T04:09:35.797Z","0.0.1":"2020-02-11T04:09:36.379Z","modified":"2022-04-04T21:10:21.718Z","0.0.2":"2020-02-11T04:21:03.604Z","0.0.3":"2020-02-11T04:29:10.118Z","0.0.4":"2020-02-11T04:33:41.545Z","0.0.5":"2020-02-11T04:45:29.143Z","0.0.6":"2020-02-11T04:54:11.263Z","0.0.7":"2020-02-11T05:03:47.569Z","0.0.8":"2020-02-11T05:08:53.506Z"},"maintainers":[{"name":"stevenambs","email":"stevenambs@gmail.com"}],"description":"This is the built-in router for Forecastr apps. It takes inspiration from Ruby on Rails, React Router, and Reach Router, but is very opinionated in its own way.","license":"MIT","readme":"# Forecastr Router\n\nThis is the built-in router for Forecastr apps. It takes inspiration from Ruby on Rails, React Router, and Reach Router, but is very opinionated in its own way.\n\nWARNING: This software is in alpha and should not be considered suitable for production use. In the \"make it work; make it right; make it fast\" paradigm, RR is in the later stages of the \"make it work\" phase.\n\nForecastr Router (RR from now on) is designed to list all routes in a single file, without any nesting. We prefer this design, as it makes it very easy to track which routes map to which pages.\n\n## Installation and use outside of a Forecastr app\n\nRR was designed for use in Forecastr apps, and the rest of the documentation here will use examples that are appropriate in that context. That said, you can use RR outside of Forecastr apps too! If you do, there are a few things to note:\n\n1. Forecastr auto-imports every Page component in the `Routes.js` file, so if you use it outside of that context, you will need to import your Pages manually.\n\n## Router and Route\n\nThe first thing you need is a `Router`. It will contain all of your routes. RR will attempt to match the current URL to each route in turn, stopping when it finds a match, and rendering that route only. The only exception to this is the `notfound` route, which can be placed anywhere in the list and only matches when no other routes do.\n\nEach route is specified with a `Route`. Our first route will tell RR what to render when no other route matches:\n\n```js\n// Routes.js\nimport { Router, Route } from '@forecastr/router'\n\nconst Routes = () => (\n  <Router>\n    <Route notfound page={NotFoundPage} />\n  </Router>\n)\n\nexport default Routes\n```\n\nRR expects a single `Route` with a `notfound` prop. When no other route is found to match, the component in the `page` prop will be rendered.\n\nTo create a route to a normal Page, you'll pass three props: `path`, `page`, and `name`:\n\n```js\n// Routes.js\n<Route path=\"/\" page={HomePage} name=\"home\" />\n```\n\nThe `path` prop specifies the URL path to match, starting with the beginning slash. The `page` prop specifies the Page component to render when the path is matched. The `name` prop is used to specify the name of the _named route function_.\n\n## Link and named route functions\n\nWhen it comes to routing, matching URLs to Pages is only half the equation. The other half is generating links to your pages. RR makes this really simple without having to hardcode URL paths. In a Page component, you can do this (only relevant bits are shown in code samples from now on):\n\n```js\n// SomePage.js\nimport { Link, routes } from '@forecastr/router'\n\n// Given the route in the last section, this produces: <a href=\"/\">\nconst SomePage = () => <Link to={routes.home()} />\n```\n\nYou use a `Link` to generate a link to one of your routes and can access URL generators for any of your routes from the `routes` object. We call the functions on the `routes` object _named route functions_ and they are named after whatever you specify in the `name` prop of the `Route`.\n\nNamed route functions simply return a string, so you can still pass in hardcoded strings to the `to` prop of the `Link` component, but using the proper named route function is easier and safer. Plus, if you ever decide to change the `path` of a route, you don't need to change any of the `Link`s to it (as long as you keep the `name` the same)!\n\n## Route parameters\n\nTo match variable data in a path, you can use route parameters, which are specified by a parameter name surrounded by curly braces:\n\n```js\n// Routes.js\n<Route path=\"/user/{id}>\" page={UserPage} name=\"user\" />\n```\n\nThis route will match URLs like `/user/7` or `/user/mojombo`. You can have as many route parameters as you like:\n\n```js\n// Routes.js\n<Route path=\"/blog/{year}/{month}/{day}/{slug}\" page={PostPage} name=\"post\" />\n```\n\nBy default, route parameters will match up to the next slash or end-of-string. Once extracted, the route parameters are sent as props to the Page component. In the 2nd example above, you can receive them like so:\n\n```js\n// PostPage.js\nconst PostPage = ({ year, month, day, slug }) => { ... }\n```\n\n## Named route functions with parameters\n\nIf a route has route parameters, then its named route function will take an object of those same parameters as an argument:\n\n```js\n// SomePage.js\n<Link to={routes.user({ id: 7 })} />\n```\n\nAll parameters will be converted to strings before being inserted into the generated URL. If you don't like the default JavaScript behavior of how this conversion happens, make sure to convert to a string before passing it into the named route function.\n\n## Route parameter types\n\nRoute parameters are extracted as strings by default, but they will often represent typed data. RR offers a convenient way to auto-convert certain types right in the `path` specification:\n\n```js\n// Routes.js\n<Route path=\"/user/{id:Int}\" page={UserPage} name=\"user\" />\n```\n\nBy adding `:Int` onto the route parameter, you are telling RR to only match `/\\d+/` and then use `Number()` to convert the parameter into a number. Now, instead of a string being sent to the Page, a number will be sent! This means you could have both a route that matches numeric user IDs **and** a route that matches string IDs:\n\n```js\n// Routes.js\n<Route path=\"/user/{id:Int}\" page={UserIntPage} name=\"userInt\" />\n<Route path=\"/user/{id}\" page={UserStringPage} name=\"userString\" />\n```\n\nNow, if a request for `/user/mojombo` comes in, it will fail to match the first route, but will succeed in matching the second.\n\n## Core route parameter types\n\nWe call built-in parameter types _core parameter types_. All core parameter types begin with a capital letter. Here are the types:\n\n- `Int` - Matches and converts an integer.\n\n## User route parameter types\n\nRR goes even further, allowing you to define your own route parameter types. Your custom types must begin with a lowercase letter. You can specify them like so:\n\n```js\n// Routes.js\nconst userRouteParamTypes = {\n  slug: {\n    constraint: /\\w+-\\w+/,\n    transform: (param) => param.split('-'),\n  }\n}\n\n<Router paramTypes={userRouteParamTypes}>\n  <Route path=\"/post/{name:slug}\" page={PostPage} name={post} />\n</Router>\n```\n\nHere we've created a custom `slug` route parameter type. It is defined by a `constraint` and a `transform`. Both are optional; the default constraint is `/[^/]+/` and the default transform is `(param) => param`.\n\nIn the route we've specified a route parameter of `{name:slug}` which will invoke our custom route parameter type and if we have a requst for `/post/forecastr-router`, the resulting `name` prop delivered to `PostPage` will be `['forecastr', 'router']`.\n\n## useParams\n\nSometimes it's convenient to receive route parameters as the props to the Page, but in the case where a deeply nested component needs access to the route parameters, it quickly becomes tedious to pass those props through every intervening component. RR solves this with the `useParams` hook:\n\n```js\n// SomeDeeplyNestedComponent.js\nimport { useParams } from '@forecastr/router'\n\nconst SomeDeeplyNestedComponent = () => {\n  const { id } = useParams()\n  ...\n}\n```\n\nIn the above example, we've pulled in the `id` route parameter without needing to have it passed in to us from anywhere.\n\n## navigate\n\nIf you'd like to programmatically navigate to a different page, you can simply use the `navigate` function:\n\n```js\n// SomePage.js\nimport { navigate, routes } from '@forecastr/router'\n\nconst SomePage = () => {\n  const onSomeAction = () => {\n    navigate(routes.home())\n  }\n  ...\n}\n```\n","readmeFilename":"README.md"}