{"_id":"@gulibs/vite-plugin-react-auto-routes","_rev":"35-a4e48958425ee468608939b844e65435","name":"@gulibs/vite-plugin-react-auto-routes","dist-tags":{"latest":"0.2.8"},"versions":{"0.0.1":{"name":"@gulibs/vite-plugin-react-auto-routes","version":"0.0.1","author":{"name":"HectorGu"},"license":"MIT","_id":"@gulibs/vite-plugin-react-auto-routes@0.0.1","maintainers":[{"name":"gujiwen","email":"gujiwen2020@163.com"}],"dist":{"shasum":"e0f94c45c9434008d8bdb6fb735d850cc1205826","tarball":"https://registry.npmjs.org/@gulibs/vite-plugin-react-auto-routes/-/vite-plugin-react-auto-routes-0.0.1.tgz","fileCount":8,"integrity":"sha512-q0v5Ph3wKCRHUqU9HrGOL2nXQ2sB18NUfLrWNiuG5WHtTcfkUqasBLwYAj7TynTLK5OsBfLDRsifpUbKNK3y6A==","signatures":[{"sig":"MEQCICBik7/91BQGoOeuirMH6t9XE8c1/5hWAhDvv9W7fq1zAiByZY9WijxQxTieQ1/B8IlTS/mMSm26OUWOpVIWC1kjgg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":19829},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","private":false,"scripts":{"build":"rollup --config --bundleConfigAsCjs"},"_npmUser":{"name":"gujiwen","email":"gujiwen2020@163.com"},"_npmVersion":"10.7.0","description":"React Auto Routes","directories":{},"_nodeVersion":"20.15.1","dependencies":{"lodash":"^4.17.21","fast-glob":"^3.3.2","@antfu/utils":"^0.7.10"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.2","tslib":"^2.5.2","rollup":"^3.22.0","typescript":"^5.0.4","@babel/core":"^7.21.8","@types/node":"^20.2.1","@types/lodash":"^4.17.7","@babel/preset-env":"^7.21.5","rollup-plugin-babel":"^4.4.0","rollup-plugin-terser":"^7.0.2","@rollup/plugin-commonjs":"^25.0.0","@rollup/plugin-typescript":"^11.1.1","@rollup/plugin-node-resolve":"^15.0.2","rollup-plugin-polyfill-node":"^0.12.0"},"_npmOperationalInternal":{"tmp":"tmp/vite-plugin-react-auto-routes_0.0.1_1725238045064_0.9147201370703466","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.0.2":{"name":"@gulibs/vite-plugin-react-auto-routes","version":"0.0.2","author":{"name":"HectorGu"},"license":"MIT","_id":"@gulibs/vite-plugin-react-auto-routes@0.0.2","maintainers":[{"name":"gujiwen","email":"gujiwen2020@163.com"}],"dist":{"shasum":"1bbffaaabe35b4a9bc6393c9fba4935988a99998","tarball":"https://registry.npmjs.org/@gulibs/vite-plugin-react-auto-routes/-/vite-plugin-react-auto-routes-0.0.2.tgz","fileCount":11,"integrity":"sha512-Af3xEddyhRF1kxeOMdhoLdEItSKfd5W5M1AjjHEjXuqw4KB0yKGur3iGervyWleRA+8fyp4t7dzV3/j2tu+/ww==","signatures":[{"sig":"MEUCIQDcWFQgcx5MLJGIdWViUUIAgF0cHblzbS6Hb5C4KkG3/gIgOXkwXMU1PvtbWuYP1mUILsTU39PD4Oiu094wz3oqqTk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24796},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","private":false,"scripts":{"build":"rollup --config --bundleConfigAsCjs"},"_npmUser":{"name":"gujiwen","email":"gujiwen2020@163.com"},"_npmVersion":"10.7.0","description":"React Auto Routes","directories":{},"_nodeVersion":"20.15.1","dependencies":{"lodash":"^4.17.21","fast-glob":"^3.3.2","@antfu/utils":"^0.7.10"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.2","tslib":"^2.5.2","rollup":"^3.22.0","typescript":"^5.0.4","@babel/core":"^7.21.8","@types/node":"^20.2.1","@types/lodash":"^4.17.7","@babel/preset-env":"^7.21.5","rollup-plugin-babel":"^4.4.0","rollup-plugin-terser":"^7.0.2","@rollup/plugin-commonjs":"^25.0.0","@rollup/plugin-typescript":"^11.1.1","@rollup/plugin-node-resolve":"^15.0.2","rollup-plugin-polyfill-node":"^0.12.0"},"_npmOperationalInternal":{"tmp":"tmp/vite-plugin-react-auto-routes_0.0.2_1725296801708_0.5732860098002222","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.0.3":{"name":"@gulibs/vite-plugin-react-auto-routes","version":"0.0.3","keywords":["vite","react","react-router","vite plugin","auto route"],"author":{"name":"HectorGu"},"license":"MIT","_id":"@gulibs/vite-plugin-react-auto-routes@0.0.3","maintainers":[{"name":"gujiwen","email":"gujiwen2020@163.com"}],"dist":{"shasum":"522d6bf52411ba49ef66e277a2ad6184f94d724b","tarball":"https://registry.npmjs.org/@gulibs/vite-plugin-react-auto-routes/-/vite-plugin-react-auto-routes-0.0.3.tgz","fileCount":11,"integrity":"sha512-FhiudQ6oduLghCcizEg/eJDCEFmvh651LFGbh/ciAtY7FWW+ISnQGvE0UzU/w6eNloUVmLWtwTq/PC5oFPN0HQ==","signatures":[{"sig":"MEUCIHZVT0IfWT4ea1lVvWI7AyaYoGi4FbUcA6zFoCIk9l85AiEA0MJzI6O7UbPZ+hwbg5Tm/r20nwQfeavhPNYXmlIXgCw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25000},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","private":false,"scripts":{"build":"rollup --config --bundleConfigAsCjs"},"_npmUser":{"name":"gujiwen","email":"gujiwen2020@163.com"},"_npmVersion":"10.7.0","description":"React Auto Routes","directories":{},"_nodeVersion":"20.15.1","dependencies":{"lodash":"^4.17.21","fast-glob":"^3.3.2","@antfu/utils":"^0.7.10"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.2","tslib":"^2.5.2","rollup":"^3.22.0","typescript":"^5.0.4","@babel/core":"^7.21.8","@types/node":"^20.2.1","@types/lodash":"^4.17.7","@babel/preset-env":"^7.21.5","rollup-plugin-babel":"^4.4.0","rollup-plugin-terser":"^7.0.2","@rollup/plugin-commonjs":"^25.0.0","@rollup/plugin-typescript":"^11.1.1","@rollup/plugin-node-resolve":"^15.0.2","rollup-plugin-polyfill-node":"^0.12.0"},"_npmOperationalInternal":{"tmp":"tmp/vite-plugin-react-auto-routes_0.0.3_1725298210352_0.8001777926561096","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.0.4":{"name":"@gulibs/vite-plugin-react-auto-routes","version":"0.0.4","keywords":["vite","react","react-router","vite plugin","auto route"],"author":{"name":"HectorGu"},"license":"MIT","_id":"@gulibs/vite-plugin-react-auto-routes@0.0.4","maintainers":[{"name":"gujiwen","email":"gujiwen2020@163.com"}],"dist":{"shasum":"68bf09db17fa2619ef2707bad0d143cecc8ed293","tarball":"https://registry.npmjs.org/@gulibs/vite-plugin-react-auto-routes/-/vite-plugin-react-auto-routes-0.0.4.tgz","fileCount":11,"integrity":"sha512-Qs9CNepmcJxWCwOznGAdr31Pg4EiBJvjOT4tRrr4KhItV/Mg0sDXiOrPXM1RKWP2aftVBm4bkrtBg0BK2561HA==","signatures":[{"sig":"MEQCIDQlSjayf6LFnT1z4yuXvSQ0dolzQvDBtiROttNuKwluAiALbcR9RKfwtFJBPtbAA0/2NnT4zTjB9huhHjkAL1B9AQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25699},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","private":false,"scripts":{"build":"rollup --config --bundleConfigAsCjs"},"_npmUser":{"name":"gujiwen","email":"gujiwen2020@163.com"},"_npmVersion":"10.7.0","description":"React Auto Routes","directories":{},"_nodeVersion":"20.15.1","dependencies":{"chalk":"^5.3.0","dayjs":"^1.11.13","lodash":"^4.17.21","fast-glob":"^3.3.2","@antfu/utils":"^0.7.10"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.2","tslib":"^2.5.2","rollup":"^3.22.0","typescript":"^5.0.4","@babel/core":"^7.21.8","@types/node":"^20.2.1","@types/lodash":"^4.17.7","@babel/preset-env":"^7.21.5","rollup-plugin-babel":"^4.4.0","rollup-plugin-terser":"^7.0.2","@rollup/plugin-commonjs":"^25.0.0","@rollup/plugin-typescript":"^11.1.1","@rollup/plugin-node-resolve":"^15.0.2","rollup-plugin-polyfill-node":"^0.12.0"},"_npmOperationalInternal":{"tmp":"tmp/vite-plugin-react-auto-routes_0.0.4_1725550866093_0.5021276520624329","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.0.5":{"name":"@gulibs/vite-plugin-react-auto-routes","version":"0.0.5","keywords":["vite","react","react-router","vite plugin","auto route"],"author":{"name":"HectorGu"},"license":"MIT","_id":"@gulibs/vite-plugin-react-auto-routes@0.0.5","maintainers":[{"name":"gujiwen","email":"gujiwen2020@163.com"}],"dist":{"shasum":"9cf4c264db237ab991cce4e4dfaa6fe3e621f16c","tarball":"https://registry.npmjs.org/@gulibs/vite-plugin-react-auto-routes/-/vite-plugin-react-auto-routes-0.0.5.tgz","fileCount":14,"integrity":"sha512-lANTlzCvuoXSgWYplWKPEIflMGhFWyXJsuaWZPtr3mDLwZQH/j21B25jI5pUv+1c7muTfl03ntiFSWWr6M5iEg==","signatures":[{"sig":"MEYCIQCD/7ih4hyuaiPSQPNaKtKXW4YH8rYJpQIhLmyVYN7TcAIhAISxyl1nipyTobhzwsekpUuHabWeR4eQjpsjQ8yZAcVm","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25788},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","private":false,"scripts":{"build":"rollup --config --bundleConfigAsCjs"},"_npmUser":{"name":"gujiwen","email":"gujiwen2020@163.com"},"description":"React Auto Routes","directories":{},"dependencies":{"chalk":"^5.3.0","dayjs":"^1.11.13","lodash":"^4.17.21","fast-glob":"^3.3.2","@antfu/utils":"^0.7.10"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.2","tslib":"^2.5.2","rollup":"^3.22.0","typescript":"^5.0.4","@babel/core":"^7.21.8","@types/node":"^20.2.1","@types/lodash":"^4.17.7","@babel/preset-env":"^7.21.5","rollup-plugin-babel":"^4.4.0","rollup-plugin-terser":"^7.0.2","@rollup/plugin-commonjs":"^25.0.0","@rollup/plugin-typescript":"^11.1.1","@rollup/plugin-node-resolve":"^15.0.2","rollup-plugin-polyfill-node":"^0.12.0"},"_npmOperationalInternal":{"tmp":"tmp/vite-plugin-react-auto-routes_0.0.5_1725588998817_0.05390114119614586","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.0.6":{"name":"@gulibs/vite-plugin-react-auto-routes","version":"0.0.6","keywords":["vite","react","react-router","vite plugin","auto route"],"author":{"name":"HectorGu"},"license":"MIT","_id":"@gulibs/vite-plugin-react-auto-routes@0.0.6","maintainers":[{"name":"gujiwen","email":"gujiwen2020@163.com"}],"dist":{"shasum":"acb4e0704f9c24fd1fca49e269e1e3f15439c9c0","tarball":"https://registry.npmjs.org/@gulibs/vite-plugin-react-auto-routes/-/vite-plugin-react-auto-routes-0.0.6.tgz","fileCount":11,"integrity":"sha512-xCkFCJwfgcnLTlLMq5CYS+dC6nk6X+RuFdRG6hCkG7S5Zsc9Rrg2HKENuLjeP+hyzcr0TW2SludpPCebzFpROw==","signatures":[{"sig":"MEQCIDIJ+JR1zzaLzBLmz3bZU0UQBDX3ZLRlGTizUIdnqs9WAiAsSl/UNIiVt0QavuqiTKBPb1X1JzfR1lj8aLgTD1bvAg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25807},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","private":false,"scripts":{"build":"rollup --config --bundleConfigAsCjs"},"_npmUser":{"name":"gujiwen","email":"gujiwen2020@163.com"},"_npmVersion":"10.7.0","description":"React Auto Routes","directories":{},"_nodeVersion":"20.15.1","dependencies":{"chalk":"^5.3.0","dayjs":"^1.11.13","lodash":"^4.17.21","fast-glob":"^3.3.2","@antfu/utils":"^0.7.10"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.2","tslib":"^2.5.2","rollup":"^3.22.0","typescript":"^5.0.4","@babel/core":"^7.21.8","@types/node":"^20.2.1","@types/lodash":"^4.17.7","@babel/preset-env":"^7.21.5","rollup-plugin-babel":"^4.4.0","rollup-plugin-terser":"^7.0.2","@rollup/plugin-commonjs":"^25.0.0","@rollup/plugin-typescript":"^11.1.1","@rollup/plugin-node-resolve":"^15.0.2","rollup-plugin-polyfill-node":"^0.12.0"},"_npmOperationalInternal":{"tmp":"tmp/vite-plugin-react-auto-routes_0.0.6_1725628249161_0.7745538818377473","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.0.7":{"name":"@gulibs/vite-plugin-react-auto-routes","version":"0.0.7","keywords":["vite","react","react-router","vite plugin","auto route"],"author":{"name":"HectorGu"},"license":"MIT","_id":"@gulibs/vite-plugin-react-auto-routes@0.0.7","maintainers":[{"name":"gujiwen","email":"gujiwen2020@163.com"}],"dist":{"shasum":"a107bf5d95f766ea4de00067432c03cae2518860","tarball":"https://registry.npmjs.org/@gulibs/vite-plugin-react-auto-routes/-/vite-plugin-react-auto-routes-0.0.7.tgz","fileCount":11,"integrity":"sha512-g/G3aQhR0wz4i2Cs2W6F7c3R5ukQK7/U1sKush3L1CBJmCKWUrrutAS4f7Z2Z6wbjJEd71KvPklR1+13Df6UvQ==","signatures":[{"sig":"MEYCIQD0p8JbmX6W01f9lKszPMJN84FwMcE6coSh6NYQRgaFcgIhAIXBzM6PjDSjKub194wn816F2oeemIXdmPaK7ne3mJb9","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":26551},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","private":false,"scripts":{"build":"rollup --config --bundleConfigAsCjs"},"_npmUser":{"name":"gujiwen","email":"gujiwen2020@163.com"},"_npmVersion":"10.7.0","description":"React Auto Routes","directories":{},"_nodeVersion":"20.15.1","dependencies":{"chalk":"^5.3.0","dayjs":"^1.11.13","lodash":"^4.17.21","fast-glob":"^3.3.2","@antfu/utils":"^0.7.10"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.2","tslib":"^2.5.2","rollup":"^3.22.0","typescript":"^5.0.4","@babel/core":"^7.21.8","@types/node":"^20.2.1","@types/lodash":"^4.17.7","@babel/preset-env":"^7.21.5","rollup-plugin-babel":"^4.4.0","rollup-plugin-terser":"^7.0.2","@rollup/plugin-commonjs":"^25.0.0","@rollup/plugin-typescript":"^11.1.1","@rollup/plugin-node-resolve":"^15.0.2","rollup-plugin-polyfill-node":"^0.12.0"},"_npmOperationalInternal":{"tmp":"tmp/vite-plugin-react-auto-routes_0.0.7_1725696472270_0.11129954530004826","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.0.8":{"name":"@gulibs/vite-plugin-react-auto-routes","version":"0.0.8","keywords":["vite","react","react-router","vite plugin","auto route"],"author":{"name":"HectorGu"},"license":"MIT","_id":"@gulibs/vite-plugin-react-auto-routes@0.0.8","maintainers":[{"name":"gujiwen","email":"gujiwen2020@163.com"}],"dist":{"shasum":"f48e22449701dcff45b517f7fe1727c9a0628040","tarball":"https://registry.npmjs.org/@gulibs/vite-plugin-react-auto-routes/-/vite-plugin-react-auto-routes-0.0.8.tgz","fileCount":12,"integrity":"sha512-fqH4uol1tRKXKx1gP61oPUN4dKHbk+0Y6SGPhR0YpvXHHiCQimELmsMV7nIw+e73MqKvyVkYCtMrzQgOQINP6Q==","signatures":[{"sig":"MEQCIBigRF3JFkFaaSi0gS7f/57dA+6DWdzhTHXZzvXMCBISAiBpzNPd7wTcZ1t77Yv0a0vtCWXIZ6FuiReZsFvXsUUPDg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":27865},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","private":false,"scripts":{"build":"rollup --config --bundleConfigAsCjs"},"_npmUser":{"name":"gujiwen","email":"gujiwen2020@163.com"},"_npmVersion":"10.7.0","description":"React Auto Routes","directories":{},"_nodeVersion":"20.15.1","dependencies":{"chalk":"^5.3.0","dayjs":"^1.11.13","lodash":"^4.17.21","fast-glob":"^3.3.2","@antfu/utils":"^0.7.10"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.2","tslib":"^2.5.2","rollup":"^3.22.0","typescript":"^5.0.4","@babel/core":"^7.21.8","@types/node":"^20.2.1","@types/lodash":"^4.17.7","@babel/preset-env":"^7.21.5","rollup-plugin-babel":"^4.4.0","rollup-plugin-terser":"^7.0.2","@rollup/plugin-commonjs":"^25.0.0","@rollup/plugin-typescript":"^11.1.1","@rollup/plugin-node-resolve":"^15.0.2","rollup-plugin-polyfill-node":"^0.12.0"},"_npmOperationalInternal":{"tmp":"tmp/vite-plugin-react-auto-routes_0.0.8_1725702960453_0.15627620646619467","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.0.9":{"name":"@gulibs/vite-plugin-react-auto-routes","version":"0.0.9","keywords":["vite","react","react-router","vite plugin","auto route"],"author":{"name":"HectorGu"},"license":"MIT","_id":"@gulibs/vite-plugin-react-auto-routes@0.0.9","maintainers":[{"name":"gujiwen","email":"gujiwen2020@163.com"}],"dist":{"shasum":"08cdd9f7632a7113709bf65386f5845ee66d2093","tarball":"https://registry.npmjs.org/@gulibs/vite-plugin-react-auto-routes/-/vite-plugin-react-auto-routes-0.0.9.tgz","fileCount":10,"integrity":"sha512-ymds2CaRgAAV7kNv+91vxIcmnXYHnK3b2N+ylpfj85WnvPzhjbxfajI2QTsnnN67bBKUeLlO2ECwv8bnSbEMfA==","signatures":[{"sig":"MEUCIQDSP7i6Nw6+8gD8CkkAtDE8RYUzmml7QPcqFoInNQm96QIgWLZLyLlLrpCgHI4ajsrXrvWln8VZN92ibMQnesFZBFg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":26101},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","private":false,"scripts":{"build":"rollup --config --bundleConfigAsCjs"},"_npmUser":{"name":"gujiwen","email":"gujiwen2020@163.com"},"_npmVersion":"10.7.0","description":"React Auto Routes","directories":{},"_nodeVersion":"20.15.1","dependencies":{"chalk":"^5.3.0","dayjs":"^1.11.13","lodash":"^4.17.21","fast-glob":"^3.3.2","@antfu/utils":"^0.7.10"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.2","tslib":"^2.5.2","rollup":"^3.22.0","typescript":"^5.0.4","@babel/core":"^7.21.8","@types/node":"^20.2.1","@types/lodash":"^4.17.7","@babel/preset-env":"^7.21.5","rollup-plugin-babel":"^4.4.0","rollup-plugin-terser":"^7.0.2","@rollup/plugin-commonjs":"^25.0.0","@rollup/plugin-typescript":"^11.1.1","@rollup/plugin-node-resolve":"^15.0.2","rollup-plugin-polyfill-node":"^0.12.0"},"_npmOperationalInternal":{"tmp":"tmp/vite-plugin-react-auto-routes_0.0.9_1725711359159_0.6932847679718457","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.0.10":{"name":"@gulibs/vite-plugin-react-auto-routes","version":"0.0.10","keywords":["vite","react","react-router","vite plugin","auto route"],"author":{"name":"HectorGu"},"license":"MIT","_id":"@gulibs/vite-plugin-react-auto-routes@0.0.10","maintainers":[{"name":"gujiwen","email":"gujiwen2020@163.com"}],"dist":{"shasum":"b572100b03c0bae750fe86a5548a30746679dfe1","tarball":"https://registry.npmjs.org/@gulibs/vite-plugin-react-auto-routes/-/vite-plugin-react-auto-routes-0.0.10.tgz","fileCount":10,"integrity":"sha512-GXZcftD2ioE3yyeSFRSIde0dLWvBPeYWgB5hynpyuxdhdkNu9aIHWDkXrwfsprxsvih4/N/spRZZ9A/MFt6ZCw==","signatures":[{"sig":"MEUCIHaXNirkX2VXHwwwEgOpyi3simu3nvz8tsRw+2KthOUkAiEAl+VP33uwxbtPxoT/PPjiwP+B1g8/w6+Goe+1VHfL5qU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":26124},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","private":false,"scripts":{"build":"rollup --config --bundleConfigAsCjs"},"_npmUser":{"name":"gujiwen","email":"gujiwen2020@163.com"},"_npmVersion":"10.7.0","description":"React Auto Routes","directories":{},"_nodeVersion":"20.15.1","dependencies":{"chalk":"^5.3.0","dayjs":"^1.11.13","lodash":"^4.17.21","fast-glob":"^3.3.2","@antfu/utils":"^0.7.10"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.2","tslib":"^2.5.2","rollup":"^3.22.0","typescript":"^5.0.4","@babel/core":"^7.21.8","@types/node":"^20.2.1","@types/lodash":"^4.17.7","@babel/preset-env":"^7.21.5","rollup-plugin-babel":"^4.4.0","rollup-plugin-terser":"^7.0.2","@rollup/plugin-commonjs":"^25.0.0","@rollup/plugin-typescript":"^11.1.1","@rollup/plugin-node-resolve":"^15.0.2","rollup-plugin-polyfill-node":"^0.12.0"},"_npmOperationalInternal":{"tmp":"tmp/vite-plugin-react-auto-routes_0.0.10_1725717404506_0.4489474890300613","host":"s3://npm-registry-packages"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.0.11":{"name":"@gulibs/vite-plugin-react-auto-routes","version":"0.0.11","keywords":["vite","react","react-router","vite plugin","auto route"],"author":{"name":"HectorGu"},"license":"MIT","_id":"@gulibs/vite-plugin-react-auto-routes@0.0.11","maintainers":[{"name":"gujiwen","email":"gujiwen2020@163.com"}],"dist":{"shasum":"5337fac146c7e85b7b3378cd6bcf0a937a1fbd9b","tarball":"https://registry.npmjs.org/@gulibs/vite-plugin-react-auto-routes/-/vite-plugin-react-auto-routes-0.0.11.tgz","fileCount":13,"integrity":"sha512-PzVHrDII/HQh6hd3ToBil+BVVuJsM448hq7RlkoLAR3eMEhmHU5La76sE4LSr/ohPAZ/OG0NFx6rCO3aq29emw==","signatures":[{"sig":"MEUCIBzioLK4D8fA6sAgOCbhf7ig0CMeXm1fAl25EGA7VGqEAiEAskZO6SXDUKLT+YUx560pUUpKHuBTAC3wwxHmNMiVXVA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63527},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","private":false,"scripts":{"dev":"rollup --config --bundleConfigAsCjs --watch","lint":"eslint lib --ext .ts,.tsx","test":"vitest","build":"rollup --config --bundleConfigAsCjs","test:ui":"vitest --ui","lint:fix":"eslint lib --ext .ts,.tsx --fix","type-check":"tsc --noEmit","test:coverage":"vitest --coverage"},"_npmUser":{"name":"gujiwen","email":"gujiwen2020@163.com"},"_npmVersion":"10.9.2","description":"A Vite plugin for automatic file-based routing in React applications with TypeScript support","directories":{},"_nodeVersion":"23.11.0","dependencies":{"chalk":"^5.3.0","dayjs":"^1.11.13","react":"^19.1.0","lodash":"^4.17.21","fast-glob":"^3.3.2","@antfu/utils":"^0.7.10"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.2","tslib":"^2.5.2","eslint":"^8.57.0","rollup":"^3.22.0","vitest":"^1.6.0","@vitest/ui":"^1.6.0","typescript":"^5.0.4","@babel/core":"^7.21.8","@types/node":"^20.2.1","@types/react":"^19.1.4","react-router":"^7.6.0","@types/lodash":"^4.17.16","@babel/preset-env":"^7.21.5","@remix-run/router":"^1.23.0","@heroui/breadcrumbs":"^2.2.15","@vitest/coverage-v8":"^1.6.0","@rollup/plugin-babel":"^6.0.4","rollup-plugin-terser":"^7.0.2","@rollup/plugin-commonjs":"^25.0.0","@rollup/plugin-typescript":"^11.1.1","@typescript-eslint/parser":"^6.21.0","@rollup/plugin-node-resolve":"^15.0.2","rollup-plugin-polyfill-node":"^0.13.0","@typescript-eslint/eslint-plugin":"^6.21.0"},"_npmOperationalInternal":{"tmp":"tmp/vite-plugin-react-auto-routes_0.0.11_1748089928716_0.20039704425563953","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.0.12":{"name":"@gulibs/vite-plugin-react-auto-routes","version":"0.0.12","keywords":["vite","react","react-router","vite plugin","auto route"],"author":{"name":"HectorGu"},"license":"MIT","_id":"@gulibs/vite-plugin-react-auto-routes@0.0.12","maintainers":[{"name":"gujiwen","email":"gujiwen2020@163.com"}],"dist":{"shasum":"0c3380e253bbf63c861bfc4372366effc64a2880","tarball":"https://registry.npmjs.org/@gulibs/vite-plugin-react-auto-routes/-/vite-plugin-react-auto-routes-0.0.12.tgz","fileCount":13,"integrity":"sha512-W2TMq+CcLVhREPBU/jNXLKf288e9duvpaF8WSpsNcmVV9Eb61/vfIX4ri7+awxaPE9poMYsgz1Q1bQ4C7srv3Q==","signatures":[{"sig":"MEUCIDSnrvLsCk6R8lGlT6iMgocq3OxDddNyw9mkyPUc89LUAiEAuNy6aa5qPB9c0twnr8tTsQkSekWeqn/Xu2kS/pSsbKQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63514},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","private":false,"scripts":{"dev":"rollup --config --bundleConfigAsCjs --watch","lint":"eslint lib --ext .ts,.tsx","test":"vitest","build":"rollup --config --bundleConfigAsCjs","test:ui":"vitest --ui","lint:fix":"eslint lib --ext .ts,.tsx --fix","type-check":"tsc --noEmit","test:coverage":"vitest --coverage"},"_npmUser":{"name":"gujiwen","email":"gujiwen2020@163.com"},"_npmVersion":"10.9.2","description":"A Vite plugin for automatic file-based routing in React applications with TypeScript support","directories":{},"_nodeVersion":"23.11.0","dependencies":{"chalk":"^5.3.0","dayjs":"^1.11.13","react":"^19.1.0","lodash":"^4.17.21","fast-glob":"^3.3.2","@antfu/utils":"^0.7.10"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.2","tslib":"^2.5.2","eslint":"^8.57.0","rollup":"^3.22.0","vitest":"^1.6.0","@vitest/ui":"^1.6.0","typescript":"^5.0.4","@babel/core":"^7.21.8","@types/node":"^20.2.1","@types/react":"^19.1.4","react-router":"^7.6.0","@types/lodash":"^4.17.16","@babel/preset-env":"^7.21.5","@remix-run/router":"^1.23.0","@heroui/breadcrumbs":"^2.2.15","@vitest/coverage-v8":"^1.6.0","@rollup/plugin-babel":"^6.0.4","rollup-plugin-terser":"^7.0.2","@rollup/plugin-commonjs":"^25.0.0","@rollup/plugin-typescript":"^11.1.1","@typescript-eslint/parser":"^6.21.0","@rollup/plugin-node-resolve":"^15.0.2","rollup-plugin-polyfill-node":"^0.13.0","@typescript-eslint/eslint-plugin":"^6.21.0"},"_npmOperationalInternal":{"tmp":"tmp/vite-plugin-react-auto-routes_0.0.12_1748091017646_0.1533004721326081","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.1.0":{"name":"@gulibs/vite-plugin-react-auto-routes","version":"0.1.0","keywords":["vite","react","react-router","vite plugin","auto route"],"author":{"name":"HectorGu"},"license":"MIT","_id":"@gulibs/vite-plugin-react-auto-routes@0.1.0","maintainers":[{"name":"gujiwen","email":"gujiwen2020@163.com"}],"dist":{"shasum":"55da124bd63195a6dcfba3c2585d0c0d483b837c","tarball":"https://registry.npmjs.org/@gulibs/vite-plugin-react-auto-routes/-/vite-plugin-react-auto-routes-0.1.0.tgz","fileCount":15,"integrity":"sha512-93H0EVZv+KXaIQDOmJIo4cTMI15UnfGZoZBBOSsAAe9TfD6U+M7tlqvJ5+mglDg0N9gpuzXrbMGJy9ZNVYDa5w==","signatures":[{"sig":"MEUCIQCIYa5J4n6VG3ySIW76q09ka5FKYApFnkOu5IrhOaTGMgIgFLlfo81Lob1ZrMZdQ2eNQu751O+0R2ru2M6yW7hZgUs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":57402},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./hook":{"types":"./dist/hook.d.ts","import":"./dist/hook.js"}},"private":false,"scripts":{"dev":"rollup --config --bundleConfigAsCjs --watch","lint":"eslint lib --ext .ts,.tsx","test":"vitest","build":"rollup --config --bundleConfigAsCjs","test:ui":"vitest --ui","lint:fix":"eslint lib --ext .ts,.tsx --fix","type-check":"tsc --noEmit","test:coverage":"vitest --coverage"},"_npmUser":{"name":"gujiwen","email":"gujiwen2020@163.com"},"_npmVersion":"10.9.2","description":"A Vite plugin for automatic file-based routing in React applications with TypeScript support","directories":{},"_nodeVersion":"23.11.0","dependencies":{"chalk":"^5.3.0","dayjs":"^1.11.13","react":"^19.1.0","lodash":"^4.17.21","fast-glob":"^3.3.2","@antfu/utils":"^0.7.10"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.2","tslib":"^2.5.2","eslint":"^8.57.0","rollup":"^3.22.0","vitest":"^1.6.0","@vitest/ui":"^1.6.0","typescript":"^5.0.4","@babel/core":"^7.21.8","@types/node":"^20.2.1","@types/react":"^19.1.4","react-router":"^7.6.0","@types/lodash":"^4.17.16","@babel/preset-env":"^7.21.5","@remix-run/router":"^1.23.0","@heroui/breadcrumbs":"^2.2.15","@vitest/coverage-v8":"^1.6.0","@rollup/plugin-babel":"^6.0.4","rollup-plugin-terser":"^7.0.2","@rollup/plugin-commonjs":"^25.0.0","@rollup/plugin-typescript":"^11.1.1","@typescript-eslint/parser":"^6.21.0","@rollup/plugin-node-resolve":"^15.0.2","rollup-plugin-polyfill-node":"^0.13.0","@typescript-eslint/eslint-plugin":"^6.21.0"},"_npmOperationalInternal":{"tmp":"tmp/vite-plugin-react-auto-routes_0.1.0_1748091484631_0.8437636349077879","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.1.1":{"name":"@gulibs/vite-plugin-react-auto-routes","version":"0.1.1","keywords":["vite","react","react-router","vite plugin","auto route"],"author":{"name":"HectorGu"},"license":"MIT","_id":"@gulibs/vite-plugin-react-auto-routes@0.1.1","maintainers":[{"name":"gujiwen","email":"gujiwen2020@163.com"}],"dist":{"shasum":"7f9ff7a794c9d5b77e2593b38f78c3876fdf1fe8","tarball":"https://registry.npmjs.org/@gulibs/vite-plugin-react-auto-routes/-/vite-plugin-react-auto-routes-0.1.1.tgz","fileCount":15,"integrity":"sha512-wUkLBnV3DCS+0kajJDcKNA43qsWUyJvj8UlrakZ2O+ls5OcjywLDBwCwNV4Wel4BtTPtvTt8kcP6u3ldMqR4JA==","signatures":[{"sig":"MEQCIFqa5UQKnmR0GgIqFovS8yMe/nVepMriI3Sa7aLdj5f1AiA010wkLl2F30ON9ECZtJLn9W4Wv0is0ooT14vQ3vXB5g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":56518},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./hook":{"types":"./dist/hook.d.ts","import":"./dist/hook.js"}},"private":false,"scripts":{"dev":"rollup --config --bundleConfigAsCjs --watch","lint":"eslint lib --ext .ts,.tsx","test":"vitest","build":"rollup --config --bundleConfigAsCjs","test:ui":"vitest --ui","lint:fix":"eslint lib --ext .ts,.tsx --fix","type-check":"tsc --noEmit","test:coverage":"vitest --coverage"},"_npmUser":{"name":"gujiwen","email":"gujiwen2020@163.com"},"_npmVersion":"10.9.2","description":"A Vite plugin for automatic file-based routing in React applications with TypeScript support","directories":{},"_nodeVersion":"23.11.0","dependencies":{"chalk":"^5.3.0","dayjs":"^1.11.13","react":"^19.1.0","lodash":"^4.17.21","fast-glob":"^3.3.2","@antfu/utils":"^0.7.10"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.2","tslib":"^2.5.2","eslint":"^8.57.0","rollup":"^3.22.0","vitest":"^1.6.0","@vitest/ui":"^1.6.0","typescript":"^5.0.4","@babel/core":"^7.21.8","@types/node":"^20.2.1","@types/react":"^19.1.4","react-router":"^7.6.0","@types/lodash":"^4.17.16","@babel/preset-env":"^7.21.5","@remix-run/router":"^1.23.0","@heroui/breadcrumbs":"^2.2.15","@vitest/coverage-v8":"^1.6.0","@rollup/plugin-babel":"^6.0.4","rollup-plugin-terser":"^7.0.2","@rollup/plugin-commonjs":"^25.0.0","@rollup/plugin-typescript":"^11.1.1","@typescript-eslint/parser":"^6.21.0","@rollup/plugin-node-resolve":"^15.0.2","rollup-plugin-polyfill-node":"^0.13.0","@typescript-eslint/eslint-plugin":"^6.21.0"},"_npmOperationalInternal":{"tmp":"tmp/vite-plugin-react-auto-routes_0.1.1_1748098989527_0.8286830531074565","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.1.2":{"name":"@gulibs/vite-plugin-react-auto-routes","version":"0.1.2","keywords":["vite","react","react-router","vite plugin","auto route"],"author":{"name":"HectorGu"},"license":"MIT","_id":"@gulibs/vite-plugin-react-auto-routes@0.1.2","maintainers":[{"name":"gujiwen","email":"gujiwen2020@163.com"}],"dist":{"shasum":"c170e0ee8072ad488e15a86f79cc1c637fccaed0","tarball":"https://registry.npmjs.org/@gulibs/vite-plugin-react-auto-routes/-/vite-plugin-react-auto-routes-0.1.2.tgz","fileCount":15,"integrity":"sha512-DUel2oyffQf4lPaHHKoumJI/snz2PP+Yl/1n4Brj+0hH9ppstYoqBcL9v6lFr5W8SzG9SAuR8xTaThV0s9Wrzg==","signatures":[{"sig":"MEQCIH9YmnUG1I5cJ+r+qTp/PaouwHW9nQnGWhmYVzB+fyiyAiAur4sy34Zlg8EYNoEZm5dSerSdvcuophHrc2Jj7NOdIA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":57779},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./hook":{"types":"./dist/hook.d.ts","import":"./dist/hook.js"}},"private":false,"scripts":{"dev":"rollup --config --bundleConfigAsCjs --watch","lint":"eslint lib --ext .ts,.tsx","test":"vitest","build":"rollup --config --bundleConfigAsCjs","test:ui":"vitest --ui","lint:fix":"eslint lib --ext .ts,.tsx --fix","type-check":"tsc --noEmit","test:coverage":"vitest --coverage"},"_npmUser":{"name":"gujiwen","email":"gujiwen2020@163.com"},"_npmVersion":"10.9.2","description":"A Vite plugin for automatic file-based routing in React applications with TypeScript support","directories":{},"_nodeVersion":"23.11.0","dependencies":{"chalk":"^5.3.0","dayjs":"^1.11.13","react":"^19.1.0","lodash":"^4.17.21","fast-glob":"^3.3.2","@antfu/utils":"^0.7.10"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.2","tslib":"^2.5.2","eslint":"^8.57.0","rollup":"^3.22.0","vitest":"^1.6.0","@vitest/ui":"^1.6.0","typescript":"^5.0.4","@babel/core":"^7.21.8","@types/node":"^20.2.1","@types/react":"^19.1.4","react-router":"^7.6.0","@types/lodash":"^4.17.16","@babel/preset-env":"^7.21.5","@remix-run/router":"^1.23.0","@heroui/breadcrumbs":"^2.2.15","@vitest/coverage-v8":"^1.6.0","@rollup/plugin-babel":"^6.0.4","rollup-plugin-terser":"^7.0.2","@rollup/plugin-commonjs":"^25.0.0","@rollup/plugin-typescript":"^11.1.1","@typescript-eslint/parser":"^6.21.0","@rollup/plugin-node-resolve":"^15.0.2","rollup-plugin-polyfill-node":"^0.13.0","@typescript-eslint/eslint-plugin":"^6.21.0"},"_npmOperationalInternal":{"tmp":"tmp/vite-plugin-react-auto-routes_0.1.2_1748099987514_0.5311131719998092","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.1.5":{"name":"@gulibs/vite-plugin-react-auto-routes","version":"0.1.5","keywords":["vite","react","react-router","vite plugin","auto route"],"author":{"name":"HectorGu"},"license":"MIT","_id":"@gulibs/vite-plugin-react-auto-routes@0.1.5","maintainers":[{"name":"gujiwen","email":"gujiwen2020@163.com"}],"dist":{"shasum":"bac15c98a79355566c896121b769b4974cfce7b3","tarball":"https://registry.npmjs.org/@gulibs/vite-plugin-react-auto-routes/-/vite-plugin-react-auto-routes-0.1.5.tgz","fileCount":11,"integrity":"sha512-DD4G8//LC6ZtXgWIuQsTTUeUVrfXYJr3baG6Y8qCL1OfExThBJm85UQRgXhZq8OGRbA7qIXUeI9lA+ny9MbDww==","signatures":[{"sig":"MEUCIQC1Wn3XviKTAimNQRaQT5vvhfB4DXqmjjqE2x1Xz/9IXwIgCxlZXxvcOTB+gi8vgT/bo6m1v1lhU5bhc+7A3/wonwI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29116},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","private":false,"scripts":{"build":"rollup --config --bundleConfigAsCjs"},"_npmUser":{"name":"gujiwen","email":"gujiwen2020@163.com"},"_npmVersion":"10.9.2","description":"React Auto Routes","directories":{},"_nodeVersion":"23.11.0","dependencies":{"chalk":"^5.3.0","dayjs":"^1.11.13","fast-glob":"^3.3.2","@antfu/utils":"^0.7.10","react-router":"^7.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.2","tslib":"^2.5.2","rollup":"^3.22.0","typescript":"^5.0.4","@babel/core":"^7.21.8","@types/node":"^20.2.1","@types/react":"^19.1.4","@types/lodash":"^4.17.16","@babel/preset-env":"^7.21.5","@remix-run/router":"^1.23.0","rollup-plugin-babel":"^4.4.0","rollup-plugin-terser":"^7.0.2","@rollup/plugin-commonjs":"^25.0.0","@rollup/plugin-typescript":"^11.1.1","@rollup/plugin-node-resolve":"^15.0.2","rollup-plugin-polyfill-node":"^0.12.0"},"_npmOperationalInternal":{"tmp":"tmp/vite-plugin-react-auto-routes_0.1.5_1748108301342_0.6912427735669968","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.1.6":{"name":"@gulibs/vite-plugin-react-auto-routes","version":"0.1.6","keywords":["vite","react","react-router","vite plugin","auto route"],"author":{"name":"HectorGu"},"license":"MIT","_id":"@gulibs/vite-plugin-react-auto-routes@0.1.6","maintainers":[{"name":"gujiwen","email":"gujiwen2020@163.com"}],"dist":{"shasum":"4b3ed8c8924acd1c1185a4eadc3db823a6393489","tarball":"https://registry.npmjs.org/@gulibs/vite-plugin-react-auto-routes/-/vite-plugin-react-auto-routes-0.1.6.tgz","fileCount":15,"integrity":"sha512-szR2tCsM/BkYwpvhkCyWJ17WjfWv3MopeLfrVc8tcNLPceW+wPUj4vNa3MC50XOoOfNMFiHCiVg2Nsjd9vkfAQ==","signatures":[{"sig":"MEYCIQDRm7KN2ASR2dmnrzbR6cMtok81vs9qPAByTVFVAF/MUgIhALpq11+3FB/XMuLEi53FCjIHX9nO8gRT18GuVPoluIht","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":31672},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./hook":{"types":"./dist/hook.d.ts","import":"./dist/hook.js"}},"private":false,"scripts":{"build":"rollup --config --bundleConfigAsCjs"},"_npmUser":{"name":"gujiwen","email":"gujiwen2020@163.com"},"_npmVersion":"10.9.2","description":"A Vite plugin for automatic file-based routing in React applications with TypeScript support","directories":{},"_nodeVersion":"23.11.0","dependencies":{"chalk":"^5.3.0","dayjs":"^1.11.13","react":"^19.1.0","lodash":"^4.17.21","fast-glob":"^3.3.2","@antfu/utils":"^0.7.10"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.2","tslib":"^2.5.2","rollup":"^3.22.0","typescript":"^5.0.4","@babel/core":"^7.21.8","@types/node":"^20.2.1","@types/react":"^19.1.4","react-router":"^7.6.0","@types/lodash":"^4.17.16","@babel/preset-env":"^7.21.5","@remix-run/router":"^1.23.0","@heroui/breadcrumbs":"^2.2.15","@types/react-router":"^5.1.20","@rollup/plugin-babel":"^6.0.4","rollup-plugin-terser":"^7.0.2","@rollup/plugin-commonjs":"^25.0.0","@rollup/plugin-typescript":"^11.1.1","@rollup/plugin-node-resolve":"^15.0.2","rollup-plugin-polyfill-node":"^0.13.0"},"_npmOperationalInternal":{"tmp":"tmp/vite-plugin-react-auto-routes_0.1.6_1748108619624_0.13830657199198315","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.1.7":{"name":"@gulibs/vite-plugin-react-auto-routes","version":"0.1.7","keywords":["vite","plugin","react","router","auto-routes","file-based-routing","typescript"],"author":{"name":"Your Name"},"license":"MIT","_id":"@gulibs/vite-plugin-react-auto-routes@0.1.7","maintainers":[{"name":"gujiwen","email":"gujiwen2020@163.com"}],"homepage":"https://github.com/gulibs/vite-plugin-react-auto-routes#readme","bugs":{"url":"https://github.com/gulibs/vite-plugin-react-auto-routes/issues"},"dist":{"shasum":"81945b7f9ac72381b05689e0d6bbde8d0aa171ab","tarball":"https://registry.npmjs.org/@gulibs/vite-plugin-react-auto-routes/-/vite-plugin-react-auto-routes-0.1.7.tgz","fileCount":9,"integrity":"sha512-nSBUN0jyWnpCiMwHx0S5F0SNpZ7r0zSbNrhH77VxV1ww+HGLcAwWf7z4EIetiiEuwHODQPXJUAAIoK+UQSwICA==","signatures":[{"sig":"MEQCIGQbBy0wFhoUQtVk6ff4MqkJInc4kbcedkA1PAkkDAZzAiBkgSHdbyVYU/nI4HkyB1u15XaUif39MkJHOMNcRa6MzA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1859616},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./hook":{"types":"./hook.d.ts","import":"./hook.js"},"./react-routes":"./react-routes.d.ts"},"scripts":{"dev":"rollup -c -w","lint":"eslint lib --ext .ts,.tsx","test":"vitest","build":"rollup -c","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"gujiwen","email":"gujiwen2020@163.com"},"repository":{"url":"git+https://github.com/gulibs/vite-plugin-react-auto-routes.git","type":"git"},"_npmVersion":"10.9.2","description":"一个强大的 Vite 插件，为 React 应用程序提供基于文件系统的自动路由生成功能","directories":{},"_nodeVersion":"23.11.0","dependencies":{"chalk":"^5.4.1","dayjs":"^1.11.13","lodash":"^4.17.21","fast-glob":"^3.3.3"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.5","react":"^19.1.0","tslib":"^2.8.1","eslint":"^9.27.0","rollup":"^4.41.1","vitest":"^3.1.4","react-dom":"^19.1.0","typescript":"^5.8.3","@types/node":"^22.15.21","@types/react":"^19.1.5","@types/lodash":"^4.17.17","react-router-dom":"^7.6.0","rollup-plugin-dts":"^6.2.1","@rollup/plugin-commonjs":"^28.0.3","@rollup/plugin-typescript":"^12.1.2","@typescript-eslint/parser":"^8.32.1","@rollup/plugin-node-resolve":"^16.0.1","@typescript-eslint/eslint-plugin":"^8.32.1"},"peerDependencies":{"vite":">=4.0.0","react":">=16.8.0","react-dom":">=16.8.0","react-router-dom":">=6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vite-plugin-react-auto-routes_0.1.7_1748124878177_0.12246602979740584","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.1.8":{"name":"@gulibs/vite-plugin-react-auto-routes","version":"0.1.8","keywords":["vite","plugin","react","router","auto-routes","file-based-routing","typescript"],"author":{"name":"Your Name"},"license":"MIT","_id":"@gulibs/vite-plugin-react-auto-routes@0.1.8","maintainers":[{"name":"gujiwen","email":"gujiwen2020@163.com"}],"homepage":"https://github.com/gulibs/vite-plugin-react-auto-routes#readme","bugs":{"url":"https://github.com/gulibs/vite-plugin-react-auto-routes/issues"},"dist":{"shasum":"9f3cf118c78b5c7f1a49845967a7a061428c0177","tarball":"https://registry.npmjs.org/@gulibs/vite-plugin-react-auto-routes/-/vite-plugin-react-auto-routes-0.1.8.tgz","fileCount":9,"integrity":"sha512-QJ6jqj27Lh1+1pwc57R9uU6gf4UvVmAFi3beqsHIXITHnKy/4/Q6UvlRFPm6QLlq4IvxKxKnF7MccEDrIEEibw==","signatures":[{"sig":"MEYCIQDE085zrTEUfO9UQKu4/hCckgU4kRPcNK1onW2PHAqswgIhALL6RWumanWbJutapyb3OCo4GwIdIXrpET0BD+nFARTs","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1791006},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./hook":{"types":"./hook.d.ts","import":"./hook.js"},"./react-routes":"./react-routes.d.ts"},"scripts":{"dev":"rollup -c -w","lint":"eslint lib --ext .ts,.tsx","test":"vitest","build":"rollup -c","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"gujiwen","email":"gujiwen2020@163.com"},"repository":{"url":"git+https://github.com/gulibs/vite-plugin-react-auto-routes.git","type":"git"},"_npmVersion":"10.9.2","description":"一个强大的 Vite 插件，为 React 应用程序提供基于文件系统的自动路由生成功能","directories":{},"_nodeVersion":"23.11.0","dependencies":{"chalk":"^5.4.1","dayjs":"^1.11.13","lodash":"^4.17.21","fast-glob":"^3.3.3"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.5","react":"^19.1.0","tslib":"^2.8.1","eslint":"^9.27.0","rollup":"^4.41.1","vitest":"^3.1.4","react-dom":"^19.1.0","typescript":"^5.8.3","@types/node":"^22.15.21","@types/react":"^19.1.5","react-router":"^7.6.0","@types/lodash":"^4.17.17","rollup-plugin-dts":"^6.2.1","@rollup/plugin-commonjs":"^28.0.3","@rollup/plugin-typescript":"^12.1.2","@typescript-eslint/parser":"^8.32.1","@rollup/plugin-node-resolve":"^16.0.1","@typescript-eslint/eslint-plugin":"^8.32.1"},"peerDependencies":{"vite":">=4.0.0","react":">=16.8.0","react-dom":">=16.8.0","react-router":">=7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/vite-plugin-react-auto-routes_0.1.8_1748125551780_0.1396133444681702","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.1.9":{"name":"@gulibs/vite-plugin-react-auto-routes","version":"0.1.9","keywords":["vite","plugin","react","router","auto-routes","file-based-routing","typescript"],"author":{"name":"Your Name"},"license":"MIT","_id":"@gulibs/vite-plugin-react-auto-routes@0.1.9","maintainers":[{"name":"gujiwen","email":"gujiwen2020@163.com"}],"homepage":"https://github.com/gulibs/vite-plugin-react-auto-routes#readme","bugs":{"url":"https://github.com/gulibs/vite-plugin-react-auto-routes/issues"},"dist":{"shasum":"c65c5932d7d1dddfeefdb97967f59d28d8c3e517","tarball":"https://registry.npmjs.org/@gulibs/vite-plugin-react-auto-routes/-/vite-plugin-react-auto-routes-0.1.9.tgz","fileCount":9,"integrity":"sha512-iZHWfJjpRSgSqQUf4/bsWrOtXAXaQjaJC51HMSp7IPWI2K/x5J9aQ9LNLuWpJu14a8+JcPq/Y0BA4i6lqVwcIQ==","signatures":[{"sig":"MEUCIBj291xgUaO0+7nqK2+sgioRCqWhEPdXnf2MhGeg+D3yAiEAyRqhTsXxxW4U4wWXR5Tse666tIxSGukxU52U1iqW0uo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1790541},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./hook":{"types":"./hook.d.ts","import":"./hook.js"},"./react-routes":"./react-routes.d.ts"},"scripts":{"dev":"rollup -c -w","lint":"eslint lib --ext .ts,.tsx","test":"vitest","build":"rollup -c","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"gujiwen","email":"gujiwen2020@163.com"},"repository":{"url":"git+https://github.com/gulibs/vite-plugin-react-auto-routes.git","type":"git"},"_npmVersion":"10.9.2","description":"一个强大的 Vite 插件，为 React 应用程序提供基于文件系统的自动路由生成功能","directories":{},"_nodeVersion":"23.11.0","dependencies":{"chalk":"^5.4.1","dayjs":"^1.11.13","lodash":"^4.17.21","fast-glob":"^3.3.3"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.5","react":"^19.1.0","tslib":"^2.8.1","eslint":"^9.27.0","rollup":"^4.41.1","vitest":"^3.1.4","react-dom":"^19.1.0","typescript":"^5.8.3","@types/node":"^22.15.21","@types/react":"^19.1.5","react-router":"^7.6.0","@types/lodash":"^4.17.17","rollup-plugin-dts":"^6.2.1","@rollup/plugin-commonjs":"^28.0.3","@rollup/plugin-typescript":"^12.1.2","@typescript-eslint/parser":"^8.32.1","@rollup/plugin-node-resolve":"^16.0.1","@typescript-eslint/eslint-plugin":"^8.32.1"},"peerDependencies":{"vite":">=4.0.0","react":">=16.8.0","react-dom":">=16.8.0","react-router":">=7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/vite-plugin-react-auto-routes_0.1.9_1748126529785_0.19943650820746406","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.1.10":{"name":"@gulibs/vite-plugin-react-auto-routes","version":"0.1.10","keywords":["vite","plugin","react","router","auto-routes","file-based-routing","typescript"],"author":{"name":"HectorGu"},"license":"MIT","_id":"@gulibs/vite-plugin-react-auto-routes@0.1.10","maintainers":[{"name":"gujiwen","email":"gujiwen2020@163.com"}],"homepage":"https://github.com/gulibs/vite-plugin-react-auto-routes#readme","bugs":{"url":"https://github.com/gulibs/vite-plugin-react-auto-routes/issues"},"dist":{"shasum":"85e802b80123ac47c7bf8d67eeebb2d0287d25e8","tarball":"https://registry.npmjs.org/@gulibs/vite-plugin-react-auto-routes/-/vite-plugin-react-auto-routes-0.1.10.tgz","fileCount":9,"integrity":"sha512-E7tkmSaZ2qzGwR0iWSLwYfLaIQWDoA7RzrqzajwF19kc/y88KDRNqnHhF4BGmNJewmJr6R1UnqGJoyHwFtPS5A==","signatures":[{"sig":"MEUCIQDmAPej6vmdHNN0dUfKfy4W5sbWleJA5W3JTV9YfbCHxgIgBovYTkka/O97uMDAe0Y8S8BlRrHiU43PKcU2UHoyHtA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1790541},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./hook":{"types":"./hook.d.ts","import":"./hook.js"},"./react-routes":"./react-routes.d.ts"},"scripts":{"dev":"rollup -c -w","lint":"eslint lib --ext .ts,.tsx","test":"vitest","build":"rollup -c","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"gujiwen","email":"gujiwen2020@163.com"},"repository":{"url":"git+https://github.com/gulibs/vite-plugin-react-auto-routes.git","type":"git"},"_npmVersion":"10.9.2","description":"一个强大的 Vite 插件，为 React 应用程序提供基于文件系统的自动路由生成功能","directories":{},"_nodeVersion":"23.11.0","dependencies":{"chalk":"^5.4.1","dayjs":"^1.11.13","lodash":"^4.17.21","fast-glob":"^3.3.3"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.5","react":"^19.1.0","tslib":"^2.8.1","eslint":"^9.27.0","rollup":"^4.41.1","vitest":"^3.1.4","react-dom":"^19.1.0","typescript":"^5.8.3","@types/node":"^22.15.21","@types/react":"^19.1.5","react-router":"^7.6.0","@types/lodash":"^4.17.17","rollup-plugin-dts":"^6.2.1","@rollup/plugin-commonjs":"^28.0.3","@rollup/plugin-typescript":"^12.1.2","@typescript-eslint/parser":"^8.32.1","@rollup/plugin-node-resolve":"^16.0.1","@typescript-eslint/eslint-plugin":"^8.32.1"},"peerDependencies":{"vite":">=4.0.0","react":">=16.8.0","react-dom":">=16.8.0","react-router":">=7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/vite-plugin-react-auto-routes_0.1.10_1748126582361_0.3479481089038148","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.1.11":{"name":"@gulibs/vite-plugin-react-auto-routes","version":"0.1.11","keywords":["vite","plugin","react","router","auto-routes","file-based-routing","typescript"],"author":{"name":"HectorGu"},"license":"MIT","_id":"@gulibs/vite-plugin-react-auto-routes@0.1.11","maintainers":[{"name":"gujiwen","email":"gujiwen2020@163.com"}],"homepage":"https://github.com/gulibs/vite-plugin-react-auto-routes#readme","bugs":{"url":"https://github.com/gulibs/vite-plugin-react-auto-routes/issues"},"dist":{"shasum":"5d1406f2e9ead4188b383a494cf66c68e429dcfa","tarball":"https://registry.npmjs.org/@gulibs/vite-plugin-react-auto-routes/-/vite-plugin-react-auto-routes-0.1.11.tgz","fileCount":9,"integrity":"sha512-HtRs5AXGTHMzEiwwelVHC7d8JrWYwyLjbd1BOJD6L1ViOdi2Ei7hW038z7tRn4nirjyCkqdir8SV9EFSQ7mvHA==","signatures":[{"sig":"MEUCIQCu72FzkWZCxen2QWnTb2Q7ZW2if31EbA1q/lWaeO54sAIgCCiaGwTVj3Ufu5gKcw6thSF+O7kKO7bMbVffSbdyaFE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1791088},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./hook":{"types":"./hook.d.ts","import":"./hook.js"},"./react-routes":"./react-routes.d.ts"},"scripts":{"dev":"rollup -c -w","lint":"eslint lib --ext .ts,.tsx","test":"vitest","build":"rollup -c","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"gujiwen","email":"gujiwen2020@163.com"},"repository":{"url":"git+https://github.com/gulibs/vite-plugin-react-auto-routes.git","type":"git"},"_npmVersion":"10.9.2","description":"一个基于文件系统的自动路由生成 Vite 插件，为 React 应用程序提供基于文件系统的自动路由生成功能","directories":{},"_nodeVersion":"23.11.0","dependencies":{"chalk":"^5.4.1","dayjs":"^1.11.13","lodash":"^4.17.21","fast-glob":"^3.3.3"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.5","react":"^19.1.0","tslib":"^2.8.1","eslint":"^9.27.0","rollup":"^4.41.1","vitest":"^3.1.4","react-dom":"^19.1.0","typescript":"^5.8.3","@types/node":"^22.15.21","@types/react":"^19.1.5","react-router":"^7.6.0","@types/lodash":"^4.17.17","rollup-plugin-dts":"^6.2.1","@rollup/plugin-commonjs":"^28.0.3","@rollup/plugin-typescript":"^12.1.2","@typescript-eslint/parser":"^8.32.1","@rollup/plugin-node-resolve":"^16.0.1","@typescript-eslint/eslint-plugin":"^8.32.1"},"peerDependencies":{"vite":">=4.0.0","react":">=16.8.0","react-dom":">=16.8.0","react-router":">=7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/vite-plugin-react-auto-routes_0.1.11_1748128936423_0.3418304351720891","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.1.12":{"name":"@gulibs/vite-plugin-react-auto-routes","version":"0.1.12","keywords":["vite","plugin","react","router","auto-routes","file-based-routing","typescript"],"author":{"name":"HectorGu"},"license":"MIT","_id":"@gulibs/vite-plugin-react-auto-routes@0.1.12","maintainers":[{"name":"gujiwen","email":"gujiwen2020@163.com"}],"homepage":"https://github.com/gulibs/vite-plugin-react-auto-routes#readme","bugs":{"url":"https://github.com/gulibs/vite-plugin-react-auto-routes/issues"},"dist":{"shasum":"6f4119b2fc57d6bd646d1ba9cc9ce93d83e178ee","tarball":"https://registry.npmjs.org/@gulibs/vite-plugin-react-auto-routes/-/vite-plugin-react-auto-routes-0.1.12.tgz","fileCount":9,"integrity":"sha512-Wn3Ln7izz/O82o2mBxK7UVnqoJ+23zpibmqjDVBufk6+VI65aK5I5+fnmvlxz2BPWugXUrAc5RMzZBcOP6NHOw==","signatures":[{"sig":"MEUCIG+eh7LvNPT+hbjt08AH647jTjxu+OPkeZmovMlHbi4KAiEAswm1SLi7eu89LPpvdQSf9NADDIui60ODMOJvlZTWKLk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1791065},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./hook":{"types":"./hook.d.ts","import":"./hook.js"},"./react-routes":"./react-routes.d.ts"},"scripts":{"dev":"rollup -c -w","lint":"eslint lib --ext .ts,.tsx","test":"vitest","build":"rollup -c","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"gujiwen","email":"gujiwen2020@163.com"},"repository":{"url":"git+https://github.com/gulibs/vite-plugin-react-auto-routes.git","type":"git"},"_npmVersion":"10.9.2","description":"一个基于文件系统的自动路由生成 Vite 插件，为 React 应用程序提供基于文件系统的自动路由生成功能","directories":{},"_nodeVersion":"23.11.0","dependencies":{"chalk":"^5.4.1","dayjs":"^1.11.13","lodash":"^4.17.21","fast-glob":"^3.3.3"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.5","react":"^19.1.0","tslib":"^2.8.1","eslint":"^9.27.0","rollup":"^4.41.1","vitest":"^3.1.4","react-dom":"^19.1.0","typescript":"^5.8.3","@types/node":"^22.15.21","@types/react":"^19.1.5","react-router":"^7.6.0","@types/lodash":"^4.17.17","rollup-plugin-dts":"^6.2.1","@rollup/plugin-commonjs":"^28.0.3","@rollup/plugin-typescript":"^12.1.2","@typescript-eslint/parser":"^8.32.1","@rollup/plugin-node-resolve":"^16.0.1","@typescript-eslint/eslint-plugin":"^8.32.1"},"peerDependencies":{"vite":">=4.0.0","react":">=16.8.0","react-dom":">=16.8.0","react-router":">=7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/vite-plugin-react-auto-routes_0.1.12_1748129361227_0.608224568695833","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.1.13":{"name":"@gulibs/vite-plugin-react-auto-routes","version":"0.1.13","keywords":["vite","plugin","react","router","auto-routes","file-based-routing","typescript"],"author":{"name":"HectorGu"},"license":"MIT","_id":"@gulibs/vite-plugin-react-auto-routes@0.1.13","maintainers":[{"name":"gujiwen","email":"gujiwen2020@163.com"}],"homepage":"https://github.com/gulibs/vite-plugin-react-auto-routes#readme","bugs":{"url":"https://github.com/gulibs/vite-plugin-react-auto-routes/issues"},"dist":{"shasum":"1b7d997cb4701b751f48dc6a6d57e981ac83aa62","tarball":"https://registry.npmjs.org/@gulibs/vite-plugin-react-auto-routes/-/vite-plugin-react-auto-routes-0.1.13.tgz","fileCount":8,"integrity":"sha512-defu9sGIr1isQH33oyliQCI1JlUHhSyiJRj/Ld2sDDVYu22UdKeBqt5mBiHpdf/Toej+iLS7ohSOnDyfXWaozw==","signatures":[{"sig":"MEUCIFn6kRX7f/s3rSfkYEBbqtfrr0JepUKtBL0U8ksLFjspAiEA2j1u6YANRqDLS033/43CXX/GkrzDEfTnCtUyerWSYbA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1204282},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./hook":{"types":"./hook.d.ts","import":"./hook.js"},"./react-routes":"./react-routes.d.ts"},"scripts":{"dev":"rollup -c -w","lint":"eslint lib --ext .ts,.tsx","test":"vitest","build":"rollup -c","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"gujiwen","email":"gujiwen2020@163.com"},"repository":{"url":"git+https://github.com/gulibs/vite-plugin-react-auto-routes.git","type":"git"},"_npmVersion":"10.9.2","description":"一个基于文件系统的自动路由生成 Vite 插件，为 React 应用程序提供基于文件系统的自动路由生成功能","directories":{},"_nodeVersion":"23.11.0","dependencies":{"chalk":"^5.4.1","dayjs":"^1.11.13","lodash":"^4.17.21","fast-glob":"^3.3.3"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.5","react":"^19.1.0","tslib":"^2.8.1","eslint":"^9.27.0","rollup":"^4.41.1","vitest":"^3.1.4","react-dom":"^19.1.0","typescript":"^5.8.3","@types/node":"^22.15.21","@types/react":"^19.1.5","react-router":"^7.6.0","@types/lodash":"^4.17.17","rollup-plugin-dts":"^6.2.1","@rollup/plugin-commonjs":"^28.0.3","@rollup/plugin-typescript":"^12.1.2","@typescript-eslint/parser":"^8.32.1","@rollup/plugin-node-resolve":"^16.0.1","@typescript-eslint/eslint-plugin":"^8.32.1"},"peerDependencies":{"vite":">=4.0.0","react":">=16.8.0","react-dom":">=16.8.0","react-router":">=7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/vite-plugin-react-auto-routes_0.1.13_1748193564182_0.6636626347370249","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.1.14":{"name":"@gulibs/vite-plugin-react-auto-routes","version":"0.1.14","keywords":["vite","plugin","react","router","auto-routes","file-based-routing","typescript"],"author":{"name":"HectorGu"},"license":"MIT","_id":"@gulibs/vite-plugin-react-auto-routes@0.1.14","maintainers":[{"name":"gujiwen","email":"gujiwen2020@163.com"}],"homepage":"https://github.com/gulibs/vite-plugin-react-auto-routes#readme","bugs":{"url":"https://github.com/gulibs/vite-plugin-react-auto-routes/issues"},"dist":{"shasum":"dd9acc791a7e464571e33ac96409ff98949111e7","tarball":"https://registry.npmjs.org/@gulibs/vite-plugin-react-auto-routes/-/vite-plugin-react-auto-routes-0.1.14.tgz","fileCount":10,"integrity":"sha512-djLbyJMHSnJRjKJtmsS2Z/NAwGS+zkpn3vpK088R7muMEHkyYmFVYdw6jcrgJElFztt0ytX6szKPOnYEIJ6A3Q==","signatures":[{"sig":"MEUCIA9LyPvFM7kohsP0adiuRC55eGtM69Dbnh1gXHpuhhmTAiEA9MyYxVe7T5NnJIwAkmLA8tt39VtKeBHxTCGsARoHxKM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":633475},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./hook":{"types":"./hook.d.ts","import":"./hook.js"},"./utils":{"types":"./utils.d.ts","import":"./utils.js"},"./react-routes":"./react-routes.d.ts"},"scripts":{"dev":"rollup -c -w","lint":"eslint lib --ext .ts,.tsx","test":"vitest","build":"rollup -c","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"gujiwen","email":"gujiwen2020@163.com"},"repository":{"url":"git+https://github.com/gulibs/vite-plugin-react-auto-routes.git","type":"git"},"_npmVersion":"10.9.2","description":"一个基于文件系统的自动路由生成 Vite 插件，为 React 应用程序提供基于文件系统的自动路由生成功能","directories":{},"_nodeVersion":"23.11.0","dependencies":{"chalk":"^5.4.1","dayjs":"^1.11.13","lodash":"^4.17.21","fast-glob":"^3.3.3"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.5","react":"^19.1.0","tslib":"^2.8.1","eslint":"^9.27.0","rollup":"^4.41.1","vitest":"^3.1.4","react-dom":"^19.1.0","typescript":"^5.8.3","@types/node":"^22.15.21","@types/react":"^19.1.5","react-router":"^7.6.0","@types/lodash":"^4.17.17","rollup-plugin-dts":"^6.2.1","@rollup/plugin-commonjs":"^28.0.3","@rollup/plugin-typescript":"^12.1.2","@typescript-eslint/parser":"^8.32.1","@rollup/plugin-node-resolve":"^16.0.1","@typescript-eslint/eslint-plugin":"^8.32.1"},"peerDependencies":{"vite":">=4.0.0","react":">=16.8.0","react-dom":">=16.8.0","react-router":">=7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/vite-plugin-react-auto-routes_0.1.14_1748195355488_0.8061991405284004","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.2.0":{"name":"@gulibs/vite-plugin-react-auto-routes","version":"0.2.0","keywords":["vite","plugin","react","router","auto-routes","file-based-routing","typescript"],"author":{"name":"HectorGu"},"license":"MIT","_id":"@gulibs/vite-plugin-react-auto-routes@0.2.0","maintainers":[{"name":"gujiwen","email":"gujiwen2020@163.com"}],"homepage":"https://github.com/gulibs/vite-plugin-react-auto-routes#readme","bugs":{"url":"https://github.com/gulibs/vite-plugin-react-auto-routes/issues"},"dist":{"shasum":"e222485d592198f318bea0452e62911d4a877239","tarball":"https://registry.npmjs.org/@gulibs/vite-plugin-react-auto-routes/-/vite-plugin-react-auto-routes-0.2.0.tgz","fileCount":14,"integrity":"sha512-VfER44O7SFHV02oxxj4y443wdO85fQRsSMqLTPlKlh2dd5pUHGDmXl/mM0q5NWehmGnU+G4SHkbeR5ki+AklLA==","signatures":[{"sig":"MEYCIQCWgRZlrR5rSlfw4Iv28RdMxHRy6wnUXKl1cI8sz2rfEwIhALLMrgEOETVz7wQl0lrh8pYhyHRU90qVHW9DTOWQtrxe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":701297},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./hooks":{"types":"./dist/hooks.d.ts","default":"./dist/hooks.js"},"./client":{"types":"./dist/client.d.ts","default":"./dist/client.js"},"./runtime":{"types":"./dist/runtime.d.ts","default":"./dist/runtime.js"},"./performance":{"types":"./dist/performance.d.ts","default":"./dist/performance.js"},"./react-routes":"./react-routes.d.ts"},"private":false,"scripts":{"dev":"rollup -c -w","lint":"eslint lib --ext .ts,.tsx","test":"vitest","build":"rollup -c","rebuild":"npm run build","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"gujiwen","email":"gujiwen2020@163.com"},"repository":{"url":"git+https://github.com/gulibs/vite-plugin-react-auto-routes.git","type":"git"},"_npmVersion":"10.8.2","description":"一个基于文件系统的自动路由生成 Vite 插件，为 React 应用程序提供基于文件系统的自动路由生成功能","directories":{},"_nodeVersion":"18.20.8","dependencies":{"chalk":"^5.4.1","dayjs":"^1.11.13","lodash":"^4.17.21","fast-glob":"^3.3.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.5","react":"^19.1.0","tslib":"^2.8.1","eslint":"^9.28.0","rollup":"^4.41.1","vitest":"^3.2.1","react-dom":"^19.1.0","typescript":"^5.8.3","@types/node":"^22.15.29","@types/react":"^19.1.6","react-router":"^7.6.2","@types/lodash":"^4.17.17","react-router-dom":"^7.6.2","rollup-plugin-dts":"^6.2.1","rollup-plugin-delete":"^3.0.1","@rollup/plugin-commonjs":"^28.0.3","@rollup/plugin-typescript":"^12.1.2","@typescript-eslint/parser":"^8.33.1","@rollup/plugin-node-resolve":"^16.0.1","@typescript-eslint/eslint-plugin":"^8.33.1"},"peerDependencies":{"vite":">=4.0.0","react":">=16.8.0","react-dom":">=16.8.0","react-router":">=7.6.2"},"_npmOperationalInternal":{"tmp":"tmp/vite-plugin-react-auto-routes_0.2.0_1749069626266_0.3846129010949577","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.2.1":{"name":"@gulibs/vite-plugin-react-auto-routes","version":"0.2.1","keywords":["vite","plugin","react","router","auto-routes","file-based-routing","typescript"],"author":{"name":"HectorGu"},"license":"MIT","_id":"@gulibs/vite-plugin-react-auto-routes@0.2.1","maintainers":[{"name":"gujiwen","email":"gujiwen2020@163.com"}],"homepage":"https://github.com/gulibs/vite-plugin-react-auto-routes#readme","bugs":{"url":"https://github.com/gulibs/vite-plugin-react-auto-routes/issues"},"dist":{"shasum":"be360798b98437a19353ea13f72791520a2ea141","tarball":"https://registry.npmjs.org/@gulibs/vite-plugin-react-auto-routes/-/vite-plugin-react-auto-routes-0.2.1.tgz","fileCount":14,"integrity":"sha512-+iP1QLIesn8neah7e+q1aKSIEgraw7hzG4l32feIHgc9K7zqo45QVuG9qNxdAuyhMarm1xThwD9foHWVsUVZHQ==","signatures":[{"sig":"MEUCIQCmRkqT4tD+aNFMEwmRVKSI1NRBBh3dO/MLONthnqATRQIgDKylK2OIn5+7Iaa8MzA5qnAv2eu2fdSRVQj80u3mdQs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1295550},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./hooks":{"types":"./dist/hooks.d.ts","default":"./dist/hooks.js"},"./client":{"types":"./dist/client.d.ts","default":"./dist/client.js"},"./runtime":{"types":"./dist/runtime.d.ts","default":"./dist/runtime.js"},"./performance":{"types":"./dist/performance.d.ts","default":"./dist/performance.js"},"./react-routes":"./react-routes.d.ts"},"private":false,"scripts":{"dev":"rollup -c -w","lint":"eslint lib --ext .ts,.tsx","test":"vitest","build":"rollup -c","rebuild":"npm run build","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"gujiwen","email":"gujiwen2020@163.com"},"repository":{"url":"git+https://github.com/gulibs/vite-plugin-react-auto-routes.git","type":"git"},"_npmVersion":"10.8.2","description":"一个基于文件系统的自动路由生成 Vite 插件，为 React 应用程序提供基于文件系统的自动路由生成功能","directories":{},"_nodeVersion":"18.20.8","dependencies":{"chalk":"^5.4.1","dayjs":"^1.11.13","lodash":"^4.17.21","fast-glob":"^3.3.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.5","react":"^19.1.0","tslib":"^2.8.1","eslint":"^9.28.0","rollup":"^4.41.1","vitest":"^3.2.1","react-dom":"^19.1.0","typescript":"^5.8.3","@types/node":"^22.15.29","@types/react":"^19.1.6","react-router":"^7.6.2","@types/lodash":"^4.17.17","react-router-dom":"^7.6.2","rollup-plugin-dts":"^6.2.1","rollup-plugin-delete":"^3.0.1","@rollup/plugin-commonjs":"^28.0.3","@rollup/plugin-typescript":"^12.1.2","@typescript-eslint/parser":"^8.33.1","@rollup/plugin-node-resolve":"^16.0.1","@typescript-eslint/eslint-plugin":"^8.33.1"},"peerDependencies":{"vite":">=4.0.0","react":">=16.8.0","react-dom":">=16.8.0","react-router":">=7.6.2"},"_npmOperationalInternal":{"tmp":"tmp/vite-plugin-react-auto-routes_0.2.1_1749071476884_0.4782169777645946","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.2.2":{"name":"@gulibs/vite-plugin-react-auto-routes","version":"0.2.2","keywords":["vite","plugin","react","router","auto-routes","file-based-routing","typescript"],"author":{"name":"HectorGu"},"license":"MIT","_id":"@gulibs/vite-plugin-react-auto-routes@0.2.2","maintainers":[{"name":"gujiwen","email":"gujiwen2020@163.com"}],"homepage":"https://github.com/gulibs/vite-plugin-react-auto-routes#readme","bugs":{"url":"https://github.com/gulibs/vite-plugin-react-auto-routes/issues"},"dist":{"shasum":"2039d62baaf1dc6a2aa07db20a6c866e38d1ebcd","tarball":"https://registry.npmjs.org/@gulibs/vite-plugin-react-auto-routes/-/vite-plugin-react-auto-routes-0.2.2.tgz","fileCount":14,"integrity":"sha512-5YkvTwl6tixb1TldE/evJ+TIAWnXneIAJ1pffFFgDOvb6vxGd4UHsx/QYZuiU8gUKyWgfvNwPJWcszWHycQrEQ==","signatures":[{"sig":"MEUCIQCnf75h8+H0bZJt3JLrFSWcQwbnU2kRAzTyBod3qEYgQQIgQdjZzh+JPPaK+82REupXCj7ZDjm4WYN/4xnJN8uQSc0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1408911},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./hooks":{"types":"./dist/hooks.d.ts","default":"./dist/hooks.js"},"./client":{"types":"./dist/client.d.ts","default":"./dist/client.js"},"./runtime":{"types":"./dist/runtime.d.ts","default":"./dist/runtime.js"},"./performance":{"types":"./dist/performance.d.ts","default":"./dist/performance.js"},"./react-routes":"./react-routes.d.ts"},"private":false,"scripts":{"dev":"rollup -c -w","lint":"eslint lib --ext .ts,.tsx","test":"vitest","build":"rollup -c","rebuild":"npm run build","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"gujiwen","email":"gujiwen2020@163.com"},"repository":{"url":"git+https://github.com/gulibs/vite-plugin-react-auto-routes.git","type":"git"},"_npmVersion":"10.8.2","description":"一个基于文件系统的自动路由生成 Vite 插件，为 React 应用程序提供基于文件系统的自动路由生成功能","directories":{},"_nodeVersion":"18.20.8","dependencies":{"chalk":"^5.4.1","dayjs":"^1.11.13","lodash":"^4.17.21","fast-glob":"^3.3.3","@gulibs/react-storage":"^0.0.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.5","react":"^19.1.0","tslib":"^2.8.1","eslint":"^9.28.0","rollup":"^4.41.1","vitest":"^3.2.1","react-dom":"^19.1.0","typescript":"^5.8.3","@types/node":"^22.15.29","@types/react":"^19.1.2","react-router":"^7.6.2","@types/lodash":"^4.17.17","rollup-plugin-dts":"^6.2.1","rollup-plugin-delete":"^3.0.1","@rollup/plugin-commonjs":"^28.0.3","@rollup/plugin-typescript":"^12.1.2","@typescript-eslint/parser":"^8.33.1","@rollup/plugin-node-resolve":"^16.0.1","@typescript-eslint/eslint-plugin":"^8.33.1"},"peerDependencies":{"vite":">=4.0.0","react":">=16.8.0","react-dom":">=16.8.0","react-router":">=7.6.2"},"_npmOperationalInternal":{"tmp":"tmp/vite-plugin-react-auto-routes_0.2.2_1749080923355_0.7196036278713842","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.2.3":{"name":"@gulibs/vite-plugin-react-auto-routes","version":"0.2.3","keywords":["vite","plugin","react","router","auto-routes","file-based-routing","typescript"],"author":{"name":"HectorGu"},"license":"MIT","_id":"@gulibs/vite-plugin-react-auto-routes@0.2.3","maintainers":[{"name":"gujiwen","email":"gujiwen2020@163.com"}],"homepage":"https://github.com/gulibs/vite-plugin-react-auto-routes#readme","bugs":{"url":"https://github.com/gulibs/vite-plugin-react-auto-routes/issues"},"dist":{"shasum":"d10b19132414e5f81c7211c00b5b9f0f74778084","tarball":"https://registry.npmjs.org/@gulibs/vite-plugin-react-auto-routes/-/vite-plugin-react-auto-routes-0.2.3.tgz","fileCount":14,"integrity":"sha512-wQzulegd1PvfoIzzfS7tIesonZiOterX7psvaUTQfcD9FPJr6yuyifbeLrpKV0/HPMDGXLFsb85rzG1YJWp1Tg==","signatures":[{"sig":"MEUCIBehe7cnIpulJZpqrajUV4ljrod+w0pbZeooDzuiYSStAiEA+EKY7mjVpjZMUdoJWbpsdGRWtdgseyz4hLtRgLMR080=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1421009},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./hooks":{"types":"./dist/hooks.d.ts","default":"./dist/hooks.js"},"./client":{"types":"./dist/client.d.ts","default":"./dist/client.js"},"./runtime":{"types":"./dist/runtime.d.ts","default":"./dist/runtime.js"},"./performance":{"types":"./dist/performance.d.ts","default":"./dist/performance.js"},"./react-routes":"./react-routes.d.ts"},"gitHead":"0ea5f7c96844394462ee6b4b4e55779252fc84ff","private":false,"scripts":{"dev":"rollup -c -w","lint":"eslint lib --ext .ts,.tsx","test":"vitest","build":"rollup -c","rebuild":"npm run build","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"gujiwen","email":"gujiwen2020@163.com"},"repository":{"url":"git+https://github.com/gulibs/vite-plugin-react-auto-routes.git","type":"git"},"_npmVersion":"10.8.2","description":"一个基于文件系统的自动路由生成 Vite 插件，为 React 应用程序提供基于文件系统的自动路由生成功能","directories":{},"_nodeVersion":"18.20.8","dependencies":{"chalk":"^5.4.1","dayjs":"^1.11.13","lodash":"^4.17.21","fast-glob":"^3.3.3","@gulibs/react-storage":"^0.0.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.5","react":"^19.1.0","tslib":"^2.8.1","eslint":"^9.28.0","rollup":"^4.41.1","vitest":"^3.2.1","react-dom":"^19.1.0","typescript":"^5.8.3","@types/node":"^22.15.29","@types/react":"^19.1.2","react-router":"^7.6.2","@types/lodash":"^4.17.17","rollup-plugin-dts":"^6.2.1","rollup-plugin-delete":"^3.0.1","@rollup/plugin-commonjs":"^28.0.3","@rollup/plugin-typescript":"^12.1.2","@typescript-eslint/parser":"^8.33.1","@rollup/plugin-node-resolve":"^16.0.1","@typescript-eslint/eslint-plugin":"^8.33.1"},"peerDependencies":{"vite":">=4.0.0","react":">=16.8.0","react-dom":">=16.8.0","react-router":">=7.6.2"},"_npmOperationalInternal":{"tmp":"tmp/vite-plugin-react-auto-routes_0.2.3_1749150374476_0.8646859045691699","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.2.4":{"name":"@gulibs/vite-plugin-react-auto-routes","version":"0.2.4","keywords":["vite","plugin","react","router","auto-routes","file-based-routing","typescript"],"author":{"name":"HectorGu"},"license":"MIT","_id":"@gulibs/vite-plugin-react-auto-routes@0.2.4","maintainers":[{"name":"gujiwen","email":"gujiwen2020@163.com"}],"homepage":"https://github.com/gulibs/vite-plugin-react-auto-routes#readme","bugs":{"url":"https://github.com/gulibs/vite-plugin-react-auto-routes/issues"},"dist":{"shasum":"f29cc351050373531f8b2346628c5f5ba1608287","tarball":"https://registry.npmjs.org/@gulibs/vite-plugin-react-auto-routes/-/vite-plugin-react-auto-routes-0.2.4.tgz","fileCount":14,"integrity":"sha512-m2piLyuvjWJtoDAEsDzhM6BcK4NmNGZ11v0VnyNh9IrDsTHxUg4Fwe8uxAeaHppBRiN92aO9T10r+D5mpdhQtA==","signatures":[{"sig":"MEYCIQDRzrVXobqn7KhJwG1sXR0S81u+yk2atalUvyTKOeHoWAIhAMSupcGfpmqnlVXqKJBbb4HUqAyW5diL5jj6JRKsx9x2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1440589},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./hooks":{"types":"./dist/hooks.d.ts","default":"./dist/hooks.js"},"./client":{"types":"./dist/client.d.ts","default":"./dist/client.js"},"./runtime":{"types":"./dist/runtime.d.ts","default":"./dist/runtime.js"},"./performance":{"types":"./dist/performance.d.ts","default":"./dist/performance.js"},"./react-routes":"./react-routes.d.ts"},"gitHead":"e633ef7b78e9dc6fadccabc903e59f8cb2bed76b","private":false,"scripts":{"dev":"rollup -c -w","lint":"eslint lib --ext .ts,.tsx","test":"vitest","build":"rollup -c","rebuild":"npm run build","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"gujiwen","email":"gujiwen2020@163.com"},"repository":{"url":"git+https://github.com/gulibs/vite-plugin-react-auto-routes.git","type":"git"},"_npmVersion":"10.8.2","description":"一个基于文件系统的自动路由生成 Vite 插件，为 React 应用程序提供基于文件系统的自动路由生成功能","directories":{},"_nodeVersion":"18.20.8","dependencies":{"chalk":"^5.4.1","dayjs":"^1.11.13","lodash":"^4.17.21","fast-glob":"^3.3.3","@gulibs/react-storage":"^0.0.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.5","react":"^19.1.0","tslib":"^2.8.1","eslint":"^9.28.0","rollup":"^4.41.1","vitest":"^3.2.1","react-dom":"^19.1.0","typescript":"^5.8.3","@types/node":"^22.15.29","@types/react":"^19.1.2","react-router":"^7.6.2","@types/lodash":"^4.17.17","rollup-plugin-dts":"^6.2.1","rollup-plugin-delete":"^3.0.1","@rollup/plugin-commonjs":"^28.0.3","@rollup/plugin-typescript":"^12.1.2","@typescript-eslint/parser":"^8.33.1","@rollup/plugin-node-resolve":"^16.0.1","@typescript-eslint/eslint-plugin":"^8.33.1"},"peerDependencies":{"vite":">=4.0.0","react":">=16.8.0","react-dom":">=16.8.0","react-router":">=7.6.2"},"_npmOperationalInternal":{"tmp":"tmp/vite-plugin-react-auto-routes_0.2.4_1749181023375_0.15112528683211024","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.2.5":{"name":"@gulibs/vite-plugin-react-auto-routes","version":"0.2.5","keywords":["vite","plugin","react","router","auto-routes","file-based-routing","typescript"],"author":{"name":"HectorGu"},"license":"MIT","_id":"@gulibs/vite-plugin-react-auto-routes@0.2.5","maintainers":[{"name":"gujiwen","email":"gujiwen2020@163.com"}],"homepage":"https://github.com/gulibs/vite-plugin-react-auto-routes#readme","bugs":{"url":"https://github.com/gulibs/vite-plugin-react-auto-routes/issues"},"dist":{"shasum":"db024b395785677da01eb12a9c8191202349d269","tarball":"https://registry.npmjs.org/@gulibs/vite-plugin-react-auto-routes/-/vite-plugin-react-auto-routes-0.2.5.tgz","fileCount":7,"integrity":"sha512-HhpYtwWmKI5nLzpytr3kcOcTd03wjIahDX8+aapVX2oAv2dDffAewmgWnABtAiThyCkTTzKWbJCAaa2jwUHRSA==","signatures":[{"sig":"MEUCIQDAbaAMtmsDkb1BxZEYBGuIFbmHZ4I1Qs2EOBmo7erOLQIgRnchbdaDW5GuvIl9BtPqStI4ZsvHKz9X0zqRlur4HBI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":686365},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"e633ef7b78e9dc6fadccabc903e59f8cb2bed76b","private":false,"scripts":{"dev":"rollup -c -w","lint":"eslint lib --ext .ts,.tsx","test":"vitest","build":"rollup -c","rebuild":"npm run build","type-check":"tsc --noEmit","postinstall":"node scripts/postinstall.cjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"gujiwen","email":"gujiwen2020@163.com"},"repository":{"url":"git+https://github.com/gulibs/vite-plugin-react-auto-routes.git","type":"git"},"_npmVersion":"10.8.2","description":"一个基于文件系统的自动路由生成 Vite 插件，为 React 应用程序提供基于文件系统的自动路由生成功能","directories":{},"_nodeVersion":"18.20.8","dependencies":{"chalk":"^5.4.1","dayjs":"^1.11.13","lodash":"^4.17.21","fast-glob":"^3.3.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.5","react":"^19.1.0","tslib":"^2.8.1","eslint":"^9.28.0","rollup":"^4.41.1","vitest":"^3.2.1","react-dom":"^19.1.0","typescript":"^5.8.3","@types/node":"^22.15.29","@types/react":"^19.1.2","react-router":"^7.6.2","@types/lodash":"^4.17.17","rollup-plugin-dts":"^6.2.1","rollup-plugin-delete":"^3.0.1","@rollup/plugin-commonjs":"^28.0.3","@rollup/plugin-typescript":"^12.1.2","@typescript-eslint/parser":"^8.33.1","@rollup/plugin-node-resolve":"^16.0.1","@typescript-eslint/eslint-plugin":"^8.33.1"},"peerDependencies":{"vite":">=4.0.0","react":">=16.8.0","react-dom":">=16.8.0","react-router":">=7.6.2","@gulibs/auto-routes-client":">=0.0.1"},"peerDependenciesMeta":{"@gulibs/auto-routes-client":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vite-plugin-react-auto-routes_0.2.5_1749413998618_0.39954840166110484","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.2.6":{"name":"@gulibs/vite-plugin-react-auto-routes","version":"0.2.6","keywords":["vite","plugin","react","router","auto-routes","file-based-routing","typescript"],"author":{"name":"HectorGu"},"license":"MIT","_id":"@gulibs/vite-plugin-react-auto-routes@0.2.6","maintainers":[{"name":"gujiwen","email":"gujiwen2020@163.com"}],"homepage":"https://github.com/gulibs/vite-plugin-react-auto-routes#readme","bugs":{"url":"https://github.com/gulibs/vite-plugin-react-auto-routes/issues"},"dist":{"shasum":"bf9dfc7eb83ce4e9548e077b6617c70b40b73405","tarball":"https://registry.npmjs.org/@gulibs/vite-plugin-react-auto-routes/-/vite-plugin-react-auto-routes-0.2.6.tgz","fileCount":7,"integrity":"sha512-AU4w26fvVWx5qv83i/fYCZZNcjRyfDQMD7HVx7rD8wZYLxENI3/x1LRQHDZO6CHP0ztx6ErQUCL/PaH6j7x7qA==","signatures":[{"sig":"MEYCIQCMZT5aJyl7KXdO4hkhC0PyGLld+V/dQB8m47o7aeH1lAIhANIcWJdZQ35wvR76ZlC4vqLyCu0fnyXTluk40kA7N9H8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":686414},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react-routes":"./react-routes.d.ts"},"gitHead":"e633ef7b78e9dc6fadccabc903e59f8cb2bed76b","private":false,"scripts":{"dev":"rollup -c -w","lint":"eslint lib --ext .ts,.tsx","test":"vitest","build":"rollup -c","rebuild":"npm run build","type-check":"tsc --noEmit","postinstall":"node scripts/postinstall.cjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"gujiwen","email":"gujiwen2020@163.com"},"repository":{"url":"git+https://github.com/gulibs/vite-plugin-react-auto-routes.git","type":"git"},"_npmVersion":"10.8.2","description":"一个基于文件系统的自动路由生成 Vite 插件，为 React 应用程序提供基于文件系统的自动路由生成功能","directories":{},"_nodeVersion":"18.20.8","dependencies":{"chalk":"^5.4.1","dayjs":"^1.11.13","lodash":"^4.17.21","fast-glob":"^3.3.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.5","react":"^19.1.0","tslib":"^2.8.1","eslint":"^9.28.0","rollup":"^4.41.1","vitest":"^3.2.1","react-dom":"^19.1.0","typescript":"^5.8.3","@types/node":"^22.15.29","@types/react":"^19.1.2","react-router":"^7.6.2","@types/lodash":"^4.17.17","rollup-plugin-dts":"^6.2.1","rollup-plugin-delete":"^3.0.1","@rollup/plugin-commonjs":"^28.0.3","@rollup/plugin-typescript":"^12.1.2","@typescript-eslint/parser":"^8.33.1","@rollup/plugin-node-resolve":"^16.0.1","@typescript-eslint/eslint-plugin":"^8.33.1"},"peerDependencies":{"vite":">=4.0.0","react":">=16.8.0","react-dom":">=16.8.0","react-router":">=7.6.2","@gulibs/auto-routes-client":">=0.0.1"},"peerDependenciesMeta":{"@gulibs/auto-routes-client":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vite-plugin-react-auto-routes_0.2.6_1749420749867_0.3743176852978809","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.2.7":{"name":"@gulibs/vite-plugin-react-auto-routes","version":"0.2.7","keywords":["vite","plugin","react","router","auto-routes","file-based-routing","typescript"],"author":{"name":"HectorGu"},"license":"MIT","_id":"@gulibs/vite-plugin-react-auto-routes@0.2.7","maintainers":[{"name":"gujiwen","email":"gujiwen2020@163.com"}],"homepage":"https://github.com/gulibs/vite-plugin-react-auto-routes#readme","bugs":{"url":"https://github.com/gulibs/vite-plugin-react-auto-routes/issues"},"dist":{"shasum":"4be5b019459f79945287d675503c52091f6be78a","tarball":"https://registry.npmjs.org/@gulibs/vite-plugin-react-auto-routes/-/vite-plugin-react-auto-routes-0.2.7.tgz","fileCount":6,"integrity":"sha512-FEbuFgaacMS/QtGnDZcYOGeifCzcYtnnDZL7upXCBxl3SkkfKgY03jqVLmfa2uqjCUmC7M/EquxtS4aH6GQZnw==","signatures":[{"sig":"MEQCID1qF/aeEiI/DFnK0wzYUS2utS5999IoF2OZLVeMf24BAiBEKr4jrLU15ACZJfNOJ55nRQxjT4dQHyjyzoj4PcjQsw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":684883},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react-routes":"./react-routes.d.ts"},"gitHead":"ae969acd0dd6a64aa0933c1773d242e82e9ba772","private":false,"scripts":{"dev":"rollup -c -w","lint":"eslint lib --ext .ts,.tsx","test":"vitest","build":"rollup -c","rebuild":"npm run build","type-check":"tsc --noEmit","postinstall":"node scripts/postinstall.cjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"gujiwen","email":"gujiwen2020@163.com"},"repository":{"url":"git+https://github.com/gulibs/vite-plugin-react-auto-routes.git","type":"git"},"_npmVersion":"10.8.2","description":"一个基于文件系统的自动路由生成 Vite 插件，为 React 应用程序提供基于文件系统的自动路由生成功能","directories":{},"_nodeVersion":"18.20.8","dependencies":{"chalk":"^5.4.1","dayjs":"^1.11.13","lodash":"^4.17.21","fast-glob":"^3.3.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.5","react":"^19.1.0","tslib":"^2.8.1","eslint":"^9.28.0","rollup":"^4.41.1","vitest":"^3.2.1","react-dom":"^19.1.0","typescript":"^5.8.3","@types/node":"^22.15.29","@types/react":"^19.1.2","react-router":"^7.6.2","@types/lodash":"^4.17.17","rollup-plugin-dts":"^6.2.1","rollup-plugin-delete":"^3.0.1","@rollup/plugin-commonjs":"^28.0.3","@rollup/plugin-typescript":"^12.1.2","@typescript-eslint/parser":"^8.33.1","@rollup/plugin-node-resolve":"^16.0.1","@typescript-eslint/eslint-plugin":"^8.33.1"},"peerDependencies":{"vite":">=4.0.0","react":">=16.8.0","react-dom":">=16.8.0","react-router":">=7.6.2","@gulibs/vite-auto-routes-client":">=0.0.1"},"peerDependenciesMeta":{"@gulibs/vite-auto-routes-client":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vite-plugin-react-auto-routes_0.2.7_1749482242697_0.7414157459493644","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.2.8":{"name":"@gulibs/vite-plugin-react-auto-routes","version":"0.2.8","keywords":["vite","plugin","react","router","auto-routes","file-based-routing","typescript"],"author":{"name":"HectorGu"},"license":"MIT","_id":"@gulibs/vite-plugin-react-auto-routes@0.2.8","maintainers":[{"name":"gujiwen","email":"gujiwen2020@163.com"}],"homepage":"https://github.com/gulibs/vite-plugin-react-auto-routes#readme","bugs":{"url":"https://github.com/gulibs/vite-plugin-react-auto-routes/issues"},"dist":{"shasum":"a2281f437ea0d22416501b0d8f09b5f52120df77","tarball":"https://registry.npmjs.org/@gulibs/vite-plugin-react-auto-routes/-/vite-plugin-react-auto-routes-0.2.8.tgz","fileCount":6,"integrity":"sha512-Kf7GQGS3QlwPv5m3q06lc2Rgjj3hABUl2OgOD9C9cG7gL8tbWSme6N1JP5WZJhjurKk2gJhmp6+YWH/q9iK3EA==","signatures":[{"sig":"MEQCIE1sdftNK/fBVmHiHL7dwznfgWQnbzLAaQJ200N3DudFAiBvjeT3ztT0/Fl2/j6W4ugXvADqP1FOpvO4idmwfOKhLg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":680654},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react-routes":"./react-routes.d.ts"},"gitHead":"7164704a29408f07535ce874a5862dd19fa103b8","private":false,"scripts":{"dev":"rollup -c -w","lint":"eslint lib --ext .ts,.tsx","test":"vitest","build":"rollup -c","rebuild":"npm run build","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"gujiwen","email":"gujiwen2020@163.com"},"repository":{"url":"git+https://github.com/gulibs/vite-plugin-react-auto-routes.git","type":"git"},"_npmVersion":"10.8.2","description":"一个基于文件系统的自动路由生成 Vite 插件，为 React 应用程序提供基于文件系统的自动路由生成功能","directories":{},"_nodeVersion":"18.20.8","dependencies":{"chalk":"^5.4.1","dayjs":"^1.11.13","lodash":"^4.17.21","fast-glob":"^3.3.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.5","react":"^19.1.0","tslib":"^2.8.1","eslint":"^9.28.0","rollup":"^4.41.1","vitest":"^3.2.1","react-dom":"^19.1.0","typescript":"^5.8.3","@types/node":"^22.15.29","@types/react":"^19.1.2","react-router":"^7.6.2","@types/lodash":"^4.17.17","rollup-plugin-dts":"^6.2.1","rollup-plugin-delete":"^3.0.1","@rollup/plugin-commonjs":"^28.0.3","@rollup/plugin-typescript":"^12.1.2","@typescript-eslint/parser":"^8.33.1","@rollup/plugin-node-resolve":"^16.0.1","@typescript-eslint/eslint-plugin":"^8.33.1"},"peerDependencies":{"vite":">=4.0.0","react":">=16.8.0","react-dom":">=16.8.0","react-router":">=7.6.2","@gulibs/vite-auto-routes-client":">=0.0.1"},"peerDependenciesMeta":{"@gulibs/vite-auto-routes-client":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vite-plugin-react-auto-routes_0.2.8_1749496256376_0.2156311450646291","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."}},"time":{"created":"2024-09-02T00:47:24.926Z","modified":"2025-06-11T22:38:41.853Z","0.0.1":"2024-09-02T00:47:25.218Z","0.0.2":"2024-09-02T17:06:41.928Z","0.0.3":"2024-09-02T17:30:10.483Z","0.0.4":"2024-09-05T15:41:06.282Z","0.0.5":"2024-09-06T02:16:39.092Z","0.0.6":"2024-09-06T13:10:49.344Z","0.0.7":"2024-09-07T08:07:52.517Z","0.0.8":"2024-09-07T09:56:00.672Z","0.0.9":"2024-09-07T12:15:59.296Z","0.0.10":"2024-09-07T13:56:44.658Z","0.0.11":"2025-05-24T12:32:08.941Z","0.0.12":"2025-05-24T12:50:17.841Z","0.1.0":"2025-05-24T12:58:04.827Z","0.1.1":"2025-05-24T15:03:09.741Z","0.1.2":"2025-05-24T15:19:47.711Z","0.1.5":"2025-05-24T17:38:21.533Z","0.1.6":"2025-05-24T17:43:39.817Z","0.1.7":"2025-05-24T22:14:38.429Z","0.1.8":"2025-05-24T22:25:52.077Z","0.1.9":"2025-05-24T22:42:10.134Z","0.1.10":"2025-05-24T22:43:02.624Z","0.1.11":"2025-05-24T23:22:16.776Z","0.1.12":"2025-05-24T23:29:21.478Z","0.1.13":"2025-05-25T17:19:24.398Z","0.1.14":"2025-05-25T17:49:15.709Z","0.2.0":"2025-06-04T20:40:26.451Z","0.2.1":"2025-06-04T21:11:17.190Z","0.2.2":"2025-06-04T23:48:43.630Z","0.2.3":"2025-06-05T19:06:14.742Z","0.2.4":"2025-06-06T03:37:03.604Z","0.2.5":"2025-06-08T20:19:58.789Z","0.2.6":"2025-06-08T22:12:30.125Z","0.2.7":"2025-06-09T15:17:22.869Z","0.2.8":"2025-06-09T19:10:56.663Z"},"bugs":{"url":"https://github.com/gulibs/vite-plugin-react-auto-routes/issues"},"author":{"name":"HectorGu"},"license":"MIT","homepage":"https://github.com/gulibs/vite-plugin-react-auto-routes#readme","keywords":["vite","plugin","react","router","auto-routes","file-based-routing","typescript"],"repository":{"url":"git+https://github.com/gulibs/vite-plugin-react-auto-routes.git","type":"git"},"description":"一个基于文件系统的自动路由生成 Vite 插件，为 React 应用程序提供基于文件系统的自动路由生成功能","maintainers":[{"name":"gujiwen","email":"gujiwen2020@163.com"}],"readme":"# @gulibs/vite-plugin-react-auto-routes\n\n一个基于文件系统的自动路由生成 Vite 插件，为 React 应用程序提供基于文件系统的自动路由生成功能，支持路由守卫、中间件、性能优化等高级特性。\n\n[![npm version](https://badge.fury.io/js/@gulibs%2Fvite-plugin-react-auto-routes.svg)](https://badge.fury.io/js/@gulibs%2Fvite-plugin-react-auto-routes)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n## 📚 目录\n\n- [功能特性](#-功能特性)\n- [性能表现](#-性能表现)\n- [快速开始](#-快速开始)\n- [应用程序入口配置](#-应用程序入口配置)\n- [文件系统路由](#-文件系统路由)\n- [路由守卫](#-路由守卫)\n- [中间件](#-中间件)\n- [性能监控](#-性能监控)\n- [React Hooks](#-react-hooks)\n- [用户状态管理](#用户状态管理)\n- [配置选项](#-配置选项)\n- [示例项目](#-示例项目)\n- [调试和开发](#-调试和开发)\n- [高级用法](#-高级用法)\n- [导出模块](#-导出模块)\n- [许可证](#-许可证)\n\n## ✨ 功能特性\n\n### 🚀 核心功能\n\n- **基于文件系统的路由生成**：根据文件结构自动生成路由，零配置即可使用\n- **动态路由支持**：支持 `[param]`（单参数）和 `[...slug]`（通配符）语法\n- **嵌套路由**：支持布局组件和多层嵌套路由结构\n- **TypeScript 支持**：完整的类型定义和 IntelliSense 支持，开发体验更佳\n\n### 🛡️ 高级功能\n\n- **路由守卫**：基于角色和权限的访问控制，支持自定义守卫条件\n- **中间件支持**：路由级中间件处理，支持全局和局部中间件\n- **用户认证**：内置认证守卫和用户状态管理，支持双 Token 机制\n- **错误处理**：优雅的错误边界和 404 页面处理，提升用户体验\n\n### ⚡ 性能优化\n\n- **智能缓存**：LRU 缓存策略，自动检测文件变更\n- **并行处理**：多目录并行路由生成，大幅提升构建速度\n- **防抖节流**：避免频繁重新构建，优化开发体验\n- **内存优化**：自动垃圾回收和清理机制\n- **性能监控**：内置性能追踪器，实时监控执行时间\n\n### 🎯 开发体验\n\n- **热重载**：文件变更自动更新路由，无需重启开发服务器\n- **调试模式**：详细的路由生成日志和性能统计\n- **错误提示**：友好的错误信息和修复建议\n- **IDE 支持**：完整的代码补全和类型检查\n\n## 📊 性能表现\n\n基于文件系统的路由生成，具有以下优势：\n\n- **快速构建**：增量式路由生成，只处理变更文件\n- **智能缓存**：自动缓存路由配置，减少重复解析\n- **并行处理**：多文件并行解析，提升大项目构建速度\n- **内存优化**：按需加载路由组件，减少内存占用\n\n## 🚀 快速开始\n\n### 安装\n\n```bash\nnpm install @gulibs/vite-plugin-react-auto-routes\n# 或\nyarn add @gulibs/vite-plugin-react-auto-routes\n# 或\npnpm add @gulibs/vite-plugin-react-auto-routes\n```\n\n> **注意**：从 v0.2.5 开始，客户端功能（如 `RouteProtectionWrapper`、hooks 等）已分离到独立的包 `@gulibs/auto-routes-client`。如果您需要使用路由保护、中间件或其他客户端功能，请同时安装：\n\n```bash\nnpm install @gulibs/auto-routes-client\n# 或\nyarn add @gulibs/auto-routes-client\n# 或\npnpm add @gulibs/auto-routes-client\n```\n\n### 基础配置\n\n在`vite.config.ts`中配置插件：\n\n```typescript\nimport { defineConfig } from 'vite'\nimport react from '@vitejs/plugin-react'\nimport reactAutoRoutes from '@gulibs/vite-plugin-react-auto-routes'\n\nexport default defineConfig({\n  plugins: [\n    react(),\n    reactAutoRoutes({\n      dirs: [\n        {\n          dir: 'src/pages',\n          baseRoute: '/'\n        }\n      ]\n    })\n  ]\n})\n```\n\n在`vite-env.d.ts`中配置\n\n```typescript\n/// <reference types=\"vite/client\" />\n/// <reference types=\"@gulibs/vite-plugin-react-auto-routes/react-routes\" />\n```\n\n### 高级配置\n\n```typescript\nimport { defineConfig } from 'vite'\nimport react from '@vitejs/plugin-react'\nimport reactAutoRoutes from '@gulibs/vite-plugin-react-auto-routes'\n\nexport default defineConfig({\n  plugins: [\n    react(),\n    reactAutoRoutes({\n      dirs: [\n        {\n          dir: 'src/pages',\n          baseRoute: '/',\n          include: ['**/*.tsx', '**/*.ts'],\n          exclude: ['**/components/**', '**/*.test.*']\n        }\n      ],\n      // 基础配置\n      cache: true,\n      cacheTime: 60000, // 1分钟缓存\n      debug: true,\n      dynamic: false,\n      routeMode: 'flat' // 'flat' | 'nested'\n    })\n  ]\n})\n```\n\n### 使用路由\n\n```typescript\n// src/App.tsx\nimport { Routes, Route } from 'react-router'\nimport { routes } from 'virtual:react-routes'\n\nfunction App() {\n  return (\n    <Routes>\n      {routes.map((route, index) => (\n        <Route key={index} {...route} />\n      ))}\n    </Routes>\n  )\n}\n```\n\n## 🎯 应用程序入口配置\n\n### 基础配置\n\n在应用程序的主入口文件（通常是 `src/main.tsx`）中，您需要导入自动生成的路由并配置 React Router。\n\n```typescript\n// src/main.tsx\nimport { createRoot } from 'react-dom/client';\nimport { createBrowserRouter, RouterProvider } from 'react-router';\nimport { routes } from \"~react-auto-pages\";\nimport './index.css';\n\n// 创建浏览器路由器\nconst router = createBrowserRouter(routes);\n\nconst root = createRoot(document.getElementById('root')!)\n\nroot.render(\n  <RouterProvider router={router} />\n)\n```\n\n### 不同路由器类型配置\n\n根据您的应用需求，可以选择不同类型的路由器：\n\n#### 浏览器路由器（推荐）\n\n```typescript\n// src/main.tsx\nimport { createRoot } from 'react-dom/client';\nimport { createBrowserRouter, RouterProvider } from 'react-router';\nimport { routes } from \"~react-auto-pages\";\n\nconst router = createBrowserRouter(routes);\n\nconst root = createRoot(document.getElementById('root')!)\nroot.render(<RouterProvider router={router} />)\n```\n\n#### 哈希路由器\n\n适用于不支持 HTML5 History API 的环境：\n\n```typescript\n// src/main.tsx\nimport { createRoot } from 'react-dom/client';\nimport { createHashRouter, RouterProvider } from 'react-router';\nimport { routes } from \"~react-auto-pages\";\n\nconst router = createHashRouter(routes);\n\nconst root = createRoot(document.getElementById('root')!)\nroot.render(<RouterProvider router={router} />)\n```\n\n#### 内存路由器\n\n适用于测试环境或非浏览器环境：\n\n```typescript\n// src/main.tsx\nimport { createRoot } from 'react-dom/client';\nimport { createMemoryRouter, RouterProvider } from 'react-router';\nimport { routes } from \"~react-auto-pages\";\n\nconst router = createMemoryRouter(routes, {\n  initialEntries: ['/'], // 初始路由\n  initialIndex: 0\n});\n\nconst root = createRoot(document.getElementById('root')!)\nroot.render(<RouterProvider router={router} />)\n```\n\n### 完整配置示例\n\n结合状态管理、SEO 优化等功能的完整配置：\n\n```typescript\n// src/main.tsx\nimport { createRoot } from 'react-dom/client';\nimport { HelmetProvider } from 'react-helmet-async';\nimport { createHashRouter, RouterProvider } from 'react-router';\nimport { RecoilRoot } from 'recoil';\n\nimport { routes } from \"~react-auto-pages\";\nimport './index.css';\n\n// 创建路由器\nconst router = createHashRouter(routes);\n\nconst root = createRoot(document.getElementById('root')!)\n\nroot.render(\n  <RecoilRoot>\n    <HelmetProvider>\n      <RouterProvider router={router} />\n    </HelmetProvider>\n  </RecoilRoot>\n)\n```\n\n### 添加全局错误边界\n\n为了更好的用户体验，建议添加全局错误边界：\n\n```typescript\n// src/main.tsx\nimport { createRoot } from 'react-dom/client';\nimport { createBrowserRouter, RouterProvider } from 'react-router';\nimport { ErrorBoundary } from 'react-error-boundary';\nimport { routes } from \"~react-auto-pages\";\n\nconst router = createBrowserRouter(routes);\n\nfunction ErrorFallback({error, resetErrorBoundary}) {\n  return (\n    <div className=\"error-fallback\">\n      <h2>出现了错误</h2>\n      <pre>{error.message}</pre>\n      <button onClick={resetErrorBoundary}>重试</button>\n    </div>\n  )\n}\n\nconst root = createRoot(document.getElementById('root')!)\n\nroot.render(\n  <ErrorBoundary\n    FallbackComponent={ErrorFallback}\n    onError={(error) => console.error('Application error:', error)}\n  >\n    <RouterProvider router={router} />\n  </ErrorBoundary>\n)\n```\n\n### 路由器配置选项\n\n您可以为路由器添加额外的配置选项：\n\n```typescript\n// src/main.tsx\nimport { createBrowserRouter, RouterProvider } from 'react-router';\nimport { routes } from \"~react-auto-pages\";\n\nconst router = createBrowserRouter(routes, {\n  // 基础路径配置\n  basename: process.env.NODE_ENV === 'production' ? '/my-app' : '/',\n\n  // 未来路由配置\n  future: {\n    v7_startTransition: true,\n    v7_normalizeFormMethod: true\n  }\n});\n\n// 添加路由监听器\nrouter.subscribe((state) => {\n  console.log('Route changed:', state.location.pathname);\n});\n\nconst root = createRoot(document.getElementById('root')!)\nroot.render(<RouterProvider router={router} />)\n```\n\n### 开发环境调试\n\n在开发环境中，您可以添加一些调试功能：\n\nmain.tsx\n\n```typescript\n// src/main.tsx\nimport { createRoot } from 'react-dom/client';\nimport { createBrowserRouter, RouterProvider } from 'react-router';\nimport { routes } from \"~react-auto-pages\";\n\nconst router = createBrowserRouter(routes);\n\n// 开发环境路由调试\nif (process.env.NODE_ENV === 'development') {\n  console.log('Generated routes:', routes);\n\n  // 监听路由变化\n  router.subscribe((state) => {\n    console.log('Navigation:', {\n      pathname: state.location.pathname,\n      search: state.location.search,\n      hash: state.location.hash\n    });\n  });\n}\n\nconst root = createRoot(document.getElementById('root')!)\nroot.render(<RouterProvider router={router} />)\n```\n\n```typescript\n\n```\n\n## 📁 文件系统路由\n\n### 约定式路由规则\n\nReact Auto Routes 遵循以下文件系统路由约定：\n\n#### 支持的文件类型\n\n| 文件类型 | 文件名约定 | 说明 |\n|---------|------------|------|\n| **页面组件** | `page.tsx`, `page.ts`, `index.tsx`, `index.ts` | 定义路由页面组件 |\n| **布局组件** | `layout.tsx`, `layout.ts`, `_layout.tsx`, `_layout.ts` | 定义嵌套布局 |\n| **错误页面** | `error.tsx`, `404.tsx`, `_error.tsx` | 错误边界和 404 页面 |\n| **加载组件** | `loading.tsx`, `_loading.tsx` | 加载状态组件 |\n| **路由处理器** | `handle.ts`, `_handle.ts` | 路由数据处理 |\n| **中间件** | `middleware.ts`, `_middleware.ts` | 路由中间件 |\n| **路由守卫** | `guard.ts`, `_guard.ts` | 路由守卫 |\n| **认证守卫** | `auth.ts`, `_auth.ts` | 认证检查 |\n\n#### 动态路由约定\n\n| 路由模式 | 文件路径 | 生成路由 | 说明 |\n|---------|----------|----------|------|\n| **基础路由** | `src/pages/about/page.tsx` | `/about` | 静态路由 |\n| **单参数路由** | `src/pages/users/[id]/page.tsx` | `/users/:id` | 动态参数 |\n| **多参数路由** | `src/pages/blog/[year]/[month]/page.tsx` | `/blog/:year/:month` | 多个参数 |\n| **通配符路由** | `src/pages/docs/[...slug]/page.tsx` | `/docs/*` | 捕获所有 |\n\n#### 文件优先级\n\n当同一目录下存在多个文件时，按以下优先级处理：\n\n1. `page.tsx` > `index.tsx` > `page.ts` > `index.ts`\n2. `layout.tsx` > `_layout.tsx` > `layout.ts` > `_layout.ts`\n3. `error.tsx` > `404.tsx` > `_error.tsx`\n\n### 基本路由\n\n```\nsrc/pages/\n├── page.tsx          # / (首页)\n├── about/\n│   └── page.tsx      # /about\n├── contact/\n│   └── page.tsx      # /contact\n└── 404.tsx           # 404 页面\n```\n\n### 动态路由\n\n```\nsrc/pages/\n├── users/\n│   ├── page.tsx      # /users\n│   └── [id]/\n│       └── page.tsx  # /users/:id\n├── blog/\n│   ├── page.tsx      # /blog\n│   └── [slug]/\n│       └── page.tsx  # /blog/:slug\n└── docs/\n    └── [...path]/\n        └── page.tsx  # /docs/* (通配符路由)\n```\n\n### 嵌套路由和布局\n\n```\nsrc/pages/\n├── layout.tsx        # 根布局\n├── page.tsx          # /\n├── admin/\n│   ├── layout.tsx    # 管理布局\n│   ├── page.tsx      # /admin\n│   ├── users/\n│   │   └── page.tsx  # /admin/users\n│   └── settings/\n│       └── page.tsx  # /admin/settings\n```\n\n### 特殊文件\n\n```\nsrc/pages/\n├── layout.tsx        # 布局组件\n├── error.tsx         # 错误边界\n├── loading.tsx       # 加载组件\n├── handle.ts         # 路由处理器\n├── middleware.ts     # 中间件\n├── guard.ts          # 路由守卫\n└── auth.ts           # 认证守卫\n```\n\n## 🛡️ 路由守卫\n\n### 定义守卫\n\n```typescript\n// src/pages/admin/guard.ts\nimport { defineGuard } from '@gulibs/auto-routes-client'\n\nexport default defineGuard({\n  name: 'admin-guard',\n  type: 'role',\n  redirectTo: '/403',\n  errorMessage: '需要管理员权限',\n  condition: (context) => {\n    return context.user?.role === 'admin'\n  }\n})\n```\n\n### 认证守卫\n\n```typescript\n// src/pages/profile/auth.ts\nimport { defineAuth } from '@gulibs/auto-routes-client'\n\nexport default defineAuth({\n  name: 'auth-check',\n  redirectTo: '/login',\n  errorMessage: '请先登录',\n  check: (context) => !!context.user,\n  roles: ['user', 'admin'],\n  permissions: ['read']\n})\n```\n\n### GuardOptions 接口\n\n```typescript\ninterface GuardOptions {\n  /** 守卫名称 */\n  name?: string;\n  /** 守卫类型 */\n  type?: 'auth' | 'role' | 'permission' | 'custom';\n  /** 访问被拒绝时的重定向路径 */\n  redirectTo?: string;\n  /** 错误信息 */\n  errorMessage?: string;\n  /** 守卫条件函数 */\n  condition: (context: GuardContext) => boolean | Promise<boolean>;\n}\n```\n\n## 🔧 中间件\n\n### 定义中间件\n\n```typescript\n// src/pages/blog/middleware.ts\nimport { defineMiddleware } from '@gulibs/auto-routes-client'\n\nexport default defineMiddleware({\n  name: 'blog-logger',\n  handler: async (context, next) => {\n    console.log(`访问博客: ${context.path}`)\n\n    // 执行下一个中间件\n    await next()\n  }\n})\n```\n\n### MiddlewareOptions 接口\n\n```typescript\ninterface MiddlewareOptions {\n  /** 中间件名称 */\n  name?: string;\n  /** 执行优先级（数字越小越先执行）*/\n  priority?: number;\n  /** 是否仅在开发环境执行 */\n  devOnly?: boolean;\n  /** 中间件处理函数 */\n  handler: (context: MiddlewareContext, next: () => Promise<void> | void) => Promise<void> | void;\n}\n```\n\n### 全局中间件\n\n```typescript\n// src/middleware/logger.ts\nexport default defineMiddleware({\n  name: 'global-logger',\n  handler: async (context, next) => {\n    const start = Date.now()\n\n    try {\n      await next()\n    } finally {\n      const duration = Date.now() - start\n      console.log(`[${context.path}] ${duration}ms`)\n    }\n  },\n  priority: 0\n})\n```\n\n## 📈 性能监控\n\n### 使用性能追踪\n\n```typescript\nimport { globalPerformanceTracker } from '@gulibs/vite-plugin-react-auto-routes/performance'\n\n// 启动性能监控\nglobalPerformanceTracker.startTimer('route_generation')\n\n// 结束监控\nconst duration = globalPerformanceTracker.endTimer('route_generation')\n\n// 获取统计数据\nconst stats = globalPerformanceTracker.getStats()\nconsole.log('性能统计:', stats)\n```\n\n### 性能优化建议\n\n```typescript\n// 开发环境配置\n{\n  cache: true,\n  cacheTime: 10000, // 10秒快速响应\n  debug: true,\n  performance: {\n    enableRouteCache: true,\n    routeCacheSize: 50,\n    debounceDelay: 200,\n    enablePerformanceTracking: true\n  }\n}\n\n// 生产环境配置\n{\n  cache: true,\n  cacheTime: 300000, // 5分钟长缓存\n  debug: false,\n  performance: {\n    enableRouteCache: true,\n    routeCacheSize: 500,\n    enableGuardCache: true,\n    guardCacheSize: 200,\n    enableParallelProcessing: true,\n    enableMemoryOptimization: true\n  }\n}\n```\n\n## 🎯 React Hooks\n\n### useRouteProtection\n\n综合的路由保护 Hook：\n\n```typescript\nimport { useRouteProtection } from '@gulibs/vite-plugin-react-auto-routes/hooks'\n\nfunction MyComponent() {\n  const { isLoading, guardError, user, hasAccess, performanceStats } = useRouteProtection(\n    guards,\n    middlewares\n  )\n\n  return (\n    <div>\n      {isLoading && <div>加载中...</div>}\n      {guardError && <div>错误: {guardError}</div>}\n      {hasAccess && <div>欢迎, {user?.name}!</div>}\n    </div>\n  )\n}\n```\n\n### useRouteGuards\n\n专门的守卫 Hook：\n\n```typescript\nimport { useRouteGuards } from '@gulibs/vite-plugin-react-auto-routes/hooks'\n\nfunction GuardedComponent({ guards }: { guards: any[] }) {\n  const { isChecking, guardError, hasAccess, retryCheck } = useRouteGuards(guards)\n\n  if (isChecking) return <div>检查权限...</div>\n  if (!hasAccess) return <div>访问被拒绝: {guardError}</div>\n\n  return <div>内容</div>\n}\n```\n\n### useRouteMiddleware\n\n中间件执行 Hook：\n\n```typescript\nimport { useRouteMiddleware } from '@gulibs/vite-plugin-react-auto-routes/hooks'\n\nfunction MiddlewareComponent({ middlewares }: { middlewares: any[] }) {\n  const { isExecuting, executionTime, middlewareError, executeAgain } = useRouteMiddleware(middlewares)\n\n  return (\n    <div>\n      {isExecuting && <div>执行中间件...</div>}\n      {executionTime && <div>执行时间: {executionTime}ms</div>}\n      {middlewareError && (\n        <div>\n          中间件错误: {middlewareError}\n          <button onClick={executeAgain}>重试</button>\n        </div>\n      )}\n    </div>\n  )\n}\n```\n\n### usePageConfig\n\n页面配置综合 Hook：\n\n```typescript\nimport { usePageConfig } from '@gulibs/vite-plugin-react-auto-routes/hooks'\n\nfunction PageLayout() {\n  const { breadcrumbs, meta, layoutSettings, handle } = usePageConfig()\n\n  return (\n    <div>\n      {/* 面包屑导航 */}\n      <nav className=\"breadcrumbs\">\n        {breadcrumbs.map((item, index) => (\n          <a key={index} href={item.href} className={item.className}>\n            {item.startContent}\n            {item.children}\n            {item.endContent}\n          </a>\n        ))}\n      </nav>\n\n      {/* 页面标题 */}\n      <h1>{meta?.title}</h1>\n      <p>{meta?.description}</p>\n\n      {/* 根据布局设置调整页面 */}\n      <main className={layoutSettings?.layout ? 'with-layout' : 'no-layout'}>\n        {/* 页面内容 */}\n      </main>\n\n      {/* 页脚 */}\n      {layoutSettings?.footer && <footer>页脚内容</footer>}\n    </div>\n  )\n}\n```\n\n### useHandle\n\n获取页面 Handle 配置：\n\n```typescript\nimport { useHandle } from '@gulibs/vite-plugin-react-auto-routes/hooks'\n\nfunction PageComponent() {\n  const { meta, extras, layoutSettings, breadcrumbs, matches } = useHandle()\n\n  return (\n    <div>\n      <h1>{meta?.title}</h1>\n\n      {/* 渲染额外内容 */}\n      {extras}\n\n      {/* 显示当前匹配的路由信息 */}\n      <div>\n        当前路由层级: {matches?.length}\n      </div>\n    </div>\n  )\n}\n```\n\n### useBreadcrumbs\n\n面包屑导航 Hook：\n\n```typescript\nimport { useBreadcrumbs } from '@gulibs/vite-plugin-react-auto-routes/hooks'\n\nfunction BreadcrumbNav({ handle }) {\n  const breadcrumbs = useBreadcrumbs(handle)\n\n  if (breadcrumbs.length === 0) return null\n\n  return (\n    <nav className=\"breadcrumb-nav\">\n      {breadcrumbs.map((crumb, index) => (\n        <div key={index} className=\"breadcrumb-item\">\n          {crumb.startContent}\n          <a\n            href={crumb.href}\n            className={crumb.className}\n            aria-disabled={crumb.isDisabled}\n            aria-current={crumb.isCurrent ? 'page' : undefined}\n          >\n            {crumb.children}\n          </a>\n          {crumb.endContent}\n        </div>\n      ))}\n    </nav>\n  )\n}\n```\n\n### usePageMeta 和 useLayoutSettings\n\n单独使用元数据和布局设置：\n\n```typescript\nimport { usePageMeta, useLayoutSettings } from '@gulibs/vite-plugin-react-auto-routes/hooks'\n\nfunction DocumentHead() {\n  const meta = usePageMeta()\n\n  useEffect(() => {\n    if (meta?.title) {\n      document.title = meta.title\n    }\n\n    if (meta?.description) {\n      const metaDesc = document.querySelector('meta[name=\"description\"]')\n      if (metaDesc) {\n        metaDesc.setAttribute('content', meta.description)\n      }\n    }\n  }, [meta])\n\n  return null\n}\n\nfunction LayoutController() {\n  const layoutSettings = useLayoutSettings()\n\n  return (\n    <div className={`page-container ${layoutSettings?.layout ? 'with-layout' : 'simple-layout'}`}>\n      {/* 根据布局设置渲染不同的结构 */}\n    </div>\n  )\n}\n```\n\n### 用户状态管理\n\n基于 `@gulibs/react-storage` 的持久化用户状态管理，支持浏览器刷新后状态保持。\n\n#### 快速开始\n\n```typescript\nimport { useUser } from '@gulibs/auto-routes-client';\n\nfunction App() {\n    const { user, isAuthenticated, login, logout } = useUser({\n        loginApi: async ({ username, password }) => {\n            // 调用你的登录 API\n            const response = await fetch('/api/login', {\n                method: 'POST',\n                headers: { 'Content-Type': 'application/json' },\n                body: JSON.stringify({ username, password })\n            });\n            const data = await response.json();\n            return { user: data.user, token: data.token };\n        }\n    });\n\n    if (!isAuthenticated) {\n        return <LoginPage onLogin={login} />;\n    }\n\n    return (\n        <div>\n            <h1>欢迎，{user?.username}!</h1>\n            <button onClick={logout}>退出登录</button>\n        </div>\n    );\n}\n```\n\n#### 完整配置\n\n```typescript\nimport { useUser, useUserState, useAuthToken } from '@gulibs/auto-routes-client';\n\nfunction App() {\n    // 完整的用户状态管理\n    const {\n        user,\n        token,\n        refreshToken,\n        isAuthenticated,\n        isLoading,\n        error,\n        login,\n        logout,\n        refreshUser,\n        refreshTokenAction,\n        updateUser,\n        setToken,\n        setRefreshToken,\n        clearError\n    } = useUser({\n        // 可选配置\n        storagePrefix: 'myapp',  // 存储键前缀，默认 'auth'\n        useSessionStorage: false, // 是否使用 sessionStorage，默认 false（使用 localStorage）\n\n        // 登录 API 函数\n        loginApi: async (credentials) => {\n            const response = await fetch('/api/login', {\n                method: 'POST',\n                headers: { 'Content-Type': 'application/json' },\n                body: JSON.stringify(credentials)\n            });\n\n            if (!response.ok) throw new Error('Login failed');\n\n            const data = await response.json();\n            return { user: data.user, token: data.token, refreshToken: data.refreshToken };\n        },\n\n        // 刷新Token API\n        refreshTokenApi: async (refreshToken) => {\n            const response = await fetch('/api/refresh', {\n                method: 'POST',\n                headers: {\n                    'Content-Type': 'application/json',\n                    'Authorization': `Bearer ${refreshToken}`\n                }\n            });\n\n            if (!response.ok) throw new Error('Token refresh failed');\n\n            const data = await response.json();\n            return {\n                token: data.newToken,\n                refreshToken: data.newRefreshToken,\n                user: data.user\n            };\n        },\n\n        // 获取用户信息函数\n        fetchUser: async (token) => {\n            const response = await fetch('/api/user', {\n                headers: { 'Authorization': `Bearer ${token}` }\n            });\n\n            if (!response.ok) throw new Error('Failed to fetch user');\n\n            return response.json();\n        },\n\n        // 自动刷新用户信息间隔（毫秒，0表示禁用）\n        autoRefreshInterval: 300000, // 5分钟\n\n        // Token 过期检查函数\n        isTokenExpired: (token) => {\n            try {\n                const payload = JSON.parse(atob(token.split('.')[1]));\n                return Date.now() >= payload.exp * 1000;\n            } catch {\n                return true;\n            }\n        },\n\n        // RefreshToken 过期检查函数\n        isRefreshTokenExpired: (refreshToken) => {\n            try {\n                const payload = JSON.parse(atob(refreshToken.split('.')[1]));\n                return Date.now() >= payload.exp * 1000;\n            } catch {\n                return true;\n            }\n        }\n    });\n\n    // 手动刷新Token示例\n    const handleRefreshToken = async () => {\n        try {\n            await refreshTokenAction();\n            console.log('Token刷新成功');\n        } catch (error) {\n            console.error('Token刷新失败:', error);\n            // Token刷新失败，通常意味着需要重新登录\n        }\n    };\n\n    return (\n        <div>\n            {isLoading && <div>加载中...</div>}\n            {error && (\n                <div style={{ color: 'red' }}>\n                    错误：{error}\n                    <button onClick={clearError}>清除错误</button>\n                </div>\n            )}\n\n            {isAuthenticated ? (\n                <div>\n                    <h1>欢迎，{user?.username}!</h1>\n                    <p>当前Token: {token?.substring(0, 20)}...</p>\n                    <p>RefreshToken: {refreshToken ? '已设置' : '未设置'}</p>\n\n                    <div>\n                        <button onClick={logout}>登出</button>\n                        <button onClick={refreshUser}>刷新用户信息</button>\n                        <button onClick={handleRefreshToken}>刷新Token</button>\n                        <button onClick={() => updateUser({ lastActive: new Date().toISOString() })}>\n                            更新用户信息\n                        </button>\n                    </div>\n                </div>\n            ) : (\n                <LoginForm onLogin={login} />\n            )}\n        </div>\n    );\n}\n\nfunction LoginForm({ onLogin }) {\n    const [credentials, setCredentials] = useState({ username: '', password: '' });\n\n    const handleSubmit = async (e) => {\n        e.preventDefault();\n        try {\n            await onLogin(credentials);\n        } catch (error) {\n            console.error('Login failed:', error);\n        }\n    };\n\n    return (\n        <form onSubmit={handleSubmit}>\n            <input\n                type=\"text\"\n                placeholder=\"用户名\"\n                value={credentials.username}\n                onChange={(e) => setCredentials(prev => ({ ...prev, username: e.target.value }))}\n            />\n            <input\n                type=\"password\"\n                placeholder=\"密码\"\n                value={credentials.password}\n                onChange={(e) => setCredentials(prev => ({ ...prev, password: e.target.value }))}\n            />\n            <button type=\"submit\">登录</button>\n        </form>\n    );\n}\n```\n\n#### 只读用户状态\n\n如果只需要读取用户状态，不需要登录等操作：\n\n```typescript\nimport { useUserState } from '@gulibs/auto-routes-client';\n\nfunction UserProfile() {\n    const { user, token, refreshToken, isAuthenticated } = useUserState('myapp');\n\n    if (!isAuthenticated) {\n        return <div>请先登录</div>;\n    }\n\n    return (\n        <div>\n            <h2>{user?.username}</h2>\n            <p>邮箱：{user?.email}</p>\n            <p>角色：{user?.roles?.join(', ')}</p>\n            <p>Token状态：{token ? '有效' : '无效'}</p>\n            <p>RefreshToken状态：{refreshToken ? '有效' : '无效'}</p>\n        </div>\n    );\n}\n```\n\n#### Token 管理\n\n单独管理 Token：\n\n```typescript\nimport { useAuthToken } from '@gulibs/auto-routes-client';\n\nfunction ApiService() {\n    const {\n        token,\n        refreshToken,\n        setToken,\n        setRefreshToken,\n        clearToken,\n        clearRefreshToken,\n        clearAllTokens,\n        hasToken,\n        hasRefreshToken\n    } = useAuthToken('myapp');\n\n    const apiCall = async () => {\n        if (!hasToken) {\n            throw new Error('No token available');\n        }\n\n        const response = await fetch('/api/data', {\n            headers: {\n                'Authorization': `Bearer ${token}`\n            }\n        });\n\n        return response.json();\n    };\n\n    const handleTokenRotation = async () => {\n        if (!hasRefreshToken) {\n            throw new Error('No refresh token available');\n        }\n\n        try {\n            const response = await fetch('/api/refresh', {\n                method: 'POST',\n                headers: { 'Authorization': `Bearer ${refreshToken}` }\n            });\n\n            const data = await response.json();\n            setToken(data.newToken);\n            setRefreshToken(data.newRefreshToken);\n        } catch (error) {\n            // 刷新失败，清除所有Token\n            clearAllTokens();\n            throw error;\n        }\n    };\n\n    return {\n        apiCall,\n        handleTokenRotation,\n        hasValidTokens: hasToken && hasRefreshToken,\n        clearAllTokens\n    };\n}\n```\n\n## ⚙️ 配置选项\n\n### 基础选项\n\n```typescript\ninterface UserOptions {\n  dirs: RouteOption[]           // 路由目录配置\n  cache?: boolean              // 启用缓存\n  cacheTime?: number           // 缓存时间(ms)\n  debug?: boolean              // 调试模式\n  dynamic?: boolean            // 动态导入\n  routeMode?: 'nested' | 'flat' // 路由模式\n}\n```\n\n### 路由目录配置\n\n```typescript\ninterface RouteOption {\n  dir: string                  // 目录路径\n  baseRoute: string            // 基础路由\n  include?: string[]           // 包含文件模式\n  exclude?: string[]           // 排除文件模式\n}\n```\n\n## 📚 示例项目\n\n### 完整演示项目\n\n查看 `examples/auto-routes-demo/` 目录中的完整示例项目，包含：\n\n#### 📁 项目结构\n\n```\nsrc/pages/\n├── page.tsx                    # 首页\n├── layout.tsx                  # 根布局\n├── loading.tsx                 # 全局加载组件\n├── 404.tsx                     # 404 错误页面\n├── getting-started/            # 快速开始指南\n├── file-system-routing/        # 文件系统路由说明\n├── dynamic-routes/             # 动态路由示例\n├── route-guards/               # 路由守卫演示\n├── middleware/                 # 中间件使用\n├── performance/                # 性能优化展示\n├── hooks/                      # React Hooks 示例\n├── user-management/            # 用户状态管理\n├── users/                      # 用户列表和详情（动态路由）\n│   ├── page.tsx               # 用户列表页\n│   └── [id]/page.tsx          # 用户详情页\n├── blog/                       # 博客文章（动态路由）\n│   ├── page.tsx               # 文章列表页\n│   └── [slug]/page.tsx        # 文章详情页\n└── test-nested/                # 嵌套路由测试\n    ├── layout.tsx             # 嵌套布局\n    ├── page.tsx               # 嵌套首页\n    ├── loading.tsx            # 嵌套加载\n    ├── middleware.ts          # 嵌套中间件\n    ├── guard.ts               # 嵌套守卫\n    └── admin/                 # 管理员子路由\n        └── auth.ts            # 认证配置\n```\n\n#### 🚀 运行示例\n\n```bash\ncd examples/auto-routes-demo\nnpm install\nnpm run dev\n```\n\n#### 🎮 功能演示\n\n- ✅ **基础路由**：文件系统自动路由生成\n- ✅ **动态路由**：用户详情页 `/users/:id` 和博客文章 `/blog/:slug`\n- ✅ **嵌套路由**：多层布局和子路由结构\n- ✅ **路由守卫**：基于角色的访问控制\n- ✅ **中间件**：路由级数据预处理\n- ✅ **性能监控**：实时性能数据展示\n- ✅ **用户状态**：持久化用户认证状态\n- ✅ **错误处理**：优雅的 404 和错误边界\n- ✅ **TypeScript 支持**：完整的类型定义\n\n## 🔍 调试和开发\n\n### 开启调试模式\n\n```typescript\nreactAutoRoutes({\n  debug: true, // 开启调试输出\n  dirs: [...]\n})\n```\n\n调试输出示例：\n\n```\n[react-auto-routes] Generated 12 route(s) with 8 import(s) in 45ms\n[react-auto-routes] Cache hit rate: 85%\n[react-auto-routes] Guard execution: 0.02ms\n[react-auto-routes] Middleware execution: 1.15ms\n[react-auto-routes] Using cached routes (12 routes, 8 imports)\n```\n\n### 性能分析\n\n```bash\n# 运行性能测试\nnpm run performance-test\n\n# 查看构建分析\nnpm run build -- --analyze\n```\n\n## 🛠️ 高级用法\n\n### 自定义路由处理器\n\n```typescript\n// src/pages/api/users/handle.ts\nexport default {\n  loader: async ({ params, request }) => {\n    // 数据加载逻辑\n    return await fetchUsers()\n  },\n  action: async ({ params, request }) => {\n    // 表单处理逻辑\n    return await createUser(await request.formData())\n  },\n  shouldRevalidate: ({ currentParams, nextParams }) => {\n    // 重新验证条件\n    return currentParams.id !== nextParams.id\n  }\n}\n```\n\n### 元数据和面包屑\n\n```typescript\n// src/pages/blog/[slug]/handle.ts\nexport default {\n  meta: {\n    title: '博客详情',\n    description: '查看博客文章详情',\n    keywords: ['博客', '文章']\n  },\n  breadcrumbs: {\n    href: '/blog',\n    className: 'breadcrumb-item',\n    startContent: <HomeIcon />,\n    endContent: <ChevronRightIcon />\n  }\n}\n```\n\n### 错误边界\n\n```typescript\n// src/pages/error.tsx\nimport { useRouteError } from 'react-router'\n\nexport default function ErrorBoundary() {\n  const error = useRouteError()\n\n  return (\n    <div className=\"error-page\">\n      <h1>出错了！</h1>\n      <p>{error?.message || '发生了未知错误'}</p>\n    </div>\n  )\n}\n```\n\n## 📦 导出模块\n\n### 主模块\n\n```typescript\nimport reactAutoRoutes from '@gulibs/vite-plugin-react-auto-routes'\n```\n\n### 客户端工具\n\n```typescript\nimport {\n  defineHandle,\n  defineGuard,\n  defineAuth,\n  defineMiddleware,\n  defineRoleGuard,\n  definePermissionGuard,\n  defineCustomGuard\n} from '@gulibs/auto-routes-client'\n```\n\n### React Hooks\n\n> **注意**：从 v0.2.5 开始，所有 React Hooks 已迁移到 `@gulibs/auto-routes-client` 包中。\n\n```typescript\nimport {\n  useRouteProtection,\n  useRouteGuards,\n  useRouteMiddleware,\n  useUser,\n  useUserState,\n  useAuthToken,\n  useHandle,\n  useBreadcrumbs,\n  usePageMeta,\n  useLayoutSettings,\n  usePageConfig\n} from '@gulibs/auto-routes-client'\n```\n\n### 工具函数\n\n> **注意**：从 v0.2.5 开始，所有工具函数已迁移到 `@gulibs/auto-routes-client` 包中。\n\n```typescript\nimport {\n  // 路由相关\n  normalizePath,\n  joinPath,\n  matchPath,\n  extractParams,\n\n  // 字符串处理\n  toCamelCase,\n  toKebabCase,\n  capitalize,\n  truncate,\n\n  // 对象和数组操作\n  deepClone,\n  deepMerge,\n  unique,\n  groupBy,\n\n  // 缓存\n  SimpleCache,\n\n  // 性能相关\n  debounce,\n  throttle,\n  measureTime,\n\n  // URL处理\n  parseQuery,\n  buildQuery,\n  updateQuery,\n\n  // 错误处理\n  safely,\n  safelyAsync\n} from '@gulibs/auto-routes-client'\n```\n\n### 性能工具\n\n> **注意**：从 v0.2.5 开始，所有性能工具已迁移到 `@gulibs/auto-routes-client` 包中。\n\n```typescript\nimport {\n  PerformanceCache,\n  PerformanceTracker,\n  BatchProcessor,\n  Debouncer,\n  MemoryOptimizer,\n  globalPerformanceTracker,\n  globalMemoryOptimizer,\n  measureAsync,\n  throttle\n} from '@gulibs/auto-routes-client'\n```\n\n### 运行时\n\n> **注意**：从 v0.2.5 开始，所有运行时功能已迁移到 `@gulibs/auto-routes-client` 包中。\n\n```typescript\nimport {\n  RuntimeExecutor,\n  createRuntimeContext\n} from '@gulibs/auto-routes-client'\n```\n\n### 错误处理\n\n```typescript\nimport {\n  AutoRouteError,\n  ErrorBuilder,\n  logError,\n  logWarning,\n  logInfo,\n  logSuccess\n} from '@gulibs/vite-plugin-react-auto-routes/errors'\n```\n\n## 📄 许可证\n\n[MIT](LICENSE) © GuLibs\n\n## 🙏 致谢\n\n感谢所有贡献者和用户的支持！\n\n---\n\n## 📞 支持\n\n- 📖 [文档](https://github.com/gulibs/vite-plugin-react-auto-routes/blob/main/README.md)\n- 🐛 [问题反馈](https://github.com/gulibs/vite-plugin-react-auto-routes/issues)\n- 💬 [讨论](https://github.com/gulibs/vite-plugin-react-auto-routes/discussions)\n- 📧 [邮件支持](mailto:support@gulibs.com)\n\n**如果这个项目对你有帮助，请给我们一个 ⭐️ ！**\n\n### 功能特性\n\n- ✅ **持久化存储**：基于 localStorage/sessionStorage，刷新浏览器状态不丢失\n- ✅ **跨标签页同步**：多个标签页状态自动同步\n- ✅ **完全灵活的泛型支持**：无强制字段约束，用户可以定义任意类型结构\n- ✅ **智能字段映射**：支持任意 API 响应格式，自动映射字段名\n- ✅ **强大的数据转换**：登录前 / 后、存储前 / 后的完整数据转换链\n- ✅ **双 Token 机制**：支持 access token 和 refresh token 的完整认证流程\n- ✅ **自动 Token 刷新**：检测 token 过期并自动使用 refresh token 刷新\n- ✅ **自动用户信息刷新**：可配置定时刷新用户数据\n- ✅ **完善的错误处理**：全面的错误捕获和处理机制\n- ✅ **完整的 TypeScript 支持**：提供完整的类型定义和智能提示\n- ✅ **多场景适配**：支持微服务、第三方认证（Firebase、Auth0）等各种架构\n\n### 最佳实践\n\n1. **合理设置存储类型**：\n   - 敏感应用使用 `sessionStorage`（关闭浏览器后清除）\n   - 一般应用使用 `localStorage`（持久保存）\n\n2. **Token 安全**：\n   - 设置合理的过期时间\n   - 实现自动刷新机制\n   - 敏感操作时重新验证\n\n3. **错误处理**：\n   - 监听 `error` 状态\n   - 提供用户友好的错误提示\n   - 实现重试机制\n\n4. **性能优化**：\n   - 使用 `useUserState` 进行只读访问\n   - 合理设置自动刷新间隔\n   - 避免不必要的 API 调用\n\n## ⚙️ 配置选项\n\n#### 完全自定义的用户类型\n\n```typescript\nimport { useUser, FieldMapping, DataTransformers } from '@gulibs/auto-routes-client';\n\n// 完全自定义的用户类型（无需继承任何基础接口）\ninterface MyCustomUser {\n    userId: string;\n    fullName: string;\n    email: string;\n    department: {\n        id: number;\n        name: string;\n    };\n    settings: {\n        theme: 'light' | 'dark';\n        notifications: boolean;\n    };\n}\n\n// 完全自定义的登录凭据\ninterface MyLoginData {\n    email: string;\n    password: string;\n    captcha: string;\n    rememberMe: boolean;\n}\n\nfunction App() {\n    const { user, login, logout } = useUser<MyCustomUser, MyLoginData>({\n        loginApi: async (credentials) => {\n            const response = await fetch('/api/auth/login', {\n                method: 'POST',\n                headers: { 'Content-Type': 'application/json' },\n                body: JSON.stringify(credentials)\n            });\n            const data = await response.json();\n\n            // 你的API返回什么格式都可以，无需遵循任何规则\n            return data; // 例如: { userData: {...}, accessToken: \"...\", refreshToken: \"...\" }\n        },\n\n        // 字段映射：告诉hook你的API字段名\n        fieldMapping: {\n            userField: 'userData',        // 你的API用户数据字段名\n            tokenField: 'accessToken',    // 你的API token字段名\n            refreshTokenField: 'refreshToken'\n        },\n\n        // 数据转换：完全控制数据的转换过程\n        transformers: {\n            // 登录前转换凭据（例如加密密码）\n            transformCredentials: (credentials) => ({\n                ...credentials,\n                password: btoa(credentials.password), // base64编码密码\n                deviceInfo: navigator.userAgent\n            }),\n\n            // 从API响应转换用户数据\n            transformUser: (apiUserData) => ({\n                userId: apiUserData.id,\n                fullName: `${apiUserData.firstName} ${apiUserData.lastName}`,\n                email: apiUserData.emailAddress,\n                department: apiUserData.dept,\n                settings: apiUserData.userSettings\n            }),\n\n            // 存储前转换（例如数据压缩、敏感信息移除）\n            beforeStore: (userData) => ({\n                ...userData,\n                // 移除敏感信息，只存储必要数据\n                department: { ...userData.department },\n                settings: { ...userData.settings }\n            }),\n\n            // 读取后转换（例如数据恢复、默认值设置）\n            afterRestore: (storedData) => ({\n                ...storedData,\n                // 添加默认值或计算属性\n                settings: {\n                    theme: 'light',\n                    notifications: true,\n                    ...storedData.settings\n                }\n            })\n        }\n    });\n\n    return (\n        <div>\n            {user ? (\n                <div>\n                    <h1>欢迎，{user.fullName}!</h1>\n                    <p>部门：{user.department.name}</p>\n                    <p>主题：{user.settings.theme}</p>\n                    <button onClick={logout}>登出</button>\n                </div>\n            ) : (\n                <LoginForm onLogin={login} />\n            )}\n        </div>\n    );\n}\n\nfunction LoginForm({ onLogin }) {\n    const [credentials, setCredentials] = useState<MyLoginData>({\n        email: '',\n        password: '',\n        captcha: '',\n        rememberMe: false\n    });\n\n    const handleSubmit = async (e) => {\n        e.preventDefault();\n        await onLogin(credentials);\n    };\n\n    return (\n        <form onSubmit={handleSubmit}>\n            <input\n                type=\"email\"\n                value={credentials.email}\n                onChange={(e) => setCredentials(prev => ({ ...prev, email: e.target.value }))}\n            />\n            <input\n                type=\"password\"\n                value={credentials.password}\n                onChange={(e) => setCredentials(prev => ({ ...prev, password: e.target.value }))}\n            />\n            <input\n                type=\"text\"\n                placeholder=\"验证码\"\n                value={credentials.captcha}\n                onChange={(e) => setCredentials(prev => ({ ...prev, captcha: e.target.value }))}\n            />\n            <label>\n                <input\n                    type=\"checkbox\"\n                    checked={credentials.rememberMe}\n                    onChange={(e) => setCredentials(prev => ({ ...prev, rememberMe: e.target.checked }))}\n                />\n                记住我\n            </label>\n            <button type=\"submit\">登录</button>\n        </form>\n    );\n}\n```\n\n#### 字段映射和数据转换\n\n```typescript\n// 场景1：API返回的字段名与标准不同\nconst { user } = useUser<CustomUser, CustomCredentials>({\n    fieldMapping: {\n        userField: 'profile',           // API返回 { profile: {...}, token: \"...\", refresh_token: \"...\" }\n        tokenField: 'token',\n        refreshTokenField: 'refresh_token'\n    }\n});\n\n// 场景2：复杂的数据转换\nconst { user } = useUser<CustomUser, CustomCredentials>({\n    transformers: {\n        // 转换API响应的用户数据\n        transformUser: (apiData) => ({\n            id: apiData.user_id,\n            name: `${apiData.first_name} ${apiData.last_name}`,\n            email: apiData.email_address,\n            roles: apiData.permissions.map(p => p.role),\n            avatar: apiData.profile_image_url || '/default-avatar.png'\n        }),\n\n        // 存储前数据处理\n        beforeStore: (userData) => {\n            // 移除大对象，只存储关键信息\n            const { avatar, ...essentialData } = userData;\n            return essentialData;\n        },\n\n        // 读取后数据恢复\n        afterRestore: (storedData) => ({\n            ...storedData,\n            // 恢复默认头像\n            avatar: storedData.avatar || '/default-avatar.png',\n            // 添加计算属性\n            displayName: storedData.name || storedData.email\n        })\n    }\n});\n\n// 场景3：第三方API集成（例如Firebase、Auth0等）\nconst { user } = useUser<FirebaseUser, FirebaseCredentials>({\n    loginApi: async (credentials) => {\n        const firebaseResponse = await signInWithEmailAndPassword(auth, credentials.email, credentials.password);\n        const token = await firebaseResponse.user.getIdToken();\n\n        return {\n            user: firebaseResponse.user,\n            token: token,\n            refreshToken: firebaseResponse.user.refreshToken\n        };\n    },\n\n    transformers: {\n        transformUser: (firebaseUser) => ({\n            uid: firebaseUser.uid,\n            email: firebaseUser.email,\n            displayName: firebaseUser.displayName,\n            photoURL: firebaseUser.photoURL,\n            emailVerified: firebaseUser.emailVerified\n        })\n    }\n});\n```\n\n#### 微服务架构场景\n\n```typescript\n// 适配不同微服务的响应格式\ninterface UserServiceResponse {\n    success: boolean;\n    data: {\n        userInfo: CustomUser;\n        authToken: string;\n        refreshToken: string;\n    };\n    message: string;\n}\n\nconst { user } = useUser<CustomUser, CustomCredentials>({\n    loginApi: async (credentials) => {\n        const response = await fetch('/api/user-service/login', {\n            method: 'POST',\n            body: JSON.stringify(credentials)\n        });\n        const result: UserServiceResponse = await response.json();\n\n        if (!result.success) {\n            throw new Error(result.message);\n        }\n\n        // 返回标准格式\n        return {\n            user: result.data.userInfo,\n            token: result.data.authToken,\n            refreshToken: result.data.refreshToken\n        };\n    },\n\n    // 或者使用字段映射\n    fieldMapping: {\n        userField: 'data.userInfo',\n        tokenField: 'data.authToken',\n        refreshTokenField: 'data.refreshToken'\n    }\n});\n```\n","readmeFilename":"README.md"}