{"_id":"@0bipinnata0/router","_rev":"13-b44a676691cfd819eeaeff015ed3aec1","name":"@0bipinnata0/router","dist-tags":{"latest":"0.0.17"},"versions":{"0.0.1":{"name":"@0bipinnata0/router","version":"0.0.1","_id":"@0bipinnata0/router@0.0.1","maintainers":[{"name":"0bipinnata0","email":"odinzero@outlook.com"}],"homepage":"https://github.com/0bipinnata0/my-router#readme","bugs":{"url":"https://github.com/0bipinnata0/my-router/issues"},"dist":{"shasum":"db90a46de5367cc0710fa490bf12a9101727d2fe","tarball":"https://registry.npmjs.org/@0bipinnata0/router/-/router-0.0.1.tgz","fileCount":38,"integrity":"sha512-KST1CI6ch37QpmiHqCRx/GCHAto1b4QJEmlt4ykwiWVSp09BL345CB8qjba0hb0hC7S1FGVg52B6cndgguDFBw==","signatures":[{"sig":"MEUCIQDC1W5yCW890y61voCBkfaW4h/OGl3NizVLdSW68OR4PwIgQSe6rEz/dphVleprEcFw3y589DtFaSkr6FUKURD7n2c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@0bipinnata0%2frouter@0.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":161514},"main":"dist/index.cjs","type":"module","_from":"file:0bipinnata0-router-0.0.1.tgz","types":"distode/index.d.ts","module":"dist/index.js","scripts":{"dev":"vite","lint":"eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0","build":"tsup","preview":"vite preview"},"_npmUser":{"name":"0bipinnata0","email":"odinzero@outlook.com"},"_resolved":"/tmp/e5912e5d56c3f56e591fa965cce97e01/0bipinnata0-router-0.0.1.tgz","_integrity":"sha512-KST1CI6ch37QpmiHqCRx/GCHAto1b4QJEmlt4ykwiWVSp09BL345CB8qjba0hb0hC7S1FGVg52B6cndgguDFBw==","repository":{"url":"git+https://github.com/0bipinnata0/my-router.git"},"_npmVersion":"10.8.1","description":"This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.","directories":{},"_nodeVersion":"20.16.0","dependencies":{"ramda":"^0.30.1","react":"^18.2.0","react-dom":"^18.2.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.2.4","vite":"^5.0.0","eslint":"^8.53.0","zustand":"^4.5.2","typescript":"^5.2.2","@types/ramda":"^0.30.1","@types/react":"^18.2.37","@types/react-dom":"^18.2.15","react-router-dom":"^6.24.1","@vitejs/plugin-react":"^4.2.0","use-sync-external-store":"^1.2.2","@typescript-eslint/parser":"^6.10.0","eslint-plugin-react-hooks":"^4.6.0","eslint-plugin-react-refresh":"^0.4.4","@types/use-sync-external-store":"^0.0.6","@typescript-eslint/eslint-plugin":"^6.10.0"},"_npmOperationalInternal":{"tmp":"tmp/router_0.0.1_1724720329445_0.9473274186457472","host":"s3://npm-registry-packages"}},"0.0.2":{"name":"@0bipinnata0/router","version":"0.0.2","_id":"@0bipinnata0/router@0.0.2","maintainers":[{"name":"0bipinnata0","email":"odinzero@outlook.com"}],"homepage":"https://github.com/0bipinnata0/my-router#readme","bugs":{"url":"https://github.com/0bipinnata0/my-router/issues"},"dist":{"shasum":"059eadb493b6a360768a9a3a4fb4d3ee85bcafae","tarball":"https://registry.npmjs.org/@0bipinnata0/router/-/router-0.0.2.tgz","fileCount":2,"integrity":"sha512-15ITbxJa8DPexvculp0H/tbhK7UnSVsmg4D5fvO7TZ49FI8dNGKwdu32H4d0orFbXPg4PS+OHuOMEofQT1KWKQ==","signatures":[{"sig":"MEUCIQC2JDA6YcS+uGBUjiBzHku5sPp3WrNl7v3S+gNNOuyuZwIgO5u4AfJtVD8aAgDq72NLceqw5kMv897pxqgmJpvrmTM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@0bipinnata0%2frouter@0.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2541},"main":"dist/index.cjs","type":"module","_from":"file:0bipinnata0-router-0.0.2.tgz","types":"distode/index.d.ts","module":"dist/index.js","scripts":{"dev":"vite","lint":"eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0","build":"tsup","preview":"vite preview"},"_npmUser":{"name":"0bipinnata0","email":"odinzero@outlook.com"},"_resolved":"/tmp/e217aef8ba09af8e5840dd497514d13b/0bipinnata0-router-0.0.2.tgz","_integrity":"sha512-15ITbxJa8DPexvculp0H/tbhK7UnSVsmg4D5fvO7TZ49FI8dNGKwdu32H4d0orFbXPg4PS+OHuOMEofQT1KWKQ==","repository":{"url":"git+https://github.com/0bipinnata0/my-router.git"},"_npmVersion":"10.8.1","description":"This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.","directories":{},"_nodeVersion":"20.16.0","dependencies":{"ramda":"^0.30.1","react":"^18.2.0","react-dom":"^18.2.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.2.4","vite":"^5.0.0","eslint":"^8.53.0","zustand":"^4.5.2","typescript":"^5.2.2","@types/ramda":"^0.30.1","@types/react":"^18.2.37","@types/react-dom":"^18.2.15","react-router-dom":"^6.24.1","@vitejs/plugin-react":"^4.2.0","use-sync-external-store":"^1.2.2","@typescript-eslint/parser":"^6.10.0","eslint-plugin-react-hooks":"^4.6.0","eslint-plugin-react-refresh":"^0.4.4","@types/use-sync-external-store":"^0.0.6","@typescript-eslint/eslint-plugin":"^6.10.0"},"_npmOperationalInternal":{"tmp":"tmp/router_0.0.2_1724720811592_0.4662878783764486","host":"s3://npm-registry-packages"}},"0.0.3":{"name":"@0bipinnata0/router","version":"0.0.3","_id":"@0bipinnata0/router@0.0.3","maintainers":[{"name":"0bipinnata0","email":"odinzero@outlook.com"}],"homepage":"https://github.com/0bipinnata0/my-router#readme","bugs":{"url":"https://github.com/0bipinnata0/my-router/issues"},"dist":{"shasum":"d0bba6d2427e2734b8ec6f072055bbe36c19b638","tarball":"https://registry.npmjs.org/@0bipinnata0/router/-/router-0.0.3.tgz","fileCount":2,"integrity":"sha512-hoirEP4mcUebNKaeoiJPGwO9O9TgfqZbK1P0QYJWU/KKywBqKK9eFMLRZBIADeQg4ajBJpqlq5aYToQ7FyHYiw==","signatures":[{"sig":"MEUCIDYpkIo5EPc4VQ1isXtLHEcmB7kBftxNc8/AJTSaxcBhAiEA3MY6KcPOCalSEjZ77+3dQ9DocM1PqhWS4YlsEa3DGio=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@0bipinnata0%2frouter@0.0.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2541},"main":"dist/index.cjs","type":"module","_from":"file:0bipinnata0-router-0.0.3.tgz","types":"distode/index.d.ts","module":"dist/index.js","scripts":{"dev":"vite","lint":"eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0","build":"tsup","preview":"vite preview"},"_npmUser":{"name":"0bipinnata0","email":"odinzero@outlook.com"},"_resolved":"/tmp/9d2feb328b1ad1eeb75f4759c6193f41/0bipinnata0-router-0.0.3.tgz","_integrity":"sha512-hoirEP4mcUebNKaeoiJPGwO9O9TgfqZbK1P0QYJWU/KKywBqKK9eFMLRZBIADeQg4ajBJpqlq5aYToQ7FyHYiw==","repository":{"url":"git+https://github.com/0bipinnata0/my-router.git"},"_npmVersion":"10.8.1","description":"This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.","directories":{},"_nodeVersion":"20.16.0","dependencies":{"ramda":"^0.30.1","react":"^18.2.0","react-dom":"^18.2.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.2.4","vite":"^5.0.0","eslint":"^8.53.0","zustand":"^4.5.2","typescript":"^5.2.2","@types/ramda":"^0.30.1","@types/react":"^18.2.37","@types/react-dom":"^18.2.15","react-router-dom":"^6.24.1","@vitejs/plugin-react":"^4.2.0","use-sync-external-store":"^1.2.2","@typescript-eslint/parser":"^6.10.0","eslint-plugin-react-hooks":"^4.6.0","eslint-plugin-react-refresh":"^0.4.4","@types/use-sync-external-store":"^0.0.6","@typescript-eslint/eslint-plugin":"^6.10.0"},"_npmOperationalInternal":{"tmp":"tmp/router_0.0.3_1724721259924_0.8193993648451163","host":"s3://npm-registry-packages"}},"0.0.4":{"name":"@0bipinnata0/router","version":"0.0.4","_id":"@0bipinnata0/router@0.0.4","maintainers":[{"name":"0bipinnata0","email":"odinzero@outlook.com"}],"homepage":"https://github.com/0bipinnata0/my-router#readme","bugs":{"url":"https://github.com/0bipinnata0/my-router/issues"},"dist":{"shasum":"9744df6152abb413b6efcbf144952498e0bbac00","tarball":"https://registry.npmjs.org/@0bipinnata0/router/-/router-0.0.4.tgz","fileCount":6,"integrity":"sha512-avixkeDODZX+hjhKY9iDGYAmwx80EH1EEyLiHhZ6FvFWYG8Etngfc6SQYWXSMY1a83BesuSBKJFlg7UO2xhpPw==","signatures":[{"sig":"MEQCIFh+1Yd369GINWtuwpx39EauABFSiVqnx7QwVGiC7pjpAiA2UP6/dynMPY062+MkToYOsDATdS8rMOTKtsV64jBMkg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@0bipinnata0%2frouter@0.0.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11916},"main":"dist/index.cjs","type":"module","_from":"file:0bipinnata0-router-0.0.4.tgz","types":"distode/index.d.ts","module":"dist/index.js","scripts":{"dev":"vite","lint":"eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0","build":"tsup","preview":"vite preview"},"_npmUser":{"name":"0bipinnata0","email":"odinzero@outlook.com"},"_resolved":"/tmp/41525770816f1e1b71b3d77e1379e29d/0bipinnata0-router-0.0.4.tgz","_integrity":"sha512-avixkeDODZX+hjhKY9iDGYAmwx80EH1EEyLiHhZ6FvFWYG8Etngfc6SQYWXSMY1a83BesuSBKJFlg7UO2xhpPw==","repository":{"url":"git+https://github.com/0bipinnata0/my-router.git"},"_npmVersion":"10.8.1","description":"This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.","directories":{},"_nodeVersion":"20.16.0","dependencies":{"ramda":"^0.30.1","react":"^18.2.0","react-dom":"^18.2.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.2.4","vite":"^5.0.0","eslint":"^8.53.0","zustand":"^4.5.2","typescript":"^5.2.2","@types/ramda":"^0.30.1","@types/react":"^18.2.37","@types/react-dom":"^18.2.15","react-router-dom":"^6.24.1","@vitejs/plugin-react":"^4.2.0","use-sync-external-store":"^1.2.2","@typescript-eslint/parser":"^6.10.0","eslint-plugin-react-hooks":"^4.6.0","eslint-plugin-react-refresh":"^0.4.4","@types/use-sync-external-store":"^0.0.6","@typescript-eslint/eslint-plugin":"^6.10.0"},"_npmOperationalInternal":{"tmp":"tmp/router_0.0.4_1724721517236_0.1932308705507204","host":"s3://npm-registry-packages"}},"0.0.5":{"name":"@0bipinnata0/router","version":"0.0.5","_id":"@0bipinnata0/router@0.0.5","maintainers":[{"name":"0bipinnata0","email":"odinzero@outlook.com"}],"homepage":"https://github.com/0bipinnata0/my-router#readme","bugs":{"url":"https://github.com/0bipinnata0/my-router/issues"},"dist":{"shasum":"7ccdf722756cc311e85b17863f34ba13ea88d13b","tarball":"https://registry.npmjs.org/@0bipinnata0/router/-/router-0.0.5.tgz","fileCount":6,"integrity":"sha512-54D/1Lk+ylNZPVkwSeI/ozWP8WEgZ1VsEDol66FmaUNTccFmu1X1QeZdkZiJj2Zjs7H7Iq33c7PqPXJ9hY2FRg==","signatures":[{"sig":"MEUCIQCURfRSlkhm/fOYb9ivprnBNFcEquwJOX+j6g6/VVG5VwIgAgToGPJwtVDVsYzDYIBlAr6J//vx7XUHPL6IrRyLtBQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@0bipinnata0%2frouter@0.0.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11913},"main":"dist/index.cjs","type":"module","_from":"file:0bipinnata0-router-0.0.5.tgz","types":"dist/index.d.ts","module":"dist/index.js","scripts":{"dev":"vite","lint":"eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0","build":"tsup","preview":"vite preview"},"_npmUser":{"name":"0bipinnata0","email":"odinzero@outlook.com"},"_resolved":"/tmp/2c8c69d8ce664e104623f9a941cff926/0bipinnata0-router-0.0.5.tgz","_integrity":"sha512-54D/1Lk+ylNZPVkwSeI/ozWP8WEgZ1VsEDol66FmaUNTccFmu1X1QeZdkZiJj2Zjs7H7Iq33c7PqPXJ9hY2FRg==","repository":{"url":"git+https://github.com/0bipinnata0/my-router.git"},"_npmVersion":"10.8.1","description":"This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.","directories":{},"_nodeVersion":"20.16.0","dependencies":{"ramda":"^0.30.1","react":"^18.2.0","react-dom":"^18.2.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.2.4","vite":"^5.0.0","eslint":"^8.53.0","zustand":"^4.5.2","typescript":"^5.2.2","@types/ramda":"^0.30.1","@types/react":"^18.2.37","@types/react-dom":"^18.2.15","react-router-dom":"^6.24.1","@vitejs/plugin-react":"^4.2.0","use-sync-external-store":"^1.2.2","@typescript-eslint/parser":"^6.10.0","eslint-plugin-react-hooks":"^4.6.0","eslint-plugin-react-refresh":"^0.4.4","@types/use-sync-external-store":"^0.0.6","@typescript-eslint/eslint-plugin":"^6.10.0"},"_npmOperationalInternal":{"tmp":"tmp/router_0.0.5_1724721729724_0.5587885579145293","host":"s3://npm-registry-packages"}},"0.0.6":{"name":"@0bipinnata0/router","version":"0.0.6","_id":"@0bipinnata0/router@0.0.6","maintainers":[{"name":"0bipinnata0","email":"odinzero@outlook.com"}],"homepage":"https://github.com/0bipinnata0/my-router#readme","bugs":{"url":"https://github.com/0bipinnata0/my-router/issues"},"dist":{"shasum":"ccf88695d776e9e0740059739703bd30d1383275","tarball":"https://registry.npmjs.org/@0bipinnata0/router/-/router-0.0.6.tgz","fileCount":6,"integrity":"sha512-qk3f2Ux66A5TzScPzQKaK5Se2Dyzk+/6Svy+E2P/+os/1BkH/IHbKhEQN8gnIWw1nit9QVOnvS8/2nEJwFscdg==","signatures":[{"sig":"MEQCIEObrF9YWVgvGgo7ycv5CLOSl2Q+fv6QPpEsmQoBnWZvAiAp80hokbxjuRSYz65mjXlCVwvYIVVy3sQVne5WMUb7eQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@0bipinnata0%2frouter@0.0.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":10925},"main":"dist/index.cjs","type":"module","_from":"file:0bipinnata0-router-0.0.6.tgz","types":"dist/index.d.ts","module":"dist/index.js","scripts":{"dev":"vite","lint":"eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0","build":"tsup","preview":"vite preview"},"_npmUser":{"name":"0bipinnata0","email":"odinzero@outlook.com"},"_resolved":"/tmp/06386e318dab30faad684383b0d53cb6/0bipinnata0-router-0.0.6.tgz","_integrity":"sha512-qk3f2Ux66A5TzScPzQKaK5Se2Dyzk+/6Svy+E2P/+os/1BkH/IHbKhEQN8gnIWw1nit9QVOnvS8/2nEJwFscdg==","repository":{"url":"git+https://github.com/0bipinnata0/my-router.git"},"_npmVersion":"10.8.1","description":"1. pathname (location.pathname) 2. hash (location.hash) 3. storage (localstorage)","directories":{},"_nodeVersion":"20.16.0","dependencies":{"ramda":"^0.30.1","react":"^18.2.0","react-dom":"^18.2.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.2.4","vite":"^5.0.0","eslint":"^8.53.0","zustand":"^4.5.2","typescript":"^5.2.2","@types/ramda":"^0.30.1","@types/react":"^18.2.37","@types/react-dom":"^18.2.15","react-router-dom":"^6.24.1","@vitejs/plugin-react":"^4.2.0","use-sync-external-store":"^1.2.2","@typescript-eslint/parser":"^6.10.0","eslint-plugin-react-hooks":"^4.6.0","eslint-plugin-react-refresh":"^0.4.4","@types/use-sync-external-store":"^0.0.6","@typescript-eslint/eslint-plugin":"^6.10.0"},"_npmOperationalInternal":{"tmp":"tmp/router_0.0.6_1724764275876_0.820988881071288","host":"s3://npm-registry-packages"}},"0.0.7":{"name":"@0bipinnata0/router","version":"0.0.7","_id":"@0bipinnata0/router@0.0.7","maintainers":[{"name":"0bipinnata0","email":"odinzero@outlook.com"}],"homepage":"https://github.com/0bipinnata0/my-router#readme","bugs":{"url":"https://github.com/0bipinnata0/my-router/issues"},"dist":{"shasum":"1a346fe8d9dbc90bb1299cb06b0081262641d54b","tarball":"https://registry.npmjs.org/@0bipinnata0/router/-/router-0.0.7.tgz","fileCount":6,"integrity":"sha512-4TqLiNUcH89H7MpZ6NpAmQy7I0C4quKjgqrQiCKRQLxwNWtDxUVHNq6Ci/tmFyyb9N0Z17/15Zs+k6il5JQMcQ==","signatures":[{"sig":"MEYCIQCgAGoiwSaQ+Xm/mmfFMzD75KyfheixfEjEkkGG3snlQQIhAL1eDshQA4vfXaqt+xAiE+e5XeGohMz56rajgYSdrDYH","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@0bipinnata0%2frouter@0.0.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":10789},"main":"dist/index.cjs","type":"module","_from":"file:0bipinnata0-router-0.0.7.tgz","types":"dist/index.d.ts","module":"dist/index.js","scripts":{"dev":"vite","lint":"eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0","build":"tsup","preview":"vite preview"},"_npmUser":{"name":"0bipinnata0","email":"odinzero@outlook.com"},"_resolved":"/tmp/636c4be7525b181cac2a978793c3e3ee/0bipinnata0-router-0.0.7.tgz","_integrity":"sha512-4TqLiNUcH89H7MpZ6NpAmQy7I0C4quKjgqrQiCKRQLxwNWtDxUVHNq6Ci/tmFyyb9N0Z17/15Zs+k6il5JQMcQ==","repository":{"url":"git+https://github.com/0bipinnata0/my-router.git"},"_npmVersion":"10.8.1","description":"1. pathname (location.pathname) 2. hash (location.hash) 3. storage (localstorage)","directories":{},"_nodeVersion":"20.16.0","dependencies":{"ramda":"^0.30.1","react":"^18.2.0","react-dom":"^18.2.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.2.4","vite":"^5.0.0","eslint":"^8.53.0","zustand":"^4.5.2","typescript":"^5.2.2","@types/ramda":"^0.30.1","@types/react":"^18.2.37","@types/react-dom":"^18.2.15","react-router-dom":"^6.24.1","@vitejs/plugin-react":"^4.2.0","use-sync-external-store":"^1.2.2","@typescript-eslint/parser":"^6.10.0","eslint-plugin-react-hooks":"^4.6.0","eslint-plugin-react-refresh":"^0.4.4","@types/use-sync-external-store":"^0.0.6","@typescript-eslint/eslint-plugin":"^6.10.0"},"_npmOperationalInternal":{"tmp":"tmp/router_0.0.7_1724846293297_0.5879505266409375","host":"s3://npm-registry-packages"}},"0.0.9":{"name":"@0bipinnata0/router","version":"0.0.9","_id":"@0bipinnata0/router@0.0.9","maintainers":[{"name":"0bipinnata0","email":"odinzero@outlook.com"}],"homepage":"https://github.com/0bipinnata0/my-router#readme","bugs":{"url":"https://github.com/0bipinnata0/my-router/issues"},"dist":{"shasum":"20c1d3657d98acc405670ccb2e16475fe9f3916f","tarball":"https://registry.npmjs.org/@0bipinnata0/router/-/router-0.0.9.tgz","fileCount":6,"integrity":"sha512-shWi1hA/Dpp1zGms9w5aviBSxSwL0Q3KRqqiw1z39YjEewwTfzZlKk+hjJXAxhIwjTFCcSmuX2ba76TnN1kV9g==","signatures":[{"sig":"MEYCIQCBXSX1APC7aoUECk9Tsi/YY/K6y7yST6F7Bh1UXrKLdwIhAIGUrQGO7+kOwApGsekHqPl1xH5zXTtJK5r2y/BjNS4q","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@0bipinnata0%2frouter@0.0.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11775},"main":"dist/index.cjs","type":"module","_from":"file:0bipinnata0-router-0.0.9.tgz","types":"dist/index.d.ts","module":"dist/index.js","scripts":{"dev":"vite","lint":"eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0","test":"vitest","build":"tsup","preview":"vite preview"},"_npmUser":{"name":"0bipinnata0","email":"odinzero@outlook.com"},"_resolved":"/tmp/c957f2e73eb8a508fede9e5a2a4e18c1/0bipinnata0-router-0.0.9.tgz","_integrity":"sha512-shWi1hA/Dpp1zGms9w5aviBSxSwL0Q3KRqqiw1z39YjEewwTfzZlKk+hjJXAxhIwjTFCcSmuX2ba76TnN1kV9g==","repository":{"url":"git+https://github.com/0bipinnata0/my-router.git"},"_npmVersion":"10.8.2","description":"1. pathname (location.pathname) 2. hash (location.hash) 3. storage (localstorage)","directories":{},"_nodeVersion":"20.18.1","dependencies":{"ramda":"^0.30.1","react":"^19.0.0","react-dom":"^19.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","vite":"^6.0.7","eslint":"^9.18.0","vitest":"^3.0.2","globals":"^15.14.0","@eslint/js":"^9.18.0","typescript":"~5.7.3","@types/ramda":"^0.30.1","@types/react":"^19.0.7","@types/react-dom":"^19.0.3","react-router-dom":"^6.24.1","typescript-eslint":"^8.20.0","@vitejs/plugin-react":"^4.3.4","eslint-plugin-react-hooks":"^5.1.0","eslint-plugin-react-refresh":"^0.4.18"},"_npmOperationalInternal":{"tmp":"tmp/router_0.0.9_1737296990288_0.11727496964243822","host":"s3://npm-registry-packages-npm-production"}},"0.0.10":{"name":"@0bipinnata0/router","version":"0.0.10","_id":"@0bipinnata0/router@0.0.10","maintainers":[{"name":"0bipinnata0","email":"odinzero@outlook.com"}],"homepage":"https://github.com/0bipinnata0/my-router#readme","bugs":{"url":"https://github.com/0bipinnata0/my-router/issues"},"dist":{"shasum":"46db9751cfe7d7c5807f45d32f969e4bb552e69f","tarball":"https://registry.npmjs.org/@0bipinnata0/router/-/router-0.0.10.tgz","fileCount":6,"integrity":"sha512-OY6upHDWr6ORyLwiYbOIHxxa1EqnKgvWGzjc6spLC47xcG8Y1esJ6ZwxPOp0huRYYuo3jqq/ZavuCQ4SP1gwBw==","signatures":[{"sig":"MEQCIGtewcvYby/5JkOdDXHhhl52bZwBVowUp2PjXxxLjF13AiB66SzslCUzYHKbUQTgOQ+jhyp7jb6qx6F0AMptOnCFvg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@0bipinnata0%2frouter@0.0.10","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12089},"main":"dist/index.cjs","type":"module","_from":"file:0bipinnata0-router-0.0.10.tgz","types":"dist/index.d.ts","module":"dist/index.js","scripts":{"dev":"vite","lint":"eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0","test":"vitest","build":"tsup","preview":"vite preview"},"_npmUser":{"name":"0bipinnata0","email":"odinzero@outlook.com"},"_resolved":"/tmp/4f5d06508b539ba1425abc97eafcfe05/0bipinnata0-router-0.0.10.tgz","_integrity":"sha512-OY6upHDWr6ORyLwiYbOIHxxa1EqnKgvWGzjc6spLC47xcG8Y1esJ6ZwxPOp0huRYYuo3jqq/ZavuCQ4SP1gwBw==","repository":{"url":"git+https://github.com/0bipinnata0/my-router.git"},"_npmVersion":"10.8.2","description":"1. pathname (location.pathname) 2. hash (location.hash) 3. storage (localstorage)","directories":{},"_nodeVersion":"20.18.1","dependencies":{"ramda":"^0.30.1","react":"^19.0.0","react-dom":"^19.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","vite":"^6.0.7","eslint":"^9.18.0","vitest":"^3.0.2","globals":"^15.14.0","@eslint/js":"^9.18.0","typescript":"~5.7.3","@types/ramda":"^0.30.1","@types/react":"^19.0.7","@types/react-dom":"^19.0.3","react-router-dom":"^6.24.1","typescript-eslint":"^8.20.0","@vitejs/plugin-react":"^4.3.4","eslint-plugin-react-hooks":"^5.1.0","eslint-plugin-react-refresh":"^0.4.18"},"_npmOperationalInternal":{"tmp":"tmp/router_0.0.10_1737380474478_0.02101571311940309","host":"s3://npm-registry-packages-npm-production"}},"0.0.11":{"name":"@0bipinnata0/router","version":"0.0.11","_id":"@0bipinnata0/router@0.0.11","maintainers":[{"name":"0bipinnata0","email":"odinzero@outlook.com"}],"homepage":"https://github.com/0bipinnata0/my-router#readme","bugs":{"url":"https://github.com/0bipinnata0/my-router/issues"},"dist":{"shasum":"d7e818e19be72c1842fe95147e94441a709da2c8","tarball":"https://registry.npmjs.org/@0bipinnata0/router/-/router-0.0.11.tgz","fileCount":6,"integrity":"sha512-93o3blM4cEceucCdMfKjqeprORd22FjeJczg9W/odLw+/BXjiZcX5iJ44EnqcKqgmHqU4sEAvKRlVzcjp34JYg==","signatures":[{"sig":"MEUCIAUlgDQSVQodx1FBpC/0IpmSYWOTXNaanlyLB4tpR3/bAiEAwVSS88pjXaTxUgBHwcwmeKGtNlQGDT+jyV8jGhr/8FQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@0bipinnata0%2frouter@0.0.11","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12397},"main":"dist/index.cjs","type":"module","_from":"file:0bipinnata0-router-0.0.11.tgz","types":"dist/index.d.ts","module":"dist/index.js","scripts":{"dev":"vite","lint":"eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0","test":"vitest","build":"tsup","preview":"vite preview"},"_npmUser":{"name":"0bipinnata0","email":"odinzero@outlook.com"},"_resolved":"/tmp/0a89e4d957a36ef7f2342c60bcf1e4f4/0bipinnata0-router-0.0.11.tgz","_integrity":"sha512-93o3blM4cEceucCdMfKjqeprORd22FjeJczg9W/odLw+/BXjiZcX5iJ44EnqcKqgmHqU4sEAvKRlVzcjp34JYg==","repository":{"url":"git+https://github.com/0bipinnata0/my-router.git"},"_npmVersion":"10.8.2","description":"1. pathname (location.pathname) 2. hash (location.hash) 3. storage (localstorage)","directories":{},"_nodeVersion":"20.18.1","dependencies":{"ramda":"^0.30.1","react":"^19.0.0","react-dom":"^19.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","vite":"^6.0.7","eslint":"^9.18.0","vitest":"^3.0.2","globals":"^15.14.0","@eslint/js":"^9.18.0","typescript":"~5.7.3","@types/ramda":"^0.30.1","@types/react":"^19.0.7","@types/react-dom":"^19.0.3","react-router-dom":"^6.24.1","typescript-eslint":"^8.20.0","@vitejs/plugin-react":"^4.3.4","eslint-plugin-react-hooks":"^5.1.0","eslint-plugin-react-refresh":"^0.4.18"},"_npmOperationalInternal":{"tmp":"tmp/router_0.0.11_1737382482248_0.20229680707220132","host":"s3://npm-registry-packages-npm-production"}},"0.0.12":{"name":"@0bipinnata0/router","version":"0.0.12","_id":"@0bipinnata0/router@0.0.12","maintainers":[{"name":"0bipinnata0","email":"odinzero@outlook.com"}],"homepage":"https://github.com/0bipinnata0/my-router#readme","bugs":{"url":"https://github.com/0bipinnata0/my-router/issues"},"dist":{"shasum":"700ba4a1b24664ce13c2f46209bd7f3acec3c258","tarball":"https://registry.npmjs.org/@0bipinnata0/router/-/router-0.0.12.tgz","fileCount":6,"integrity":"sha512-SQFzSs4QLWkz48H+ZQOhmvHqILI+1D83RGIQinH5m0fXOQPabciRpoaDdIOti05B/LX5HbUZwQqtDQn7bIACYQ==","signatures":[{"sig":"MEYCIQDKTfv4k8CdPfVKoBsRa2c9+y9LAmE4PMhc6/Q/GrcxUQIhAIWD3upaaJzVgfBr1TW2ciq8aLcOf+KWDi6aWav2mod/","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@0bipinnata0%2frouter@0.0.12","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13795},"main":"dist/index.cjs","type":"module","_from":"file:0bipinnata0-router-0.0.12.tgz","types":"dist/index.d.ts","module":"dist/index.js","scripts":{"dev":"vite","lint":"eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0","test":"vitest","build":"tsup","preview":"vite preview"},"_npmUser":{"name":"0bipinnata0","email":"odinzero@outlook.com"},"_resolved":"/tmp/fa8300000a80195e5838d89ae84b5961/0bipinnata0-router-0.0.12.tgz","_integrity":"sha512-SQFzSs4QLWkz48H+ZQOhmvHqILI+1D83RGIQinH5m0fXOQPabciRpoaDdIOti05B/LX5HbUZwQqtDQn7bIACYQ==","repository":{"url":"git+https://github.com/0bipinnata0/my-router.git"},"_npmVersion":"10.8.2","description":"1. pathname (location.pathname) 2. hash (location.hash) 3. storage (localstorage)","directories":{},"_nodeVersion":"20.18.1","dependencies":{"ramda":"^0.30.1","react":"^19.0.0","react-dom":"^19.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","vite":"^6.0.7","eslint":"^9.18.0","vitest":"^3.0.2","globals":"^15.14.0","@eslint/js":"^9.18.0","typescript":"~5.7.3","@types/ramda":"^0.30.1","@types/react":"^19.0.7","@types/react-dom":"^19.0.3","react-router-dom":"^6.24.1","typescript-eslint":"^8.20.0","@vitejs/plugin-react":"^4.3.4","eslint-plugin-react-hooks":"^5.1.0","eslint-plugin-react-refresh":"^0.4.18"},"_npmOperationalInternal":{"tmp":"tmp/router_0.0.12_1737475904488_0.8806997099432603","host":"s3://npm-registry-packages-npm-production"}},"0.0.14":{"name":"@0bipinnata0/router","version":"0.0.14","_id":"@0bipinnata0/router@0.0.14","maintainers":[{"name":"0bipinnata0","email":"odinzero@outlook.com"}],"homepage":"https://github.com/0bipinnata0/router#readme","bugs":{"url":"https://github.com/0bipinnata0/router/issues"},"dist":{"shasum":"3437c8d560815e4195424aa781a8f07eaae586ec","tarball":"https://registry.npmjs.org/@0bipinnata0/router/-/router-0.0.14.tgz","fileCount":6,"integrity":"sha512-uBrjz79QD/R0woDwz52g1N3kfzP4eQIlbMOXc5Vlme/J2ZAa1hqSDMDEuL06lQpELyvuo/iLbL70QZaq/33psQ==","signatures":[{"sig":"MEUCIQDUEMIYMN1+Ca/sZDZ2HyfhuDylHNg/0tJQbvcqznbA6QIgQ8yQo75lFsum6MQj7dZtaBVVcAfiLTW48MBwz+YS/Rw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@0bipinnata0%2frouter@0.0.14","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":15818},"main":"dist/index.cjs","type":"module","_from":"file:0bipinnata0-router-0.0.14.tgz","types":"dist/index.d.ts","module":"dist/index.js","scripts":{"dev":"vite","lint":"eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0","test":"vitest","build":"tsup","preview":"vite preview"},"_npmUser":{"name":"0bipinnata0","email":"odinzero@outlook.com"},"_resolved":"/tmp/347e160d88c9935abb60bf146a3764e5/0bipinnata0-router-0.0.14.tgz","_integrity":"sha512-uBrjz79QD/R0woDwz52g1N3kfzP4eQIlbMOXc5Vlme/J2ZAa1hqSDMDEuL06lQpELyvuo/iLbL70QZaq/33psQ==","repository":{"url":"git+https://github.com/0bipinnata0/router.git"},"_npmVersion":"10.8.2","description":"## 路由的三种实现方式","directories":{},"_nodeVersion":"20.18.2","dependencies":{"ramda":"^0.30.1","react":"^19.0.0","react-dom":"^19.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","vite":"^6.0.7","eslint":"^9.18.0","vitest":"^3.0.2","globals":"^15.14.0","@eslint/js":"^9.18.0","typescript":"~5.7.3","@types/ramda":"^0.30.1","@types/react":"^19.0.7","@types/react-dom":"^19.0.3","react-router-dom":"^6.24.1","typescript-eslint":"^8.20.0","@vitejs/plugin-react":"^4.3.4","eslint-plugin-react-hooks":"^5.1.0","eslint-plugin-react-refresh":"^0.4.18"},"_npmOperationalInternal":{"tmp":"tmp/router_0.0.14_1740464924229_0.41150183058788525","host":"s3://npm-registry-packages-npm-production"}},"0.0.16":{"name":"@0bipinnata0/router","version":"0.0.16","_id":"@0bipinnata0/router@0.0.16","maintainers":[{"name":"0bipinnata0","email":"odinzero@outlook.com"}],"homepage":"https://github.com/0bipinnata0/router#readme","bugs":{"url":"https://github.com/0bipinnata0/router/issues"},"dist":{"shasum":"88b2da8e6b6a9e0ac940ac4562d1d3abf8e6b513","tarball":"https://registry.npmjs.org/@0bipinnata0/router/-/router-0.0.16.tgz","fileCount":7,"integrity":"sha512-7LzkasGkzViFYCkQ2NYQsKE8t7q155uY8MGsVSmkvYnKS7iGljD/t+sVvj9LvVbMffbsW0+j5zEoJ640Gvz4EA==","signatures":[{"sig":"MEUCIC91+SPcMj8/n/6TPo6JIPLA0n2+PwaLUjySKhLWFaIbAiEA2fq4QfW0fFW96LfLUMk7ztda50bWI6W0wB5lNWV+q+Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@0bipinnata0%2frouter@0.0.16","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17494},"main":"dist/index.cjs","type":"module","_from":"file:0bipinnata0-router-0.0.16.tgz","types":"dist/index.d.ts","module":"dist/index.js","scripts":{"dev":"vite","lint":"eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0","test":"vitest","build":"tsup","preview":"vite preview"},"_npmUser":{"name":"0bipinnata0","email":"odinzero@outlook.com"},"_resolved":"/tmp/f8f7115fe0e345c4fdf619f910fa068f/0bipinnata0-router-0.0.16.tgz","_integrity":"sha512-7LzkasGkzViFYCkQ2NYQsKE8t7q155uY8MGsVSmkvYnKS7iGljD/t+sVvj9LvVbMffbsW0+j5zEoJ640Gvz4EA==","repository":{"url":"git+https://github.com/0bipinnata0/router.git"},"_npmVersion":"10.8.2","description":"[![npm package][npm-badge]][npm] [![build][build-badge]][build]","directories":{},"_nodeVersion":"20.18.2","dependencies":{"ramda":"^0.30.1","react":"^19.0.0","react-dom":"^19.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","vite":"^6.0.7","jsdom":"^24.0.0","eslint":"^9.18.0","vitest":"^3.0.2","globals":"^15.14.0","@eslint/js":"^9.18.0","typescript":"~5.7.3","@types/ramda":"^0.30.1","@types/react":"^19.0.7","@types/react-dom":"^19.0.3","react-router-dom":"^6.24.1","typescript-eslint":"^8.20.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^14.2.1","@testing-library/jest-dom":"^6.4.2","eslint-plugin-react-hooks":"^5.1.0","eslint-plugin-react-refresh":"^0.4.18"},"_npmOperationalInternal":{"tmp":"tmp/router_0.0.16_1740473604496_0.38289684928586354","host":"s3://npm-registry-packages-npm-production"}},"0.0.17":{"name":"@0bipinnata0/router","version":"0.0.17","main":"dist/index.cjs","module":"dist/index.js","types":"dist/index.d.ts","type":"module","repository":{"url":"git+https://github.com/0bipinnata0/router.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"ramda":"^0.30.1","react":"^19.0.0","react-dom":"^19.0.0"},"devDependencies":{"@eslint/js":"^9.18.0","@types/ramda":"^0.30.1","@types/react":"^19.0.7","@types/react-dom":"^19.0.3","@vitejs/plugin-react":"^4.3.4","eslint":"^9.18.0","eslint-plugin-react-hooks":"^5.1.0","eslint-plugin-react-refresh":"^0.4.18","globals":"^15.14.0","react-router-dom":"^6.24.1","tsup":"^8.3.5","typescript":"~5.7.3","typescript-eslint":"^8.20.0","vite":"^6.0.7","vitest":"^3.0.2","@testing-library/react":"^14.2.1","@testing-library/jest-dom":"^6.4.2","jsdom":"^24.0.0"},"scripts":{"dev":"vite","build":"tsup","lint":"eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0","preview":"vite preview","test":"vitest"},"_id":"@0bipinnata0/router@0.0.17","description":"[![npm package][npm-badge]][npm] [![build][build-badge]][build]","bugs":{"url":"https://github.com/0bipinnata0/router/issues"},"homepage":"https://github.com/0bipinnata0/router#readme","_integrity":"sha512-FWOGsrpZCTT8L7uQub97ghuf2Bzw2gR1sod0e63U6U2++vXFf3InXyCvwe/1ZsQT/S4crmVeGucvri9cQDACOw==","_resolved":"/tmp/e33d16000c2077b38b7961d13739bc3f/0bipinnata0-router-0.0.17.tgz","_from":"file:0bipinnata0-router-0.0.17.tgz","_nodeVersion":"20.18.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-FWOGsrpZCTT8L7uQub97ghuf2Bzw2gR1sod0e63U6U2++vXFf3InXyCvwe/1ZsQT/S4crmVeGucvri9cQDACOw==","shasum":"69cb0a3d5ff7512966fac331254fefb187de4916","tarball":"https://registry.npmjs.org/@0bipinnata0/router/-/router-0.0.17.tgz","fileCount":7,"unpackedSize":17426,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@0bipinnata0%2frouter@0.0.17","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCW6LU5Y5VwdoQNNL5lYlgYs6bHlYEfrdE3gLFfKlTfnAIgcTYFPIXIk7yor9pW1LoWvdR4R/6tZsiPvZerJ7MgQow="}]},"_npmUser":{"name":"0bipinnata0","email":"odinzero@outlook.com"},"directories":{},"maintainers":[{"name":"0bipinnata0","email":"odinzero@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/router_0.0.17_1740474713828_0.29101704556517616"},"_hasShrinkwrap":false}},"time":{"created":"2024-08-27T00:58:49.355Z","modified":"2025-02-25T09:11:54.487Z","0.0.1":"2024-08-27T00:58:49.625Z","0.0.2":"2024-08-27T01:06:51.747Z","0.0.3":"2024-08-27T01:14:20.081Z","0.0.4":"2024-08-27T01:18:37.412Z","0.0.5":"2024-08-27T01:22:09.919Z","0.0.6":"2024-08-27T13:11:16.035Z","0.0.7":"2024-08-28T11:58:13.451Z","0.0.9":"2025-01-19T14:29:50.562Z","0.0.10":"2025-01-20T13:41:14.667Z","0.0.11":"2025-01-20T14:14:42.467Z","0.0.12":"2025-01-21T16:11:44.677Z","0.0.14":"2025-02-25T06:28:44.465Z","0.0.16":"2025-02-25T08:53:24.685Z","0.0.17":"2025-02-25T09:11:54.001Z"},"bugs":{"url":"https://github.com/0bipinnata0/router/issues"},"homepage":"https://github.com/0bipinnata0/router#readme","repository":{"url":"git+https://github.com/0bipinnata0/router.git"},"description":"[![npm package][npm-badge]][npm] [![build][build-badge]][build]","maintainers":[{"name":"0bipinnata0","email":"odinzero@outlook.com"}],"readme":"[![npm package][npm-badge]][npm] [![build][build-badge]][build]\n\n[npm-badge]: https://img.shields.io/npm/v/@0bipinnata0/router.svg\n[npm]: https://www.npmjs.org/package/@0bipinnata0/router\n[build-badge]: https://img.shields.io/github/actions/workflow/status/remix-run/react-router/test.yml?branch=dev&style=square\n[build]: https://img.shields.io/github/actions/workflow/status/0bipinnata0/router/pnpm-publish.yml\n\n# React Router 实现\n\n## 路由的三种实现方式\n\n本项目实现了三种不同的路由方式，每种方式都有其特定的使用场景：\n\n1. BrowserRouter (location.pathname)\n   - 使用 HTML5 History API\n   - 通过监听 popstate 事件实现路由状态同步\n   - 使用 history.pushState 更新 URL\n   - 适合需要干净URL的现代Web应用\n\n2. HashRouter (location.hash)\n   - 基于 URL hash 实现路由\n   - 通过修改 location.hash 触发路由变化\n   - 兼容性好，适合不支持 History API 的旧浏览器\n\n3. MemoryRouter (localStorage)\n   - 使用 localStorage 存储路由状态\n   - 完全基于内存的路由实现\n   - 适合非浏览器环境或需要持久化路由状态的场景\n\n## 核心实现原理\n\n### 状态管理\n\n1. 状态初始化\n   - BrowserRouter: 使用 location.pathname\n   - HashRouter: 使用 location.hash\n   - MemoryRouter: 使用 localStorage 存储的路径\n\n2. 状态变更机制\n   - 采用发布订阅模式\n   - 通过 routeEmit 统一管理路由事件\n   - 各路由组件监听状态变化并更新UI\n\n### 组件体系\n\n1. 路由容器组件\n   - BrowserRouter/HashRouter/MemoryRouter\n   - 负责路由状态的初始化和更新\n   - 提供路由上下文\n\n2. Routes 组件\n   - 收集和管理 Route 子组件\n   - 监听路由变化并更新UI\n   - 实现路由匹配和渲染\n\n3. Route 组件\n   - 定义路由路径和对应组件\n   - 支持嵌套路由\n   - 支持路由参数\n\n4. Link 组件\n   - 提供声明式的路由导航\n   - 触发路由状态更新\n\n5. Outlet 组件\n   - 渲染子路由内容\n   - 实现路由嵌套\n\n### 路由匹配逻辑\n\n1. 路由校验\n   - 过滤非 Route 组件\n   - 支持权限控制\n\n2. 路径匹配\n   - 支持精确匹配和模式匹配\n   - 处理路由参数\n   - 支持通配符路由（404页面）\n\n## 使用示例\n\n```jsx\n<Router>\n  <Link to=\"/\">主页</Link>\n  <Link to=\"/login\">登录</Link>\n  \n  <Routes>\n    <Route path=\"/login\" element={<Login />} />\n    <Route path=\"/\" element={<Home />}>\n      <Route path=\"course\" element={<Course />}>\n        <Route path=\":id\" element={<Detail />} />\n      </Route>\n    </Route>\n  </Routes>\n</Router>\n```\n\n## API 参考\n\n- BrowserRouter: 基于 History API 的路由实现\n- HashRouter: 基于 URL hash 的路由实现\n- MemoryRouter: 基于 localStorage 的路由实现\n- Link: 路由导航组件\n- Route: 路由配置组件\n- Routes: 路由容器组件\n- Outlet: 子路由渲染组件\n- useParams: 获取路由参数 Hook\n- useNavigate: 编程式导航 Hook","readmeFilename":"README.md"}