{"_id":"rou3","_rev":"37-f84919b4dc40d849430ae5ff02d7ecbb","name":"rou3","dist-tags":{"latest":"1.0.0"},"versions":{"0.0.0":{"name":"rou3","version":"0.0.0","_id":"rou3@0.0.0","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"dist":{"shasum":"974b645a6b8bcc20fc35468baa50f513c8f68a1d","tarball":"https://registry.npmjs.org/rou3/-/rou3-0.0.0.tgz","fileCount":1,"integrity":"sha512-izQnA7dXewrYMgapHuKZ+GOtifKUZN5JQcVLcgZcdJ/rqWDh2qh61FxNgEZCMjaYqv8VWx1sM5T6GKm3y/px6Q==","signatures":[{"sig":"MEQCIF8pvSOOe96/D766wQICFXFM3UVZHoPIFyIHj+S+9GQbAiBiyqaf3u4StunpW+lKUjBBBuWDlc29MeRV1KuzRrFGtA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":33},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"_npmVersion":"10.8.1","directories":{},"_nodeVersion":"22.4.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/rou3_0.0.0_1720115468769_0.21687034290160656","host":"s3://npm-registry-packages"}},"0.0.1":{"name":"rou3","version":"0.0.1","license":"MIT","_id":"rou3@0.0.1","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"homepage":"https://github.com/unjs/rou3#readme","bugs":{"url":"https://github.com/unjs/rou3/issues"},"dist":{"shasum":"acfd4b7f0921bdbb841b3c467313f7ce835b73be","tarball":"https://registry.npmjs.org/rou3/-/rou3-0.0.1.tgz","fileCount":8,"integrity":"sha512-Ubilzd8zXIn8rFyw9KlvKiUuUCTR8ighDArYY113CxDlm3stDEOKrchCPRsr/+Kjuwa6BwijToqElIbU8q8LQA==","signatures":[{"sig":"MEQCIAiIZi/hMXffsjC+44hRY8P/Mmu6Ewx3J3wcBAVJiOawAiB5GFyr8ce803zS10SsIgPvliR7Mx7AjFH/oE1dCEdtzg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":23290},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"}},"gitHead":"a1e42a07b8846dcfc9b93572b4ea2ec5f7d89ecb","scripts":{"dev":"vitest","lint":"eslint . && prettier -c src tests","test":"pnpm lint && pnpm test:types && vitest run","bench":"node ./benchmark/direct.mjs","build":"unbuild","release":"pnpm test && pnpm build && changelogen --release && git push --follow-tags && npm publish","lint:fix":"eslint --fix . && prettier -w src tests","bench:http":"node ./benchmark/http.mjs","playground":"pnpm jiti ./playground.ts","test:types":"tsc --noEmit","bench:profile":"0x -o -D benchmark/.profile -- node ./benchmark/direct.mjs"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"git+https://github.com/unjs/rou3.git","type":"git"},"_npmVersion":"10.7.0","description":"Lightweight and fast router for JavaScript based on Radix Tree","directories":{},"sideEffects":false,"_nodeVersion":"20.15.0","dependencies":{"automd":"^0.3.7"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.4.0","devDependencies":{"0x":"^5.7.0","hono":"^4.4.11","jiti":"^1.21.6","eslint":"^9.6.0","mitata":"^0.1.11","radix3":"^1.1.2","vitest":"^1.6.0","listhen":"^1.7.2","unbuild":"^2.0.0","prettier":"^3.3.2","benchmark":"^2.1.4","autocannon":"^7.15.0","typescript":"^5.5.3","changelogen":"^0.5.5","find-my-way":"^8.2.0","trek-router":"^1.2.0","@medley/router":"^0.2.1","koa-tree-router":"^0.12.1","standard-version":"^9.5.0","eslint-config-unjs":"^0.3.2","@vitest/coverage-v8":"^1.6.0"},"_npmOperationalInternal":{"tmp":"tmp/rou3_0.0.1_1720131637473_0.706901241248288","host":"s3://npm-registry-packages"}},"0.1.0":{"name":"rou3","version":"0.1.0","license":"MIT","_id":"rou3@0.1.0","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"homepage":"https://github.com/unjs/rou3#readme","bugs":{"url":"https://github.com/unjs/rou3/issues"},"dist":{"shasum":"564ef39975ac6c76c4b4f750e8065479a0f4aec4","tarball":"https://registry.npmjs.org/rou3/-/rou3-0.1.0.tgz","fileCount":8,"integrity":"sha512-/XsAcVWWDQilIc8G15da40sPN77TZ91DdWBx+B8khqg6yjFhuFObtx90BNdRQBUfFPQPa4zf6myZu3gk5Rs+Yg==","signatures":[{"sig":"MEUCIQCYqwEGMU5F/fhoylHcSAzm7t4DXxAqAN6y1k6MLnrVDQIgHBkYk8Hyjvo9U5VcG/B1p+MhgXu8lNEXNsjVEo/k/OM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22419},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.cts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"9ce708aa5c385db0b70f0239b2f9cea4080de818","scripts":{"dev":"vitest","lint":"eslint . && prettier -c src tests benchmark","test":"pnpm lint && pnpm test:types && vitest run","build":"unbuild","release":"pnpm test && pnpm build && changelogen --release && git push --follow-tags && npm publish","lint:fix":"automd && eslint --fix . && prettier -w src tests benchmark","playground":"pnpm jiti ./playground.ts","test:types":"tsc --noEmit","update-bench":"pnpm build && pnpm automd --dir benchmark && bun --bun automd --dir benchmark"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"git+https://github.com/unjs/rou3.git","type":"git"},"_npmVersion":"10.7.0","description":"Lightweight and fast router for JavaScript based on Radix Tree","directories":{},"sideEffects":false,"_nodeVersion":"20.15.0","_hasShrinkwrap":false,"packageManager":"pnpm@9.4.0","devDependencies":{"0x":"^5.7.0","hono":"^4.4.11","jiti":"^1.21.6","automd":"^0.3.8","eslint":"^9.6.0","mitata":"^0.1.11","radix3":"^1.1.2","vitest":"^1.6.0","esbuild":"^0.23.0","listhen":"^1.7.2","unbuild":"^3.0.0-rc.6","prettier":"^3.3.2","typescript":"^5.5.3","changelogen":"^0.5.5","find-my-way":"^8.2.0","@medley/router":"^0.2.1","koa-tree-router":"^0.12.1","eslint-config-unjs":"^0.3.2","@vitest/coverage-v8":"^1.6.0"},"_npmOperationalInternal":{"tmp":"tmp/rou3_0.1.0_1720192210820_0.16631412713369698","host":"s3://npm-registry-packages"}},"0.2.0":{"name":"rou3","version":"0.2.0","license":"MIT","_id":"rou3@0.2.0","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"homepage":"https://github.com/unjs/rou3#readme","bugs":{"url":"https://github.com/unjs/rou3/issues"},"dist":{"shasum":"00caa8099f872af21bd339017f08dbf2eb66ea63","tarball":"https://registry.npmjs.org/rou3/-/rou3-0.2.0.tgz","fileCount":8,"integrity":"sha512-pM+Zd++BIMNcfZXOsErMc8ycuYFB6Y5dmanMfyIOXwiDhYx3EDDoLPKEn5oMSl/P9s4Yi0Y2+cqzrTCw83Q7iQ==","signatures":[{"sig":"MEUCIAUuCAzHApplTLcVMrVq88TRc0UMcWmk1YW+PpgZ8dfcAiEAjqrV7oj8bovQu9PxhM6L/yjrvSoqnjmyY5koplJyOVk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":23024},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.cts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"6bde12761f2f9131cc6c3c1ad77a08cc54549448","scripts":{"dev":"vitest","lint":"eslint . && prettier -c src tests benchmark","test":"pnpm lint && pnpm test:types && vitest run --coverage","build":"unbuild","release":"pnpm test && pnpm build && changelogen --release && git push --follow-tags && npm publish","lint:fix":"automd && eslint --fix . && prettier -w src tests benchmark","playground":"pnpm jiti ./playground.ts","test:types":"tsc --noEmit","update-bench":"pnpm build && pnpm automd --dir benchmark && bun --bun automd --dir benchmark"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"git+https://github.com/unjs/rou3.git","type":"git"},"_npmVersion":"10.7.0","description":"Lightweight and fast router for JavaScript based on Radix Tree","directories":{},"sideEffects":false,"_nodeVersion":"20.15.0","_hasShrinkwrap":false,"packageManager":"pnpm@9.5.0","devDependencies":{"0x":"^5.7.0","hono":"^4.4.12","jiti":"^1.21.6","automd":"^0.3.8","eslint":"^9.6.0","mitata":"^0.1.11","radix3":"^1.1.2","vitest":"^1.6.0","esbuild":"^0.23.0","listhen":"^1.7.2","unbuild":"^3.0.0-rc.6","prettier":"^3.3.2","typescript":"^5.5.3","changelogen":"^0.5.5","find-my-way":"^8.2.0","@medley/router":"^0.2.1","koa-tree-router":"^0.12.1","eslint-config-unjs":"^0.3.2","@vitest/coverage-v8":"^1.6.0"},"_npmOperationalInternal":{"tmp":"tmp/rou3_0.2.0_1720434682110_0.5438204047755053","host":"s3://npm-registry-packages"}},"0.3.0":{"name":"rou3","version":"0.3.0","license":"MIT","_id":"rou3@0.3.0","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"homepage":"https://github.com/unjs/rou3#readme","bugs":{"url":"https://github.com/unjs/rou3/issues"},"dist":{"shasum":"323cb8b943a788e89bca14aba46565d629546795","tarball":"https://registry.npmjs.org/rou3/-/rou3-0.3.0.tgz","fileCount":8,"integrity":"sha512-LuczPaoIFq73kb9CrL77KhPjVtRYdFRUimzHwnd7yCyKlNx0Teul/LIAZbeE9QlT6re4V8CuzWBmWOC+hBDdxA==","signatures":[{"sig":"MEUCIQDC+PzcRuHEUVTKnOyLQoasCVQRNC3nZ1JdLDfLtI3kyAIgNHu7pzVa6ZEtWpncuku7D5gFlu4JzQD3pI5zNaA0MsQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":23684},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.cts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"41ba417f47c887a618998cfd44255145061f947b","scripts":{"dev":"vitest","lint":"eslint . && prettier -c src test","test":"pnpm lint && pnpm test:types && vitest run --coverage","build":"unbuild","release":"pnpm test && pnpm build && changelogen --release && git push --follow-tags && npm publish","lint:fix":"automd && eslint --fix . && prettier -w src test","bench:bun":"bun ./test/bench","bench:node":"node --import jiti/register ./test/bench","test:types":"tsc --noEmit"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"git+https://github.com/unjs/rou3.git","type":"git"},"_npmVersion":"10.7.0","description":"Lightweight and fast router for JavaScript based on Radix Tree","directories":{},"sideEffects":false,"_nodeVersion":"20.15.0","_hasShrinkwrap":false,"packageManager":"pnpm@9.5.0","devDependencies":{"0x":"^5.7.0","hono":"^4.4.12","jiti":"^2.0.0-beta.3","automd":"^0.3.8","eslint":"^9.6.0","mitata":"^0.1.11","radix3":"^1.1.2","vitest":"^2.0.1","esbuild":"^0.23.0","listhen":"^1.7.2","unbuild":"^3.0.0-rc.6","prettier":"^3.3.2","typescript":"^5.5.3","changelogen":"^0.5.5","find-my-way":"^8.2.0","rou3-release":"npm:rou3@0.2.0","@medley/router":"^0.2.1","koa-tree-router":"^0.12.1","eslint-config-unjs":"^0.3.2","@vitest/coverage-v8":"^2.0.1"},"_npmOperationalInternal":{"tmp":"tmp/rou3_0.3.0_1720523210780_0.8567362015224667","host":"s3://npm-registry-packages"}},"0.4.0":{"name":"rou3","version":"0.4.0","license":"MIT","_id":"rou3@0.4.0","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"homepage":"https://github.com/unjs/rou3#readme","bugs":{"url":"https://github.com/unjs/rou3/issues"},"dist":{"shasum":"aa803d8027476ab574b699a5b9f6382f192c42a2","tarball":"https://registry.npmjs.org/rou3/-/rou3-0.4.0.tgz","fileCount":8,"integrity":"sha512-ETiLqy6XJXJ+254BLwdBCbb4diS0gfiTxUuYym+/TuMVsdS/EOPs07vIkXSRFVnOraFDEKGtRLniJSx441qr2Q==","signatures":[{"sig":"MEYCIQCaCRYqLH5EwBqZH8vm3DuJtNiwoT26DLZ6KaI4pV/sTAIhAIv0VbOkH6f3uOTBG/7r3XDygq1AuX08Hraq5Dxob6IB","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":23796},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.cts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"080e21177de248e5ece6adaab926028d8567e1b7","scripts":{"dev":"vitest","lint":"eslint . && prettier -c src test","test":"pnpm lint && pnpm test:types && vitest run --coverage","build":"unbuild","release":"pnpm test && pnpm build && changelogen --release && git push --follow-tags && npm publish","lint:fix":"automd && eslint --fix . && prettier -w src test","bench:bun":"bun ./test/bench","bench:node":"node --import jiti/register ./test/bench","test:types":"tsc --noEmit"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"git+https://github.com/unjs/rou3.git","type":"git"},"_npmVersion":"10.7.0","description":"Lightweight and fast router for JavaScript based on Radix Tree","directories":{},"sideEffects":false,"_nodeVersion":"20.15.0","_hasShrinkwrap":false,"packageManager":"pnpm@9.5.0","devDependencies":{"0x":"^5.7.0","hono":"^4.4.12","jiti":"^2.0.0-beta.3","automd":"^0.3.8","eslint":"^9.6.0","mitata":"^0.1.11","radix3":"^1.1.2","vitest":"^2.0.1","esbuild":"^0.23.0","listhen":"^1.7.2","unbuild":"^3.0.0-rc.6","prettier":"^3.3.2","typescript":"^5.5.3","changelogen":"^0.5.5","find-my-way":"^8.2.0","rou3-release":"npm:rou3@0.3.0","@medley/router":"^0.2.1","koa-tree-router":"^0.12.1","eslint-config-unjs":"^0.3.2","@vitest/coverage-v8":"^2.0.1"},"_npmOperationalInternal":{"tmp":"tmp/rou3_0.4.0_1720553340196_0.8923859819313626","host":"s3://npm-registry-packages"}},"0.5.0":{"name":"rou3","version":"0.5.0","license":"MIT","_id":"rou3@0.5.0","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"homepage":"https://github.com/unjs/rou3#readme","bugs":{"url":"https://github.com/unjs/rou3/issues"},"dist":{"shasum":"ca2765ef3d7b1e2201de40893b5a73528c3c4a2b","tarball":"https://registry.npmjs.org/rou3/-/rou3-0.5.0.tgz","fileCount":8,"integrity":"sha512-PrrLNa4xU9zjAeQy8wNAfa3PydOt//00QscCUm8Hpp0b/qQtXhi7HtocoLfF/5jOBRsQ+BtyxxDCzS14XdRjAA==","signatures":[{"sig":"MEYCIQCYu0n8u3n12v8ni+lvG443NlSQ9obzpBtchI8ebZCpLAIhAOssZ09LjrKT0dHC8UruE1yRYmlfXq4KXRpgIv4ENHSX","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25634},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.cts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"88a21d76b2b4528f82544e84182731bca2b4ec3e","scripts":{"dev":"vitest","lint":"eslint . && prettier -c src test","test":"pnpm lint && pnpm test:types && vitest run --coverage","build":"unbuild","release":"pnpm test && pnpm build && changelogen --release && git push --follow-tags && npm publish","lint:fix":"automd && eslint --fix . && prettier -w src test","bench:bun":"bun ./test/bench","bench:node":"node --import jiti/register ./test/bench","test:types":"tsc --noEmit"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"git+https://github.com/unjs/rou3.git","type":"git"},"_npmVersion":"10.7.0","description":"Lightweight and fast router for JavaScript based on Radix Tree","directories":{},"sideEffects":false,"_nodeVersion":"20.15.1","_hasShrinkwrap":false,"packageManager":"pnpm@9.5.0","devDependencies":{"0x":"^5.7.0","hono":"^4.5.0","jiti":"^2.0.0-beta.3","automd":"^0.3.8","eslint":"^9.7.0","mitata":"^0.1.11","radix3":"^1.1.2","vitest":"^2.0.3","esbuild":"^0.23.0","listhen":"^1.7.2","unbuild":"^3.0.0-rc.7","prettier":"^3.3.3","typescript":"^5.5.3","changelogen":"^0.5.5","find-my-way":"^8.2.0","rou3-release":"npm:rou3@0.4.0","@medley/router":"^0.2.1","koa-tree-router":"^0.12.1","eslint-config-unjs":"^0.3.2","@vitest/coverage-v8":"^2.0.3"},"_npmOperationalInternal":{"tmp":"tmp/rou3_0.5.0_1721833477164_0.5029969516617752","host":"s3://npm-registry-packages"}},"0.5.1":{"name":"rou3","version":"0.5.1","license":"MIT","_id":"rou3@0.5.1","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"homepage":"https://github.com/unjs/rou3#readme","bugs":{"url":"https://github.com/unjs/rou3/issues"},"dist":{"shasum":"414d1123631f45474df743c9fc904d757bb2e43c","tarball":"https://registry.npmjs.org/rou3/-/rou3-0.5.1.tgz","fileCount":8,"integrity":"sha512-OXMmJ3zRk2xeXFGfA3K+EOPHC5u7RDFG7lIOx0X1pdnhUkI8MdVrbV+sNsD80ElpUZ+MRHdyxPnFthq9VHs8uQ==","signatures":[{"sig":"MEUCIE2dCCBHIpTtUfKCSZba3EsNn6ig4uieFZYsOlP8dbmhAiEA/qM0Puq12J87/j77iow2fBPxyaNLH7yHr4twdTXS/Yc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24698},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.cts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"80601676abff199ef8a7de4f7d468b03ceb3ef1b","scripts":{"dev":"vitest","lint":"eslint . && prettier -c src test","test":"pnpm lint && pnpm test:types && vitest run --coverage","build":"unbuild","release":"pnpm test && pnpm build && changelogen --release && git push --follow-tags && npm publish","lint:fix":"automd && eslint --fix . && prettier -w src test","bench:bun":"bun ./test/bench","bench:node":"node --import jiti/register ./test/bench","test:types":"tsc --noEmit"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"git+https://github.com/unjs/rou3.git","type":"git"},"_npmVersion":"10.7.0","description":"Lightweight and fast router for JavaScript based on Radix Tree","directories":{},"sideEffects":false,"_nodeVersion":"20.15.1","_hasShrinkwrap":false,"packageManager":"pnpm@9.5.0","devDependencies":{"0x":"^5.7.0","hono":"^4.5.0","jiti":"^2.0.0-beta.3","automd":"^0.3.8","eslint":"^9.7.0","mitata":"^0.1.11","radix3":"^1.1.2","vitest":"^2.0.3","esbuild":"^0.23.0","listhen":"^1.7.2","unbuild":"^3.0.0-rc.7","prettier":"^3.3.3","typescript":"^5.5.3","changelogen":"^0.5.5","find-my-way":"^8.2.0","rou3-release":"npm:rou3@0.4.0","@medley/router":"^0.2.1","koa-tree-router":"^0.12.1","eslint-config-unjs":"^0.3.2","@vitest/coverage-v8":"^2.0.3"},"_npmOperationalInternal":{"tmp":"tmp/rou3_0.5.1_1721834495456_0.5455457921309983","host":"s3://npm-registry-packages"}},"0.6.0":{"name":"rou3","version":"0.6.0","license":"MIT","_id":"rou3@0.6.0","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"homepage":"https://github.com/unjs/rou3#readme","bugs":{"url":"https://github.com/unjs/rou3/issues"},"dist":{"shasum":"f637aec77a4ba45bfe0b19f2c79060aa0ea87882","tarball":"https://registry.npmjs.org/rou3/-/rou3-0.6.0.tgz","fileCount":5,"integrity":"sha512-0gF3uSNVOXvocv7+UEFz/4hKMwPCLDTzWUpIU3XNZjfzekJKiEF9vlpSCG/moJ4IzBqzPl48jomVMUwpiONmuw==","signatures":[{"sig":"MEUCICeA7JFs27Rh7lfhc7DECygRWljbJbm/O8IcBB5inQ8TAiEA3bTRBeQjPI/Tw68krvZM1IbFsCqn7E0hue6aTXre3Wo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14125},"type":"module","types":"./dist/index.d.mts","exports":{".":"./dist/index.mjs"},"gitHead":"0e875d269deaa668f2f8e1eff31ad8366dc7a406","scripts":{"dev":"vitest","lint":"eslint . && prettier -c src test","test":"pnpm lint && pnpm test:types && vitest run --coverage","build":"unbuild","release":"pnpm test && pnpm build && changelogen --release && git push --follow-tags && npm publish","lint:fix":"automd && eslint --fix . && prettier -w src test","bench:bun":"bun ./test/bench","bench:node":"node --import jiti/register ./test/bench","test:types":"tsc --noEmit"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"git+https://github.com/unjs/rou3.git","type":"git"},"_npmVersion":"10.9.2","description":"Lightweight and fast router for JavaScript based on Radix Tree","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.8.1","devDependencies":{"0x":"^5.8.0","jiti":"^2.4.2","automd":"^0.4.0","eslint":"^9.24.0","mitata":"^1.0.34","vitest":"^3.1.1","esbuild":"^0.25.2","listhen":"^1.9.0","unbuild":"^3.5.0","prettier":"^3.5.3","typescript":"^5.8.3","@types/node":"^22.14.1","changelogen":"^0.6.1","rou3-release":"npm:rou3@0.5.1","@mitata/counters":"^0.0.8","eslint-config-unjs":"^0.4.2","@vitest/coverage-v8":"^3.1.1"},"_npmOperationalInternal":{"tmp":"tmp/rou3_0.6.0_1744922976185_0.19830471337735434","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"rou3","version":"0.6.1","license":"MIT","_id":"rou3@0.6.1","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"homepage":"https://github.com/unjs/rou3#readme","bugs":{"url":"https://github.com/unjs/rou3/issues"},"dist":{"shasum":"6be4d0dc93846d81fc2ff42972abefad36ee730e","tarball":"https://registry.npmjs.org/rou3/-/rou3-0.6.1.tgz","fileCount":5,"integrity":"sha512-mqyxhSO0LLAa/lwNhH3329NEbRFJEHpZGIqr0cWQTtQEwqFMpf0a15cGw3kh9nil1oufh97Qhx4KWsy++0yn4g==","signatures":[{"sig":"MEUCIEXFHE7jjRr0oU4oB4uNZMVIj9ndr5a8HztB9vw0xMeKAiEA1/PbvnZUhhkxuEN3n9oQegNib096XeKaCRB2U47cCgI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13720},"type":"module","types":"./dist/index.d.mts","exports":{".":"./dist/index.mjs"},"gitHead":"ba9fe3e201ee379e48af02f82211ccc937f86cbb","scripts":{"dev":"vitest","lint":"eslint . && prettier -c src test","test":"pnpm lint && pnpm test:types && vitest run --coverage","build":"obuild src/index.ts","release":"pnpm test && pnpm build && changelogen --release && git push --follow-tags && npm publish","lint:fix":"automd && eslint --fix . && prettier -w src test","bench:bun":"bun ./test/bench","bench:node":"node --import jiti/register ./test/bench","test:types":"tsc --noEmit"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"git+https://github.com/unjs/rou3.git","type":"git"},"_npmVersion":"10.9.2","description":"Lightweight and fast router for JavaScript based on Radix Tree","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.8.1","devDependencies":{"0x":"^5.8.0","jiti":"^2.4.2","automd":"^0.4.0","eslint":"^9.24.0","mitata":"^1.0.34","obuild":"^0.0.3","vitest":"^3.1.1","esbuild":"^0.25.2","listhen":"^1.9.0","prettier":"^3.5.3","typescript":"^5.8.3","@types/node":"^22.14.1","changelogen":"^0.6.1","rou3-release":"npm:rou3@0.5.1","@mitata/counters":"^0.0.8","eslint-config-unjs":"^0.4.2","@vitest/coverage-v8":"^3.1.1"},"_npmOperationalInternal":{"tmp":"tmp/rou3_0.6.1_1745323581774_0.8039075826322215","host":"s3://npm-registry-packages-npm-production"}},"0.6.2":{"name":"rou3","version":"0.6.2","license":"MIT","_id":"rou3@0.6.2","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"homepage":"https://github.com/h3js/rou3#readme","bugs":{"url":"https://github.com/h3js/rou3/issues"},"dist":{"shasum":"c92c28ea003e26e1f30228af0f0d14ddc20ee9b8","tarball":"https://registry.npmjs.org/rou3/-/rou3-0.6.2.tgz","fileCount":5,"integrity":"sha512-LsyoUbBo+/RRBM3C3RpQ9U73j7ZtEj8n8NlV9LT6+wL7rDVVjc0O2hlwUcJZFfW642qfzCn9Ft4E8UdTrax/UA==","signatures":[{"sig":"MEUCIAF7niqol9100YpL9kxsfBKIJiOYRjiwnxoni2nySJs6AiEA4QUV7B8A+AuW6fXorTgbE8koaWv05NBHSQ7WgeFGBTk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14237},"type":"module","types":"./dist/index.d.mts","exports":{".":"./dist/index.mjs"},"gitHead":"8e1e46e3a3fb2092d41f62ba8bc56f0d88213b36","scripts":{"dev":"vitest","lint":"eslint . && prettier -c src test","test":"pnpm lint && pnpm test:types && vitest run --coverage","build":"obuild src/index.ts","release":"pnpm test && pnpm build && changelogen --release && git push --follow-tags && npm publish","lint:fix":"automd && eslint --fix . && prettier -w src test","bench:bun":"bun ./test/bench","bench:node":"node --import jiti/register ./test/bench","test:types":"tsc --noEmit"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"git+https://github.com/h3js/rou3.git","type":"git"},"_npmVersion":"10.9.2","description":"Lightweight and fast router for JavaScript based on Radix Tree","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.11.0","devDependencies":{"0x":"^5.8.0","jiti":"^2.4.2","automd":"^0.4.0","eslint":"^9.27.0","mitata":"^1.0.34","obuild":"^0.2.1","vitest":"^3.1.4","esbuild":"^0.25.5","listhen":"^1.9.0","prettier":"^3.5.3","typescript":"^5.8.3","@types/node":"^22.15.27","changelogen":"^0.6.1","rou3-release":"npm:rou3@0.6.1","@mitata/counters":"^0.0.8","eslint-config-unjs":"^0.4.2","@vitest/coverage-v8":"^3.1.4"},"_npmOperationalInternal":{"tmp":"tmp/rou3_0.6.2_1748599039165_0.7214389706735636","host":"s3://npm-registry-packages-npm-production"}},"0.6.3":{"name":"rou3","version":"0.6.3","license":"MIT","_id":"rou3@0.6.3","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"homepage":"https://github.com/h3js/rou3#readme","bugs":{"url":"https://github.com/h3js/rou3/issues"},"dist":{"shasum":"40ce2f4b110be07d57cd016992fad6d5c84a6ff4","tarball":"https://registry.npmjs.org/rou3/-/rou3-0.6.3.tgz","fileCount":5,"integrity":"sha512-1HSG1ENTj7Kkm5muMnXuzzfdDOf7CFnbSYFA+H3Fp/rB9lOCxCPgy1jlZxTKyFoC5jJay8Mmc+VbPLYRjzYLrA==","signatures":[{"sig":"MEQCICupERSxvisjSwlrqYSr3Lx7pbQDvmH2lEOi+OCVGMnJAiAh1tm+MfAV8jqP6B2uXydz3rU0dx+kkVNH0IPQZ9aISA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14371},"type":"module","types":"./dist/index.d.mts","exports":{".":"./dist/index.mjs"},"gitHead":"fce254c9c2bbbd940897bfe45d0273a8c633f504","scripts":{"dev":"vitest","lint":"eslint . && prettier -c src test","test":"pnpm lint && pnpm test:types && vitest run --coverage","build":"obuild src/index.ts","release":"pnpm test && pnpm build && changelogen --release && git push --follow-tags && npm publish","lint:fix":"automd && eslint --fix . && prettier -w src test","bench:bun":"bun ./test/bench","bench:node":"node --import jiti/register ./test/bench","test:types":"tsc --noEmit"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"git+https://github.com/h3js/rou3.git","type":"git"},"_npmVersion":"10.9.2","description":"Lightweight and fast router for JavaScript based on Radix Tree","directories":{},"sideEffects":false,"_nodeVersion":"22.13.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.11.0","devDependencies":{"0x":"^5.8.0","jiti":"^2.4.2","automd":"^0.4.0","eslint":"^9.27.0","mitata":"^1.0.34","obuild":"^0.2.1","vitest":"^3.1.4","esbuild":"^0.25.5","listhen":"^1.9.0","prettier":"^3.5.3","typescript":"^5.8.3","@types/node":"^22.15.27","changelogen":"^0.6.1","rou3-release":"npm:rou3@0.6.1","@mitata/counters":"^0.0.8","eslint-config-unjs":"^0.4.2","@vitest/coverage-v8":"^3.1.4"},"_npmOperationalInternal":{"tmp":"tmp/rou3_0.6.3_1748971321283_0.6642608317867658","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"rou3","version":"0.7.0","license":"MIT","_id":"rou3@0.7.0","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"homepage":"https://github.com/h3js/rou3#readme","bugs":{"url":"https://github.com/h3js/rou3/issues"},"dist":{"shasum":"392f5a339d6bc9cfc570e8be4734761e53a8c5c6","tarball":"https://registry.npmjs.org/rou3/-/rou3-0.7.0.tgz","fileCount":7,"integrity":"sha512-iuliR0PgQvH8M1R5f85Vo1bIx+26rDdFHZgHmLwVXvxkuTTPOhWicLXcAywAtOiRPAWHtJ3OAwLCFjNBNh8h5A==","signatures":[{"sig":"MEYCIQCEqgpM7BpPp23nJEaFDBA0PIz1pVFj4gqnxTwq7O7MCgIhAJCYJZNGQwmbhg7zhGio98smb0VQYGqeDnKW4snGiaZv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21905},"type":"module","types":"./dist/index.d.mts","exports":{".":"./dist/index.mjs","./compiler":"./dist/compiler.mjs"},"gitHead":"b9f1417b13ac12cdbcb3afbbc2444271f8c7b675","scripts":{"dev":"vitest","lint":"eslint . && prettier -c src test","test":"pnpm lint && pnpm test:types && vitest run --coverage","build":"obuild","release":"pnpm test && pnpm build && changelogen --release && git push --follow-tags && npm publish","lint:fix":"automd && eslint --fix . && prettier -w src test","bench:bun":"bun ./test/bench","bench:deno":"deno run -A ./test/bench/index.ts","bench:node":"node --expose-gc --allow-natives-syntax --disable-warning=ExperimentalWarning --experimental-strip-types ./test/bench/index.ts","test:types":"tsc --noEmit"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"git+https://github.com/h3js/rou3.git","type":"git"},"_npmVersion":"10.9.2","description":"Lightweight and fast router for JavaScript.","directories":{},"sideEffects":false,"_nodeVersion":"22.13.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.12.1","devDependencies":{"0x":"^5.8.0","jiti":"^2.4.2","automd":"^0.4.0","eslint":"^9.29.0","mitata":"^1.0.34","obuild":"^0.2.1","vitest":"^3.2.3","esbuild":"^0.25.5","listhen":"^1.9.0","prettier":"^3.5.3","typescript":"^5.8.3","@types/node":"^24.0.1","changelogen":"^0.6.1","@mitata/counters":"^0.0.8","eslint-config-unjs":"^0.4.2","@vitest/coverage-v8":"^3.2.3"},"_npmOperationalInternal":{"tmp":"tmp/rou3_0.7.0_1750084919939_0.6580752126247804","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"rou3","version":"0.7.1","license":"MIT","_id":"rou3@0.7.1","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"homepage":"https://github.com/h3js/rou3#readme","bugs":{"url":"https://github.com/h3js/rou3/issues"},"dist":{"shasum":"b9fe52249d9146c63f558bf6cbe780b11d41079f","tarball":"https://registry.npmjs.org/rou3/-/rou3-0.7.1.tgz","fileCount":7,"integrity":"sha512-uxflA2/4LtpKJ5lZ5sfdA6sILVQj428dezT1PfNdDM1l5OuUG3ogEPsL8fZeoJHHFXrpZKQwcTzyIbq5X3e7Ig==","signatures":[{"sig":"MEYCIQCiiy2wyBVsvHuuyaS/QFN1AEVE9AP0ehSSYlzguF+EXQIhAIVRKEH7FH0SQX+2OT3Bpx2ZC4VvjXVlT0jEtNe6+kJ4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22404},"type":"module","types":"./dist/index.d.mts","exports":{".":"./dist/index.mjs","./compiler":"./dist/compiler.mjs"},"gitHead":"1519ca9e3771ae6acccd40276594ba7a21bef4c8","scripts":{"dev":"vitest","lint":"eslint . && prettier -c src test","test":"pnpm lint && pnpm test:types && vitest run --coverage","build":"obuild","release":"pnpm test && pnpm build && changelogen --release && git push --follow-tags && npm publish","lint:fix":"automd && eslint --fix . && prettier -w src test","bench:bun":"bun ./test/bench","bench:deno":"deno run -A ./test/bench/index.ts","bench:node":"node --expose-gc --allow-natives-syntax --disable-warning=ExperimentalWarning --experimental-strip-types ./test/bench/index.ts","test:types":"tsc --noEmit"},"_npmUser":{"name":"pi0","actor":{"name":"pi0","type":"user","email":"pyapar@gmail.com"},"email":"pyapar@gmail.com"},"repository":{"url":"git+https://github.com/h3js/rou3.git","type":"git"},"_npmVersion":"10.9.2","description":"Lightweight and fast router for JavaScript.","directories":{},"sideEffects":false,"_nodeVersion":"22.13.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.12.1","devDependencies":{"0x":"^5.8.0","jiti":"^2.4.2","automd":"^0.4.0","eslint":"^9.29.0","mitata":"^1.0.34","obuild":"^0.2.1","vitest":"^3.2.3","esbuild":"^0.25.5","listhen":"^1.9.0","prettier":"^3.5.3","typescript":"^5.8.3","@types/node":"^24.0.1","changelogen":"^0.6.1","@mitata/counters":"^0.0.8","eslint-config-unjs":"^0.4.2","@vitest/coverage-v8":"^3.2.3"},"_npmOperationalInternal":{"tmp":"tmp/rou3_0.7.1_1750253828126_0.19549161395636006","host":"s3://npm-registry-packages-npm-production"}},"0.7.2":{"name":"rou3","version":"0.7.2","license":"MIT","_id":"rou3@0.7.2","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"homepage":"https://github.com/h3js/rou3#readme","bugs":{"url":"https://github.com/h3js/rou3/issues"},"dist":{"shasum":"aab051dabe450d745aeb92d21b00e89d0d4ab0e8","tarball":"https://registry.npmjs.org/rou3/-/rou3-0.7.2.tgz","fileCount":7,"integrity":"sha512-GQuhKsN8Tp4CJh81PUmLWS6VKlL38P+LIVpE+bW8OlVKuf+ICysK9Cnh8mGWE4wKkPmOQTpB9hvbLk0bRmHsMQ==","signatures":[{"sig":"MEUCIQDcKiV9MITpsgr++qg6uzYLrlawbK9G19bEHjM64Jg/aAIgXZ91P1QV3ulUULqXhkbJj0n/Jeypmk5SC+fOiHc0trA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22502},"type":"module","types":"./dist/index.d.mts","exports":{".":"./dist/index.mjs","./compiler":"./dist/compiler.mjs"},"gitHead":"a824c286c726eb09f0ca37489aa9183e8eb7c86e","scripts":{"dev":"vitest","lint":"eslint . && prettier -c src test","test":"pnpm lint && pnpm test:types && vitest run --coverage","build":"obuild","release":"pnpm test && pnpm build && changelogen --release && git push --follow-tags && npm publish","lint:fix":"automd && eslint --fix . && prettier -w src test","bench:bun":"bun ./test/bench","bench:deno":"deno run -A ./test/bench/index.ts","bench:node":"node --expose-gc --allow-natives-syntax --disable-warning=ExperimentalWarning --experimental-strip-types ./test/bench/index.ts","test:types":"tsc --noEmit"},"_npmUser":{"name":"pi0","actor":{"name":"pi0","type":"user","email":"pyapar@gmail.com"},"email":"pyapar@gmail.com"},"repository":{"url":"git+https://github.com/h3js/rou3.git","type":"git"},"_npmVersion":"10.9.2","description":"Lightweight and fast router for JavaScript.","directories":{},"sideEffects":false,"_nodeVersion":"22.13.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.12.1","devDependencies":{"0x":"^5.8.0","jiti":"^2.4.2","automd":"^0.4.0","eslint":"^9.29.0","mitata":"^1.0.34","obuild":"^0.2.1","vitest":"^3.2.3","esbuild":"^0.25.5","listhen":"^1.9.0","prettier":"^3.5.3","typescript":"^5.8.3","@types/node":"^24.0.1","changelogen":"^0.6.1","@mitata/counters":"^0.0.8","eslint-config-unjs":"^0.4.2","@vitest/coverage-v8":"^3.2.3"},"_npmOperationalInternal":{"tmp":"tmp/rou3_0.7.2_1750437373722_0.18873956561009853","host":"s3://npm-registry-packages-npm-production"}},"0.7.3":{"name":"rou3","version":"0.7.3","license":"MIT","_id":"rou3@0.7.3","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"homepage":"https://github.com/h3js/rou3#readme","bugs":{"url":"https://github.com/h3js/rou3/issues"},"dist":{"shasum":"bd3f574a3212003f9fdc7554f63de91c835cad28","tarball":"https://registry.npmjs.org/rou3/-/rou3-0.7.3.tgz","fileCount":7,"integrity":"sha512-KKenF/hB2iIhS1ohj226LT+/8uKCBpSMqeS4V1UPN9vad99uLoyIhrULRRB1skaB40LQHcBlSsAi3sT8MaoDDQ==","signatures":[{"sig":"MEUCIFInVEP7xyIphsk72dunfzUHcdGreMDx8zt3zlYhbkY0AiEAoVjkSNTnNsTm2BamsdOyM0P79Bb/2hIKtWhQdCKcMnY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23170},"type":"module","types":"./dist/index.d.mts","exports":{".":"./dist/index.mjs","./compiler":"./dist/compiler.mjs"},"gitHead":"b05b6691035692e9d6bfc82765c592e6b657eb3e","scripts":{"dev":"vitest","lint":"eslint . && prettier -c src test","test":"pnpm lint && pnpm test:types && vitest run --coverage","build":"obuild","release":"pnpm test && pnpm build && changelogen --release && git push --follow-tags && npm publish","lint:fix":"automd && eslint --fix . && prettier -w src test","bench:bun":"bun ./test/bench","bench:deno":"deno run -A ./test/bench/index.ts","bench:node":"node --expose-gc --allow-natives-syntax --disable-warning=ExperimentalWarning --experimental-strip-types ./test/bench/index.ts","test:types":"tsc --noEmit"},"_npmUser":{"name":"pi0","actor":{"name":"pi0","type":"user","email":"pyapar@gmail.com"},"email":"pyapar@gmail.com"},"repository":{"url":"git+https://github.com/h3js/rou3.git","type":"git"},"_npmVersion":"10.9.2","description":"Lightweight and fast router for JavaScript.","directories":{},"sideEffects":false,"_nodeVersion":"22.13.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.12.1","devDependencies":{"0x":"^5.8.0","jiti":"^2.4.2","automd":"^0.4.0","eslint":"^9.29.0","mitata":"^1.0.34","obuild":"^0.2.1","vitest":"^3.2.3","esbuild":"^0.25.5","listhen":"^1.9.0","prettier":"^3.5.3","typescript":"^5.8.3","@types/node":"^24.0.1","changelogen":"^0.6.1","rou3-latest":"npm:rou3@0.7.2","@mitata/counters":"^0.0.8","eslint-config-unjs":"^0.4.2","@vitest/coverage-v8":"^3.2.3"},"_npmOperationalInternal":{"tmp":"tmp/rou3_0.7.3_1750880008927_0.4363563259180969","host":"s3://npm-registry-packages-npm-production"}},"0.7.4":{"name":"rou3","version":"0.7.4","license":"MIT","_id":"rou3@0.7.4","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"homepage":"https://github.com/h3js/rou3#readme","bugs":{"url":"https://github.com/h3js/rou3/issues"},"dist":{"shasum":"690bff25ea1043207c9aecb4c290793be1535833","tarball":"https://registry.npmjs.org/rou3/-/rou3-0.7.4.tgz","fileCount":7,"integrity":"sha512-I067614ZZYztQ9qK0pE0F2zpMbPI8vh/NyG4qw4YtbWSZKVcL+9HCGdlJH/UptS7usLuElna5OIPXbDQRx2IMA==","signatures":[{"sig":"MEQCIDUFD0BEt5CX5JDVnlv71ero7YAsNlu8Vj4Sjrcjrr2UAiBigF3+9B/oKc5mxUWA/JA7LPkrY1tCFq21Pd3fD4aLTA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23219},"type":"module","types":"./dist/index.d.mts","exports":{".":"./dist/index.mjs","./compiler":"./dist/compiler.mjs"},"gitHead":"7942aa183fb3ac1fe976616a220d942d866ccff0","scripts":{"dev":"vitest","lint":"eslint . && prettier -c src test","test":"pnpm lint && pnpm test:types && vitest run --coverage","build":"obuild","release":"pnpm test && pnpm build && changelogen --release && git push --follow-tags && npm publish","lint:fix":"automd && eslint --fix . && prettier -w src test","bench:bun":"bun ./test/bench","bench:deno":"deno run -A ./test/bench/index.ts","bench:node":"node --expose-gc --allow-natives-syntax --disable-warning=ExperimentalWarning --experimental-strip-types ./test/bench/index.ts","test:types":"tsc --noEmit"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"git+https://github.com/h3js/rou3.git","type":"git"},"_npmVersion":"10.9.2","description":"Lightweight and fast router for JavaScript.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.16.1","devDependencies":{"0x":"^6.0.0","jiti":"^2.5.1","automd":"^0.4.2","eslint":"^9.35.0","mitata":"^1.0.34","obuild":"^0.2.1","vitest":"^3.2.4","esbuild":"^0.25.9","listhen":"^1.9.0","prettier":"^3.6.2","typescript":"^5.9.2","@types/node":"^24.5.1","changelogen":"^0.6.2","rou3-latest":"npm:rou3@^0.7.3","@mitata/counters":"^0.0.8","eslint-config-unjs":"^0.5.0","@vitest/coverage-v8":"^3.2.4"},"_npmOperationalInternal":{"tmp":"tmp/rou3_0.7.4_1758102975142_0.08768763839611249","host":"s3://npm-registry-packages-npm-production"}},"0.7.5":{"name":"rou3","version":"0.7.5","license":"MIT","_id":"rou3@0.7.5","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"homepage":"https://github.com/h3js/rou3#readme","bugs":{"url":"https://github.com/h3js/rou3/issues"},"dist":{"shasum":"dbf241d24384e30ae0d79990f95283160f88b7c3","tarball":"https://registry.npmjs.org/rou3/-/rou3-0.7.5.tgz","fileCount":7,"integrity":"sha512-bwUHDHw1HSARty7TWNV71R0NZs5fOt74OM+hcMdJyPfchfRktEmxLoMSNa7PwEp6WqJ0a3feKztsIfTUEYhskw==","signatures":[{"sig":"MEUCID1RB2uxQ+MaTDLd83xDJhydLtVXPuVXVIy6F88rJ7hsAiEAw3Hu3IG07YbOAxok0DmeqkINd+EYTivgCd17uZcOmUU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23571},"type":"module","types":"./dist/index.d.mts","exports":{".":"./dist/index.mjs","./compiler":"./dist/compiler.mjs"},"gitHead":"2cd68b50a818859f69d7009fa3db798e7a8fdcb0","scripts":{"dev":"vitest","lint":"eslint . && prettier -c src test","test":"pnpm lint && pnpm test:types && vitest run --coverage","build":"obuild","release":"pnpm test && pnpm build && changelogen --release && git push --follow-tags && npm publish","lint:fix":"automd && eslint --fix . && prettier -w src test","bench:bun":"bun ./test/bench","bench:deno":"deno run -A ./test/bench/index.ts","bench:node":"node --expose-gc --allow-natives-syntax --disable-warning=ExperimentalWarning --experimental-strip-types ./test/bench/index.ts","test:types":"tsc --noEmit"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"git+https://github.com/h3js/rou3.git","type":"git"},"_npmVersion":"10.9.2","description":"Lightweight and fast router for JavaScript.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.16.1","devDependencies":{"0x":"^6.0.0","jiti":"^2.5.1","automd":"^0.4.2","eslint":"^9.35.0","mitata":"^1.0.34","obuild":"^0.2.1","vitest":"^3.2.4","esbuild":"^0.25.9","listhen":"^1.9.0","prettier":"^3.6.2","typescript":"^5.9.2","@types/node":"^24.5.1","changelogen":"^0.6.2","rou3-latest":"npm:rou3@^0.7.3","@mitata/counters":"^0.0.8","eslint-config-unjs":"^0.5.0","@vitest/coverage-v8":"^3.2.4"},"_npmOperationalInternal":{"tmp":"tmp/rou3_0.7.5_1758120067230_0.526882607866449","host":"s3://npm-registry-packages-npm-production"}},"0.7.6":{"name":"rou3","version":"0.7.6","license":"MIT","_id":"rou3@0.7.6","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"homepage":"https://github.com/h3js/rou3#readme","bugs":{"url":"https://github.com/h3js/rou3/issues"},"dist":{"shasum":"a0945ef77170f9f881493a176c47ae1394ecbfcf","tarball":"https://registry.npmjs.org/rou3/-/rou3-0.7.6.tgz","fileCount":7,"integrity":"sha512-etrE/UuP40w/NJxlTu4J2/A0LUF50hx6VaUbN5wLY2kSj0UXu7fuGHjw0un4O4opz+xUAVz9+DsNky34r0WhpQ==","signatures":[{"sig":"MEUCIFUB4jn+EPJZng7Vpbq9jLWXy+tRv+n5TP19pR4tz072AiEA1Few7h9VCIhHkeya2/p6pPeVFUrsth4zLgKYMsMGO7s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24177},"type":"module","types":"./dist/index.d.mts","exports":{".":"./dist/index.mjs","./compiler":"./dist/compiler.mjs"},"gitHead":"5a1bb1bccb3408202c3684546b96ea1b5842e9a8","scripts":{"dev":"vitest","lint":"eslint . && prettier -c src test","test":"pnpm lint && pnpm test:types && vitest run --coverage","build":"obuild","release":"pnpm test && pnpm build && changelogen --release && git push --follow-tags && npm publish","lint:fix":"automd && eslint --fix . && prettier -w src test","bench:bun":"bun ./test/bench","bench:deno":"deno run -A ./test/bench/index.ts","bench:node":"node --expose-gc --allow-natives-syntax --disable-warning=ExperimentalWarning --experimental-strip-types ./test/bench/index.ts","test:types":"tsc --noEmit"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"git+https://github.com/h3js/rou3.git","type":"git"},"_npmVersion":"11.6.0","description":"Lightweight and fast router for JavaScript.","directories":{},"sideEffects":false,"_nodeVersion":"24.9.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.17.1","devDependencies":{"0x":"^6.0.0","automd":"^0.4.2","eslint":"^9.36.0","mitata":"^1.0.34","obuild":"^0.2.1","vitest":"^3.2.4","esbuild":"^0.25.10","prettier":"^3.6.2","typescript":"^5.9.3","@types/node":"^24.6.1","changelogen":"^0.6.2","rou3-latest":"npm:rou3@^0.7.5","@mitata/counters":"^0.0.8","eslint-config-unjs":"^0.5.0","@vitest/coverage-v8":"^3.2.4"},"_npmOperationalInternal":{"tmp":"tmp/rou3_0.7.6_1759312939799_0.4534748689708443","host":"s3://npm-registry-packages-npm-production"}},"0.7.7":{"name":"rou3","version":"0.7.7","license":"MIT","_id":"rou3@0.7.7","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"homepage":"https://github.com/h3js/rou3#readme","bugs":{"url":"https://github.com/h3js/rou3/issues"},"dist":{"shasum":"9edc64e79a66e6297b7810c95ebc9155b842ae9e","tarball":"https://registry.npmjs.org/rou3/-/rou3-0.7.7.tgz","fileCount":7,"integrity":"sha512-z+6o7c3DarUbuBMLIdhzj2CqJLtUWrGk4fZlf07dIMitX3UpBXeInJ3lMD9huxj9yh9eo1RqtXf9aL0YzkDDUA==","signatures":[{"sig":"MEQCIBvBAd2m7NOUY3oaBptBmMUmll3XmEbgdeMUS/QmpIRhAiBIJwGI/GfQtNMUKaSAxTHLFrssmyifY3CFp8h1jGeimg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24225},"type":"module","types":"./dist/index.d.mts","exports":{".":"./dist/index.mjs","./compiler":"./dist/compiler.mjs"},"gitHead":"a0bab817e65e291fe2894a60fb43f1a69030e15d","scripts":{"dev":"vitest","lint":"eslint . && prettier -c src test","test":"pnpm lint && pnpm test:types && vitest run --coverage","build":"obuild","release":"pnpm test && pnpm build && changelogen --release && git push --follow-tags && npm publish","lint:fix":"automd && eslint --fix . && prettier -w src test","bench:bun":"bun ./test/bench","bench:deno":"deno run -A ./test/bench/index.ts","bench:node":"node --expose-gc --allow-natives-syntax --disable-warning=ExperimentalWarning --experimental-strip-types ./test/bench/index.ts","test:types":"tsc --noEmit"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"git+https://github.com/h3js/rou3.git","type":"git"},"_npmVersion":"11.6.0","description":"Lightweight and fast router for JavaScript.","directories":{},"sideEffects":false,"_nodeVersion":"24.9.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.17.1","devDependencies":{"0x":"^6.0.0","automd":"^0.4.2","eslint":"^9.36.0","mitata":"^1.0.34","obuild":"^0.2.1","vitest":"^3.2.4","esbuild":"^0.25.10","prettier":"^3.6.2","typescript":"^5.9.3","@types/node":"^24.6.1","changelogen":"^0.6.2","rou3-latest":"npm:rou3@^0.7.5","@mitata/counters":"^0.0.8","eslint-config-unjs":"^0.5.0","@vitest/coverage-v8":"^3.2.4"},"_npmOperationalInternal":{"tmp":"tmp/rou3_0.7.7_1759317742179_0.6107036248612965","host":"s3://npm-registry-packages-npm-production"}},"0.7.8":{"name":"rou3","version":"0.7.8","license":"MIT","_id":"rou3@0.7.8","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"homepage":"https://github.com/h3js/rou3#readme","bugs":{"url":"https://github.com/h3js/rou3/issues"},"dist":{"shasum":"e0d3cfe63d84b0d5afb9e433cd24d632c22d756c","tarball":"https://registry.npmjs.org/rou3/-/rou3-0.7.8.tgz","fileCount":7,"integrity":"sha512-21X/el5fdOaEsqwl3an/d9kpZ8hshVIyrwFCpsoleJ4ccAGRbN+PVoxyXzWXkHDxfMkVnLe4yzx+imz2qoem2Q==","signatures":[{"sig":"MEUCID5m9BbMZK0TzuLPBP6pZo98+JrjoHT/Qzzci7cUmZqaAiEA8HFHy5F5fssb9DuXTOAF4kyzyjOXKl04gk589VDFiH8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25126},"type":"module","types":"./dist/index.d.mts","exports":{".":"./dist/index.mjs","./compiler":"./dist/compiler.mjs"},"gitHead":"7342d34db8cf419208fcc0263d42ac8bfa4f5d49","scripts":{"dev":"vitest","lint":"eslint . && prettier -c src test","test":"pnpm lint && pnpm test:types && vitest run --coverage","build":"obuild","release":"pnpm test && pnpm build && changelogen --release && git push --follow-tags && npm publish","lint:fix":"automd && eslint --fix . && prettier -w src test","bench:bun":"bun ./test/bench","bench:deno":"deno run -A ./test/bench/index.ts","bench:node":"node --expose-gc --allow-natives-syntax --disable-warning=ExperimentalWarning --experimental-strip-types ./test/bench/index.ts","test:types":"tsc --noEmit"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"git+https://github.com/h3js/rou3.git","type":"git"},"_npmVersion":"11.6.1","description":"Lightweight and fast router for JavaScript.","directories":{},"sideEffects":false,"_nodeVersion":"24.10.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.18.3","devDependencies":{"0x":"^6.0.0","automd":"^0.4.2","eslint":"^9.38.0","mitata":"^1.0.34","obuild":"^0.2.1","vitest":"^3.2.4","esbuild":"^0.25.11","prettier":"^3.6.2","typescript":"^5.9.3","@types/node":"^24.8.1","changelogen":"^0.6.2","rou3-latest":"npm:rou3@^0.7.7","@mitata/counters":"^0.0.8","eslint-config-unjs":"^0.5.0","@vitest/coverage-v8":"^3.2.4"},"_npmOperationalInternal":{"tmp":"tmp/rou3_0.7.8_1760995740950_0.5982453175906934","host":"s3://npm-registry-packages-npm-production"}},"0.7.9":{"name":"rou3","version":"0.7.9","license":"MIT","_id":"rou3@0.7.9","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"homepage":"https://github.com/h3js/rou3#readme","bugs":{"url":"https://github.com/h3js/rou3/issues"},"dist":{"shasum":"228f1cb00bf03aecaf7d28f3107a711a86c1ea56","tarball":"https://registry.npmjs.org/rou3/-/rou3-0.7.9.tgz","fileCount":7,"integrity":"sha512-+JM7c8swGkoXkWRkIz7qpYN9Bls7Rj/vuSGaxtoKHIe8Ba1ci+mXnqzqtJFrXSbvEazNL9v83P2RiXae9NSbfQ==","signatures":[{"sig":"MEUCIQDjgId3zXNq3gpfiFxOXXRGr296pyukc+7NF1E7vaJ/VwIgV0IC/Yr1zmw3brOAO98+SyPZWZVj856/DfQEsiFVCZk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24240},"type":"module","types":"./dist/index.d.mts","exports":{".":"./dist/index.mjs","./compiler":"./dist/compiler.mjs"},"gitHead":"2cf353a0b20219c35eb31737a9fadb2853c24b7b","scripts":{"dev":"vitest","lint":"eslint . && prettier -c src test","test":"pnpm lint && pnpm test:types && vitest run --coverage","build":"obuild","release":"pnpm test && pnpm build && changelogen --release && git push --follow-tags && npm publish","lint:fix":"automd && eslint --fix . && prettier -w src test","bench:bun":"bun ./test/bench","bench:deno":"deno run -A ./test/bench/index.ts","bench:node":"node --expose-gc --allow-natives-syntax --disable-warning=ExperimentalWarning --experimental-strip-types ./test/bench/index.ts","test:types":"tsc --noEmit"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"git+https://github.com/h3js/rou3.git","type":"git"},"_npmVersion":"11.6.1","description":"Lightweight and fast router for JavaScript.","directories":{},"sideEffects":false,"_nodeVersion":"24.10.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.19.0","devDependencies":{"0x":"^6.0.0","automd":"^0.4.2","eslint":"^9.38.0","mitata":"^1.0.34","obuild":"^0.3.0","vitest":"^4.0.3","esbuild":"^0.25.11","prettier":"^3.6.2","typescript":"^5.9.3","@types/node":"^24.9.1","changelogen":"^0.6.2","rou3-latest":"npm:rou3@^0.7.8","@mitata/counters":"^0.0.8","eslint-config-unjs":"^0.5.0","@vitest/coverage-v8":"^4.0.3"},"_npmOperationalInternal":{"tmp":"tmp/rou3_0.7.9_1761564922488_0.4426887881861743","host":"s3://npm-registry-packages-npm-production"}},"0.7.10":{"name":"rou3","version":"0.7.10","license":"MIT","_id":"rou3@0.7.10","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"homepage":"https://github.com/h3js/rou3#readme","bugs":{"url":"https://github.com/h3js/rou3/issues"},"dist":{"shasum":"89a397523482ccbb77f3a9693a5b932d52930b2f","tarball":"https://registry.npmjs.org/rou3/-/rou3-0.7.10.tgz","fileCount":7,"integrity":"sha512-aoFj6f7MJZ5muJ+Of79nrhs9N3oLGqi2VEMe94Zbkjb6Wupha46EuoYgpWSOZlXww3bbd8ojgXTAA2mzimX5Ww==","signatures":[{"sig":"MEUCIDVKS6RhG94KXMkkfO2zYqfMTgEz2hARP76ig0iV2ct4AiEA2hDGhUTD5bimxzoYM9pMJPA5kSdg5oYbwNHpzuBANUE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24550},"type":"module","types":"./dist/index.d.mts","exports":{".":"./dist/index.mjs","./compiler":"./dist/compiler.mjs"},"gitHead":"6bb36e6a8fd969d819dbbe4e98b13e4ac8295eb8","scripts":{"dev":"vitest","lint":"eslint . && prettier -c src test","test":"pnpm lint && pnpm test:types && vitest run --coverage","build":"obuild","release":"pnpm test && pnpm build && changelogen --release && git push --follow-tags && npm publish","lint:fix":"automd && eslint --fix . && prettier -w src test","bench:bun":"bun ./test/bench","bench:deno":"deno run -A ./test/bench/index.ts","bench:node":"node --expose-gc --allow-natives-syntax --disable-warning=ExperimentalWarning --experimental-strip-types ./test/bench/index.ts","test:types":"tsc --noEmit"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"git+https://github.com/h3js/rou3.git","type":"git"},"_npmVersion":"11.6.0","description":"Lightweight and fast router for JavaScript.","directories":{},"sideEffects":false,"_nodeVersion":"24.9.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"0x":"^6.0.0","automd":"^0.4.2","eslint":"^9.39.0","mitata":"^1.0.34","obuild":"^0.3.2","vitest":"^4.0.6","esbuild":"^0.25.12","prettier":"^3.6.2","typescript":"^5.9.3","@types/node":"^24.10.0","changelogen":"^0.6.2","rou3-latest":"npm:rou3@^0.7.9","@mitata/counters":"^0.0.8","eslint-config-unjs":"^0.5.0","@vitest/coverage-v8":"^4.0.6"},"_npmOperationalInternal":{"tmp":"tmp/rou3_0.7.10_1762163722390_0.36018355077385267","host":"s3://npm-registry-packages-npm-production"}},"0.7.11":{"name":"rou3","version":"0.7.11","license":"MIT","_id":"rou3@0.7.11","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"homepage":"https://github.com/h3js/rou3#readme","bugs":{"url":"https://github.com/h3js/rou3/issues"},"dist":{"shasum":"1877d5909ecac2cb0004aff134677cee49380016","tarball":"https://registry.npmjs.org/rou3/-/rou3-0.7.11.tgz","fileCount":7,"integrity":"sha512-ELguG3ENDw5NKNmWHO3OGEjcgdxkCNvnMR22gKHEgRXuwiriap5RIYdummOaOiqUNcC5yU5txGCHWNm7KlHuAA==","signatures":[{"sig":"MEQCIBRX/WOqoQIz444nCv/GpKCycsVquej5+/ItVRmn1tbbAiAacBamkSuPvYu3lDr3dvSQj3JXvVsaN6UGFWTkaStnhA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24560},"type":"module","types":"./dist/index.d.mts","exports":{".":"./dist/index.mjs","./compiler":"./dist/compiler.mjs"},"gitHead":"da797c4349f22f670af03f03b3e1fb2c0e296d46","scripts":{"dev":"vitest","lint":"eslint . && prettier -c src test","test":"pnpm lint && pnpm test:types && vitest run --coverage","build":"obuild","release":"pnpm test && pnpm build && changelogen --release && git push --follow-tags && npm publish","lint:fix":"automd && eslint --fix . && prettier -w src test","bench:bun":"bun ./test/bench","bench:deno":"deno run -A ./test/bench/index.ts","bench:node":"node --expose-gc --allow-natives-syntax --disable-warning=ExperimentalWarning --experimental-strip-types ./test/bench/index.ts","test:types":"tsc --noEmit"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"git+https://github.com/h3js/rou3.git","type":"git"},"_npmVersion":"11.6.2","description":"Lightweight and fast router for JavaScript.","directories":{},"sideEffects":false,"_nodeVersion":"24.11.1","_hasShrinkwrap":false,"packageManager":"pnpm@10.25.0","devDependencies":{"0x":"^6.0.0","automd":"^0.4.2","eslint":"^9.39.1","mitata":"^1.0.34","obuild":"^0.4.7","vitest":"^4.0.15","esbuild":"^0.27.1","prettier":"^3.7.4","typescript":"^5.9.3","@types/node":"^24.10.2","changelogen":"^0.6.2","rou3-latest":"npm:rou3@^0.7.10","@mitata/counters":"^0.0.8","eslint-config-unjs":"^0.5.0","@vitest/coverage-v8":"^4.0.15"},"_npmOperationalInternal":{"tmp":"tmp/rou3_0.7.11_1765362594833_0.20923445240207883","host":"s3://npm-registry-packages-npm-production"}},"0.7.12":{"name":"rou3","version":"0.7.12","license":"MIT","_id":"rou3@0.7.12","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"homepage":"https://github.com/h3js/rou3#readme","bugs":{"url":"https://github.com/h3js/rou3/issues"},"dist":{"shasum":"cac17425c04abddba854a42385cabfe0b971a179","tarball":"https://registry.npmjs.org/rou3/-/rou3-0.7.12.tgz","fileCount":7,"integrity":"sha512-iFE4hLDuloSWcD7mjdCDhx2bKcIsYbtOTpfH5MHHLSKMOUyjqQXTeZVa289uuwEGEKFoE/BAPbhaU4B774nceg==","signatures":[{"sig":"MEUCIQCv54POA3slnK6UMX2F0zbVRAbUSNH+XFLMGWgg+nN5FwIgcvuiSK3Hp78Eqp1ybgt3cuzAWFSxJBH5mR1KDlrxDsE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24925},"type":"module","types":"./dist/index.d.mts","exports":{".":"./dist/index.mjs","./compiler":"./dist/compiler.mjs"},"gitHead":"0fa8c08328765bb88412e2083ac609ab38645c56","scripts":{"dev":"vitest","lint":"eslint . && prettier -c src test","test":"pnpm lint && pnpm test:types && vitest run --coverage","build":"obuild","release":"pnpm test && pnpm build && changelogen --release && git push --follow-tags && npm publish","lint:fix":"automd && eslint --fix . && prettier -w src test","bench:bun":"bun ./test/bench","bench:deno":"deno run -A ./test/bench/index.ts","bench:node":"node --expose-gc --allow-natives-syntax --disable-warning=ExperimentalWarning --experimental-strip-types ./test/bench/index.ts","test:types":"tsc --noEmit"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"git+https://github.com/h3js/rou3.git","type":"git"},"_npmVersion":"11.6.1","description":"Lightweight and fast router for JavaScript.","directories":{},"sideEffects":false,"_nodeVersion":"24.10.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.26.0","devDependencies":{"0x":"^6.0.0","automd":"^0.4.2","eslint":"^9.39.2","mitata":"^1.0.34","obuild":"^0.4.8","vitest":"^4.0.15","esbuild":"^0.27.1","prettier":"^3.7.4","typescript":"^5.9.3","@types/node":"^25.0.2","changelogen":"^0.6.2","rou3-latest":"npm:rou3@^0.7.11","@mitata/counters":"^0.0.8","eslint-config-unjs":"^0.5.0","@vitest/coverage-v8":"^4.0.15"},"_npmOperationalInternal":{"tmp":"tmp/rou3_0.7.12_1765816915039_0.8754365773171573","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"rou3","version":"0.8.0","license":"MIT","_id":"rou3@0.8.0","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"homepage":"https://github.com/h3js/rou3#readme","bugs":{"url":"https://github.com/h3js/rou3/issues"},"dist":{"shasum":"e99cb3c532f039af01c0b0ac26d433ae7a43b8d8","tarball":"https://registry.npmjs.org/rou3/-/rou3-0.8.0.tgz","fileCount":7,"integrity":"sha512-AU5RsnYC2Y3OCP2zvig+wC2ipdMAk6ocvcYmTQks0/uMUnAL0FpRCITZEkG2aM1p0eiTJPUK+vq8Jap3ZY9HDg==","signatures":[{"sig":"MEQCIDYotEaHWAtLD2uB7DW0jL2XanyV5XJYm77OQnRDg5rVAiArGMvUdu/Zrv9nr16Ip7lcMFyUnuWxOFWCMcMGbgzXRw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39214},"type":"module","types":"./dist/index.d.mts","exports":{".":"./dist/index.mjs","./compiler":"./dist/compiler.mjs"},"gitHead":"0f86945ac603703a2c76b12e9cf22d5b748cf410","scripts":{"dev":"vitest","lint":"oxlint . && oxfmt --check src test","test":"pnpm lint && pnpm test:types && vitest run --coverage","build":"obuild","release":"pnpm test && pnpm build && changelogen --release && git push --follow-tags && npm publish","lint:fix":"automd && oxlint --fix . && oxfmt src test","bench:bun":"bun ./test/bench","bench:deno":"deno run -A ./test/bench/index.ts","bench:node":"node --expose-gc --allow-natives-syntax --disable-warning=ExperimentalWarning --experimental-strip-types ./test/bench/index.ts","test:types":"tsgo --noEmit"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"git+https://github.com/h3js/rou3.git","type":"git"},"_npmVersion":"11.6.2","description":"Lightweight and fast router for JavaScript.","directories":{},"sideEffects":false,"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.31.0","devDependencies":{"0x":"^6.0.0","oxfmt":"^0.36.0","automd":"^0.4.3","mitata":"^1.0.34","obuild":"^0.4.32","oxlint":"^1.51.0","vitest":"^4.0.18","esbuild":"^0.27.3","typescript":"^5.9.3","@types/node":"^25.3.5","changelogen":"^0.6.2","rou3-latest":"npm:rou3@^0.7.12","@mitata/counters":"^0.0.8","eslint-config-unjs":"^0.6.2","@vitest/coverage-v8":"^4.0.18","@typescript/native-preview":"7.0.0-dev.20260308.1"},"_npmOperationalInternal":{"tmp":"tmp/rou3_0.8.0_1773043587510_0.9179705923435246","host":"s3://npm-registry-packages-npm-production"}},"0.8.1":{"name":"rou3","version":"0.8.1","license":"MIT","_id":"rou3@0.8.1","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"homepage":"https://github.com/h3js/rou3#readme","bugs":{"url":"https://github.com/h3js/rou3/issues"},"dist":{"shasum":"d18c9dae42bdd9cd4fffa77bc6731d5cfe92129a","tarball":"https://registry.npmjs.org/rou3/-/rou3-0.8.1.tgz","fileCount":7,"integrity":"sha512-ePa+XGk00/3HuCqrEnK3LxJW7I0SdNg6EFzKUJG73hMAdDcOUC/i/aSz7LSDwLrGr33kal/rqOGydzwl6U7zBA==","signatures":[{"sig":"MEUCIQCeGWno/VEzubLVfwNXoNKc8vZbbv8nRSgRrplcb9mmnAIgMoWBgge6nwGYnqFYL9s0GVcp6k0lbDR4RrSafjQr7Ik=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39238},"type":"module","types":"./dist/index.d.mts","exports":{".":"./dist/index.mjs","./compiler":"./dist/compiler.mjs"},"gitHead":"f6a5b4deb14ebd73a46b5411835b002781f633cf","scripts":{"dev":"vitest","lint":"oxlint . && oxfmt --check src test","test":"pnpm lint && pnpm test:types && vitest run --coverage","build":"obuild","release":"pnpm test && pnpm build && changelogen --release && git push --follow-tags && npm publish","lint:fix":"automd && oxlint --fix . && oxfmt src test","bench:bun":"bun ./test/bench","bench:deno":"deno run -A ./test/bench/index.ts","bench:node":"node --expose-gc --allow-natives-syntax --disable-warning=ExperimentalWarning --experimental-strip-types ./test/bench/index.ts","test:types":"tsgo --noEmit"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"git+https://github.com/h3js/rou3.git","type":"git"},"_npmVersion":"11.6.2","description":"Lightweight and fast router for JavaScript.","directories":{},"sideEffects":false,"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.31.0","devDependencies":{"0x":"^6.0.0","oxfmt":"^0.36.0","automd":"^0.4.3","mitata":"^1.0.34","obuild":"^0.4.32","oxlint":"^1.51.0","vitest":"^4.0.18","esbuild":"^0.27.3","typescript":"^5.9.3","@types/node":"^25.3.5","changelogen":"^0.6.2","rou3-latest":"npm:rou3@^0.7.12","@mitata/counters":"^0.0.8","eslint-config-unjs":"^0.6.2","@vitest/coverage-v8":"^4.0.18","@typescript/native-preview":"7.0.0-dev.20260308.1"},"_npmOperationalInternal":{"tmp":"tmp/rou3_0.8.1_1773047866534_0.6435725820135394","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"rou3","version":"0.9.0","license":"MIT","_id":"rou3@0.9.0","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"homepage":"https://github.com/h3js/rou3#readme","bugs":{"url":"https://github.com/h3js/rou3/issues"},"dist":{"shasum":"dad670389cd440620f979623a3196c8ecec5f857","tarball":"https://registry.npmjs.org/rou3/-/rou3-0.9.0.tgz","fileCount":7,"integrity":"sha512-kccB4DcJaSBDjH+ihIjTk9x6FYC8tlrdjL3up/aPZ0msR04zcncfuytynAcvjqFytRHgM3la5O6VtYmTsC/lug==","signatures":[{"sig":"MEQCIAgpMtM//3Wd2A1mHWk0a4pDOm6S59yZTVVFarSTPqHYAiAaVye0baw8YVoELERAodX1EhYre4WyUcb0Fm3Dj1jxwg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59510},"type":"module","types":"./dist/index.d.mts","exports":{".":"./dist/index.mjs","./compiler":"./dist/compiler.mjs"},"scripts":{"dev":"vitest","lint":"oxlint . && oxfmt --check src test","test":"pnpm lint && pnpm test:types && vitest run --coverage","build":"obuild","release":"pnpm test && pnpm build && changelogen --release && git push --follow-tags && npm publish","lint:fix":"automd && oxlint --fix . && oxfmt src test","bench:bun":"bun ./test/bench","bench:deno":"deno run -A ./test/bench/index.ts","bench:node":"node --expose-gc --allow-natives-syntax --disable-warning=ExperimentalWarning --experimental-strip-types ./test/bench/index.ts","test:types":"tsgo --noEmit"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"git+https://github.com/h3js/rou3.git","type":"git"},"_npmVersion":"11.16.0","description":"Lightweight and fast router for JavaScript.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"packageManager":"pnpm@11.9.0","devDependencies":{"0x":"^6.0.0","oxfmt":"^0.36.0","automd":"^0.4.3","mitata":"^1.0.34","obuild":"^0.4.37","oxlint":"^1.72.0","vitest":"^4.1.9","esbuild":"^0.27.7","typescript":"^5.9.3","@types/node":"^25.9.4","changelogen":"^0.6.2","rou3-latest":"npm:rou3@^0.7.12","@mitata/counters":"^0.0.8","eslint-config-unjs":"^0.6.2","@vitest/coverage-v8":"^4.1.9","@typescript/native-preview":"7.0.0-dev.20260308.1"},"_npmOperationalInternal":{"tmp":"tmp/rou3_0.9.0_1783031486571_0.7617530934428911","host":"s3://npm-registry-packages-npm-production"}},"0.9.1":{"name":"rou3","version":"0.9.1","license":"MIT","_id":"rou3@0.9.1","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"homepage":"https://github.com/h3js/rou3#readme","bugs":{"url":"https://github.com/h3js/rou3/issues"},"dist":{"shasum":"12e9a0d00aa513443e7fa4d171dfd38db0324ea8","tarball":"https://registry.npmjs.org/rou3/-/rou3-0.9.1.tgz","fileCount":7,"integrity":"sha512-z/sSmzvtwMDDnxsPVhfWMuG6F6mbmhFDXoVqLmMfbpDD9qfV3GDmSQpf0+W296/ZDIpW2wcMmBfpVFzcnOi/nA==","signatures":[{"sig":"MEYCIQCIvTpmWjT//kLAs6JscoqyB3hIth9KBA/Uksr+oOGaiwIhAK7dPUIGGoRFwTJHs15+9ts/6unv0rSzBLj+zWp8KihQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":75601},"type":"module","types":"./dist/index.d.mts","exports":{".":"./dist/index.mjs","./compiler":"./dist/compiler.mjs"},"scripts":{"dev":"vitest","lint":"oxlint . && oxfmt --check src test","test":"pnpm lint && pnpm test:types && vitest run --coverage","build":"obuild","release":"pnpm test && pnpm build && changelogen --release && git push --follow-tags && npm publish","lint:fix":"automd && oxlint --fix . && oxfmt src test","bench:bun":"bun ./test/bench","bench:deno":"deno run -A ./test/bench/index.ts","bench:node":"node --expose-gc --allow-natives-syntax --disable-warning=ExperimentalWarning --experimental-strip-types ./test/bench/index.ts","test:types":"tsgo --noEmit"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"git+https://github.com/h3js/rou3.git","type":"git"},"_npmVersion":"11.16.0","description":"Lightweight and fast router for JavaScript.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"packageManager":"pnpm@11.9.0","devDependencies":{"0x":"^6.0.0","oxfmt":"^0.57.0","automd":"^0.4.3","mitata":"^1.0.34","obuild":"^0.4.37","oxlint":"^1.72.0","vitest":"^4.1.10","esbuild":"^0.28.1","typescript":"^6.0.3","@types/node":"^26.1.0","changelogen":"^0.6.2","rou3-latest":"npm:rou3","@mitata/counters":"^0.0.8","eslint-config-unjs":"^0.6.2","@vitest/coverage-v8":"^4.1.10","@typescript/native-preview":"latest"},"_npmOperationalInternal":{"tmp":"tmp/rou3_0.9.1_1783445326222_0.12125895473685189","host":"s3://npm-registry-packages-npm-production"}},"0.9.2":{"name":"rou3","version":"0.9.2","license":"MIT","_id":"rou3@0.9.2","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"homepage":"https://github.com/h3js/rou3#readme","bugs":{"url":"https://github.com/h3js/rou3/issues"},"dist":{"shasum":"4deea937ad3b9df79bb0b09ffc97c616db56c0e4","tarball":"https://registry.npmjs.org/rou3/-/rou3-0.9.2.tgz","fileCount":7,"integrity":"sha512-3SOzvaAg8rkHrXtRjpCvCvbyO5to9oOO27Z/XqHEYXfMRVSw/qMIVdmaOk9W2lcRLtR6dlqTjo9hDeJk70QBYQ==","signatures":[{"sig":"MEYCIQDDsmQxT+9sRL1KMzSuphAHHIRk9d71FteFGlCzhYh1pgIhAIrgOkliJPtfRhS7+/5tJSs4ILeVUu80k8fcgyaaQz15","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIE1hWg2TaG2srz1/tzOM/tOZJsFU7HPWHfj5W6GM9vjgAiEA7grQZhJIwXhJW8Ae+eJ1EhnVE0/EWkTV/eisxzuhF/0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":82691},"type":"module","types":"./dist/index.d.mts","exports":{".":"./dist/index.mjs","./compiler":"./dist/compiler.mjs"},"scripts":{"dev":"vitest","lint":"oxlint . && oxfmt --check src test","test":"pnpm lint && pnpm test:types && vitest run --coverage","build":"obuild","release":"pnpm test && pnpm build && changelogen --release && git push --follow-tags && npm publish","lint:fix":"automd && oxlint --fix . && oxfmt src test","bench:bun":"bun ./test/bench","bench:deno":"deno run -A ./test/bench/index.ts","bench:node":"node --expose-gc --allow-natives-syntax --disable-warning=ExperimentalWarning --experimental-strip-types ./test/bench/index.ts","test:types":"tsgo --noEmit"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"git+https://github.com/h3js/rou3.git","type":"git"},"_npmVersion":"11.16.0","description":"Lightweight and fast router for JavaScript.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.1","_hasShrinkwrap":false,"packageManager":"pnpm@11.9.0","devDependencies":{"0x":"^6.0.0","oxfmt":"^0.57.0","automd":"^0.4.3","mitata":"^1.0.34","obuild":"^0.4.37","oxlint":"^1.72.0","vitest":"^4.1.10","esbuild":"^0.28.1","typescript":"^6.0.3","@types/node":"^26.1.0","changelogen":"^0.6.2","rou3-latest":"npm:rou3","@mitata/counters":"^0.0.8","eslint-config-unjs":"^0.6.2","@vitest/coverage-v8":"^4.1.10","@typescript/native-preview":"latest"},"_npmOperationalInternal":{"tmp":"tmp/rou3_0.9.2_1786441543278_0.5817670848671384","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"rou3","version":"0.10.0","license":"MIT","_id":"rou3@0.10.0","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"homepage":"https://github.com/h3js/rou3#readme","bugs":{"url":"https://github.com/h3js/rou3/issues"},"dist":{"shasum":"9894706a21f028e44cf90260087b651f2d30a3b4","tarball":"https://registry.npmjs.org/rou3/-/rou3-0.10.0.tgz","fileCount":7,"integrity":"sha512-SdbGoZhqVCKUmARUtKi+PRWwk+eUt4+d9gkKJhNYT9IPzMLbiGVLVnl0tjMJBydicMoENMqjs3369P/f9oQLnQ==","signatures":[{"sig":"MEQCIBhUR4DcullQ5PwiP3QHPiF/lgJ9qWK1kcX82xMDbU7pAiB4lxjN4VIRUW+JHYeGVRHhwTmBdnDRsaTkcD/fh1fHCg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIBC6wxUpsTivb+ZhRtGcmHH1gS0qp28xXDwUH+sKiKDSAiEA4OvDpVEr3ILi74mbAzPE7X3Br1o5cPwCHHYe3W6YORU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":130499},"type":"module","types":"./dist/index.d.mts","exports":{".":"./dist/index.mjs","./compiler":"./dist/compiler.mjs"},"scripts":{"dev":"vitest","lint":"oxlint . && oxfmt --check src test","test":"pnpm lint && pnpm test:types && vitest run --coverage","build":"obuild","release":"pnpm test && pnpm build && changelogen --release && git push --follow-tags && npm publish","lint:fix":"automd && oxlint --fix . && oxfmt src test","bench:bun":"bun ./test/bench","bench:deno":"deno run -A ./test/bench/index.ts","bench:node":"node --expose-gc --allow-natives-syntax --disable-warning=ExperimentalWarning --experimental-strip-types ./test/bench/index.ts","test:types":"tsc --noEmit"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"git+https://github.com/h3js/rou3.git","type":"git"},"_npmVersion":"12.1.0","description":"Lightweight and fast router for JavaScript.","directories":{},"sideEffects":false,"_nodeVersion":"24.21.0","_hasShrinkwrap":false,"packageManager":"pnpm@11.26.0","devDependencies":{"0x":"^6.0.0","oxfmt":">=0.68.0","automd":"^0.4.3","mitata":"^1.0.34","obuild":"^0.4.40","oxlint":"^1.83.0","vitest":"^5.0.1","esbuild":"^0.28.2","ripgrep":"^0.3.1","typescript":"^6","@types/node":"^26.6.1","changelogen":"^0.6.2","rou3-latest":"npm:rou3@^0.9.2","@mitata/counters":"^0.0.8","eslint-config-unjs":"^0.6.2","@vitest/coverage-v8":"^5.0.1"},"_npmOperationalInternal":{"tmp":"tmp/rou3_0.10.0_1790633589851_0.5022293994132143","host":"s3://npm-registry-packages-npm-production"}},"0.10.1":{"name":"rou3","version":"0.10.1","license":"MIT","_id":"rou3@0.10.1","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"homepage":"https://github.com/h3js/rou3#readme","bugs":{"url":"https://github.com/h3js/rou3/issues"},"dist":{"shasum":"0564519c198c158d999c3f7cecbbb8561c54a7ae","tarball":"https://registry.npmjs.org/rou3/-/rou3-0.10.1.tgz","fileCount":7,"integrity":"sha512-vh0jwgcbH1SUZ7sXGkPWYVexuhIdr9wJP9lbw0r2mHoRJ5cMv4ojqH6r9XpEqe347AR89X+xnpzc1NzE/JCfsw==","signatures":[{"sig":"MEYCIQDh+Evv/sAABQU8PaultUyCRGC4jHpGBfOEufrMZ/PHqAIhAOg4HQ9pRIrOvQXO6ciKMjP6d6kVglheSQpAfxqc87jw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCICUBbf742jZMw5jQX1f+VnwjDNP8jThKCTI4jZoIw9qkAiEAl+jdm9glfWSr8rOfoe+pldw8hTCxE2I6/bl9ENAzJsE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":130706},"type":"module","types":"./dist/index.d.mts","exports":{".":"./dist/index.mjs","./compiler":"./dist/compiler.mjs"},"scripts":{"dev":"vitest","lint":"oxlint . && oxfmt --check src test","test":"pnpm lint && pnpm test:types && vitest run --coverage","build":"obuild","release":"pnpm test && pnpm build && changelogen --release && git push --follow-tags && npm publish","lint:fix":"automd && oxlint --fix . && oxfmt src test","bench:bun":"bun ./test/bench","bench:deno":"deno run -A ./test/bench/index.ts","bench:node":"node --expose-gc --allow-natives-syntax --disable-warning=ExperimentalWarning --experimental-strip-types ./test/bench/index.ts","test:types":"tsc --noEmit"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"git+https://github.com/h3js/rou3.git","type":"git"},"_npmVersion":"12.1.0","description":"Lightweight and fast router for JavaScript.","directories":{},"sideEffects":false,"_nodeVersion":"24.21.0","_hasShrinkwrap":false,"packageManager":"pnpm@11.26.0","devDependencies":{"0x":"^6.0.0","oxfmt":">=0.68.0","automd":"^0.4.3","mitata":"^1.0.34","obuild":"^0.4.40","oxlint":"^1.83.0","vitest":"^5.0.1","esbuild":"^0.28.2","ripgrep":"^0.3.1","typescript":"^6","@types/node":"^26.6.1","changelogen":"^0.6.2","rou3-latest":"npm:rou3@^0.9.2","@mitata/counters":"^0.0.8","eslint-config-unjs":"^0.6.2","@vitest/coverage-v8":"^5.0.1"},"_npmOperationalInternal":{"tmp":"tmp/rou3_0.10.1_1790635347410_0.4610405834788478","host":"s3://npm-registry-packages-npm-production"}},"0.10.2":{"name":"rou3","version":"0.10.2","license":"MIT","_id":"rou3@0.10.2","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"homepage":"https://github.com/h3js/rou3#readme","bugs":{"url":"https://github.com/h3js/rou3/issues"},"dist":{"shasum":"58812bf4306815bfb48766a286bf8b0e3155f544","tarball":"https://registry.npmjs.org/rou3/-/rou3-0.10.2.tgz","fileCount":7,"integrity":"sha512-Bhpf3+tMjagZmFmNDpZ/idBoywJmuUdOTz/5e4bVJx3WU0LupnPubK6nTTkrlETEoBwkxr1u3RqETTmCBL43TQ==","signatures":[{"sig":"MEYCIQCE/W8imQvU2OcjV5km0nV7zkqTRTD/YGyXLD04X3YL7gIhAMDjAVz9YHZ/6qkT/lQa3gOKZrCaM1ai2sGasUeC2UTP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIE/cg1LfdSAyQmLrrtKmQxfsgyNN6xIfp53w4LVFGCxRAiB4gRVvxB9lfzlYTxZFxhIgZv2wfsPLghJD95fk6oRk3A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":132439},"type":"module","types":"./dist/index.d.mts","exports":{".":"./dist/index.mjs","./compiler":"./dist/compiler.mjs"},"scripts":{"dev":"vitest","lint":"oxlint . && oxfmt --check src test","test":"pnpm lint && pnpm test:types && vitest run --coverage","build":"obuild","release":"pnpm test && pnpm build && changelogen --release && git push --follow-tags && npm publish","lint:fix":"automd && oxlint --fix . && oxfmt src test","bench:bun":"bun ./test/bench","bench:deno":"deno run -A ./test/bench/index.ts","bench:node":"node --expose-gc --allow-natives-syntax --disable-warning=ExperimentalWarning --experimental-strip-types ./test/bench/index.ts","test:types":"tsc --noEmit"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"git+https://github.com/h3js/rou3.git","type":"git"},"_npmVersion":"12.1.0","description":"Lightweight and fast router for JavaScript.","directories":{},"sideEffects":false,"_nodeVersion":"24.21.0","_hasShrinkwrap":false,"packageManager":"pnpm@11.26.0","devDependencies":{"0x":"^6.0.0","oxfmt":">=0.68.0","automd":"^0.4.3","mitata":"^1.0.34","obuild":"^0.4.40","oxlint":"^1.83.0","vitest":"^5.0.1","esbuild":"^0.28.2","ripgrep":"^0.3.1","typescript":"^6","@types/node":"^26.6.1","changelogen":"^0.6.2","rou3-latest":"npm:rou3@^0.9.2","@mitata/counters":"^0.0.8","eslint-config-unjs":"^0.6.2","@vitest/coverage-v8":"^5.0.1"},"_npmOperationalInternal":{"tmp":"tmp/rou3_0.10.2_1790637557746_0.7972873789191599","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"rou3","version":"0.11.0","keywords":["router","radix-tree","http","routing","url-pattern","path-matching"],"license":"MIT","_id":"rou3@0.11.0","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"homepage":"https://github.com/h3js/rou3#readme","dist":{"shasum":"fa06a7f0ce697a56d458a969afbd29f2e9321520","tarball":"https://registry.npmjs.org/rou3/-/rou3-0.11.0.tgz","fileCount":7,"integrity":"sha512-QYkFgNURTMBzmDpfFOpJNscLALbTlmFG/TGl4JVENesWNnrPAt7XHcml56Esb7fprnSRk4iwbgkmpZEPfX5MsA==","signatures":[{"sig":"MEUCIQCAgNMNR1MMqMz5D81XQsTgxAI03R7/qI5xZ98fW48KnwIgTXQMeZdJ/t+uAko1CeDnb+SAwimnM5TuhtYaGTlQS/Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCICJ3d0JAwqpMdrNnfp1m7JGWnd3KfyP+702hZvsbiP3fAiEAmm2bnf9J6bzLGsKZeBv/5R4HfqIWW/Nor2kK0NENZC0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":150490},"type":"module","types":"./dist/index.d.mts","engines":{"node":">=20.19.0"},"exports":{".":"./dist/index.mjs","./compiler":"./dist/compiler.mjs","./package.json":"./package.json"},"scripts":{"dev":"vitest","lint":"oxlint . && oxfmt --check src test","test":"pnpm lint && pnpm test:types && vitest run --coverage","build":"obuild","release":"pnpm test && pnpm build && changelogen --release && git push --follow-tags && npm publish","lint:fix":"automd && oxlint --fix . && oxfmt src test","bench:bun":"bun ./test/bench","bench:deno":"deno run -A ./test/bench/index.ts","bench:node":"node --expose-gc --allow-natives-syntax --disable-warning=ExperimentalWarning --experimental-strip-types ./test/bench/index.ts","test:types":"tsc --noEmit"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"h3js/rou3","type":"git"},"description":"Lightweight and fast router for JavaScript.","directories":{},"sideEffects":false,"_nodeVersion":"24.21.0","_hasShrinkwrap":false,"devDependencies":{"0x":"^6.0.0","oxfmt":">=0.68.0","automd":"^0.4.3","mitata":"^1.0.34","obuild":"^0.4.40","oxlint":"^1.83.0","vitest":"^5.0.1","esbuild":"^0.28.2","ripgrep":"^0.3.1","typescript":"^6","@types/node":"^26.6.1","changelogen":"^0.6.2","rou3-latest":"npm:rou3@^0.9.2","@mitata/counters":"^0.0.8","eslint-config-unjs":"^0.6.2","@vitest/coverage-v8":"^5.0.1"},"_npmOperationalInternal":{"tmp":"tmp/rou3_0.11.0_1790699265427_0.15583825727439016","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"rou3","version":"0.12.0","keywords":["router","radix-tree","http","routing","url-pattern","path-matching"],"license":"MIT","_id":"rou3@0.12.0","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"homepage":"https://github.com/h3js/rou3#readme","dist":{"shasum":"9945c9ff6c04560695794160fddfdf11ca7940f2","tarball":"https://registry.npmjs.org/rou3/-/rou3-0.12.0.tgz","fileCount":7,"integrity":"sha512-V2L6A3jA3RV/zI4pSXkV8OF3+8zPOfaYsb2bV9nTzxV/TXRYDtXgv+k0n1QnYrR0XuTkHfR63wU3Nov6hKCaAA==","signatures":[{"sig":"MEUCIF5PvCRMDblsHH/BoucsbNqXLKs+wgLO39ZG8UpAcJMOAiEAkRvV8nI4Jyb/VQGof+Voccp1QpBXsYGxE7cU1/J2YdY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCICT9Evreai6sBZH1vZqBi7m36iIt+I2cCtjFdCN6xJzXAiAw5SFBZvBAvJsJlY7YwYftlpG6t1svZ6yrkepDUEAoOA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":167775},"type":"module","types":"./dist/index.d.mts","engines":{"node":">=20.19.0"},"exports":{".":"./dist/index.mjs","./compiler":"./dist/compiler.mjs","./package.json":"./package.json"},"scripts":{"dev":"vitest","lint":"oxlint . && oxfmt --check src test","test":"pnpm lint && pnpm test:types && vitest run --coverage","build":"obuild","release":"pnpm test && pnpm build && changelogen --release && git push --follow-tags && npm publish","lint:fix":"automd && oxlint --fix . && oxfmt src test","bench:bun":"bun ./test/bench","bench:deno":"deno run -A ./test/bench/index.ts","bench:node":"node --expose-gc --allow-natives-syntax --disable-warning=ExperimentalWarning --experimental-strip-types ./test/bench/index.ts","test:types":"tsc --noEmit"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"h3js/rou3","type":"git"},"description":"Lightweight and fast router for JavaScript.","directories":{},"sideEffects":false,"_nodeVersion":"24.21.0","_hasShrinkwrap":false,"devDependencies":{"0x":"^6.0.0","oxfmt":">=0.68.0","automd":"^0.4.3","mitata":"^1.0.34","obuild":"^0.4.40","oxlint":"^1.83.0","vitest":"^5.0.1","esbuild":"^0.28.2","ripgrep":"^0.3.1","typescript":"^6","@types/node":"^26.6.1","changelogen":"^0.6.2","rou3-latest":"npm:rou3@^0.9.2","@mitata/counters":"^0.0.8","eslint-config-unjs":"^0.6.2","@vitest/coverage-v8":"^5.0.1"},"_npmOperationalInternal":{"tmp":"tmp/rou3_0.12.0_1790974883174_0.1774739843235793","host":"s3://npm-registry-packages-npm-production"}},"0.12.1":{"name":"rou3","version":"0.12.1","keywords":["router","radix-tree","http","routing","url-pattern","path-matching"],"license":"MIT","_id":"rou3@0.12.1","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"homepage":"https://github.com/h3js/rou3#readme","bugs":{"url":"https://github.com/h3js/rou3/issues"},"dist":{"shasum":"c062e4ca243dca848f510d476c07ebf950cf9e33","tarball":"https://registry.npmjs.org/rou3/-/rou3-0.12.1.tgz","fileCount":7,"integrity":"sha512-uv7TWJWh0lB6TyXnK1xDn9+OyzOb6Foeh+9bh+wV5hJ0v0ASpMiaGdatrlc9MPc4EBGWBMo8j0lkNxkNBel5Sg==","signatures":[{"sig":"MEYCIQCoIWp1MniQZ4fWdFozRKsUaCGN72ajZTRGIXHUOkVvLwIhAK4nASziIzreAjt7upC/UmUE8uJ4WSIgHjY5OZsSJLEA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIC48sNH2KINUkNNfrhwzG4iiWPk5zEDOWqQ+BYufWIE9AiEAgnwW6GghjPE6KqOHyDp85A/ySXsVCg6wYBC1Zt1OX3c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":168004},"type":"module","types":"./dist/index.d.mts","engines":{"node":">=20.19.0"},"exports":{".":"./dist/index.mjs","./compiler":"./dist/compiler.mjs","./package.json":"./package.json"},"scripts":{"dev":"vitest","lint":"oxlint . && oxfmt --check src test","test":"pnpm lint && pnpm test:types && vitest run --coverage","build":"obuild","release":"pnpm test && pnpm build && changelogen --release && git push --follow-tags && npm publish","lint:fix":"automd && oxlint --fix . && oxfmt src test","bench:bun":"bun ./test/bench","bench:deno":"deno run -A ./test/bench/index.ts","bench:node":"node --expose-gc --allow-natives-syntax --disable-warning=ExperimentalWarning --experimental-strip-types ./test/bench/index.ts","test:types":"tsc --noEmit"},"_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"repository":{"url":"git+https://github.com/h3js/rou3.git","type":"git"},"_npmVersion":"12.1.0","description":"Lightweight and fast router for JavaScript.","directories":{},"sideEffects":false,"_nodeVersion":"24.21.0","_hasShrinkwrap":false,"packageManager":"pnpm@11.26.0","devDependencies":{"0x":"^6.0.0","oxfmt":">=0.68.0","automd":"^0.4.3","mitata":"^1.0.34","obuild":"^0.4.40","oxlint":"^1.83.0","vitest":"^5.0.1","esbuild":"^0.28.2","ripgrep":"^0.3.1","typescript":"^6","@types/node":"^26.6.1","changelogen":"^0.6.2","rou3-latest":"npm:rou3@^0.9.2","@mitata/counters":"^0.0.8","eslint-config-unjs":"^0.6.2","@vitest/coverage-v8":"^5.0.1"},"_npmOperationalInternal":{"tmp":"tmp/rou3_0.12.1_1791019324599_0.4403735886830018","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"_id":"rou3@1.0.0","bugs":{"url":"https://github.com/h3js/rou3/issues"},"dist":{"shasum":"86f260b2ed813f99ccbe549d1de9f453c6600fcc","tarball":"https://registry.npmjs.org/rou3/-/rou3-1.0.0.tgz","fileCount":7,"integrity":"sha512-ySeaQkSrua+ut9g+65I7FHqOFBaY8tV0FmccXItoq0q21se32Q3u4YiW7/RqXSosWgYJaaKwRHXy3BST9PeCNQ==","signatures":[{"sig":"MEQCIDSkzr8WZ/GY12CoQqn0GUdWeCYah11jcbTHLq1+699fAiBEi5dSwLqajaImRkT8OavGIBPPsu1Ul9M+m5K/uzGXdQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCdbfbYPtO31c/hzYnfRfEOURigO+3IfLQ8FGzVOrvbCAIgeH/zJvV+dodb5cROHM9GCZHPbuwf08P9bgCb1UBjWTY="}],"unpackedSize":168003},"name":"rou3","type":"module","types":"./dist/index.d.mts","engines":{"node":">=20.19.0"},"exports":{".":"./dist/index.mjs","./compiler":"./dist/compiler.mjs","./package.json":"./package.json"},"license":"MIT","scripts":{"dev":"vitest","lint":"oxlint . && oxfmt --check src test","test":"pnpm lint && pnpm test:types && vitest run --coverage","build":"obuild","release":"pnpm test && pnpm build && changelogen --release && git push --follow-tags && npm publish","lint:fix":"automd && oxlint --fix . && oxfmt src test","bench:bun":"bun ./test/bench","bench:deno":"deno run -A ./test/bench/index.ts","bench:node":"node --expose-gc --allow-natives-syntax --disable-warning=ExperimentalWarning --experimental-strip-types ./test/bench/index.ts","test:types":"tsc --noEmit"},"version":"1.0.0","_npmUser":{"name":"pi0","email":"pyapar@gmail.com"},"homepage":"https://github.com/h3js/rou3#readme","keywords":["router","radix-tree","http","routing","url-pattern","path-matching"],"repository":{"url":"git+https://github.com/h3js/rou3.git","type":"git"},"_npmVersion":"12.1.0","description":"Lightweight and fast router for JavaScript.","directories":{},"maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"sideEffects":false,"_nodeVersion":"24.21.0","_hasShrinkwrap":false,"packageManager":"pnpm@11.26.0","devDependencies":{"0x":"^6.0.0","oxfmt":">=0.68.0","automd":"^0.4.3","mitata":"^1.0.34","obuild":"^0.4.40","oxlint":"^1.83.0","vitest":"^5.0.1","esbuild":"^0.28.2","ripgrep":"^0.3.1","typescript":"^6","@types/node":"^26.6.1","changelogen":"^0.6.2","rou3-latest":"npm:rou3@^0.9.2","@mitata/counters":"^0.0.8","eslint-config-unjs":"^0.6.2","@vitest/coverage-v8":"^5.0.1"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/rou3_1.0.0_1791022261680_0.5319175744475764"}}},"time":{"created":"2024-07-04T17:51:08.768Z","modified":"2026-10-03T10:11:01.958Z","0.0.0":"2024-07-04T17:51:08.895Z","0.0.1":"2024-07-04T22:20:37.598Z","0.1.0":"2024-07-05T15:10:11.015Z","0.2.0":"2024-07-08T10:31:22.261Z","0.3.0":"2024-07-09T11:06:50.969Z","0.4.0":"2024-07-09T19:29:00.357Z","0.5.0":"2024-07-24T15:04:37.302Z","0.5.1":"2024-07-24T15:21:35.728Z","0.6.0":"2025-04-17T20:49:36.367Z","0.6.1":"2025-04-22T12:06:21.949Z","0.6.2":"2025-05-30T09:57:19.354Z","0.6.3":"2025-06-03T17:22:01.491Z","0.7.0":"2025-06-16T14:42:00.125Z","0.7.1":"2025-06-18T13:37:08.325Z","0.7.2":"2025-06-20T16:36:13.903Z","0.7.3":"2025-06-25T19:33:29.091Z","0.7.4":"2025-09-17T09:56:15.392Z","0.7.5":"2025-09-17T14:41:07.417Z","0.7.6":"2025-10-01T10:02:20.045Z","0.7.7":"2025-10-01T11:22:22.392Z","0.7.8":"2025-10-20T21:29:01.155Z","0.7.9":"2025-10-27T11:35:22.677Z","0.7.10":"2025-11-03T09:55:22.568Z","0.7.11":"2025-12-10T10:29:54.984Z","0.7.12":"2025-12-15T16:41:55.162Z","0.8.0":"2026-03-09T08:06:27.662Z","0.8.1":"2026-03-09T09:17:46.665Z","0.9.0":"2026-07-02T22:31:26.726Z","0.9.1":"2026-07-07T17:28:46.357Z","0.9.2":"2026-08-11T09:45:43.362Z","0.10.0":"2026-09-28T22:13:09.946Z","0.10.1":"2026-09-28T22:42:27.497Z","0.10.2":"2026-09-28T23:19:17.838Z","0.11.0":"2026-09-29T16:27:45.507Z","0.12.0":"2026-10-02T21:01:23.277Z","0.12.1":"2026-10-03T09:22:04.676Z","1.0.0":"2026-10-03T10:11:01.776Z"},"bugs":{"url":"https://github.com/h3js/rou3/issues"},"license":"MIT","homepage":"https://github.com/h3js/rou3#readme","keywords":["router","radix-tree","http","routing","url-pattern","path-matching"],"repository":{"url":"git+https://github.com/h3js/rou3.git","type":"git"},"description":"Lightweight and fast router for JavaScript.","maintainers":[{"name":"pi0","email":"pyapar@gmail.com"}],"readme":"# 🌳 rou3\n\n<!-- automd:badges codecov bundlejs -->\n\n[![npm version](https://img.shields.io/npm/v/rou3)](https://npmjs.com/package/rou3)\n[![npm downloads](https://img.shields.io/npm/dm/rou3)](https://npm.chart.dev/rou3)\n[![bundle size](https://img.shields.io/bundlejs/size/rou3)](https://bundlejs.com/?q=rou3)\n[![codecov](https://img.shields.io/codecov/c/gh/h3js/rou3)](https://codecov.io/gh/h3js/rou3)\n\n<!-- /automd -->\n\nLightweight and fast router for JavaScript.\n\n- 🌲 **Tree-based lookups**, one node per path segment, with a fast path for static routes.\n- 🧩 **URLPattern-like syntax**: params, regex constraints, optional segments, groups and wildcards.\n- ⚡ **Compiler** that turns a router into one optimized function, at runtime or at build time.\n- 🧪 **Utilities** to compare patterns, find overlapping routes and convert routes to and from `RegExp`.\n- 📦 **Zero dependencies**, tree-shakeable, typed.\n\n## Install\n\n```sh\n# ✨ Auto-detect\nnpx nypm install rou3\n```\n\nrou3 is ESM only. It runs on Node.js 20.19+, Bun, Deno and modern browsers.\n\nUpgrading from 0.9 or older? See the [migration guide](./docs/migration.md).\n\n## Quick start\n\n```js\nimport { createRouter, addRoute, findRoute, findAllRoutes, removeRoute } from \"rou3\";\n\nconst router = createRouter();\n\naddRoute(router, \"GET\", \"/about\", { page: \"about\" });\naddRoute(router, \"GET\", \"/users/:id\", { page: \"user\" });\naddRoute(router, \"GET\", \"/docs/**\", { page: \"docs\" });\n```\n\n`findRoute` returns the best match, or `undefined`:\n\n```js\nfindRoute(router, \"GET\", \"/about\");\n// { data: { page: \"about\" } }\n\nfindRoute(router, \"GET\", \"/users/42\");\n// { data: { page: \"user\" }, params: { id: \"42\" } }\n\nfindRoute(router, \"GET\", \"/docs/guide/intro\");\n// { data: { page: \"docs\" }, params: { \"0\": \"guide/intro\", _: \"guide/intro\" } }\n\nfindRoute(router, \"GET\", \"/missing\");\n// undefined\n```\n\n`findAllRoutes` returns every match, from the least to the most specific:\n\n```js\naddRoute(router, \"GET\", \"/docs/:section/intro\", { page: \"intro\" });\n\nfindAllRoutes(router, \"GET\", \"/docs/guide/intro\");\n// [\n//   { data: { page: \"docs\" }, params: { \"0\": \"guide/intro\", _: \"guide/intro\" } },\n//   { data: { page: \"intro\" }, params: { section: \"guide\" } },\n// ]\n```\n\n`removeRoute` removes a route by the pattern it was added with:\n\n```js\nremoveRoute(router, \"GET\", \"/users/:id\");\n```\n\nRoute data can be anything: a handler, a config object, an id. rou3 stores it and hands it back on a match.\n\n## Route patterns\n\nrou3 supports [URLPattern](https://developer.mozilla.org/en-US/docs/Web/API/URL_Pattern_API)-like syntax. A **segment** is the part of a path between two `/`.\n\n| Pattern                     | Example match                            | Params                                               |\n| --------------------------- | ---------------------------------------- | ---------------------------------------------------- |\n| `/path/to/resource`         | `/path/to/resource`                      | `{}`                                                 |\n| `/users/:name`              | `/users/foo`                             | `{ name: \"foo\" }`                                    |\n| `/users/:id(\\\\d+)`          | `/users/123`                             | `{ id: \"123\" }`                                      |\n| `/files/:ext(png\\|jpg)`     | `/files/png`                             | `{ ext: \"png\" }`                                     |\n| `/path/(\\\\d+)`              | `/path/123`                              | `{ \"0\": \"123\" }`                                     |\n| `/users/:id?`               | `/users` or `/users/123`                 | `{}` or `{ id: \"123\" }`                              |\n| `/files/:path+`             | `/files/a/b/c`                           | `{ path: \"a/b/c\" }`                                  |\n| `/files/:path*`             | `/files` or `/files/a/b`                 | `{}` or `{ path: \"a/b\" }`                            |\n| `/files/*`                  | `/files/` or `/files/a/b`                | `{ \"0\": \"\" }` or `{ \"0\": \"a/b\" }`                    |\n| `/files/*.png`              | `/files/icon.png` or `/files/a/icon.png` | `{ \"0\": \"icon\" }` or `{ \"0\": \"a/icon\" }`             |\n| `/files/:path(.*)`          | `/files/` or `/files/a/b`                | `{ path: \"\" }` or `{ path: \"a/b\" }`                  |\n| `/path/**`                  | `/path/foo/bar`                          | `{ \"0\": \"foo/bar\", _: \"foo/bar\" }` (`_` is deprecated) |\n| `/path/**:rest`             | `/path/foo/bar`                          | `{ rest: \"foo/bar\" }`                                |\n| `/**/_payload.json`         | `/_payload.json` or `/a/b/_payload.json` | `{}` or `{ \"0\": \"a/b\", _: \"a/b\" }`                   |\n| `/**.md`                    | `/docs/intro.md`                         | `{ \"0\": \"docs/intro\" }`                              |\n| `/book{s}?`                 | `/book` or `/books`                      | `{}`                                                 |\n| `/blog/:id(\\\\d+){-:title}?` | `/blog/123` or `/blog/123-my-post`       | `{ id: \"123\" }` or `{ id: \"123\", title: \"my-post\" }` |\n| `/files/:name.:ext`         | `/files/a.tar.gz`                        | `{ name: \"a\", ext: \"tar.gz\" }`                       |\n| `/v:version?`               | `/v` or `/v2`                            | `{}` or `{ version: \"2\" }`                           |\n\n> [!NOTE]\n> In JavaScript strings a regex backslash is written twice: `\"/users/:id(\\\\d+)\"` is the pattern `/users/:id(\\d+)`.\n\n### Params\n\n- **`:name`** matches one segment: `/users/:name`. It can also sit inside a segment: `/blog/:year-:month`. Several captures in one segment split like URLPattern: a `:name` takes as little as it can (`/:name.:ext` on `/a.tar.gz` gives `{ name: \"a\", ext: \"tar.gz\" }`).\n- **`:name(regex)`** matches only when the regex does: `/users/:id(\\\\d+)`. The regex sees one segment and can't contain `/`. The exception is `:name(.*)`, which is a [`*`](#wildcards) captured into `name`.\n- **`(regex)`** without a name captures into a numbered key (`\"0\"`, `\"1\"`, …): `/path/(\\\\d+)`. To group inside a regex, use `(?:…)`.\n- **Modifiers** go after a param that fills its whole segment:\n  - `:name?`: zero or one segment (also with a regex: `:id(\\\\d+)?`).\n  - `:name+`: one or more segments. `/files/:path+` on `/files/a/b` gives `{ path: \"a/b\" }`.\n  - `:name*`: zero or more segments. `/files/:path*` also matches `/files`.\n  - As in URLPattern, the segments a `+` or `*` takes can't be empty: `/files/:path+` doesn't match `/files//a`. Use `/files/**` to accept empty segments.\n- **`?` inside a segment** makes only the param optional, not the segment: `/pre-:x?` matches `/pre-` and `/pre-a`, but not `/`. To make the whole segment optional, use a group: `/{pre-:x}?`.\n- A param that didn't match has no key in `params`.\n- Names are ASCII identifiers (`[A-Za-z_][A-Za-z0-9_]*`), and `-` ends one: `/users/:user-id` is the param `user` followed by `-id`. See the [param naming rules](./docs/reference.md#param-naming-rules).\n\n### Wildcards\n\n| Syntax                 | Matches                            | Key                       | Empty segments |\n| ---------------------- | ---------------------------------- | ------------------------- | -------------- |\n| `*`                    | the rest of the path, `/` included | `\"0\"`, `\"1\"`, …           | allowed        |\n| `(.*)`                 | same as `*`                        | `\"0\"`, `\"1\"`, …           | allowed        |\n| `:name(.*)`            | same as `*`                        | `name`                    | allowed        |\n| `**`                   | zero or more segments              | `\"0\"`, `\"1\"`, … (and `_`) | allowed        |\n| `**:name` (= `:name+`) | one or more segments               | `name`                    | not allowed    |\n\n- **`*`** matches the rest of the path, `/` included, like URLPattern's `*`: `/files/*` on `/files/a/b` gives `{ \"0\": \"a/b\" }`. Inside a segment it takes the rest of that segment and everything after it: `/files/*.png` on `/files/a/icon.png` gives `{ \"0\": \"a/icon\" }`. For exactly one segment, use a `:name`.\n- **At the end of a route, a `*` is optional**, as in rou3 0.11 (URLPattern requires it). `/files/*` also matches `/files` (no key) and `/files/` (`{ \"0\": \"\" }`), so a middleware on `/api/*` also covers `/api`. To require at least one segment, use `/files/:path+`.\n- **`**`** matches zero or more segments: `/docs/**` matches `/docs` (no key) and `/docs/a/b` (`{ \"0\": \"a/b\", _: \"a/b\" }`), and `/docs/**/x` also matches `/docs/x`.\n- **Segments after a catch-all** are matched from the **end** of the path, and the catch-all takes whatever is in between: `/**/_payload.json` matches `_payload.json` in any directory, and `/blog/**:path/og.png` matches `og.png` anywhere under `/blog`.\n- **One catch-all per route**: `/*/x/*` throws. Write `/:a/x/*` to capture one segment and the rest.\n- **Unnamed captures** (`*`, `**` and `(regex)`) are numbered in pattern order, as in URLPattern.\n\nSee [wildcards in detail](./docs/reference.md#wildcards-in-detail) for `(.*)`, empty segments and numbered keys in optional groups.\n\n> [!WARNING]\n> **`_` is deprecated.** It is the name rou3 0.11 and older used for a bare `**`'s capture, kept so `params._` still works. Read the numbered key instead: `_` will be removed in a future version.\n\n### Groups\n\n`{...}` groups part of a pattern without capturing it. Add `?` to make it optional:\n\n- `/book{s}?` matches `/book` and `/books`.\n- `/users{/:id}?/posts` matches `/users/posts` and `/users/42/posts`.\n- `{/:lang}?/docs` matches `/docs` and `/en/docs` (see [groups at the start of a pattern](./docs/reference.md#groups-at-the-start-of-a-pattern)).\n\nGroups can't be nested or repeated (`{...}+` and `{...}*` throw).\n\n### Escaping and encoding\n\nEscape `:`, `*`, `?`, `+`, `(`, `)`, `{` and `}` with a backslash to match them literally. Outside a regex constraint, any escaped character is literal (`\\\\.` is `.`), as in URLPattern.\n\n```js\naddRoute(router, \"GET\", \"/static\\\\:path/\\\\*\\\\*\", {}); // matches only \"/static:path/**\"\naddRoute(router, \"GET\", \"/files/\\\\(2024\\\\)\", {}); // matches only \"/files/(2024)\"\n```\n\nThe literal text of a pattern is percent-encoded once, when the route is added, as URLPattern does. Lookup paths are **never** decoded or encoded, so pass the encoded pathname (`new URL(req.url).pathname`):\n\n```js\naddRoute(router, \"GET\", \"/café/:id\", {});\nfindRoute(router, \"GET\", \"/caf%C3%A9/1\"); // { data: {}, params: { id: \"1\" } }\nfindRoute(router, \"GET\", \"/café/1\"); // undefined\n```\n\nRegex constraints are not encoded: write `:x(%C3%A9)`, not `:x(é)`. See [percent-encoding](./docs/reference.md#percent-encoding) for exactly what is encoded.\n\n`.` and `..` segments in a pattern are resolved like `new URL()` resolves a path: `/docs/../api/:id` is `/api/:id` (see [dot segments](./docs/reference.md#dot-segments)).\n\n### Invalid patterns and URLPattern differences\n\n`addRoute` throws a `rou3:` error that quotes the pattern when the syntax has no clear meaning (an unclosed `(` or `{`, a misplaced modifier, a repeated param name, a second catch-all, …), instead of silently matching something unexpected. The full list is in [invalid patterns](./docs/reference.md#invalid-patterns).\n\nrou3 matches HTTP request paths segment by segment in a tree, so it differs from URLPattern in a few intentional ways: one trailing slash is ignored, a trailing `*` is optional, a route has at most one catch-all, and matching is always case-sensitive. See [differences from URLPattern](./docs/reference.md#differences-from-urlpattern) for the full table and edge cases.\n\n## Matching\n\n### Methods and paths\n\nrou3 doesn't normalize lookup input, so do it before calling `findRoute`:\n\n- **Paths** must start with `/`. For other input, `findRoute` and the compiled matcher may answer differently.\n- **Paths** must be percent-encoded, as `new URL().pathname` gives them, since a route's literal text is encoded (see [escaping and encoding](#escaping-and-encoding)).\n- **Methods** must be UPPERCASE: `\"GET\"`, not `\"get\"`.\n\n### Routes for any method\n\nRegister a route with the method `\"\"` to match every method. It's useful for things like middleware or auth checks:\n\n```js\naddRoute(router, \"\", \"/users/*\", { auth: true }); // any method\naddRoute(router, \"GET\", \"/users/:id(\\\\d+)\", { handler: \"user\" });\n\nfindAllRoutes(router, \"GET\", \"/users/42\").map((m) => m.data);\n// [{ auth: true }, { handler: \"user\" }]\n\nfindRoute(router, \"GET\", \"/users/42\")?.data; // { handler: \"user\" }\nfindRoute(router, \"GET\", \"/users/me\")?.data; // { auth: true }\nfindRoute(router, \"POST\", \"/users/42\")?.data; // { auth: true }\n```\n\n- A lookup sees the routes for its method and the method-agnostic ones together, and the most specific one wins.\n- When two routes are equally specific, the one registered for the method wins over the method-agnostic one (and comes after it in `findAllRoutes`).\n- A lookup with the method `\"\"` only sees method-agnostic routes.\n\n### Trailing slashes and empty segments\n\n- **One trailing slash is ignored** in lookup paths: `/users/foo/` matches `/users/:name`, `/users/foo//` doesn't. The only route that sees the slash is one ending in `*`: `/users/*` gives `{ \"0\": \"\" }` on `/users/` (as in URLPattern) and no key on `/users`.\n- **Trailing slashes in patterns are ignored**: `/users/`, `/users//` and `/users` are the same route.\n- **Empty segments in the middle count**: `/a//b` doesn't match `/a/b`.\n- **Named params need a value**, as in URLPattern: a `:name` never captures `\"\"`, and no segment a `:name+`, `:name*` or `**:name` takes can be empty (a `:name*` can match no segment instead).\n- **Wildcards and constraints can be empty**: a `*`, a `**`, or a regex constraint that can match empty (`:id(\\\\d*)`) takes an empty segment.\n\nSee [the examples](./docs/reference.md#trailing-slashes-and-empty-segments) side by side.\n\n### Path normalization\n\n`.` and `..` segments in input paths are **not** resolved by default. If your input paths may contain them, enable `normalize`:\n\n```js\nfindRoute(router, \"GET\", \"/foo/bar/../baz\", { normalize: true }); // matches \"/foo/baz\"\nfindAllRoutes(router, \"GET\", \"/foo/./bar\", { normalize: true }); // matches \"/foo/bar\"\n```\n\nOnly literal `.` and `..` segments are resolved, not percent-encoded ones (see [path normalization](./docs/reference.md#path-normalization)). The [compiler](#compiler) accepts the same option: `compileRouter(router, { normalize: true })`.\n\n### Skipping params\n\nIf you only need the route data, pass `{ params: false }` to skip building the params object:\n\n```js\nfindRoute(router, \"GET\", \"/docs/guide\", { params: false });\n// { data: { page: \"docs\" } }\n```\n\n### Result ordering\n\n`findAllRoutes` returns matches from the **least to the most specific**, and `findRoute` returns the most specific one. This order is part of the public API: you can rely on it, for example to merge all matched route rules so that the most specific one wins.\n\n```js\nconst router = createRouter();\naddRoute(router, \"GET\", \"/**\", { name: \"catch-all\" });\naddRoute(router, \"GET\", \"/api/**\", { name: \"api\" });\naddRoute(router, \"GET\", \"/api/:v/users/:id\", { name: \"user\" });\n\nfindAllRoutes(router, \"GET\", \"/api/v1/users/42\").map((m) => m.data.name);\n// [\"catch-all\", \"api\", \"user\"]\n```\n\nThe [compiled](#compiler) `matchAll` function returns exactly the same results in the same order.\n\nIn short:\n\n- Static segments beat params, and params beat wildcards.\n- On the same kind of segment, a constrained or required param beats an optional or unconstrained one.\n- In a segment mixing params and text, more literal text wins (`/f/:name.png` beats `/f/:name.:ext`).\n- Segments after a catch-all (`/**/_payload.json`) are ranked from the end of the path.\n- Registration order only breaks exact ties: `findRoute` returns the first-registered of the tied routes, and `findAllRoutes` lists them in registration order (so there the winner is not the last entry).\n\nEach route is listed once, even when several variants of an optional pattern match the path. It gets the params `findRoute` would give it, and its position is that variant's. Registering the same pattern twice adds two routes, and both are listed:\n\n```js\nconst router = createRouter();\naddRoute(router, \"GET\", \"/shop/:category?/:product?\", { name: \"shop\" });\n\n// Both `/shop/:category` and `/shop/:product` match\nfindAllRoutes(router, \"GET\", \"/shop/shoes\");\n// [{ data: { name: \"shop\" }, params: { category: \"shoes\" } }]\n```\n\nBecause optional syntax is ordered by the variant that matched, a broader optional pattern can come after a narrower one. See the [detailed ordering rules](./docs/reference.md#detailed-ordering-rules) for the full rules and their carve-outs.\n\n### Removing routes\n\n`removeRoute(router, method, pattern)` removes everything that the matching `addRoute` call added, including all variants of an optional pattern and duplicate registrations. Other routes are left alone, even ones that share a tree node:\n\n```js\naddRoute(router, \"GET\", \"/path/:id\", { a: true });\naddRoute(router, \"GET\", \"/path/:name\", { b: true });\n\nremoveRoute(router, \"GET\", \"/path/:name\"); // \"/path/:id\" is still registered\n```\n\nPass the pattern as you registered it: `/path/*` doesn't remove `/path/:name` (see [removing routes](./docs/reference.md#removing-routes)).\n\n## Compiler\n\nFor the fastest lookups, compile a router into a single function. The compiled function returns the same results as `findRoute` (or `findAllRoutes` with `matchAll: true`).\n\n- **`compileRouter`** compiles at runtime (JIT) with `new Function()`.\n- **`compileRouterToString`** generates code ahead of time (AOT), for example into a build output. It needs no `eval` and no rou3 at runtime.\n\nBoth are imported from `rou3/compiler`.\n\n<!-- automd:jsdocs src=\"./src/compiler.ts\" -->\n\n### `compileRouter(router, opts?)`\n\nCompile the router into one fast matching function, at runtime (JIT).\n\n**IMPORTANT:** `compileRouter` uses `new Function()`, which a CSP without `unsafe-eval` blocks. Use `compileRouterToString` at build time there.\n\nThe compiled function is a **snapshot**: routes added or removed afterwards aren't seen, so compile again after changing the router. Route data is kept by reference. It returns what `findRoute` returns (with `matchAll: true`, what `findAllRoutes` returns), except that `params` is a plain object instead of a null-prototype one.\n\n**Example:**\n\n```ts\nimport { createRouter, addRoute } from \"rou3\";\nimport { compileRouter } from \"rou3/compiler\";\nconst router = createRouter();\n// [add some routes]\nconst findRoute = compileRouter(router);\nconst matchAll = compileRouter(router, { matchAll: true });\nfindRoute(\"GET\", \"/path/foo/bar\");\n```\n\n### `compileRouterToString(router, opts?, legacyOpts?)`\n\nCompile the router into JavaScript code, ahead of time (for example into a build output).\n\nThe output is a self-contained expression (or a `const <functionName>=…;` statement): no imports, no rou3 at runtime, and no `eval` / `new Function()`, so it runs under a strict CSP. It needs ES2018 (named capture groups, object spread). Like `compileRouter`, it is a **snapshot** of the router.\n\n**IMPORTANT:** The generated code is **not** stable across rou3 versions: generate it at build time with the installed rou3, and don't commit, patch or parse it.\n\n**IMPORTANT:** Route data is emitted with `JSON.stringify` (`toJSON()` applies at every depth). Data containing a function, symbol or bigint throws: pass `opts.serialize` to emit each route's data as your own JavaScript expression instead.\n\n**Example:**\n\n```ts\nimport { createRouter, addRoute } from \"rou3\";\nimport { compileRouterToString } from \"rou3/compiler\";\nconst router = createRouter();\n// [add some routes with serializable data]\nconst compilerCode = compileRouterToString(router, { functionName: \"findRoute\" });\n// \"const findRoute=(m, p) => {}\"\n// Route data as code (e.g. handler imports)\ncompileRouterToString(router, { serialize: (data) => `{handler:${data.importName}}` });\n```\n\n<!--/automd -->\n\n## Pattern utilities\n\n`findRoute` and `findAllRoutes` match a **path** against patterns. The utilities below compare **patterns against patterns**, for example to check whether two route rules can apply to the same URL. They are tree-shaken away when you don't import them.\n\n### Pattern overlap\n\n```js\nimport { createRouter, addRoute, routesOverlap, compareRoutes, findOverlappingRoutes } from \"rou3\";\n\n// Can the two patterns match a common path?\nroutesOverlap(\"/**\", \"/protected/feed/**\"); // true\nroutesOverlap(\"/a/**\", \"/b/**\"); // false\n\n// How do the sets of paths they match relate?\ncompareRoutes(\"/api/**\", \"/api/admin/**\"); // \"superset\"\ncompareRoutes(\"/api/admin/**\", \"/api/**\"); // \"subset\"\ncompareRoutes(\"/a/:x\", \"/a/:y\"); // \"equal\" (param names don't matter)\ncompareRoutes(\"/a/*/c\", \"/a/b/*\"); // \"partial\"\ncompareRoutes(\"/a/**\", \"/b/**\"); // \"disjoint\"\n\n// Which registered routes can match a path that the pattern matches?\nconst router = createRouter();\naddRoute(router, \"GET\", \"/**\", { isr: true });\naddRoute(router, \"GET\", \"/protected/**\", { basicAuth: true });\naddRoute(router, \"GET\", \"/protected/feed/**\", { isr: 60 });\n\nfindOverlappingRoutes(router, \"GET\", \"/protected/feed/**\");\n// [\n//   { data: { isr: true } },       // /**\n//   { data: { basicAuth: true } }, // /protected/**\n//   { data: { isr: 60 } },         // /protected/feed/**\n// ]\n```\n\n- **`routesOverlap(a, b)`** returns `true` if at least one path is matched by both patterns.\n- **`compareRoutes(a, b)`** reads as \"`a` is … of `b`\":\n  - `\"equal\"`: both match the same paths.\n  - `\"superset\"`: `a` matches every path `b` matches, and more.\n  - `\"subset\"`: `b` matches every path `a` matches, and more.\n  - `\"disjoint\"`: no path matches both.\n  - `\"partial\"`: none of the above could be proven. The patterns may share some paths.\n- **`findOverlappingRoutes(router, method, pattern)`** works like `findAllRoutes`, but takes a pattern instead of a path: it returns every registered route that can match a path the pattern matches. The order and the method handling are the same as in `findAllRoutes`. Matches only have `data`, since there is no single path to read params from. A route registered with optional syntax is reported once.\n\nThese utilities understand the full pattern syntax (groups, modifiers, escapes) using the same rules as the router, so their answers agree with `findRoute`. Answers are safe, not always exact: a containment or disjointness claim is proven, and anything that can't be decided (such as two different regex constraints) comes back as `\"partial\"`. See [precision and limits](./docs/reference.md#pattern-overlap-precision-and-limits).\n\n### Route node keys\n\nDifferent patterns can end on the **same node** of the route tree: `/users/:id` and `/users/:name` both mean \"any single segment under `/users`\", and `/users/*`, `/users/**` and `/users/**:rest` are catch-alls under `/users`. `routeNodeKeys(pattern)` returns the node(s) a pattern lands on, naming a param segment `:_0`, `:_1`, … and a catch-all `**`:\n\n```js\nimport { routeNodeKeys } from \"rou3\";\n\nrouteNodeKeys(\"/users/:id\"); // [\"/users/:_0\"]\nrouteNodeKeys(\"/users/:name\"); // [\"/users/:_0\"] (same node as /users/:id)\nrouteNodeKeys(\"/users/*\"); // [\"/users/**\"] (same node as /users/**)\nrouteNodeKeys(\"/**:path/og.png\"); // [\"/**/og.png\"]\nrouteNodeKeys(\"/a/:x?\"); // [\"/a\", \"/a/:_0\"] (optional syntax lands on two nodes)\n```\n\nRoutes on the same node compete: for a given path, `findRoute` returns at most one of them. If you keep your own per-route metadata (route rules, middleware, auth) in a map keyed by pattern text, `/users/*` and `/users/**:rest` look unrelated. Key the map by `routeNodeKeys` instead, to merge metadata per node or warn when one route shadows another.\n\n> `routeNodeKeys(a)` and `routeNodeKeys(b)` share a key **if and only if** `a` and `b` share a node.\n\n- The result is a deduplicated array, since optional syntax registers on several nodes (`/x{/a}?{/b}?` registers on 4).\n- Each key is itself a valid pattern for its node: `routeNodeKeys(key)` is `[key]`.\n- Invalid patterns throw exactly like `addRoute`.\n\n> [!IMPORTANT]\n> Sharing a node does **not** mean matching the same paths. Keys drop regex constraints and widen `**:name` and `*` to `**`, so `/u/:id(\\d+)` and `/u/:slug([a-z]+)` share the key `/u/:_0` but never match the same path. To compare which paths two patterns match, use [`compareRoutes`](#pattern-overlap).\n\n### Regular expressions\n\n`routeToRegExp(route)` converts a pattern into an anchored `RegExp` with named groups for the params:\n\n```js\nimport { routeToRegExp } from \"rou3\";\n\nconst re = routeToRegExp(\"/users/:id(\\\\d+)\");\n// /^\\/users\\/(?<id>\\d+)\\/?$/\n\n\"/users/123\".match(re).groups; // { id: \"123\" }\n```\n\nThe regex matches **exactly the paths `findRoute` matches** on a router that only holds that route, including the router's tolerances (one optional trailing slash, empty segments, an optional trailing `*`, segments after a catch-all matched from the end). That makes it safe to use as a guard or scope check outside the router. Like `findRoute` without `normalize`, it compares paths as-is.\n\nThe one exception is a regex constraint that can match `/`, such as `(.+)`: the router applies it to one segment, but in the regex it can span several, so `routeToRegExp(\"/foo/(.+)\")` also matches `/foo/a/b`. The regex then matches more paths than the router, never fewer, so a guard built on it still runs.\n\nThe output is **PCRE-compatible**, so its `.source` also works in `grep -P`, `rg -P`, PHP `preg_*` and Perl. Most routes also compile without look-behind, so they work in RE2-family engines (RE2, Go `regexp`, Rust `regex`). A few shapes of params sharing a segment can still backtrack on long failing paths; cap the path length where that matters (most servers already do).\n\n`regExpToRoute(regexp)` goes the other way. It accepts a `RegExp` or its source string:\n\n```js\nimport { regExpToRoute } from \"rou3\";\n\nregExpToRoute(/^\\/users\\/(?<id>\\d+)\\/?$/); // \"/users/:id(\\\\d+)\"\nregExpToRoute(/^\\/path\\/(?<param>[^/]+)\\/?$/); // \"/path/:param\"\nregExpToRoute(\"^\\\\/files\\\\/(?<_0>[\\\\s\\\\S]*)\\\\.png\\\\/?$\"); // \"/files/*.png\"\n```\n\nIt understands the regexes `routeToRegExp` emits, and every one of them round-trips exactly: `routeToRegExp(regExpToRoute(re)).source === re.source`. It also reads the looser regexes older rou3 versions emitted. Anything else throws a `rou3:` error instead of returning a wrong pattern.\n\nThe [reference](./docs/reference.md#regular-expressions) has what the regex doesn't model, backtracking, the regex for each kind of route, engine support and the forms `regExpToRoute` accepts.\n\n## TypeScript\n\nRoute data is typed through the router, and `InferRouteParams` gives you the params of a pattern:\n\n```ts\nimport { createRouter, addRoute, findRoute, type InferRouteParams } from \"rou3\";\n\nconst router = createRouter<{ page: string }>();\naddRoute(router, \"GET\", \"/users/:id\", { page: \"user\" });\n\nfindRoute(router, \"GET\", \"/users/42\")?.data.page; // string\n\ntype Params = InferRouteParams<\"/users/:id/:tab?\">;\n// { id: string; tab: string | undefined }\n```\n\n## License\n\nPublished under the [MIT](https://github.com/h3js/rou3/blob/main/LICENSE) license.\n","readmeFilename":"README.md"}