{"_id":"@medley/router","_rev":"4-b666c000484d31ab1432795bf3edde29","name":"@medley/router","dist-tags":{"latest":"0.2.1"},"versions":{"0.1.0":{"name":"@medley/router","version":"0.1.0","description":"A high-performance URL router","author":{"name":"Nathan Woltman","email":"nwoltman@outlook.com"},"license":"MIT","main":"Router.js","engines":{"node":">=8"},"repository":{"type":"git","url":"git+https://github.com/medleyjs/router.git"},"homepage":"https://github.com/medleyjs/router","bugs":{"url":"https://github.com/medleyjs/router/issues"},"keywords":["router","fast","performance","url"],"eslintIgnore":["coverage/"],"dependencies":{"object-treeify":"^1.1.20","safe-decode-uri-component":"^1.2.1"},"devDependencies":{"@nwoltman/eslint-config":"~0.3.1","benchmark":"^2.1.4","coveralls":"^3.0.6","eslint":"^6.5.0","mocha":"^6.2.1","nyc":"^14.1.1"},"scripts":{"lint":"eslint .","test":"eslint . && nyc --reporter=html --reporter=text-summary mocha","coveralls":"nyc report --reporter=text-lcov | coveralls"},"gitHead":"6a40287085a6aec0d1e27bad120d5b9b2033954c","_id":"@medley/router@0.1.0","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-JwUNqFWSWgTlFtqj/SYjUjCw+D1Oy30weq0Cvvsd60fokuigt1QrUen5/yc+MgUnmF5hz+3WYP5Kw1zuMZQjyQ==","shasum":"b2a233598996223c8be628069cfc22513b08b0ff","tarball":"https://registry.npmjs.org/@medley/router/-/router-0.1.0.tgz","fileCount":4,"unpackedSize":17874,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdkXTgCRA9TVsSAnZWagAAOt0P/Ak/ezZZ1SuL+sRVbFkZ\npCGv1BNAi879ej095Ju7o18ubIKaoVyayMAB/O2NngMu8wJNZv6WJMvCucdM\nNAv45mE5DAE3qTE24ngDiLzGSyC6V67z6XQFfkrGe+fyhDF55/3eem9esb0Z\nM1/HZbWlrOXzrNegPhFwgl1bEDip8kKBQM4a/kuKeakGkaSw4PTK5e6pqyhg\nElm9ARr+IMg3OZvUFNMyCphUuB2xSTWm7US+VnfeJAh0Vo81ZnoyuZtimgHc\nR1wx1ekqfqHCGo3wCDwwCFQXzcbVTEtNNPJirVUuXbRB2c8wqNCayke1eV71\nuIlj/Ke1fQgDkTgWo9zbNAuQyRryq1jlwRx2Q3rqMMDIfmqROiIXslnxJbiL\nUicCXZWwgH7GAg7UqD7Nuqpvln9hgP196r8MkF6K22SQEAhcD3abqAs4KrVi\nyOy00EKMPelkk8aJ896/Cfd35hO183jVHaZmQWmgdeNMAQsEdBwYMR3q54gU\n8IGldHQ9SefhlEARqi0jbg7JJ75d+QDd9VYXBeOn3XW8EToM3j6ty2WY45dJ\n5Q49+WIY/YvVfHKosP2r5YOUi74S0Nq6ApZfXs6ZvMVpmsQyyteOJSIgYSXR\nVq1Db65nFhw79VFpklE62W/bi5NVTs2E5bUwsZ54DnAvPDYKWcMyZloD2NOV\nP3kS\r\n=i+Zk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDuglhBNPgXil1BVquZ2vu+LWFbgCHY2KLrfLkXHb0d+gIgNxIfMzUGHhGvUF1cYeOwEnsOdcgs8cY5BTCukUAzUuo="}]},"maintainers":[{"name":"nwoltman","email":"nwoltman@outlook.com"}],"_npmUser":{"name":"nwoltman","email":"nwoltman@outlook.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/router_0.1.0_1569813727882_0.41681672163050454"},"_hasShrinkwrap":false},"0.1.1":{"name":"@medley/router","version":"0.1.1","description":"A high-performance URL router","author":{"name":"Nathan Woltman","email":"nwoltman@outlook.com"},"license":"MIT","main":"Router.js","engines":{"node":">=8"},"repository":{"type":"git","url":"git+https://github.com/medleyjs/router.git"},"homepage":"https://github.com/medleyjs/router","bugs":{"url":"https://github.com/medleyjs/router/issues"},"keywords":["router","fast","performance","url"],"eslintIgnore":["coverage/"],"dependencies":{"object-treeify":"^1.1.20","safe-decode-uri-component":"^1.2.1"},"devDependencies":{"@nwoltman/eslint-config":"~0.3.1","benchmark":"^2.1.4","coveralls":"^3.0.6","eslint":"^6.5.0","mocha":"^6.2.1","nyc":"^14.1.1"},"scripts":{"lint":"eslint .","test":"eslint . && nyc --reporter=html --reporter=text-summary mocha","coveralls":"nyc report --reporter=text-lcov | coveralls"},"gitHead":"9bc114487b639ec4145c9a6218de5e9340e24087","_id":"@medley/router@0.1.1","_nodeVersion":"12.11.0","_npmVersion":"6.11.3","dist":{"integrity":"sha512-d2hgUFWYqIOK2J043OPTMX3qr8pHmlaqSsFNSeRZRX5ZK7IF7H58OVPKhaC/v734WOHx4gVDxDIDoovVxdyyXg==","shasum":"c74444abf00381295f11ee109837ecebeee318a1","tarball":"https://registry.npmjs.org/@medley/router/-/router-0.1.1.tgz","fileCount":4,"unpackedSize":17882,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdkt8aCRA9TVsSAnZWagAApMQQAKNtU5aKk+z8OBqEoKDT\n7r5Vas2bOQMpJgkKfwQkClWgm2xDifcIr5/f43rDWAJ/3139Z34QR/juiyEf\nuYIW6rt/jM/hkwNDhHn6/3gr3BEeQURl2+taPTafQocxsQ5lRQxo5wY9mYMB\nJ7nhfW5UptrZhV7ieHTFh6NPdxv057lfPatlHjM18Uhjs7mfus/BJthGOHK0\nIvACEK+lEbywTJvj9V0s/pyK9CPMb64/oQw48bc1PX7M7tml8sttYWC8cM+w\n/BjTpXqcn6qQBJH39bNmsllOOOmQQoBnFkMqMMge15NkcVL13R6eovmgDWZw\nmv2numsaNNDJfG6+mjwgHstVE8yPt33qCGOBylORjst+SKaFo6KvvjchgjYs\n93ljZpEHKA9YlgLefmqdOp1o/dB6dd2/NxdtD2JZ7lJ0wwQ2W7mihpbltzam\n0nqKfjc7jF6jT4TbE1vdBdW32PU7R0xhNZUj/wcGNT0bzZjSniGz/5yrPD+K\nAkZrN3TBygBhAiIOzFZHEfek+Dv7PYyHgzWx3S5Vp4TtNIFF9LoGC4RiR94v\n0wDXYy4Tm5gHZSOtAVmCVd1pm05zYJWAJnOBIsvZj8mRrfH9+Hh5XUAPOJSV\nD2pUcp0P/cDi8KxMe0GGt4INZwX+n64poBtRth/YghwyqBI6mFzgaNv/7wSO\n4nGV\r\n=Tx47\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDx6sCgbrs48r/5/QuOBiReCkbeMShuKzPEGIHvcYPiBAIhANTiW9frA+nSY6OGzgOBqSmFiAGBDpdLqXJxGzQ8MgZQ"}]},"maintainers":[{"name":"nwoltman","email":"nwoltman@outlook.com"}],"_npmUser":{"name":"nwoltman","email":"nwoltman@outlook.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/router_0.1.1_1569906457558_0.6926732194701215"},"_hasShrinkwrap":false},"0.2.0":{"name":"@medley/router","version":"0.2.0","description":"A high-performance URL router","author":{"name":"Nathan Woltman","email":"nwoltman@outlook.com"},"license":"MIT","main":"Router.js","engines":{"node":">=8"},"repository":{"type":"git","url":"git+https://github.com/medleyjs/router.git"},"homepage":"https://github.com/medleyjs/router","bugs":{"url":"https://github.com/medleyjs/router/issues"},"keywords":["router","fast","performance","url"],"eslintIgnore":["coverage/"],"dependencies":{"object-treeify":"^1.1.20"},"devDependencies":{"@nwoltman/eslint-config":"~0.3.1","benchmark":"^2.1.4","coveralls":"^3.0.6","eslint":"^6.5.0","mocha":"^6.2.1","nyc":"^14.1.1"},"scripts":{"lint":"eslint .","test":"eslint . && nyc --reporter=html --reporter=text-summary mocha","coveralls":"nyc report --reporter=text-lcov | coveralls"},"gitHead":"714822d670aa264be3a952fc8a511453c3c6f034","_id":"@medley/router@0.2.0","_nodeVersion":"12.11.1","_npmVersion":"6.11.3","dist":{"integrity":"sha512-h3lNJtR1zpB/r8CqOHYoQEugVinUCF1UZbTb1uKxckH3P9DaWJCZNCOGroRCelCDUFDmfUT7NBhlIYe/RJ1Fkw==","shasum":"ac1e2d1146dabf139dbac685b8477cf3b981ad4e","tarball":"https://registry.npmjs.org/@medley/router/-/router-0.2.0.tgz","fileCount":4,"unpackedSize":17734,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdnpsICRA9TVsSAnZWagAAU/sQAIgegDSGSZdPxuLfUWym\nTQ9Mg3cL5vck+MZDH/SKn4Y+roqUmiw3YBEVh8wlWZHuUDBe2IqboEyBiYRD\nJfvZwXF4V9X0NhVKVr2aQUqmlbvJx7mCm3doGJw26maFb4jR6Wo94kHS7Udt\nNY+CsV0iLSW1TIVG+6n7fVRgPemVS3e4MJ8SHafV3XL5qvHhMJcWGfrFaM92\nNCGMUn+3/b6uXr8wWKMwSkHjS1TXdQdc2G4RhA3+nWnEo8DTUDl+EKGVk3Mu\nl0I6ncZ8Hkl7QxnLeJd+K8XfqxihL2fq6VHdCRSZohEtSxKnlscTttLnhAEv\nRdMn3LG8aXwi3QhVNkCt4zNklue9sEdB0Bh8bU5olpn3xLHDR2BQLgt8VK3q\n1+8i0GOyULP9hVqLGtZCp3VAq1kx0lEEyDhksDKg7uoWDomAlxSJoSbpVFqy\nRDFi0EuVzLZjzFDZNzVt22/ywpkNMdy0aKO4o5m59Zi316Sv3I04rx7ImyPF\nS2LoHVkRuUGMyi2Em0Q8mei2jzscq1uxO0rmyncYdvcbTqFGgcYZShVl5ZCy\n1PHbAuIarYPPaE/miim4uj0L3eF5i2Foc203JxWPysFoE0UUapk2bT98juab\nQPXQ5yhFi7JQUYVbOaWfpQT5AG0vDQWJQ6DQkRzjBpclz2pwAkopPlmroa0F\nd83h\r\n=ked/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCT9H07/V+01qDCQ6Ca/35pEOHN2uSoqDDG3eGhv53zgAIgYbRWV7pbhq6/jYGuz1sCAZr5Cv20GvtmvLVZWccGty8="}]},"maintainers":[{"name":"nwoltman","email":"nwoltman@outlook.com"}],"_npmUser":{"name":"nwoltman","email":"nwoltman@outlook.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/router_0.2.0_1570675463734_0.2832396474697658"},"_hasShrinkwrap":false},"0.2.1":{"name":"@medley/router","version":"0.2.1","description":"A high-performance URL router","author":{"name":"Nathan Woltman","email":"nwoltman@outlook.com"},"license":"MIT","main":"Router.js","engines":{"node":">=8"},"repository":{"type":"git","url":"git+https://github.com/medleyjs/router.git"},"homepage":"https://github.com/medleyjs/router","bugs":{"url":"https://github.com/medleyjs/router/issues"},"keywords":["router","fast","performance","url"],"eslintIgnore":["coverage/"],"dependencies":{"object-treeify":"^1.1.20"},"devDependencies":{"@nwoltman/eslint-config":"~0.3.1","benchmark":"^2.1.4","coveralls":"^3.0.6","eslint":"^6.5.0","mocha":"^6.2.1","nyc":"^14.1.1"},"scripts":{"lint":"eslint .","test":"eslint . && nyc --reporter=html --reporter=text-summary mocha","coveralls":"nyc report --reporter=text-lcov | coveralls"},"gitHead":"21ce6b509c533ec1c8a054ffe2becffa4dcb8655","_id":"@medley/router@0.2.1","_nodeVersion":"12.11.1","_npmVersion":"6.11.3","dist":{"integrity":"sha512-mdvS1spIxmZoUbTdYmWknHtwm72WwrGNoQCDd4RTvcXJ9G6XThxeC3g+cpOf6Fw6vIERHt50pYiJpsk5XTJQ5w==","shasum":"d8b8aad3fb1de710e9bd35e9e249545dc65945d0","tarball":"https://registry.npmjs.org/@medley/router/-/router-0.2.1.tgz","fileCount":4,"unpackedSize":17740,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdnqqFCRA9TVsSAnZWagAA9v4P/iEAu/+YdjQaJtZIsY8L\n+gPf6bpnfSfhjrSc38shelEtlETc7OqfK8zfWaC8qJRW0jGyjH5paeoK6b6h\nmop/zGQ2bZ1j3YxWyMGOt/rQQtbsIrEwkJpIlR2FW3zUSLUpX4z2/2bNnsgk\nYgjoFzyQ4agTeD0PjDXaHBJ8shNN0Kzdcl93wqYqzRW2DH4/xaTksB3yhnVN\n/DXDXHNyafUt/K3XTVHP0/Ymjgtut4k69afoiNuyFqNvV/07vvIRXQDPrKxo\nOiZjwuRA7zUSJyp5tcRVsZg5nj7OC9+G0GdFsOw7YLRxQlf40+zM5uCpjcGy\n1Ir/Mwx5v+0ydNBpfBtOBe4uYheBoWh4SRQ+qhF3wHbST7hLipw6bSfddIqT\nVbIKHOyjL9AQQdNUKerQSymNx+fbUsLxIrXYenjFWrIInxiX6EdI5LdcJbIt\nMie8YUS7ZiIyiKS1RW4E1zdszkOhHq9YztRv4GYhnRZSL19fDzRgNwn8SYpQ\ngvsBIp8jmzhU89zL8dVYM1NNLuckFV83SjD/qJvKb624MkqPjSOgyNj6F4Qn\n6AnD54xcJ7eBudDcQSgjIEWU/QX6ruM5RL8ZuHiAGaKI5g9qzKFOOJ2S0zoO\nDtL1VOVHO3v40tkgfZHu1/Ed0ijHKBxN3iwvl73kV/3Amjgy7BZ6VvLyhBgN\nuBYm\r\n=I3LK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDDta7W9nZn+hznY6j1PXol8KC8lQVtiCIB6DH/OaYa4wIgC1WsRhk7aa3k4RACW+XyfPHy1u2S+uFOvouy4gd2FG4="}]},"maintainers":[{"name":"nwoltman","email":"nwoltman@outlook.com"}],"_npmUser":{"name":"nwoltman","email":"nwoltman@outlook.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/router_0.2.1_1570679428954_0.8099236277113433"},"_hasShrinkwrap":false}},"time":{"created":"2019-09-30T03:22:07.811Z","0.1.0":"2019-09-30T03:22:08.033Z","modified":"2022-04-06T04:43:26.247Z","0.1.1":"2019-10-01T05:07:37.674Z","0.2.0":"2019-10-10T02:44:23.899Z","0.2.1":"2019-10-10T03:50:29.093Z"},"maintainers":[{"name":"nwoltman","email":"nwoltman@outlook.com"}],"description":"A high-performance URL router","homepage":"https://github.com/medleyjs/router","keywords":["router","fast","performance","url"],"repository":{"type":"git","url":"git+https://github.com/medleyjs/router.git"},"author":{"name":"Nathan Woltman","email":"nwoltman@outlook.com"},"bugs":{"url":"https://github.com/medleyjs/router/issues"},"license":"MIT","readme":"# @medley/router\n\n[![npm Version](https://img.shields.io/npm/v/@medley/router.svg)](https://www.npmjs.com/package/@medley/router)\n[![Build Status](https://travis-ci.org/medleyjs/router.svg?branch=master)](https://travis-ci.org/medleyjs/router)\n[![Coverage Status](https://coveralls.io/repos/github/medleyjs/router/badge.svg?branch=master)](https://coveralls.io/github/medleyjs/router?branch=master)\n[![dependencies Status](https://img.shields.io/david/medleyjs/router.svg)](https://david-dm.org/medleyjs/router)\n\nA high-performance URL router for JavaScript/Node.js.\n\n### Features\n\n+ Currently the fastest JavaScript router implementations out there ([see benchmarks](https://github.com/medleyjs/router-benchmark))\n+ Supports multiple routes with the same prefix as dynamic routes ([see here for details](#path-match-order))\n+ Only handles routing the URL, so it’s very flexible for building features on top of it\n  + e.g. This makes it easy to support `405 Method Not Allowed` responses\n\n## Installation\n\n```sh\nnpm install @medley/router\n# or\nyarn add @medley/router\n```\n\n## API\n\n### `new Router([options])`\n\n+ `options` (*object*) - Optional object that may have any of the following options:\n  + `storeFactory` (*function*) - Called when a new route is registered to create the route store.\n    + Default: `() => Object.create(null)`\n\nConstructs a new router instance.\n\n```js\nconst Router = require('@medley/router');\nconst router = new Router();\n```\n\nUse the `storeFactory` option to customize the route store object.\n\n```js\nconst Router = require('@medley/router');\n\nconst router = new Router({\n  storeFactory() {\n    return { handlers: new Map(), middlewares: [] };\n  }\n});\n\nconst store = router.register('/');\nconsole.log(store); // { handlers: Map {}, middlewares: [] }\n```\n\n### `router.register(path)`\n\n+ `path` (*string*) - The route path.\n+ Returns: *object* - The route store.\n\nRegisters a route and returns the route store object.<br>\nIf the route path has already been registered, the route store is simply returned.\n\n```js\nconst Router = require('@medley/router');\nconst router = new Router();\n\nconst store = router.register('/users/:id');\nconsole.log(store); // [Object: null prototype] {}\n```\n\nHTTP example:\n\n```js\nconst Router = require('@medley/router');\nconst router = new Router();\n\nfunction addRoute(method, path, handler) {\n  const store = router.register(path);\n  store[method] = handler;\n}\n\naddRoute('GET', '/', () => { /* ... */});\naddRoute('GET', '/users', () => { /* ... */});\naddRoute('POST', '/users', () => { /* ... */});\n```\n\n#### Path Formats\n\n##### 1. Static\n\nStatic routes match exactly the path provided.\n\n```\n/\n/about\n/api/login\n```\n\n##### 2. Parametric\n\nPath segments that begin with a `:` denote a parameter and will match anything\nup to the next `/` or to the end of the path.\n\n```\n/users/:userID\n/users/:userID/posts\n/users/:userID/posts/:postID\n```\n\nEverything after the `:` character will be the name of the parameter in the\nroute `params` object.\n\n```js\nrouter.register('/users/:userID');\n\nconst route = router.find('/users/100');\nconsole.log(route.params); // { userID: '100' }\n```\n\nIf multiple routes have a parameter in the same part of the route, the\nparameter names must be the same. For example, registering the following two\nroutes would be an error because the `:id` and `:userID` parameters conflict\nwith each other:\n\n```\n/users/:id\n/users/:userID/posts\n```\n\nParameters may start anywhere in the path. For example, the following are valid routes:\n\n```js\n'/api/v:version' // Matches '/api/v1'\n'/on-:event'     // Matches '/on-click'\n```\n\n##### 3. Wildcard\n\nRoutes that end with a `*` are wildcard routes. The `*` will match any\ncharacters in the rest of the path, including `/` characters or no characters.\n\nFor example, the following route:\n\n```\n/static/*\n```\n\nwill match all of these URLs:\n\n```\n/static/\n/static/favicon.ico\n/static/js/main.js\n/static/css/vendor/bootstrap.css\n```\n\nThe wildcard value will be set in the route `params` object with `'*'` as the key.\n\n```js\nrouter.register('/static/*');\n\nlet route = router.find('/static/favicon.ico');\nconsole.log(route.params); // { '*': 'favicon.ico' }\n\nroute = router.find('/static/');\nconsole.log(route.params); // { '*': '' }\n```\n\n### `router.find(url)`\n\n+ `url` (*string*) - The URL used to find a matching route.\n+ Returns: (*{store: object, params: object}* | *null*) - The route store and matching parameters, or `null` if the URL did not match any registered routes.\n\nFinds a route that matches the provided URL. Returns `null` if no route matches the URL.\n\n```js\nconst Router = require('@medley/router');\nconst router = new Router();\n\nfunction addRoute(method, path, handler) {\n  const store = router.register(path);\n  store[method] = handler;\n}\n\naddRoute('GET', '/', () => {});\naddRoute('GET', '/users', () => {});\naddRoute('POST', '/users', () => {});\naddRoute('GET', '/users/:id', () => {});\naddRoute('GET', '/static/*', () => {});\n\nrouter.find('/');\n// {\n//   store: { GET: [Function] },\n//   params: {}\n// }\n\nrouter.find('/users');\n// {\n//   store: { GET: [Function], POST: [Function] },\n//   params: {}\n// }\n\nrouter.find('/users/100');\n// {\n//   store: { GET: [Function] },\n//   params: { id: '100'}\n// }\n\nrouter.find('/static/js/common.js');\n// {\n//   store: { GET: [Function] },\n//   params: { '*': 'js/common.js' }\n// }\n\nrouter.find('/not-defined');\n// null\n```\n\n#### Path Match Order\n\nThis router allows different types of routes with the same prefix to overlap.\nOverlapping routes will match in the following order:\n\n1. Static\n2. Parametric\n3. Wildcard\n\nFor example, with the following routes defined:\n\n```\n/static/favicon.ico\n/static/:hash/webpack/*\n/static/*\n```\n\nincoming URLs will be matched like this:\n\n```js\n'/static/favicon.ico'\n// Matches '/static/favicon.ico'\n\n'/static/00a8b09d8ef/webpack/runtime.js'\n'/static/00a8b09d8ef/webpack/css/common.css'\n// Matches '/static/:hash/webpack/*'\n\n'/static/vendor/css/bootstrap.css'\n'/static/images/header.jpg'\n// Matches '/static/*'\n```\n","readmeFilename":"README.md"}