{"_id":"@emilte/named-routes","_rev":"1-1bbe40f14968799d197d9ca8074a8784","name":"@emilte/named-routes","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.0":{"dependencies":{"path-to-regexp":"^6.2.1"},"name":"@emilte/named-routes","description":"Example: ```ts const ROUTES = {    foo: include('/foo/', {      bar: 'bar/',      scope: include('scope/:param', { // <- Note the missing trailing slash.        baz: 'baz', // <- Note the missing trailing slash.        qux: 'qux/'      })    }) } ```","version":"1.0.0","main":"index.js","devDependencies":{},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/emilte/named-routes.git"},"author":{"name":"Emil Telstad"},"license":"ISC","bugs":{"url":"https://github.com/emilte/named-routes/issues"},"homepage":"https://github.com/emilte/named-routes#readme","keywords":["react","typescript","route","routes","router","url","urls","path","paths","scope","nesting"],"gitHead":"f5321f32fbb0bd2ad1c75df99345d90b95354b10","_id":"@emilte/named-routes@1.0.0","_nodeVersion":"18.9.0","_npmVersion":"8.19.1","dist":{"integrity":"sha512-sEQNJ4zW52w12TEK41Pnk8R/AdthhxhFxO6gEmlmY6ZYBTAwBGa/BShwBkiqpakjqGuAxf73Px4Xb6hTfyzkNw==","shasum":"fbcf0c9d8cd032ffc27a3cfcd7b7daa162c05bc8","tarball":"https://registry.npmjs.org/@emilte/named-routes/-/named-routes-1.0.0.tgz","fileCount":3,"unpackedSize":4757,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC4UN32g7Kp/YOrSjgHCeXQmQv83/N6Z+3+csDAb18p7QIhAPMwbjVnk8p/YGM2rrngoYFIDDuFWCqIn82UCUuhsFkR"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjK4UNACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpXiA/6Ar8iRZD7LgO6AmX8PlrIcswgrhpukzl5/NtfwJDyg+YENMin\r\nL/nxBvr8kUXOfivGYWwzkTp3tH2X1mFGZP9TzI1hHTmp+VqwVsKVsC6sxoP/\r\nqPtu0D2PnDzUnwL774tU5BeKJpNtlMlN86H6R80s+mpb61rMyhYJ0Jq0RNtF\r\nFxn7o/wc86WFPI3nnM488D+10q6zcXigsijZe90QT6LT6KC8TIOvsKcfYYd2\r\n11mmipwoEjUz3zEPhA7f46mdBaW+tlfBI+bNMZU4uJ9knfFqPxRteEe9jK68\r\niG8c9N0UySqBj99wHAGxRmnmb6wVb2eadSWArDHJ3V9toyR1VXRLf5+i5Zge\r\nnUykOjAxS0oZCpPjAW8A7m3vykn67OsOVdNJZGv461uzMLKp76jcoKxkG3z5\r\nN7fqtYZKgLFQu4nRdmWBZVSbCss2LdmBN+eeSXmZgpBpYzEUEjWOMkMhoE/d\r\nZaulPrs26gPOrIdQhANmBd/hOlDDybukAWCNzbd5TTgO+QeH9XJhMnFiNd/e\r\nayMWiLIRx8VITDck8iOyNlokAng+FnRrNAsbVOYM9esAjNrVCpbefhNYXWHb\r\nPeLlTmByhHdi8QYhRbMHvRsQNPavUvZUiRFoS8DHz/wNIEmHsGxdMPvOgMru\r\n8YjWx3oQhAYDNehwQx8T6FAP3uGJlHGSBWs=\r\n=XP4g\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"emilte","email":"emil.telstad@gmail.com"},"directories":{},"maintainers":[{"name":"emilte","email":"emil.telstad@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/named-routes_1.0.0_1663796491548_0.8685137150385851"},"_hasShrinkwrap":false},"1.0.1":{"dependencies":{"path-to-regexp":"^6.2.1"},"name":"@emilte/named-routes","description":"Example: ```ts const ROUTES = {    foo: include('/foo/', {      bar: 'bar/',      scope: include('scope/:param', { // <- Note the missing trailing slash.        baz: 'baz', // <- Note the missing trailing slash.        qux: 'qux/'      })    }) } ```","version":"1.0.1","main":"index.js","devDependencies":{},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/emilte/named-routes.git"},"author":{"name":"Emil Telstad"},"license":"ISC","bugs":{"url":"https://github.com/emilte/named-routes/issues"},"homepage":"https://github.com/emilte/named-routes#readme","keywords":["react","typescript","route","routes","router","url","urls","path","paths","scope","nesting"],"gitHead":"bc186c764aa785659bbfed6c0eaf55ecc0fb3594","_id":"@emilte/named-routes@1.0.1","_nodeVersion":"18.9.0","_npmVersion":"8.19.1","dist":{"integrity":"sha512-zViw70xpgvZFjX9+tbSBBOO11oORWyv3tZ4plZj77KbgmUPr1I3p5PjGcasGVommqlvLSYiBx60POUCg6plM8w==","shasum":"58eea68c6bed111ec3c7b405d24dd9c337247f16","tarball":"https://registry.npmjs.org/@emilte/named-routes/-/named-routes-1.0.1.tgz","fileCount":3,"unpackedSize":6869,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDGb4/ZiIHEx1aUZU69eKmkukt8POJ9XLykUwgvlpUS4gIgNGzD27rKnEjGEaqxtDfRIeLNFBG6dP6RSutrS74aQuo="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjK6GHACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrZUhAAmIi57hr/8lcExhVnbdKwApz3p42MoBFPXDDrgzDUfg7eB+YH\r\nkKEek1KfFJ7HoWuB9FUmEzVfmm4/Cd+HeSmSlhqhS+2Autu6HGHZoDdemxm3\r\nfKM2cg6EzlVHOaEGlps3SIptXECvytzBObkk52dz4y3kqI+MjyGKxB2548jt\r\nBYVnn8B8759ovACVkRy4LXT6n1z0utxHr8xmI1x8pSmvjdI398ErcL83NcJJ\r\nvoOXxml89SDU49MlaKphP2bH0z+MjdUvMBQ91IDMUM+bEZZ+/BvJFL0J5H1N\r\nAcs+vNjq76Yy8zAScusB/eGtartcI4ZZdVF81/7RI6WcPoVbVwSrUcgi/C3X\r\nYcJuPSy1M935muWbffiDqGZArZ9oGanJiO0+dFePTtG1gvc4vNHH8V6LHPTn\r\nMvWJqk61deObI1zEFzJi4RODT3r8cB7PefpvoQjBgIpa+TPeSB2RbkYlfmpE\r\nJVgfN66hYbga539fTJVcRShPhSiZLzCluPSDH1OY0sy6nQYV8gfZOAZ/oAdL\r\njZ3pTFvI/TpAD7F8w1adiYgg5N3gs2n1n2LGCwFevmqkW4oPD+XtRSCxOKAY\r\nwLq7vI3v9xKeyqV1u3g7ywQIFvFniQ4mtlTEDU4qKhqSObTa7g0CAbI16X7m\r\nyS4Lts6iLQmDYr8h7SJGPKBXVkW8KBcpAys=\r\n=8dm7\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"emilte","email":"emil.telstad@gmail.com"},"directories":{},"maintainers":[{"name":"emilte","email":"emil.telstad@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/named-routes_1.0.1_1663803783034_0.6730738286446329"},"_hasShrinkwrap":false}},"time":{"created":"2022-09-21T21:41:31.491Z","1.0.0":"2022-09-21T21:41:33.278Z","modified":"2022-09-21T23:43:03.288Z","1.0.1":"2022-09-21T23:43:03.197Z"},"maintainers":[{"name":"emilte","email":"emil.telstad@gmail.com"}],"description":"Example: ```ts const ROUTES = {    foo: include('/foo/', {      bar: 'bar/',      scope: include('scope/:param', { // <- Note the missing trailing slash.        baz: 'baz', // <- Note the missing trailing slash.        qux: 'qux/'      })    }) } ```","homepage":"https://github.com/emilte/named-routes#readme","keywords":["react","typescript","route","routes","router","url","urls","path","paths","scope","nesting"],"repository":{"type":"git","url":"git+https://github.com/emilte/named-routes.git"},"author":{"name":"Emil Telstad"},"bugs":{"url":"https://github.com/emilte/named-routes/issues"},"license":"ISC","readme":"# named-routes\n\nInspired by named-urls ([npmjs](https://www.npmjs.com/package/named-urls), [github](https://github.com/kennedykori/named-urls/))\n\nAs I am unsure of how forking works, this package is a direct copy of the package above.\nI have extended the functionality with a few additions:\n1. Removed toString() method.\n3. Added `base`: Raw path given to include(), not affected by nesting.\n4. Added `star`: Raw base as route representation to catch all patterns. `base` suffixed with `/*`.\n5. Added `self`: Full path to `base`.\n\n<br>\n<hr>\n<br>\n<br>\n\n## Example setup:\n```ts\n// \"src/routes.ts\"\nimport { include } from '@emilte/named-routes';\n\nexport const ROUTES = {\n   foo: include('/foo/', {\n        bar: 'bar/',\n        scope: include('scope/:param', { // <- Note optional trailing slash.\n            baz: 'baz', // <- Note optional trailing slash.\n            qux: 'qux/',\n            nos: '/nos/' // <- Note absolute path.\n     })\n   })\n}\n```\n\n<details>\n<summary>Final result</summary>\n\n```ts\nROUTES = {\n    foo: {\n        base: '/foo/',\n        star: '/foo/*',\n        self: '/foo/',\n        bar: '/foo/bar/',\n        scope: {\n            base: 'scope/:param',\n            star: 'scope/:param/*',\n            self: '/foo/scope/:param',\n            baz: '/foo/scope/:param/baz',\n            qux: '/foo/scope/:param/qux/',\n            nos: '/nos/'\n        }\n    }\n}\n```\n</details>\n\n<br>\n<br>\n<br>\n\n\n## Usage:\n\nExample 1 (simple):\n```ts\nROUTES.foo.base === '/foo/'\nROUTES.foo.self === '/foo/'\nROUTES.foo.star === '/foo/*'\n\nROUTES.foo.scope.base === 'scope/:param'\nROUTES.foo.scope.star === 'scope/:param/*'\nROUTES.foo.scope.self === '/foo/scope/:param'\n\nROUTES.foo.scope.baz === '/foo/scope/:param/baz'\n\nROUTES.foo.scope.qux === '/foo/scope/:param/qux/'\n\nROUTES.foo.scope.nos === '/nos/'\n\n// Use `reverse` to inject params.\nreverse(ROUTES.foo.scope.baz, {param:'hello-world'}) === '/foo/scope/hello-world/baz'\n```\n\nExample 2 (router):\n```tsx\n// \"src/AppRoutes.tsx\"\nimport { Route, Routes } from 'react-router-dom';\nimport { BazPage, QuxPage } from 'Pages'; // Some example components.\nimport { ROUTES } from 'routes'; // From example setup.\nimport { FooRoutes } from 'src'; // Some other nested routing.\n\nexport function AppRoutes() {\n    return (\n        <Routes>\n            <Route path={ROUTES.foo.scope.baz} element={BazPage} />\n            <Route path={ROUTES.foo.scope.qux} element={QuxPage} />\n            <Route path={ROUTES.foo.star} element={FooRoutes} /> {/* Catch everything else */}\n        </Routes>\n    )\n}\n```\n\nExample 3 (link):\n```tsx\n// \"src/Pages/BazPage.tsx\"\nimport { reverse } from '@emilte/named-routes';\nimport { ROUTES } from 'routes'; // From example setup.\n\nexport function BazPage() {\n    const quxOneUrl = reverse(ROUTES.foo.scope.qux, {param: 1})\n    return <a href={quxOneUrl}>Go to Qux 1</a>\n}\n```","readmeFilename":"README.md"}