{"_id":"safe-routes","_rev":"26-216dc30823fc7fe7cca206df3704b122","name":"safe-routes","dist-tags":{"alpha":"2.0.0-alpha.1","latest":"2.0.2"},"versions":{"0.0.1-alpha.0":{"name":"safe-routes","version":"0.0.1-alpha.0","keywords":["remix","react-router","routes","typescript"],"author":{"name":"Wei Zhu"},"license":"MIT","_id":"safe-routes@0.0.1-alpha.0","maintainers":[{"name":"yesmeck","email":"yesmeck@gmail.com"}],"homepage":"https://github.com/yesmeck/safe-routes#readme","bugs":{"url":"https://github.com/yesmeck/safe-routes/issues"},"bin":{"safe-routes":"dist/cli.js"},"dist":{"shasum":"4af96d7aa8ca5cfb05cc2863891c928b6d81ebcf","tarball":"https://registry.npmjs.org/safe-routes/-/safe-routes-0.0.1-alpha.0.tgz","fileCount":17,"integrity":"sha512-UmpVZ+wwgTzzWkns0IqrdGtqg0v0MwJnioL8RGx3uQuxl3dypiH4Dp1y2dAqyCV3GvWCfcIpVjQfTN8tMQ5pMw==","signatures":[{"sig":"MEQCIAyEmMfPZ+S85CcYWrqvzwUSruKKihNPxIWZkYy/7j77AiAgp4Fuf2G4P2fC8Oy7hVZA1wmf+CcEGkR9yBb4Dqpwwg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":19475},"type":"module","_from":"file:safe-routes-0.0.1-alpha.0.tgz","exports":{"./vite":{"import":"./dist/vite.js","require":"./dist/vite..d.ts"}},"scripts":{"test":"vitest","build":"tsc","watch":"tsc --watch","prebuild":"rm -rf dist","semantic-release":"semantic-release"},"_npmUser":{"name":"yesmeck","email":"yesmeck@gmail.com"},"_resolved":"/private/var/folders/_1/hdvv7dmn46n6l59t67cl9sr40000gn/T/dd9fc29b8e9a8e2f67298a57c36948f6/safe-routes-0.0.1-alpha.0.tgz","_integrity":"sha512-UmpVZ+wwgTzzWkns0IqrdGtqg0v0MwJnioL8RGx3uQuxl3dypiH4Dp1y2dAqyCV3GvWCfcIpVjQfTN8tMQ5pMw==","repository":{"url":"git+https://github.com/yesmeck/safe-routes.git","type":"git"},"_npmVersion":"10.8.1","description":"Typesafe routing for React Router apps.","directories":{},"_nodeVersion":"20.16.0","dependencies":{"meow":"13.2.0","slash":"3","mkdirp":"^3.0.1","vite-node":"^2.1.5"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.11","vitest":"^2.1.5","typescript":"^5.7.2","@types/node":"^22.9.3","@types/mkdirp":"^2.0.0","semantic-release":"^24.2.0","@react-router/dev":"^7.0.1"},"_npmOperationalInternal":{"tmp":"tmp/safe-routes_0.0.1-alpha.0_1732385761648_0.7587503862845038","host":"s3://npm-registry-packages"}},"0.0.1-alpha.1":{"name":"safe-routes","version":"0.0.1-alpha.1","keywords":["remix","react-router","routes","typescript"],"author":{"name":"Wei Zhu"},"license":"MIT","_id":"safe-routes@0.0.1-alpha.1","maintainers":[{"name":"yesmeck","email":"yesmeck@gmail.com"}],"homepage":"https://github.com/yesmeck/safe-routes#readme","bugs":{"url":"https://github.com/yesmeck/safe-routes/issues"},"bin":{"safe-routes":"dist/cli.js"},"dist":{"shasum":"6c4979b260f3a9278b2c07ca8767c44778e9cf2f","tarball":"https://registry.npmjs.org/safe-routes/-/safe-routes-0.0.1-alpha.1.tgz","fileCount":21,"integrity":"sha512-/TUCRWuCH8BgrH0gvkN0GZ1+GvNf89HItfS6dkBca8yHt7oh69iNKLg4q3sz2mCMr1SQa+7ug3p3Z6jX9DqANA==","signatures":[{"sig":"MEUCIQDHQdld/huh/2sCzdtlmJd0PkxFYK27XTUnrLNPidnfCQIgWk9NyQMdQ5ecJwHCg5e1xYNX1yDblE916Np8+Dhmm9Q=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":19034},"type":"module","_from":"file:safe-routes-0.0.1-alpha.1.tgz","exports":{".":{"import":"./dist/index.js","require":"./dist/index.d.ts"},"./vite":{"import":"./dist/vite.js","require":"./dist/vite.d.ts"}},"scripts":{"test":"vitest","build":"tsc","watch":"tsc --watch","prebuild":"rm -rf dist","semantic-release":"semantic-release"},"_npmUser":{"name":"yesmeck","email":"yesmeck@gmail.com"},"_resolved":"/private/var/folders/_1/hdvv7dmn46n6l59t67cl9sr40000gn/T/0a05fc6c5ac3407ea2e6963daea2561a/safe-routes-0.0.1-alpha.1.tgz","_integrity":"sha512-/TUCRWuCH8BgrH0gvkN0GZ1+GvNf89HItfS6dkBca8yHt7oh69iNKLg4q3sz2mCMr1SQa+7ug3p3Z6jX9DqANA==","repository":{"url":"git+https://github.com/yesmeck/safe-routes.git","type":"git"},"_npmVersion":"10.8.1","description":"Typesafe routing for React Router apps.","directories":{},"_nodeVersion":"20.16.0","dependencies":{"meow":"13.2.0","slash":"3","mkdirp":"^3.0.1","vite-node":"^2.1.5","@rollup/plugin-replace":"^6.0.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.11","vitest":"^2.1.5","typescript":"^5.7.2","@types/node":"^22.9.3","@types/mkdirp":"^2.0.0","semantic-release":"^24.2.0","@react-router/dev":"^7.0.1"},"_npmOperationalInternal":{"tmp":"tmp/safe-routes_0.0.1-alpha.1_1732443445120_0.13479331144847828","host":"s3://npm-registry-packages"}},"0.0.1-alpha.2":{"name":"safe-routes","version":"0.0.1-alpha.2","keywords":["remix","react-router","routes","typescript"],"author":{"name":"Wei Zhu"},"license":"MIT","_id":"safe-routes@0.0.1-alpha.2","maintainers":[{"name":"yesmeck","email":"yesmeck@gmail.com"}],"homepage":"https://github.com/yesmeck/safe-routes#readme","bugs":{"url":"https://github.com/yesmeck/safe-routes/issues"},"bin":{"safe-routes":"dist/cli.js"},"dist":{"shasum":"2978c0bb61b6dbe77df13325d9c7eac4b858a2b8","tarball":"https://registry.npmjs.org/safe-routes/-/safe-routes-0.0.1-alpha.2.tgz","fileCount":21,"integrity":"sha512-qxqv0exKVl4XJzyZhNmKPEp66IuDdwR0XnB9YFCIUma+WLZ8tVlp0BBS/itioWjwWFtsg68P2ntC7pgUznKiyw==","signatures":[{"sig":"MEUCIDSTgdUdhk4nSbV3CxHxDVO7lzO6EGXoEOji8vI9d2V+AiEA1kG98Cp+4JJsms6qwZfWgusRlb+SzhZ5NQTKmyt2FSM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":19034},"type":"module","_from":"file:safe-routes-0.0.1-alpha.2.tgz","exports":{".":{"import":"./dist/index.js","require":"./dist/index.d.ts"},"./vite":{"import":"./dist/vite.js","require":"./dist/vite.d.ts"}},"scripts":{"test":"vitest","build":"tsc","watch":"tsc --watch","prebuild":"rm -rf dist","semantic-release":"semantic-release"},"_npmUser":{"name":"yesmeck","email":"yesmeck@gmail.com"},"_resolved":"/private/var/folders/_1/hdvv7dmn46n6l59t67cl9sr40000gn/T/43358f3b3caef155eee41e3b91799a40/safe-routes-0.0.1-alpha.2.tgz","_integrity":"sha512-qxqv0exKVl4XJzyZhNmKPEp66IuDdwR0XnB9YFCIUma+WLZ8tVlp0BBS/itioWjwWFtsg68P2ntC7pgUznKiyw==","repository":{"url":"git+https://github.com/yesmeck/safe-routes.git","type":"git"},"_npmVersion":"10.8.1","description":"Typesafe routing for React Router apps.","directories":{},"_nodeVersion":"20.16.0","dependencies":{"meow":"13.2.0","slash":"3","mkdirp":"^3.0.1","vite-node":"^2.1.5","@rollup/plugin-replace":"^6.0.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.11","vitest":"^2.1.5","typescript":"^5.7.2","@types/node":"^22.9.3","@types/mkdirp":"^2.0.0","semantic-release":"^24.2.0","@react-router/dev":"^7.0.1"},"_npmOperationalInternal":{"tmp":"tmp/safe-routes_0.0.1-alpha.2_1732713864438_0.7523541745803433","host":"s3://npm-registry-packages"}},"1.0.0":{"name":"safe-routes","version":"1.0.0","keywords":["remix","react-router","routes","typescript"],"author":{"name":"Wei Zhu"},"license":"MIT","_id":"safe-routes@1.0.0","maintainers":[{"name":"yesmeck","email":"yesmeck@gmail.com"}],"homepage":"https://github.com/yesmeck/safe-routes#readme","bugs":{"url":"https://github.com/yesmeck/safe-routes/issues"},"bin":{"safe-routes":"dist/cli.js"},"dist":{"shasum":"ca076a60f8f8f562e1dc49509f893cd446bc0b3b","tarball":"https://registry.npmjs.org/safe-routes/-/safe-routes-1.0.0.tgz","fileCount":21,"integrity":"sha512-XI0bQTtGebXQ9GhG7djKUXXqhVA/0jw6Ed/XNGy17KnTCZBn8bcVc38A1fDDj/fvn8G+IZJHzatdx/xY8Lxzpg==","signatures":[{"sig":"MEYCIQDn4lavyVE/tz8ZuHfoJKqWozrKhmoo45to7qzvR8LnDgIhAOFe5cpLbhcyh6vX8ZzaWiyaDbfdphVPWbwhGzT9TOge","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":19308},"type":"module","_from":"file:safe-routes-1.0.0.tgz","exports":{".":{"import":"./dist/index.js","require":"./dist/index.d.ts"},"./vite":{"import":"./dist/vite.js","require":"./dist/vite.d.ts"}},"scripts":{"test":"vitest","build":"tsc","watch":"tsc --watch","prebuild":"rm -rf dist"},"_npmUser":{"name":"yesmeck","email":"yesmeck@gmail.com"},"_resolved":"/private/var/folders/_1/hdvv7dmn46n6l59t67cl9sr40000gn/T/2446bd06f159b03df3004b11e605dd17/safe-routes-1.0.0.tgz","_integrity":"sha512-XI0bQTtGebXQ9GhG7djKUXXqhVA/0jw6Ed/XNGy17KnTCZBn8bcVc38A1fDDj/fvn8G+IZJHzatdx/xY8Lxzpg==","repository":{"url":"git+https://github.com/yesmeck/safe-routes.git","type":"git"},"_npmVersion":"10.8.1","description":"Typesafe routing for React Router apps.","directories":{},"_nodeVersion":"20.16.0","dependencies":{"meow":"13.2.0","slash":"3","mkdirp":"^3.0.1","vite-node":"^2.1.5","@rollup/plugin-replace":"^6.0.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.11","vitest":"^2.1.5","typescript":"^5.7.2","@types/node":"^22.9.3","@types/mkdirp":"^2.0.0","@react-router/dev":"^7.0.1"},"_npmOperationalInternal":{"tmp":"tmp/safe-routes_1.0.0_1732726234146_0.9603256193284078","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"safe-routes","version":"1.0.1","keywords":["remix","react-router","routes","typescript"],"author":{"name":"Wei Zhu"},"license":"MIT","_id":"safe-routes@1.0.1","maintainers":[{"name":"yesmeck","email":"yesmeck@gmail.com"}],"homepage":"https://github.com/yesmeck/safe-routes#readme","bugs":{"url":"https://github.com/yesmeck/safe-routes/issues"},"bin":{"safe-routes":"dist/cli.js"},"dist":{"shasum":"dc4d2dbf78802c2d0bc7c64e17de4d574abd1b73","tarball":"https://registry.npmjs.org/safe-routes/-/safe-routes-1.0.1.tgz","fileCount":21,"integrity":"sha512-Mn0ccrs5U5a3XEPgTyp1vjT5gQSvhwnGoBeXuhV72HekK4tPo73cjSPbGH76TDXMIkfFmTEQprGeOatX+ieXqw==","signatures":[{"sig":"MEYCIQCBvGi04H/eZ2RmxtMJgUB900tBlF9BbzlNG6eaLIOmXgIhALFQhr2fmT021yrycwDOvMkbXR5YyVqlC8Ou2VhHoejT","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":19655},"type":"module","exports":{".":{"import":"./dist/index.js","require":"./dist/index.d.ts"},"./vite":{"import":"./dist/vite.js","require":"./dist/vite.d.ts"}},"gitHead":"c40ca5421e1881cc247e37f31a9e0647c5091cf3","scripts":{"test":"vitest","build":"tsc","watch":"tsc --watch","prepack":"npm run build","prebuild":"rm -rf dist"},"_npmUser":{"name":"yesmeck","email":"yesmeck@gmail.com"},"repository":{"url":"git+https://github.com/yesmeck/safe-routes.git","type":"git"},"_npmVersion":"10.9.2","description":"Typesafe routing for React Router apps.","directories":{},"_nodeVersion":"22.11.0","dependencies":{"meow":"13.2.0","slash":"3","mkdirp":"^3.0.1","vite-node":"^2.1.5","@rollup/plugin-replace":"^6.0.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.11.0+sha512.0a203ffaed5a3f63242cd064c8fb5892366c103e328079318f78062f24ea8c9d50bc6a47aa3567cabefd824d170e78fa2745ed1f16b132e16436146b7688f19b","devDependencies":{"vite":"^5.4.11","vitest":"^2.1.5","typescript":"^5.7.2","@types/node":"^22.9.3","@types/mkdirp":"^2.0.0","@react-router/dev":"^7.0.1"},"_npmOperationalInternal":{"tmp":"tmp/safe-routes_1.0.1_1733938896675_0.94735157259826","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"safe-routes","version":"1.0.2","keywords":["remix","react-router","routes","typescript"],"author":{"name":"Wei Zhu"},"license":"MIT","_id":"safe-routes@1.0.2","maintainers":[{"name":"yesmeck","email":"yesmeck@gmail.com"}],"homepage":"https://github.com/yesmeck/safe-routes#readme","bugs":{"url":"https://github.com/yesmeck/safe-routes/issues"},"bin":{"safe-routes":"dist/cli.js"},"dist":{"shasum":"713d6d23eec28b13fffb574793d771a2b9fc3250","tarball":"https://registry.npmjs.org/safe-routes/-/safe-routes-1.0.2.tgz","fileCount":21,"integrity":"sha512-O8dr9dXEpLql5+qKyJZWP9ZOsBccr5lZzBbhfbzRvZpvehWlWSdAP228zgbVV+Tl3g3/zmYQX2Budyivbnc0Cw==","signatures":[{"sig":"MEYCIQCBIeoo6XThco/0umS+2AFcYKobOu5Va0q1LAG5yYaocAIhAIgIbpDFcZZj92zjbLHPBRmF3wOZAyyYAt0eoX4DlsNr","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":19785},"type":"module","exports":{".":{"import":"./dist/index.js","require":"./dist/index.d.ts"},"./vite":{"import":"./dist/vite.js","require":"./dist/vite.d.ts"}},"gitHead":"ab16639347a8f9825f0b5c5ecd0d07a70f07cb69","scripts":{"test":"vitest","build":"tsc","watch":"tsc --watch","prepack":"npm run build","prebuild":"rm -rf dist"},"_npmUser":{"name":"yesmeck","email":"yesmeck@gmail.com"},"repository":{"url":"git+https://github.com/yesmeck/safe-routes.git","type":"git"},"_npmVersion":"10.9.2","description":"Typesafe routing for React Router apps.","directories":{},"_nodeVersion":"22.11.0","dependencies":{"meow":"13.2.0","slash":"3","mkdirp":"^3.0.1","vite-node":"^2.1.5","@rollup/plugin-replace":"^6.0.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.11.0+sha512.0a203ffaed5a3f63242cd064c8fb5892366c103e328079318f78062f24ea8c9d50bc6a47aa3567cabefd824d170e78fa2745ed1f16b132e16436146b7688f19b","devDependencies":{"vite":"^5.4.11","vitest":"^2.1.5","typescript":"^5.7.2","@types/node":"^22.9.3","@types/mkdirp":"^2.0.0","@react-router/dev":"^7.0.1"},"_npmOperationalInternal":{"tmp":"tmp/safe-routes_1.0.2_1733941768539_0.3321641876400869","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"safe-routes","version":"1.0.3","keywords":["remix","react-router","routes","typescript"],"author":{"name":"Wei Zhu"},"license":"MIT","_id":"safe-routes@1.0.3","maintainers":[{"name":"yesmeck","email":"yesmeck@gmail.com"}],"homepage":"https://github.com/yesmeck/safe-routes#readme","bugs":{"url":"https://github.com/yesmeck/safe-routes/issues"},"bin":{"safe-routes":"dist/cli.js"},"dist":{"shasum":"83ea47e2b1ba6c82c1f6121e3f266585191f0a12","tarball":"https://registry.npmjs.org/safe-routes/-/safe-routes-1.0.3.tgz","fileCount":21,"integrity":"sha512-OYB5CRVn5z5EEOP4R3JRcD6qVYLODkZQT1qT3dJnOA09GAvL2lRJ2YYcvil1539I5+WNg/lvFFHekMU3Me8Xqw==","signatures":[{"sig":"MEUCIQCCyeg9S4pLcOP5zNj1pyYDBzAv4zv5N0pnM9I9JuyO9AIgJqaT3uEAgBHCLfSkDot4nhkedB+wa2uBljqZUodGNeg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":19806},"type":"module","exports":{".":{"import":"./dist/index.js","require":"./dist/index.d.ts"},"./vite":{"import":"./dist/vite.js","require":"./dist/vite.d.ts"}},"gitHead":"5b458293631db32f9cd6f44da63d92aa99949986","scripts":{"test":"vitest","build":"tsc","watch":"tsc --watch","prepack":"npm run build","prebuild":"rm -rf dist"},"_npmUser":{"name":"yesmeck","email":"yesmeck@gmail.com"},"repository":{"url":"git+https://github.com/yesmeck/safe-routes.git","type":"git"},"_npmVersion":"10.9.2","description":"Typesafe routing for React Router apps.","directories":{},"_nodeVersion":"22.12.0","dependencies":{"meow":"13.2.0","slash":"3","mkdirp":"^3.0.1","vite-node":"^2.1.5","@rollup/plugin-replace":"^6.0.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.11.0+sha512.0a203ffaed5a3f63242cd064c8fb5892366c103e328079318f78062f24ea8c9d50bc6a47aa3567cabefd824d170e78fa2745ed1f16b132e16436146b7688f19b","devDependencies":{"vite":"^5.4.11","vitest":"^2.1.5","typescript":"^5.7.2","@types/node":"^22.9.3","@types/mkdirp":"^2.0.0","@react-router/dev":"^7.0.1"},"_npmOperationalInternal":{"tmp":"tmp/safe-routes_1.0.3_1735964163295_0.9949882477784227","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"safe-routes","version":"1.0.4","keywords":["remix","react-router","routes","typescript"],"author":{"name":"Wei Zhu"},"license":"MIT","_id":"safe-routes@1.0.4","maintainers":[{"name":"yesmeck","email":"yesmeck@gmail.com"}],"homepage":"https://github.com/yesmeck/safe-routes#readme","bugs":{"url":"https://github.com/yesmeck/safe-routes/issues"},"bin":{"safe-routes":"dist/cli.js"},"dist":{"shasum":"984f245edbf148e915eac83627ca06ea39f2fbde","tarball":"https://registry.npmjs.org/safe-routes/-/safe-routes-1.0.4.tgz","fileCount":21,"integrity":"sha512-JKmXlEr/vW2B8ExrIy4Jc0Jhv2Yqf9a0utM6ZUishBu2mWnfUJH6fACEcHWn+qTsNRkQLJNCScMXyxH8t1V6Fg==","signatures":[{"sig":"MEYCIQD1QodHwJ/MJZWCZc3vsCvbk9R4vwI6bNze4BgALoKqiQIhAMsnpPPyIZHOH4eEMxP/CHTXd+AqKFWiyBc9HJyI635d","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19561},"type":"module","exports":{".":{"import":"./dist/index.js","require":"./dist/index.d.ts"},"./vite":{"import":"./dist/vite.js","require":"./dist/vite.d.ts"}},"gitHead":"6276d42d9ade0013630b595f0379be4081f53fe2","scripts":{"test":"vitest","build":"tsc","watch":"tsc --watch","prepack":"npm run build","prebuild":"rm -rf dist"},"_npmUser":{"name":"yesmeck","email":"yesmeck@gmail.com"},"repository":{"url":"git+https://github.com/yesmeck/safe-routes.git","type":"git"},"_npmVersion":"10.9.2","description":"Typesafe routing for React Router apps.","directories":{},"_nodeVersion":"22.13.1","dependencies":{"meow":"13.2.0","slash":"3","mkdirp":"^3.0.1","vite-node":"^2.1.5","@rollup/plugin-replace":"^6.0.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.11.0+sha512.0a203ffaed5a3f63242cd064c8fb5892366c103e328079318f78062f24ea8c9d50bc6a47aa3567cabefd824d170e78fa2745ed1f16b132e16436146b7688f19b","devDependencies":{"vite":"^5.4.11","vitest":"^2.1.5","typescript":"^5.7.2","@types/node":"^22.9.3","@types/mkdirp":"^2.0.0","@react-router/dev":"^7.0.1"},"_npmOperationalInternal":{"tmp":"tmp/safe-routes_1.0.4_1738393299499_0.13353615730127033","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"safe-routes","version":"1.0.5","keywords":["remix","react-router","routes","typescript"],"author":{"name":"Wei Zhu"},"license":"MIT","_id":"safe-routes@1.0.5","maintainers":[{"name":"yesmeck","email":"yesmeck@gmail.com"}],"homepage":"https://github.com/yesmeck/safe-routes#readme","bugs":{"url":"https://github.com/yesmeck/safe-routes/issues"},"bin":{"safe-routes":"dist/cli.js"},"dist":{"shasum":"b7b83ea79edf13a574c9924309ac7082ccfa7f61","tarball":"https://registry.npmjs.org/safe-routes/-/safe-routes-1.0.5.tgz","fileCount":21,"integrity":"sha512-Ox7qud2R9+LnUPlWzwBw0YesY8hNmQ4vFcwDe+AoxlWJyxvj4KqIP8tq5DLCqAx1Qe2faA6rbvsRmWT/Zf2QFg==","signatures":[{"sig":"MEUCIEQdGoBYx+lsh6F5VvZeihJV67n5c3lygD0gojn3UbEXAiEApx+oppMspXF3b+kClBp/3DSHMZA+gJC3BRX55j92zg4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19560},"type":"module","exports":{".":{"import":"./dist/index.js","require":"./dist/index.d.ts"},"./vite":{"import":"./dist/vite.js","require":"./dist/vite.d.ts"}},"gitHead":"91514332b790bf090d1e32bb338620eef481cf54","scripts":{"test":"vitest","build":"tsc","watch":"tsc --watch","prepack":"npm run build","prebuild":"rm -rf dist"},"_npmUser":{"name":"yesmeck","email":"yesmeck@gmail.com"},"repository":{"url":"git+https://github.com/yesmeck/safe-routes.git","type":"git"},"_npmVersion":"10.9.2","description":"Typesafe routing for React Router apps.","directories":{},"_nodeVersion":"22.13.1","dependencies":{"meow":"13.2.0","slash":"3","mkdirp":"^3.0.1","vite-node":"^3.0.6","@rollup/plugin-replace":"^6.0.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.12.3+sha512.cce0f9de9c5a7c95bef944169cc5dfe8741abfb145078c0d508b868056848a87c81e626246cb60967cbd7fd29a6c062ef73ff840d96b3c86c40ac92cf4a813ee","devDependencies":{"vite":"^6.1.1","vitest":"^3.0.6","typescript":"^5.7.2","@types/node":"^22.9.3","@types/mkdirp":"^2.0.0","@react-router/dev":"^7.0.1"},"_npmOperationalInternal":{"tmp":"tmp/safe-routes_1.0.5_1740203411617_0.019736059609041012","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"safe-routes","version":"1.0.6","keywords":["remix","react-router","routes","typescript"],"author":{"name":"Wei Zhu"},"license":"MIT","_id":"safe-routes@1.0.6","maintainers":[{"name":"yesmeck","email":"yesmeck@gmail.com"}],"homepage":"https://github.com/yesmeck/safe-routes#readme","bugs":{"url":"https://github.com/yesmeck/safe-routes/issues"},"bin":{"safe-routes":"dist/cli.js"},"dist":{"shasum":"580a392b384c388a182d2d5a5c33a50aef1f0cb6","tarball":"https://registry.npmjs.org/safe-routes/-/safe-routes-1.0.6.tgz","fileCount":21,"integrity":"sha512-XU6BMxuKHXj4FQ4efHtQluv2t/WkVa4phPGOdD03Q7yFemUFCx3A+hEYJdUjLprZ5zEIEEIfMxcRWYHxp3Ir9A==","signatures":[{"sig":"MEYCIQClRpwdwrAdCapZ0R6jyYHls4dd5oHdpJb96ggglro1rwIhAO8AHoCkF0v6u1tm3awtCu4qE0wFJWVm6Tm5X/T0idwO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19538},"type":"module","exports":{".":{"import":"./dist/index.js","require":"./dist/index.d.ts"},"./vite":{"import":"./dist/vite.js","require":"./dist/vite.d.ts"}},"gitHead":"35488d4267c9a244853728b8009dab73d6709c5f","scripts":{"test":"vitest","build":"tsc","watch":"tsc --watch","prepack":"npm run build","prebuild":"rm -rf dist"},"_npmUser":{"name":"yesmeck","email":"yesmeck@gmail.com"},"repository":{"url":"git+https://github.com/yesmeck/safe-routes.git","type":"git"},"_npmVersion":"10.9.2","description":"Typesafe routing for React Router apps.","directories":{},"_nodeVersion":"22.13.1","dependencies":{"slash":"3","mkdirp":"^3.0.1","vite-node":"^3.0.6","@rollup/plugin-replace":"^6.0.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.12.3+sha512.cce0f9de9c5a7c95bef944169cc5dfe8741abfb145078c0d508b868056848a87c81e626246cb60967cbd7fd29a6c062ef73ff840d96b3c86c40ac92cf4a813ee","devDependencies":{"vite":"^6.1.1","vitest":"^3.0.6","typescript":"^5.7.2","@types/node":"^22.9.3","@types/mkdirp":"^2.0.0","@react-router/dev":"^7.0.1"},"_npmOperationalInternal":{"tmp":"tmp/safe-routes_1.0.6_1740203767858_0.10242534513863388","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"safe-routes","version":"1.0.7","keywords":["remix","react-router","routes","typescript"],"author":{"name":"Wei Zhu"},"license":"MIT","_id":"safe-routes@1.0.7","maintainers":[{"name":"yesmeck","email":"yesmeck@gmail.com"}],"homepage":"https://github.com/yesmeck/safe-routes#readme","bugs":{"url":"https://github.com/yesmeck/safe-routes/issues"},"bin":{"safe-routes":"dist/cli.js"},"dist":{"shasum":"76d871b5447a872e0e9a111980d2cf9f1bca0a99","tarball":"https://registry.npmjs.org/safe-routes/-/safe-routes-1.0.7.tgz","fileCount":21,"integrity":"sha512-18Q5bQcM7oeAgfyoqaHw1KRxRR1OLXO1Yo0SS00aS5Fid7b4mcRkyqKIp972dTw2GwMeje5pGRgB9swrhrZR8Q==","signatures":[{"sig":"MEYCIQDdKM9Rie2LJdhd4XwKk7LscMdXfkQ6chY3+9B0Eo7dcgIhAJCqO23PKm2YAUqTrgSeXAQdPJs6OLQkuHmbYZVsR5tq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19520},"type":"module","exports":{".":{"import":"./dist/index.js","require":"./dist/index.d.ts"},"./vite":{"import":"./dist/vite.js","require":"./dist/vite.d.ts"}},"gitHead":"329aeecd795c05e7cc8a1041c6a8523e252ff43a","scripts":{"test":"vitest","build":"tsc","watch":"tsc --watch","prepack":"npm run build","prebuild":"rm -rf dist"},"_npmUser":{"name":"yesmeck","email":"yesmeck@gmail.com"},"repository":{"url":"git+https://github.com/yesmeck/safe-routes.git","type":"git"},"_npmVersion":"10.9.2","description":"Typesafe routing for React Router apps.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"slash":"3","mkdirp":"^3.0.1","vite-node":"^3.0.6","@rollup/plugin-replace":"^6.0.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.12.3+sha512.cce0f9de9c5a7c95bef944169cc5dfe8741abfb145078c0d508b868056848a87c81e626246cb60967cbd7fd29a6c062ef73ff840d96b3c86c40ac92cf4a813ee","devDependencies":{"vite":"^6.1.1","vitest":"^3.0.6","typescript":"^5.7.2","@types/node":"^22.9.3","@types/mkdirp":"^2.0.0","@react-router/dev":"^7.0.1"},"_npmOperationalInternal":{"tmp":"tmp/safe-routes_1.0.7_1740655339500_0.6776175775239692","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"safe-routes","version":"1.0.8","keywords":["remix","react-router","routes","typescript"],"author":{"name":"Wei Zhu"},"license":"MIT","_id":"safe-routes@1.0.8","maintainers":[{"name":"yesmeck","email":"yesmeck@gmail.com"}],"homepage":"https://github.com/yesmeck/safe-routes#readme","bugs":{"url":"https://github.com/yesmeck/safe-routes/issues"},"bin":{"safe-routes":"dist/cli.js"},"dist":{"shasum":"94af04e9a66d018da405f36560104b7ea8bc239b","tarball":"https://registry.npmjs.org/safe-routes/-/safe-routes-1.0.8.tgz","fileCount":21,"integrity":"sha512-a6H5cN4D9r3PbW9vPmtaNx77eEPNLw7oCjWWvY1vvB7hN4cxOXiqPF4tGs7AfzhDRzGqMmdWdz3R+IfbJY+vag==","signatures":[{"sig":"MEUCIQDuViBBpZgWinTO85n51ALEJiR4xORQa5l/J2IsQqsUbgIgKGBSUiU5l+93SUMBmb89wL9YAmkZDvzUwFB9QwtjZMk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19482},"type":"module","exports":{".":{"import":"./dist/index.js","require":"./dist/index.d.ts"},"./vite":{"import":"./dist/vite.js","require":"./dist/vite.d.ts"}},"gitHead":"4abc3fe576780038c78982eb89043b629036dda2","scripts":{"test":"vitest","build":"tsc","watch":"tsc --watch","prepack":"npm run build","prebuild":"rm -rf dist"},"_npmUser":{"name":"yesmeck","email":"yesmeck@gmail.com"},"repository":{"url":"git+https://github.com/yesmeck/safe-routes.git","type":"git"},"_npmVersion":"10.9.2","description":"Typesafe routing for React Router apps.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"slash":"3","mkdirp":"^3.0.1","vite-node":"^3.0.6","@rollup/plugin-replace":"^6.0.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.12.3+sha512.cce0f9de9c5a7c95bef944169cc5dfe8741abfb145078c0d508b868056848a87c81e626246cb60967cbd7fd29a6c062ef73ff840d96b3c86c40ac92cf4a813ee","devDependencies":{"vite":"^6.1.1","vitest":"^3.0.6","typescript":"^5.7.2","@types/node":"^22.9.3","@types/mkdirp":"^2.0.0","@react-router/dev":"^7.0.1"},"_npmOperationalInternal":{"tmp":"tmp/safe-routes_1.0.8_1740660853674_0.383695197256571","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"safe-routes","version":"1.0.9","keywords":["remix","react-router","routes","typescript"],"author":{"name":"Wei Zhu"},"license":"MIT","_id":"safe-routes@1.0.9","maintainers":[{"name":"yesmeck","email":"yesmeck@gmail.com"}],"homepage":"https://github.com/yesmeck/safe-routes#readme","bugs":{"url":"https://github.com/yesmeck/safe-routes/issues"},"bin":{"safe-routes":"dist/cli.js"},"dist":{"shasum":"27e849345edecf0082ef4c0790aad04ac15018ce","tarball":"https://registry.npmjs.org/safe-routes/-/safe-routes-1.0.9.tgz","fileCount":21,"integrity":"sha512-h+7CO4nfUM1v2fDAriYGdzTroZe9JOs8XGARB9ULSIX/PN42G6Fw7IMUFjuiw/iiZGHKZtRJ8jtFOnd7b4xPRg==","signatures":[{"sig":"MEQCIBcTSFOeaugqYTd8FxLNs1Ev3h/6YtF9bglCxFLtAfuRAiAoA5JrI/YxfgQfzJ8trKEkryOZC64JPcHWzCgRk6o7+A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19865},"type":"module","exports":{".":{"import":"./dist/index.js","require":"./dist/index.d.ts"},"./vite":{"import":"./dist/vite.js","require":"./dist/vite.d.ts"}},"gitHead":"61532635bfe920593b93b8edafd211a26bdb32c9","scripts":{"test":"vitest","build":"tsc","watch":"tsc --watch","prepack":"npm run build","prebuild":"rm -rf dist"},"_npmUser":{"name":"yesmeck","email":"yesmeck@gmail.com"},"repository":{"url":"git+https://github.com/yesmeck/safe-routes.git","type":"git"},"_npmVersion":"10.9.2","description":"Typesafe routing for React Router apps.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"slash":"3","mkdirp":"^3.0.1","vite-node":"^3.0.6","@rollup/plugin-replace":"^6.0.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.12.3+sha512.cce0f9de9c5a7c95bef944169cc5dfe8741abfb145078c0d508b868056848a87c81e626246cb60967cbd7fd29a6c062ef73ff840d96b3c86c40ac92cf4a813ee","devDependencies":{"vite":"^6.1.1","vitest":"^3.0.6","typescript":"^5.7.2","@types/node":"^22.9.3","@types/mkdirp":"^2.0.0","@react-router/dev":"^7.0.1"},"_npmOperationalInternal":{"tmp":"tmp/safe-routes_1.0.9_1740665953306_0.033349600782811795","host":"s3://npm-registry-packages-npm-production"}},"1.0.10":{"name":"safe-routes","version":"1.0.10","keywords":["remix","react-router","routes","typescript"],"author":{"name":"Wei Zhu"},"license":"MIT","_id":"safe-routes@1.0.10","maintainers":[{"name":"yesmeck","email":"yesmeck@gmail.com"}],"homepage":"https://github.com/yesmeck/safe-routes#readme","bugs":{"url":"https://github.com/yesmeck/safe-routes/issues"},"bin":{"safe-routes":"dist/cli.js"},"dist":{"shasum":"63a50975a8f5464ace94671356be1aa9c87c8a10","tarball":"https://registry.npmjs.org/safe-routes/-/safe-routes-1.0.10.tgz","fileCount":21,"integrity":"sha512-Xmr0RjjBEiRtECbeiSZ1O76T0OjzLKy6aVkm9s5re6ly+6Zodx1RPBsikiVLTJ0ioLNc4uCk+iFY9jUBg63yng==","signatures":[{"sig":"MEQCIBm3K+rI5frKwFozPGD3yyLbHSPiS+le2ijfgjh8/cxIAiAR465lk+PdKZI+IXoeLcf4hsdclnbjtwiNZgxIDoeU3w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20164},"type":"module","exports":{".":{"import":"./dist/index.js","require":"./dist/index.d.ts"},"./vite":{"import":"./dist/vite.js","require":"./dist/vite.d.ts"}},"gitHead":"6732df0ac62489bc982bf8bdee8529fba9c4a83c","scripts":{"test":"vitest","build":"tsc","watch":"tsc --watch","prepack":"npm run build","prebuild":"rm -rf dist"},"_npmUser":{"name":"yesmeck","email":"yesmeck@gmail.com"},"repository":{"url":"git+https://github.com/yesmeck/safe-routes.git","type":"git"},"_npmVersion":"10.9.2","description":"Typesafe routing for React Router apps.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"slash":"3","mkdirp":"^3.0.1","vite-node":"^3.0.6","@rollup/plugin-replace":"^6.0.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.12.3+sha512.cce0f9de9c5a7c95bef944169cc5dfe8741abfb145078c0d508b868056848a87c81e626246cb60967cbd7fd29a6c062ef73ff840d96b3c86c40ac92cf4a813ee","devDependencies":{"vite":"^6.1.1","vitest":"^3.0.6","typescript":"^5.7.2","@types/node":"^22.9.3","@types/mkdirp":"^2.0.0","@react-router/dev":"^7.0.1"},"_npmOperationalInternal":{"tmp":"tmp/safe-routes_1.0.10_1741504075445_0.2544075194737294","host":"s3://npm-registry-packages-npm-production"}},"1.0.11":{"name":"safe-routes","version":"1.0.11","keywords":["remix","react-router","routes","typescript"],"author":{"name":"Wei Zhu"},"license":"MIT","_id":"safe-routes@1.0.11","maintainers":[{"name":"yesmeck","email":"yesmeck@gmail.com"}],"homepage":"https://github.com/yesmeck/safe-routes#readme","bugs":{"url":"https://github.com/yesmeck/safe-routes/issues"},"bin":{"safe-routes":"dist/cli.js"},"dist":{"shasum":"c64350fb5754d73d56231bb1a7e507c26d225e8c","tarball":"https://registry.npmjs.org/safe-routes/-/safe-routes-1.0.11.tgz","fileCount":21,"integrity":"sha512-yss1DV13K4RAi3Rmr4RGl/+XJFcwowks5wMOzQf48ZTGmRAi2FVc7qKpxDao9V5Qzw/Pqe1Ju6h5VGSnbuTh0A==","signatures":[{"sig":"MEUCIDuPV8Pu6NTK25bHWgbgzh7M6f6pcdaN+Z/gfyZov/dtAiEA/RnqoE6s5jYzX+gT5klrj9JRmCC7ldQXPkvEgMW5okY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21563},"type":"module","exports":{".":{"import":"./dist/index.js","require":"./dist/index.d.ts"},"./vite":{"import":"./dist/vite.js","require":"./dist/vite.d.ts"}},"gitHead":"de9e0ccfb61ff42efc847d2df484d631781813a5","scripts":{"test":"vitest","build":"tsc","watch":"tsc --watch","prepack":"npm run build","prebuild":"rm -rf dist"},"_npmUser":{"name":"yesmeck","email":"yesmeck@gmail.com"},"repository":{"url":"git+https://github.com/yesmeck/safe-routes.git","type":"git"},"_npmVersion":"10.9.2","description":"Typesafe routing for React Router apps.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"slash":"3","mkdirp":"^3.0.1","vite-node":"^3.0.6","@rollup/plugin-replace":"^6.0.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.12.3+sha512.cce0f9de9c5a7c95bef944169cc5dfe8741abfb145078c0d508b868056848a87c81e626246cb60967cbd7fd29a6c062ef73ff840d96b3c86c40ac92cf4a813ee","devDependencies":{"vite":"^6.1.1","vitest":"^3.0.6","typescript":"^5.7.2","@types/node":"^22.9.3","@types/mkdirp":"^2.0.0","@react-router/dev":"^7.0.1"},"_npmOperationalInternal":{"tmp":"tmp/safe-routes_1.0.11_1742106845852_0.9942653075046826","host":"s3://npm-registry-packages-npm-production"}},"1.0.12":{"name":"safe-routes","version":"1.0.12","keywords":["remix","react-router","routes","typescript"],"author":{"name":"Wei Zhu"},"license":"MIT","_id":"safe-routes@1.0.12","maintainers":[{"name":"yesmeck","email":"yesmeck@gmail.com"}],"homepage":"https://github.com/yesmeck/safe-routes#readme","bugs":{"url":"https://github.com/yesmeck/safe-routes/issues"},"bin":{"safe-routes":"dist/cli.js"},"dist":{"shasum":"64f0c8a2dace443ad3cc13be8ee3105abeef7d20","tarball":"https://registry.npmjs.org/safe-routes/-/safe-routes-1.0.12.tgz","fileCount":21,"integrity":"sha512-FX7J/P+3U7WOqaFfxkYsbE6jx7UHRkuENml8gfsbVu+sEj71XYz9BuU5pC4++83N49kPurUFcO4IgZfk9ocxNQ==","signatures":[{"sig":"MEYCIQCvWEgdzOjP7DPU8rp0/85n4YbiKh+vkDUhbdQVYP07RgIhAL3HEu6frgEProjqxJ8F47BTa9Fq3f3bkOrpS/okxrrx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21825},"type":"module","exports":{".":{"import":"./dist/index.js","require":"./dist/index.d.ts"},"./vite":{"import":"./dist/vite.js","require":"./dist/vite.d.ts"}},"gitHead":"175a1fa29bcac3379f1989b55583763e74d9508e","scripts":{"test":"vitest","build":"tsc","watch":"tsc --watch","prepack":"npm run build","prebuild":"rm -rf dist"},"_npmUser":{"name":"yesmeck","email":"yesmeck@gmail.com"},"repository":{"url":"git+https://github.com/yesmeck/safe-routes.git","type":"git"},"_npmVersion":"10.9.2","description":"Typesafe routing for React Router apps.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"slash":"3","mkdirp":"^3.0.1","vite-node":"^3.0.6","@rollup/plugin-replace":"^6.0.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.12.3+sha512.cce0f9de9c5a7c95bef944169cc5dfe8741abfb145078c0d508b868056848a87c81e626246cb60967cbd7fd29a6c062ef73ff840d96b3c86c40ac92cf4a813ee","devDependencies":{"vite":"^6.1.1","vitest":"^3.0.6","typescript":"^5.7.2","@types/node":"^22.9.3","@types/mkdirp":"^2.0.0","@react-router/dev":"^7.0.1"},"_npmOperationalInternal":{"tmp":"tmp/safe-routes_1.0.12_1744373752016_0.5869046450404118","host":"s3://npm-registry-packages-npm-production"}},"1.0.13":{"name":"safe-routes","version":"1.0.13","keywords":["remix","react-router","routes","typescript"],"author":{"name":"Wei Zhu"},"license":"MIT","_id":"safe-routes@1.0.13","maintainers":[{"name":"yesmeck","email":"yesmeck@gmail.com"}],"homepage":"https://github.com/yesmeck/safe-routes#readme","bugs":{"url":"https://github.com/yesmeck/safe-routes/issues"},"bin":{"safe-routes":"dist/cli.js"},"dist":{"shasum":"d72c30b5e6621a47591ad65620f233df66fa4773","tarball":"https://registry.npmjs.org/safe-routes/-/safe-routes-1.0.13.tgz","fileCount":21,"integrity":"sha512-Bj1GBaC+Qti3gb5DCjHbgg5sY2/13LM+RvjT1vwZWTDZZHnpAnGKc8sPBx9aFNFt8ywsyPlwpB5lM3Z5IWzVAg==","signatures":[{"sig":"MEQCIAULrpMb2yQwSqJxtAwQSW8ItR28guhRr4jk8rXgYEGwAiA8hRauI/hbUFbd7QF9keWPD4oQ8VOVA6rIFVKk3ohE3g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22025},"type":"module","exports":{".":{"import":"./dist/index.js","require":"./dist/index.d.ts"},"./vite":{"import":"./dist/vite.js","require":"./dist/vite.d.ts"}},"gitHead":"5bf9678a6eed7003eff96857a4ea538e5bbb07ee","scripts":{"test":"vitest","build":"tsc","watch":"tsc --watch","prepack":"npm run build","prebuild":"rm -rf dist"},"_npmUser":{"name":"yesmeck","email":"yesmeck@gmail.com"},"repository":{"url":"git+https://github.com/yesmeck/safe-routes.git","type":"git"},"_npmVersion":"10.9.2","description":"Typesafe routing for React Router apps.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"slash":"3","mkdirp":"^3.0.1","vite-node":"^3.0.6","@rollup/plugin-replace":"^6.0.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.12.3+sha512.cce0f9de9c5a7c95bef944169cc5dfe8741abfb145078c0d508b868056848a87c81e626246cb60967cbd7fd29a6c062ef73ff840d96b3c86c40ac92cf4a813ee","devDependencies":{"vite":"^6.1.1","vitest":"^3.0.6","typescript":"^5.7.2","@types/node":"^22.9.3","@types/mkdirp":"^2.0.0","@react-router/dev":"^7.0.1"},"_npmOperationalInternal":{"tmp":"tmp/safe-routes_1.0.13_1748605247283_0.39589890214860257","host":"s3://npm-registry-packages-npm-production"}},"1.0.14":{"name":"safe-routes","version":"1.0.14","keywords":["remix","react-router","routes","typescript"],"author":{"name":"Wei Zhu"},"license":"MIT","_id":"safe-routes@1.0.14","maintainers":[{"name":"yesmeck","email":"yesmeck@gmail.com"}],"homepage":"https://github.com/yesmeck/safe-routes#readme","bugs":{"url":"https://github.com/yesmeck/safe-routes/issues"},"bin":{"safe-routes":"dist/cli.js"},"dist":{"shasum":"b0767fb0c11ac8c808d9e34fc681acdf8f6d6551","tarball":"https://registry.npmjs.org/safe-routes/-/safe-routes-1.0.14.tgz","fileCount":23,"integrity":"sha512-F/ozeQFG8MquXj4Ymu3O5BXzoow3UYvSKYJoMNCS9EsVTFL0QCU2kWyiA0NHkm9vEXoj4/pe8Ew3DgW283MBIw==","signatures":[{"sig":"MEUCIQC3e8LT7WOkpLrypB0rIM/++G7z3Vg5dzu+uNA2/sZbTwIgDvevdS4d2P8IeX4MA/NAHI0REMSnNJu2Lb3gz87WnZE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21751},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"45cb4c8fa168c48e0eb30da3200382781e5e1fe0","scripts":{"test":"vitest","build":"tsc","watch":"tsc --watch","prepack":"npm run build","prebuild":"rm -rf dist"},"_npmUser":{"name":"yesmeck","email":"yesmeck@gmail.com"},"repository":{"url":"git+https://github.com/yesmeck/safe-routes.git","type":"git"},"_npmVersion":"10.9.3","description":"Typesafe routing for React Router apps.","directories":{},"_nodeVersion":"22.18.0","dependencies":{"slash":"3","mkdirp":"^3.0.1","vite-node":"^3.0.6","@rollup/plugin-replace":"^6.0.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.12.3+sha512.cce0f9de9c5a7c95bef944169cc5dfe8741abfb145078c0d508b868056848a87c81e626246cb60967cbd7fd29a6c062ef73ff840d96b3c86c40ac92cf4a813ee","devDependencies":{"vite":"^6.1.1","vitest":"^3.0.6","typescript":"^5.7.2","@types/node":"^22.9.3","@types/mkdirp":"^2.0.0","@react-router/dev":"^7.0.1"},"_npmOperationalInternal":{"tmp":"tmp/safe-routes_1.0.14_1755310211702_0.30846328786844435","host":"s3://npm-registry-packages-npm-production"}},"1.0.15":{"name":"safe-routes","version":"1.0.15","keywords":["remix","react-router","routes","typescript"],"author":{"name":"Wei Zhu"},"license":"MIT","_id":"safe-routes@1.0.15","maintainers":[{"name":"yesmeck","email":"yesmeck@gmail.com"}],"homepage":"https://github.com/yesmeck/safe-routes#readme","bugs":{"url":"https://github.com/yesmeck/safe-routes/issues"},"bin":{"safe-routes":"dist/cli.js"},"dist":{"shasum":"513da3bc4a2e317217115c53b97cba86da72a382","tarball":"https://registry.npmjs.org/safe-routes/-/safe-routes-1.0.15.tgz","fileCount":23,"integrity":"sha512-jW4x/5qQ+TYLuHvCmsjqSm3FDfIoraxSr8zo17eoWW5vjAylJPIcHsbMJ/OiYTYOKMStV7TGLXfqsNJoQCS9BA==","signatures":[{"sig":"MEUCIAoYes6Wkt+VDFloaaWmBmEdQaI818uVPMTiUTXN417AAiEAnSO0v3kyx+xuq0B+55PLKipSvqgKjH9PwzGQQqHROow=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21742},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"008cdb8aca2e80513ca16f9bda48a76b91dffe12","scripts":{"test":"vitest","build":"tsc","watch":"tsc --watch","prepack":"npm run build","prebuild":"rm -rf dist"},"_npmUser":{"name":"yesmeck","email":"yesmeck@gmail.com"},"repository":{"url":"git+https://github.com/yesmeck/safe-routes.git","type":"git"},"_npmVersion":"10.9.3","description":"Typesafe routing for React Router apps.","directories":{},"_nodeVersion":"22.18.0","dependencies":{"slash":"3","mkdirp":"^3.0.1","vite-node":"^3.0.6","@rollup/plugin-replace":"^6.0.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.12.3+sha512.cce0f9de9c5a7c95bef944169cc5dfe8741abfb145078c0d508b868056848a87c81e626246cb60967cbd7fd29a6c062ef73ff840d96b3c86c40ac92cf4a813ee","devDependencies":{"vite":"^6.1.1","vitest":"^3.0.6","typescript":"^5.7.2","@types/node":"^22.9.3","@types/mkdirp":"^2.0.0","@react-router/dev":"^7.0.1"},"_npmOperationalInternal":{"tmp":"tmp/safe-routes_1.0.15_1755310706466_0.5259130468364439","host":"s3://npm-registry-packages-npm-production"}},"1.0.17":{"name":"safe-routes","version":"1.0.17","keywords":["remix","react-router","routes","typescript"],"author":{"name":"Wei Zhu"},"license":"MIT","_id":"safe-routes@1.0.17","maintainers":[{"name":"yesmeck","email":"yesmeck@gmail.com"}],"homepage":"https://github.com/yesmeck/safe-routes#readme","bugs":{"url":"https://github.com/yesmeck/safe-routes/issues"},"bin":{"safe-routes":"dist/cli.js"},"dist":{"shasum":"69ddd5469ec910330e8337d375edd7e754ba3098","tarball":"https://registry.npmjs.org/safe-routes/-/safe-routes-1.0.17.tgz","fileCount":23,"integrity":"sha512-ugh1uWBBLtyN0U/LItu2Xbc7lXMirMqNvyAuaOgZ2V5QL3kSRGJB7zOEpbS+n/uUypIOtkLjDzWRVRqU8KY6eA==","signatures":[{"sig":"MEYCIQCxPGehd6AK+uv3zBMBoyzrF7Lj6x7FeVrFiSxi95QEAQIhAJeVSzDqpRZJKY+y8LXeMHTIZ18hoMDL37CMyCaDESeq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/safe-routes@1.0.17","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":21902},"main":"dist/index.js","pnpm":{"patchedDependencies":{"@semantic-release/npm":"patches/@semantic-release__npm.patch"}},"type":"module","types":"./dist/index.d.ts","gitHead":"978236476ca0bbbf567523716c4bc5b1ec9568c7","scripts":{"test":"vitest","build":"tsc","watch":"tsc --watch","prepack":"npm run build","prebuild":"rm -rf dist"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f625f7ba-a15e-4d70-865c-272de65d14b1"}},"repository":{"url":"git+https://github.com/yesmeck/safe-routes.git","type":"git"},"_npmVersion":"11.5.2","description":"Typesafe routing for React Router apps.","directories":{},"_nodeVersion":"22.18.0","dependencies":{"slash":"3","mkdirp":"^3.0.1","vite-node":"^3.0.6","@rollup/plugin-replace":"^6.0.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.12.3+sha512.cce0f9de9c5a7c95bef944169cc5dfe8741abfb145078c0d508b868056848a87c81e626246cb60967cbd7fd29a6c062ef73ff840d96b3c86c40ac92cf4a813ee","devDependencies":{"vite":"^6.1.1","vitest":"^3.0.6","typescript":"^5.7.2","@types/node":"^22.9.3","@types/mkdirp":"^2.0.0","semantic-release":"^24.2.7","@react-router/dev":"^7.0.1"},"_npmOperationalInternal":{"tmp":"tmp/safe-routes_1.0.17_1755316126794_0.6575271417460642","host":"s3://npm-registry-packages-npm-production"}},"1.0.18":{"name":"safe-routes","version":"1.0.18","keywords":["remix","react-router","routes","typescript"],"author":{"name":"Wei Zhu"},"license":"MIT","_id":"safe-routes@1.0.18","maintainers":[{"name":"yesmeck","email":"yesmeck@gmail.com"}],"homepage":"https://github.com/yesmeck/safe-routes#readme","bugs":{"url":"https://github.com/yesmeck/safe-routes/issues"},"bin":{"safe-routes":"dist/cli.js"},"dist":{"shasum":"d32b34c64701bed6984d18a1105e976a60b9d014","tarball":"https://registry.npmjs.org/safe-routes/-/safe-routes-1.0.18.tgz","fileCount":23,"integrity":"sha512-usNdA4p29n3DMx8N7o5Aq6khdQGE5RwVzWA2JWZrGib8N5wGpYArQy9+wMCgKjErZbM9cNvSb7BpRJWid2W34A==","signatures":[{"sig":"MEUCIC4sj4UkqzS+sMQDWqXaVHIqTk0q+fAzQXQQ7k8IDxvoAiEAitn54Spm/fpDPY5cQgFvoTjiaPS8WQymZ9hfGUopS6w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/safe-routes@1.0.18","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":21896},"main":"dist/index.js","pnpm":{"patchedDependencies":{"@semantic-release/npm":"patches/@semantic-release__npm.patch"}},"type":"module","types":"./dist/index.d.ts","gitHead":"bb1c72d5f791d152c90e863e293b408c802e5bbc","scripts":{"test":"vitest","build":"tsc","watch":"tsc --watch","prepack":"npm run build","prebuild":"rm -rf dist"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f625f7ba-a15e-4d70-865c-272de65d14b1"}},"repository":{"url":"git+https://github.com/yesmeck/safe-routes.git","type":"git"},"_npmVersion":"11.5.2","description":"Typesafe routing for React Router apps.","directories":{},"_nodeVersion":"22.18.0","dependencies":{"slash":"3","mkdirp":"^3.0.1","vite-node":"^3.0.6","@rollup/plugin-replace":"^6.0.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.12.3+sha512.cce0f9de9c5a7c95bef944169cc5dfe8741abfb145078c0d508b868056848a87c81e626246cb60967cbd7fd29a6c062ef73ff840d96b3c86c40ac92cf4a813ee","devDependencies":{"vite":"^6.1.1","vitest":"^3.0.6","typescript":"^5.7.2","@types/node":"^22.9.3","@types/mkdirp":"^2.0.0","semantic-release":"^24.2.7","@react-router/dev":"^7.0.1"},"_npmOperationalInternal":{"tmp":"tmp/safe-routes_1.0.18_1755842879051_0.496239121558002","host":"s3://npm-registry-packages-npm-production"}},"2.0.0-alpha.1":{"name":"safe-routes","version":"2.0.0-alpha.1","keywords":["remix","react-router","routes","typescript"],"author":{"name":"Wei Zhu"},"license":"MIT","_id":"safe-routes@2.0.0-alpha.1","maintainers":[{"name":"yesmeck","email":"yesmeck@gmail.com"}],"homepage":"https://github.com/yesmeck/safe-routes#readme","bugs":{"url":"https://github.com/yesmeck/safe-routes/issues"},"bin":{"safe-routes":"dist/cli.js"},"dist":{"shasum":"fd341bd74d08bb7b7f868c595fe83bcdc304582d","tarball":"https://registry.npmjs.org/safe-routes/-/safe-routes-2.0.0-alpha.1.tgz","fileCount":23,"integrity":"sha512-ZMdlWqOqyPTqAmjpWKjWqjfqdIcregkjYuPsU0J6LdhN3ETStShVlx82/OfrT2otH6JWKwr9IT9yilcG1or2Mw==","signatures":[{"sig":"MEUCIBuUEF9xM5NYcF80xopBJ43A9rEHuidXveiG4PQH02gvAiEAlysVkfnqtMKkDcuKuT/FU1iRK3g4QLfUKfquyV2dA/Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/safe-routes@2.0.0-alpha.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":22113},"main":"dist/index.js","pnpm":{"patchedDependencies":{"@semantic-release/npm":"patches/@semantic-release__npm.patch"}},"type":"module","types":"./dist/index.d.ts","gitHead":"fad754c40bfdbf28ae9056054722909f267ce577","scripts":{"test":"vitest","build":"tsc","watch":"tsc --watch","prepack":"npm run build","prebuild":"rm -rf dist"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f625f7ba-a15e-4d70-865c-272de65d14b1"}},"repository":{"url":"git+https://github.com/yesmeck/safe-routes.git","type":"git"},"_npmVersion":"11.12.1","description":"Typesafe routing for React Router apps.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"slash":"3","mkdirp":"^3.0.1","vite-node":"^6.0.0"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.33.0","readmeFilename":"README.md","devDependencies":{"vite":"^8.0.8","vitest":"^4.1.1","typescript":"^6.0.2","@types/node":"^22.9.3","@types/mkdirp":"^2.0.0","semantic-release":"^24.2.7","@react-router/dev":"^7.14.1"},"_npmOperationalInternal":{"tmp":"tmp/safe-routes_2.0.0-alpha.1_1776341159550_0.16859179478112418","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"safe-routes","version":"2.0.1","keywords":["remix","react-router","routes","typescript"],"author":{"name":"Wei Zhu"},"license":"MIT","_id":"safe-routes@2.0.1","maintainers":[{"name":"yesmeck","email":"yesmeck@gmail.com"}],"homepage":"https://github.com/yesmeck/safe-routes#readme","bugs":{"url":"https://github.com/yesmeck/safe-routes/issues"},"bin":{"safe-routes":"dist/cli.js"},"dist":{"shasum":"68e50c717a0aeba8cd8356046bca9a7d81074052","tarball":"https://registry.npmjs.org/safe-routes/-/safe-routes-2.0.1.tgz","fileCount":23,"integrity":"sha512-VkjS0UaVUa5Vr0M1Un6aGNKKhUgoFQs1/Rm5mLS+XJXb/jz9wvExpLQWzyAXvR3TLhctNjA0dcmyvGICOF/69w==","signatures":[{"sig":"MEYCIQD3TKZlHsw6UPfFUe3gMagz5kBNP1N4UTBRYGv7tCou4AIhAL9bLvdQq7KYAWiwYJHT+skcURyZg8QWoXYNVas8BFIr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/safe-routes@2.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":22105},"main":"dist/index.js","pnpm":{"patchedDependencies":{"@semantic-release/npm":"patches/@semantic-release__npm.patch"}},"type":"module","types":"./dist/index.d.ts","gitHead":"14bffbf05b0438e015434bae4ab0e7f554593719","scripts":{"test":"vitest","build":"tsc","watch":"tsc --watch","prepack":"npm run build","prebuild":"rm -rf dist"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f625f7ba-a15e-4d70-865c-272de65d14b1"}},"repository":{"url":"git+https://github.com/yesmeck/safe-routes.git","type":"git"},"_npmVersion":"11.12.1","description":"Typesafe routing for React Router apps.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"slash":"3","mkdirp":"^3.0.1","vite-node":"^6.0.0"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.33.0","devDependencies":{"vite":"^8.0.8","vitest":"^4.1.1","typescript":"^6.0.2","@types/node":"^22.9.3","@types/mkdirp":"^2.0.0","semantic-release":"^24.2.7","@react-router/dev":"^7.14.1"},"_npmOperationalInternal":{"tmp":"tmp/safe-routes_2.0.1_1776341992470_0.6893121346266655","host":"s3://npm-registry-packages-npm-production"}},"2.0.2":{"name":"safe-routes","version":"2.0.2","description":"Typesafe routing for React Router apps.","type":"module","repository":{"type":"git","url":"git+https://github.com/yesmeck/safe-routes.git"},"bin":{"safe-routes":"dist/cli.js"},"main":"dist/index.js","scripts":{"test":"vitest","watch":"tsc --watch","prebuild":"rm -rf dist","build":"tsc","prepack":"npm run build"},"keywords":["remix","react-router","routes","typescript"],"author":{"name":"Wei Zhu"},"license":"MIT","devDependencies":{"@react-router/dev":"^7.14.1","@types/mkdirp":"^2.0.0","@types/node":"^22.9.3","semantic-release":"^24.2.7","typescript":"^6.0.2","vite":"^8.0.8","vitest":"^4.1.1"},"dependencies":{"mkdirp":"^3.0.1","slash":"3","vite-node":"^6.0.0"},"packageManager":"pnpm@10.33.0","pnpm":{"patchedDependencies":{"@semantic-release/npm":"patches/@semantic-release__npm.patch"}},"gitHead":"2eedbd297549ca032d37f2aaeefc2748df37e427","types":"./dist/index.d.ts","_id":"safe-routes@2.0.2","bugs":{"url":"https://github.com/yesmeck/safe-routes/issues"},"homepage":"https://github.com/yesmeck/safe-routes#readme","_nodeVersion":"24.16.0","_npmVersion":"11.17.0","dist":{"integrity":"sha512-hwCHspzO78kvdzd8sPgUocL0CBfCLNXJ/QntYPTcm2rqx3DD48jNtIowGkNxcG5fidhBaVx2lzcB/Uf29ihAAw==","shasum":"93bdc74f43b68b851168f18ad24bce0e10be18d1","tarball":"https://registry.npmjs.org/safe-routes/-/safe-routes-2.0.2.tgz","fileCount":23,"unpackedSize":22171,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/safe-routes@2.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCID0Wj2xW/pQKe9DCSKBcwuca47pX/i2DvTkvPzxQymdcAiEAyvvtyq6qfNpOf9SvlomU5Jw+lLJDluolVEnK8bbFKL4="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f625f7ba-a15e-4d70-865c-272de65d14b1"}},"directories":{},"maintainers":[{"name":"yesmeck","email":"yesmeck@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/safe-routes_2.0.2_1781871744949_0.3056999279261867"},"_hasShrinkwrap":false}},"time":{"created":"2024-11-23T18:16:01.647Z","modified":"2026-06-19T12:22:25.346Z","0.0.1-alpha.0":"2024-11-23T18:16:01.849Z","0.0.1-alpha.1":"2024-11-24T10:17:25.272Z","0.0.1-alpha.2":"2024-11-27T13:24:24.599Z","2.0.0":"2024-11-27T16:43:43.415Z","1.0.0":"2024-11-27T16:50:34.327Z","1.0.1":"2024-12-11T17:41:36.876Z","1.0.2":"2024-12-11T18:29:28.729Z","1.0.3":"2025-01-04T04:16:03.539Z","1.0.4":"2025-02-01T07:01:39.668Z","1.0.5":"2025-02-22T05:50:11.811Z","1.0.6":"2025-02-22T05:56:08.025Z","1.0.7":"2025-02-27T11:22:19.722Z","1.0.8":"2025-02-27T12:54:13.967Z","1.0.9":"2025-02-27T14:19:13.491Z","1.0.10":"2025-03-09T07:07:55.627Z","1.0.11":"2025-03-16T06:34:06.046Z","1.0.12":"2025-04-11T12:15:52.207Z","1.0.13":"2025-05-30T11:40:47.440Z","1.0.14":"2025-08-16T02:10:11.893Z","1.0.15":"2025-08-16T02:18:26.693Z","1.0.17":"2025-08-16T03:48:47.022Z","1.0.18":"2025-08-22T06:07:59.236Z","2.0.0-alpha.1":"2026-04-16T12:05:59.681Z","2.0.1":"2026-04-16T12:19:52.601Z","2.0.2":"2026-06-19T12:22:25.078Z"},"bugs":{"url":"https://github.com/yesmeck/safe-routes/issues"},"author":{"name":"Wei Zhu"},"license":"MIT","homepage":"https://github.com/yesmeck/safe-routes#readme","keywords":["remix","react-router","routes","typescript"],"repository":{"type":"git","url":"git+https://github.com/yesmeck/safe-routes.git"},"description":"Typesafe routing for React Router apps.","maintainers":[{"name":"yesmeck","email":"yesmeck@gmail.com"}],"readme":"# safe-routes\n\nType-safe helper for manipulating internal links in your React Router apps.\n\n> [!note]\n> remix-routes has been renamed to safe-routes. If you are looking for the documentation of remix-routes, please refer to [here](https://github.com/yesmeck/remix-routes/tree/remix-routes).\n>\n> Please refer to the [upgrading guide](https://github.com/yesmeck/safe-routes/releases/tag/v1.0.0) if you are upgrading from remix-routes.\n\n## Highlights\n\n- [Typed URL generation](#typed-url-generation)\n- [Appending query string](#appending-query-string)\n- [Typed query string](#typed-query-string)\n- [Typed route ids](#typed-route-ids)\n- [Basename support](#basename-support)\n\n## Installation\n\n```bash\n$ npm add safe-routes\n```\n\n## Setup\n\nAdd `safeRoutes` plugin to your `vite.config.ts`:\n\n```javascript\nimport { defineConfig } from \"vite\";\nimport { reactRouter } from \"@react-router/dev/vite\";\nimport { safeRoutes } from 'safe-routes/vite';\n\nexport default defineConfig({\n  plugins: [\n    reactRouter(),\n    safeRoutes(),\n  ],\n});\n```\n\nSupported config options:\n\n- `strict: boolean`\n- `outDir: string`\n\nAdd `safe-routes typegen` to the `typecheck` script:\n\n```patch\n- \"typecheck\": \"react-router typegen && tsc --build --noEmit\"\n+ \"typecheck\": \"react-router typegen && safe-routes typegen && tsc --build --noEmit\"\n```\n\n## Usage\n\n### Typed URL generation\n\n```typescript\nimport { redirect } from 'react-router';\nimport { $path } from 'safe-routes'; // <-- Import magical $path helper from safe-routes.\n\nexport const action = async ({ request }) => {\n  let formData = await request.formData();\n  const post = await createPost(formData);\n\n  return redirect($path('/posts/:id', { id: post.id })); // <-- It's type safe.\n};\n```\n\n### Appending query string\n\n```typescript\nimport { $path } from 'safe-routes';\n\n$path('/posts/:id', { id: 6 }, { version: 18 }); // => /posts/6?version=18\n$path('/posts', { limit: 10 }); // => /posts?limit=10\n// You can pass any URLSearchParams init as param\n$path('/posts/delete', [['id', 1], ['id', 2]]); // => /posts/delete?id=1&id=2\n```\n\n### Typed query string\n\nDefine type of query string by exporting a type named `SearchParams` in route file:\n\n```typescript\n// app/routes/posts.tsx\n\nexport type SearchParams = {\n  view: 'list' | 'grid',\n  sort?: 'date' | 'views',\n  page?: number,\n}\n```\n\n```typescript\nimport { $path } from 'safe-routes';\n\n// The query string is type-safe.\n$path('/posts', { view: 'list', sort: 'date', page: 1 });\n```\n\nYou can combine this feature with [zod](https://github.com/colinhacks/zod) and [remix-params-helper](https://github.com/kiliman/remix-params-helper) to add runtime params checking:\n\n```typescript\nimport { z } from \"zod\";\nimport { getSearchParams } from \"remix-params-helper\";\n\nconst SearchParamsSchema = z.object({\n  view: z.enum([\"list\", \"grid\"]),\n  sort: z.enum([\"price\", \"size\"]).optional(),\n  page: z.number().int().optional(),\n})\n\nexport type SearchParams = z.infer<typeof SearchParamsSchema>;\n\nexport const loader = async (request) => {\n  const result = getSearchParams(request, SearchParamsSchema)\n  if (!result.success) {\n    return json(result.errors, { status: 400 })\n  }\n  const { view, sort, page } = result.data;\n}\n```\n\n### Checking params\n\n> [!NOTE]\n> This function has been marked `@deprecated` in favor of React Router's\n> built-in type-safety, which provides strongly typed `params` to loaders,\n> actions, and components. This helper has been kept primarily to assist in\n> incremental migration.\n\n```typescript\nimport { useParams } from \"react-router\";\nimport { $params } from 'safe-routes'; // <-- Import $params helper.\n\nexport const action = async ({ params }) => {\n  const { id } = $params(\"/posts/:id/update\", params) // <-- It's type safe, try renaming `id` param.\n\n  // ...\n}\n\nexport default function Component() {\n  const params = useParams();\n  const { id } = $params(\"/posts/:id/update\", params);\n  ...\n}\n```\n\n### Typed route ids\n\nsafe-routes exports the `RouteId` type definition with the list of all valid route ids for your repository, and has a helper function `$routeId` that tells typescript to restrict the given string to one of the valid RouteId values.\n\n```typescript\nimport type { RouteId } from 'safe-routes';\nimport type { loader as postsLoader } from './_layout.tsx';\nimport { useRouteLoaderData } from 'react-router';\nimport { $routeId } from 'safe-routes';\n\nexport default function Post() {\n  const postList = useRouteLoaderData<typeof postsLoader>($routeId('routes/posts/_layout'));\n}\n```\n\n### Basename support\n\nBasename is supported out of the box. If you have set a basename in your `vite.config.ts` and `react-router.config.ts`, safe-routes will automatically prepend the basename to the generated URLs.\n\n```typescript\n// react-router.config.ts\nimport type { Config } from \"@react-router/dev/config\";\n\nexport default {\n  basename: \"/blog\",\n} satisfies Config;\n```\n\n```typescript\nimport { $path } from 'safe-routes';\n\n$path('/posts/:id', { id: 6 }); // => /blog/posts/6\n```\n\n## License\n\n[MIT](LICENSE)\n","readmeFilename":"README.md"}