{"_id":"@microsoft/webui-router","_rev":"34-588164a513e2075153ae0bdd1da5e70f","name":"@microsoft/webui-router","dist-tags":{"latest":"0.0.30"},"versions":{"0.0.1":{"name":"@microsoft/webui-router","version":"0.0.1","license":"MIT","_id":"@microsoft/webui-router@0.0.1","maintainers":[{"name":"microsoft1es","email":"npmjs@microsoft.com"},{"name":"microsoft-oss-releases","email":"microsoft-oss-publishing@microsoft.com"}],"dist":{"shasum":"c0ece3d5e5763853cf92a9867a64b9c01926e8c0","tarball":"https://registry.npmjs.org/@microsoft/webui-router/-/webui-router-0.0.1.tgz","fileCount":8,"integrity":"sha512-7eqvQ/KMcglZ3vBMy5re3sLkWFv4s0qMwCGNMvRBgayBjc+U7rR2Up5f/AfrbCKtyWoPjtY+WSoj9HgJkhwALg==","signatures":[{"sig":"MEUCIQDmXCT6r/FYumsBZwCEfRQ4BJT7ndhawtE1tAvlj5bsuwIgKsVzlBPe/SL6vpXee0eAPrZL+xNoIhRRZ2m2LtB4bgE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34660},"type":"module","_from":"file:M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App2\\temp\\1929fc8c-ad96-45d0-a191-963595166a20\\microsoft-webui-router-0.0.1.tgz","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}}},"scripts":{"test":"esbuild test/navigation-path.test.ts --bundle --outdir=test/dist --format=esm --platform=node && node --test test/dist/navigation-path.test.js","build":"esbuild src/index.ts --bundle --outfile=dist/index.js --format=esm --platform=browser && tsc --emitDeclarationOnly","typecheck":"tsc --noEmit"},"_npmUser":{"name":"microsoft1es","email":"npmjs@microsoft.com"},"_resolved":"M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App2\\temp\\1929fc8c-ad96-45d0-a191-963595166a20\\microsoft-webui-router-0.0.1.tgz","_integrity":"sha512-7eqvQ/KMcglZ3vBMy5re3sLkWFv4s0qMwCGNMvRBgayBjc+U7rR2Up5f/AfrbCKtyWoPjtY+WSoj9HgJkhwALg==","description":"Lightweight client-side router for WebUI apps. Intercepts navigation, matches routes locally or via server route-data, and hydrates components.","directories":{},"_nodeVersion":"18.5.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.27.3","typescript":"^5.9.3","urlpattern-polyfill":"^10.1.0","@types/dom-navigation":"^1.0.7","@types/dom-view-transitions":"^1.0.6"},"_npmOperationalInternal":{"tmp":"tmp/webui-router_0.0.1_1774476408059_0.7734864527678817","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@microsoft/webui-router","version":"0.0.2","license":"MIT","_id":"@microsoft/webui-router@0.0.2","maintainers":[{"name":"microsoft1es","email":"npmjs@microsoft.com"},{"name":"microsoft-oss-releases","email":"microsoft-oss-publishing@microsoft.com"}],"dist":{"shasum":"f7dc6f030a4361ad9a6b70a542200e09a5878332","tarball":"https://registry.npmjs.org/@microsoft/webui-router/-/webui-router-0.0.2.tgz","fileCount":8,"integrity":"sha512-vwMOz7DwnkgZCnC8Fdytt5gB7iC/g7gE8F71mQiRBqce7jZ6E+TtRgqOo0IOGqbELnNOMUWZyn/yOrPz/7qUjQ==","signatures":[{"sig":"MEUCIGbKds1uqovyIHunoABq4liIehJ3sj5TBR6QZ6FLKvLzAiEA8czUDBE6woxG1tGen25blk0z/yqt/mBf2SN0bQCnamk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34660},"type":"module","_from":"file:M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App2\\temp\\71a46b55-a6f1-4b28-b91c-431cf76758ba\\microsoft-webui-router-0.0.2.tgz","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}}},"scripts":{"test":"esbuild test/navigation-path.test.ts --bundle --outdir=test/dist --format=esm --platform=node && node --test test/dist/navigation-path.test.js","build":"esbuild src/index.ts --bundle --outfile=dist/index.js --format=esm --platform=browser && tsc --emitDeclarationOnly","typecheck":"tsc --noEmit"},"_npmUser":{"name":"microsoft1es","email":"npmjs@microsoft.com"},"_resolved":"M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App2\\temp\\71a46b55-a6f1-4b28-b91c-431cf76758ba\\microsoft-webui-router-0.0.2.tgz","_integrity":"sha512-vwMOz7DwnkgZCnC8Fdytt5gB7iC/g7gE8F71mQiRBqce7jZ6E+TtRgqOo0IOGqbELnNOMUWZyn/yOrPz/7qUjQ==","description":"Lightweight client-side router for WebUI apps. Intercepts navigation, matches routes locally or via server route-data, and hydrates components.","directories":{},"_nodeVersion":"18.5.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.27.3","typescript":"^5.9.3","urlpattern-polyfill":"^10.1.0","@types/dom-navigation":"^1.0.7","@types/dom-view-transitions":"^1.0.6"},"_npmOperationalInternal":{"tmp":"tmp/webui-router_0.0.2_1774550953984_0.43517960563959446","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@microsoft/webui-router","version":"0.0.4","license":"MIT","_id":"@microsoft/webui-router@0.0.4","maintainers":[{"name":"microsoft1es","email":"npmjs@microsoft.com"},{"name":"microsoft-oss-releases","email":"microsoft-oss-publishing@microsoft.com"}],"dist":{"shasum":"4b1d7d8c2ddcf087daa622064c99447641809302","tarball":"https://registry.npmjs.org/@microsoft/webui-router/-/webui-router-0.0.4.tgz","fileCount":13,"integrity":"sha512-hbaZAJRONFXGNeeq32LD2s8kM6MIUPQQQDnh9bvqRYAnpQg4pA8KWrvaF2ODuYgq48nEWbRCF+HV45XgcD00Kg==","signatures":[{"sig":"MEUCICUPF8jATEL4QVCcL/JfWqfExHc8m2CdtSkKcYiatAI9AiEAmHOe89LBG3SRpILiqEGMTAPEktqLTd2v/VN0Wke0Bxc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40467},"type":"module","_from":"file:M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App2\\temp\\3ca3479a-2742-4623-a0b8-c4df96782907\\microsoft-webui-router-0.0.4.tgz","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}}},"scripts":{"test":"esbuild test/navigation-path.test.ts test/inventory.test.ts --bundle --outdir=test/dist --format=esm --platform=node && esbuild test/browser-shim.ts test/router.test.ts --bundle --outdir=test/dist --format=esm --platform=node && node --test test/dist/navigation-path.test.js test/dist/inventory.test.js test/dist/router.test.js","build":"esbuild src/*.ts --outdir=dist --format=esm --platform=browser && tsc --emitDeclarationOnly","typecheck":"tsc --noEmit"},"_npmUser":{"name":"microsoft1es","email":"npmjs@microsoft.com"},"_resolved":"M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App2\\temp\\3ca3479a-2742-4623-a0b8-c4df96782907\\microsoft-webui-router-0.0.4.tgz","_integrity":"sha512-hbaZAJRONFXGNeeq32LD2s8kM6MIUPQQQDnh9bvqRYAnpQg4pA8KWrvaF2ODuYgq48nEWbRCF+HV45XgcD00Kg==","description":"Lightweight client-side router for WebUI apps. Intercepts navigation, matches routes locally or via server route-data, and hydrates components.","directories":{},"_nodeVersion":"18.5.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.27.3","typescript":"^5.9.3","urlpattern-polyfill":"^10.1.0","@types/dom-navigation":"^1.0.7","@types/dom-view-transitions":"^1.0.6"},"_npmOperationalInternal":{"tmp":"tmp/webui-router_0.0.4_1775713075188_0.19346625365072723","host":"s3://npm-registry-packages-npm-production"}},"0.0.5":{"name":"@microsoft/webui-router","version":"0.0.5","license":"MIT","_id":"@microsoft/webui-router@0.0.5","maintainers":[{"name":"microsoft1es","email":"npmjs@microsoft.com"},{"name":"microsoft-oss-releases","email":"microsoft-oss-publishing@microsoft.com"}],"dist":{"shasum":"cad808348dba2e52ed4ca38fc99de52a3a3b91b6","tarball":"https://registry.npmjs.org/@microsoft/webui-router/-/webui-router-0.0.5.tgz","fileCount":13,"integrity":"sha512-29zJjo+QmH8hwmXxhr82ZrJ8rI5FKh+xwBXg4plcAMTjf6c4gEoVF1FPChtmxLIgig2BFjjTB9NZ0+Ls0OGYCg==","signatures":[{"sig":"MEUCIGBYMWV2Jzga+iol4c6/TP1TYTwqOkZUPzCFui6yBL1jAiEA87X7PakfmGaft80s1eR5hlbcsRbNBarZJ31CxUgu390=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40467},"type":"module","_from":"file:M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App2\\temp\\a25a5624-64da-4e3e-806a-8c59e2fc2aa0\\microsoft-webui-router-0.0.5.tgz","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}}},"scripts":{"test":"esbuild test/navigation-path.test.ts test/inventory.test.ts --bundle --outdir=test/dist --format=esm --platform=node && esbuild test/browser-shim.ts test/router.test.ts --bundle --outdir=test/dist --format=esm --platform=node && node --test test/dist/navigation-path.test.js test/dist/inventory.test.js test/dist/router.test.js","build":"esbuild src/*.ts --outdir=dist --format=esm --platform=browser && tsc --emitDeclarationOnly","typecheck":"tsc --noEmit"},"_npmUser":{"name":"microsoft1es","email":"npmjs@microsoft.com"},"_resolved":"M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App2\\temp\\a25a5624-64da-4e3e-806a-8c59e2fc2aa0\\microsoft-webui-router-0.0.5.tgz","_integrity":"sha512-29zJjo+QmH8hwmXxhr82ZrJ8rI5FKh+xwBXg4plcAMTjf6c4gEoVF1FPChtmxLIgig2BFjjTB9NZ0+Ls0OGYCg==","description":"Lightweight client-side router for WebUI apps. Intercepts navigation, matches routes locally or via server route-data, and hydrates components.","directories":{},"_nodeVersion":"18.5.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.27.3","typescript":"^5.9.3","urlpattern-polyfill":"^10.1.0","@types/dom-navigation":"^1.0.7","@types/dom-view-transitions":"^1.0.6"},"_npmOperationalInternal":{"tmp":"tmp/webui-router_0.0.5_1775751299067_0.8707376012186685","host":"s3://npm-registry-packages-npm-production"}},"0.0.6":{"name":"@microsoft/webui-router","version":"0.0.6","license":"MIT","_id":"@microsoft/webui-router@0.0.6","maintainers":[{"name":"microsoft1es","email":"npmjs@microsoft.com"},{"name":"microsoft-oss-releases","email":"microsoft-oss-publishing@microsoft.com"}],"dist":{"shasum":"f784c2a228b88847174052a91de87b6d10777362","tarball":"https://registry.npmjs.org/@microsoft/webui-router/-/webui-router-0.0.6.tgz","fileCount":13,"integrity":"sha512-Yxh/ZUS8w9/yhkGjvM1s+hLIF59dxLw+Yf4Wa3tKUorPfXyBn+SQNwoDGDR6byGYAp1FVlolQFYJfwSYtICCbA==","signatures":[{"sig":"MEUCIEcZfY0lzR1uEnONWxAKD6GIjgW2Guruy7TCc4GE2y6pAiEA5G8C1Bq1k2Wo1W9ouzsnKynql7pNJ4nnufShRX/hvqA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40546},"type":"module","_from":"file:M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App2\\temp\\8533248b-0ddc-4de5-94d9-cf3efc6ecb71\\microsoft-webui-router-0.0.6.tgz","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}}},"scripts":{"test":"esbuild test/navigation-path.test.ts test/inventory.test.ts --bundle --outdir=test/dist --format=esm --platform=node && esbuild test/browser-shim.ts test/router.test.ts --bundle --outdir=test/dist --format=esm --platform=node && node --test test/dist/navigation-path.test.js test/dist/inventory.test.js test/dist/router.test.js","build":"esbuild src/*.ts --outdir=dist --format=esm --platform=browser && tsc --emitDeclarationOnly","typecheck":"tsc --noEmit"},"_npmUser":{"name":"microsoft1es","email":"npmjs@microsoft.com"},"_resolved":"M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App2\\temp\\8533248b-0ddc-4de5-94d9-cf3efc6ecb71\\microsoft-webui-router-0.0.6.tgz","_integrity":"sha512-Yxh/ZUS8w9/yhkGjvM1s+hLIF59dxLw+Yf4Wa3tKUorPfXyBn+SQNwoDGDR6byGYAp1FVlolQFYJfwSYtICCbA==","description":"Lightweight client-side router for WebUI apps. Intercepts navigation, matches routes locally or via server route-data, and hydrates components.","directories":{},"_nodeVersion":"18.5.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.27.3","typescript":"^5.9.3","urlpattern-polyfill":"^10.1.0","@types/dom-navigation":"^1.0.7","@types/dom-view-transitions":"^1.0.6"},"_npmOperationalInternal":{"tmp":"tmp/webui-router_0.0.6_1775777863290_0.3749244480741716","host":"s3://npm-registry-packages-npm-production"}},"0.0.7":{"name":"@microsoft/webui-router","version":"0.0.7","license":"MIT","_id":"@microsoft/webui-router@0.0.7","maintainers":[{"name":"microsoft1es","email":"npmjs@microsoft.com"},{"name":"microsoft-oss-releases","email":"microsoft-oss-publishing@microsoft.com"}],"dist":{"shasum":"96775a9aca6055161982b541cdc8ff567ff30994","tarball":"https://registry.npmjs.org/@microsoft/webui-router/-/webui-router-0.0.7.tgz","fileCount":13,"integrity":"sha512-Fbw17btEDgPhtcAj+S5IfKiiatpuMU8e5JTXPm+n0w9ad/VCR/gAy2N2C4owD+mjKgftUk3mfADZuF2sygkCeQ==","signatures":[{"sig":"MEUCIQDpRSkjYzZGFyAgkyO3bUu2/Cl/kWRSxZHSn3eHWLJpmwIgT1Oai2M3bcR9WOqXHK7LlB9M9Q9CCN8en1H6HrfcbNM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":51302},"type":"module","_from":"file:M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App2\\temp\\1beee874-cdce-442a-9cc7-46573a1d9b78\\microsoft-webui-router-0.0.7.tgz","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}}},"scripts":{"test":"tsc -p tsconfig.unit-test.json && node --test dist/**/*.test.js","build":"tsc","typecheck":"tsc --noEmit"},"_npmUser":{"name":"microsoft1es","email":"npmjs@microsoft.com"},"_resolved":"M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App2\\temp\\1beee874-cdce-442a-9cc7-46573a1d9b78\\microsoft-webui-router-0.0.7.tgz","_integrity":"sha512-Fbw17btEDgPhtcAj+S5IfKiiatpuMU8e5JTXPm+n0w9ad/VCR/gAy2N2C4owD+mjKgftUk3mfADZuF2sygkCeQ==","description":"Lightweight client-side router for WebUI apps. Intercepts navigation, matches routes locally or via server route-data, and hydrates components.","directories":{},"_nodeVersion":"18.5.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^25.3.5","urlpattern-polyfill":"^10.1.0","@types/dom-navigation":"^1.0.7","@types/dom-view-transitions":"^1.0.6"},"_npmOperationalInternal":{"tmp":"tmp/webui-router_0.0.7_1775868295839_0.3043230479533947","host":"s3://npm-registry-packages-npm-production"}},"0.0.8":{"name":"@microsoft/webui-router","version":"0.0.8","license":"MIT","_id":"@microsoft/webui-router@0.0.8","maintainers":[{"name":"microsoft1es","email":"npmjs@microsoft.com"},{"name":"microsoft-oss-releases","email":"microsoft-oss-publishing@microsoft.com"}],"dist":{"shasum":"a79cd83560381c235a60180d3f6294ac222da9f1","tarball":"https://registry.npmjs.org/@microsoft/webui-router/-/webui-router-0.0.8.tgz","fileCount":11,"integrity":"sha512-eO6Y44tnZRiox/P2Gr+Lvk0xNis2qaAqpYGclGcq67lb3xDRiNdXVJgreIoIPOLWmYXiddKl0DPNNR8QDqUnuQ==","signatures":[{"sig":"MEYCIQC89X4Z2/9VOlSkljD72gejV58JR3U4SGaqxGQubrZHvgIhAJ8jS8Jac/dUtl1MU1BTbNIwTw53ZoYYp9aAkpi05lb+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":48195},"type":"module","_from":"file:M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App2\\temp\\b463c7da-6922-4426-b569-0ffff50ba54d\\microsoft-webui-router-0.0.8.tgz","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}}},"scripts":{"test":"tsc -p tsconfig.unit-test.json && node --test dist/**/*.test.js && pnpm build:e2e && playwright test","build":"tsc","test:e2e":"playwright test","build:e2e":"esbuild tests/fixtures/router-app/src/index.ts --bundle --outfile=tests/fixtures/router-app/dist/index.js --format=esm --sourcemap --tsconfig=tsconfig.e2e.json","typecheck":"tsc --noEmit","start:server":"cargo run -p microsoft-webui-cli -- serve ./tests/fixtures/router-app/src --plugin=webui --servedir ./tests/fixtures/router-app/dist --state ./tests/fixtures/router-app/data/state.json --port 39102","test:update-snapshots":"playwright test --update-snapshots"},"_npmUser":{"name":"microsoft1es","email":"npmjs@microsoft.com"},"_resolved":"M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App2\\temp\\b463c7da-6922-4426-b569-0ffff50ba54d\\microsoft-webui-router-0.0.8.tgz","_integrity":"sha512-eO6Y44tnZRiox/P2Gr+Lvk0xNis2qaAqpYGclGcq67lb3xDRiNdXVJgreIoIPOLWmYXiddKl0DPNNR8QDqUnuQ==","description":"Lightweight client-side router for WebUI apps. Intercepts navigation, matches routes locally or via server route-data, and hydrates components.","directories":{},"_nodeVersion":"18.5.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.27.3","typescript":"^5.9.3","@types/node":"^25.3.5","@playwright/test":"^1.58.2","urlpattern-polyfill":"^10.1.0","@types/dom-navigation":"^1.0.7","@microsoft/webui-router":"0.0.8","@microsoft/webui-framework":"0.0.8","@types/dom-view-transitions":"^1.0.6"},"_npmOperationalInternal":{"tmp":"tmp/webui-router_0.0.8_1776142989083_0.005928866367494567","host":"s3://npm-registry-packages-npm-production"}},"0.0.9":{"name":"@microsoft/webui-router","version":"0.0.9","license":"MIT","_id":"@microsoft/webui-router@0.0.9","maintainers":[{"name":"microsoft1es","email":"npmjs@microsoft.com"},{"name":"microsoft-oss-releases","email":"microsoft-oss-publishing@microsoft.com"}],"dist":{"shasum":"944dcfcbc58a5b3e756932d2b87db1adb3f03752","tarball":"https://registry.npmjs.org/@microsoft/webui-router/-/webui-router-0.0.9.tgz","fileCount":11,"integrity":"sha512-RM8L7pCPtFbJu+9x3gvTNVnB7LnFTboP/oqUI/Ew+5G0BB/3jIGwic8jiV5d3BpnqX4BvfQWeQ/54y4EOgAqAg==","signatures":[{"sig":"MEQCIBzckGnYXMCR08sp8smxVyrjKkjdhWFwV0RCVUe8t6PRAiBgj4bpUoUT9e6k2SCHKOBMGiqUSdEZ3xDR29XERR+KIA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61031},"type":"module","_from":"file:M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App2\\temp\\9be65ab6-25ec-4231-92ce-5c0ec59cd573\\microsoft-webui-router-0.0.9.tgz","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}}},"scripts":{"test":"tsc -p tsconfig.unit-test.json && node --test dist/**/*.test.js && pnpm build:e2e && playwright test","build":"tsc","test:e2e":"playwright test","build:e2e":"esbuild tests/fixtures/router-app/src/index.ts --bundle --outfile=tests/fixtures/router-app/dist/index.js --format=esm --sourcemap --tsconfig=tsconfig.e2e.json","typecheck":"tsc --noEmit","start:server":"cargo run -p microsoft-webui-cli -- serve ./tests/fixtures/router-app/src --plugin=webui --servedir ./tests/fixtures/router-app/dist --state ./tests/fixtures/router-app/data/state.json --port 39102","test:update-snapshots":"playwright test --update-snapshots"},"_npmUser":{"name":"microsoft1es","email":"npmjs@microsoft.com"},"_resolved":"M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App2\\temp\\9be65ab6-25ec-4231-92ce-5c0ec59cd573\\microsoft-webui-router-0.0.9.tgz","_integrity":"sha512-RM8L7pCPtFbJu+9x3gvTNVnB7LnFTboP/oqUI/Ew+5G0BB/3jIGwic8jiV5d3BpnqX4BvfQWeQ/54y4EOgAqAg==","description":"Lightweight client-side router for WebUI apps. Intercepts navigation, matches routes locally or via server route-data, and hydrates components.","directories":{},"_nodeVersion":"18.5.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.27.3","typescript":"^5.9.3","@types/node":"^25.3.5","@playwright/test":"^1.58.2","urlpattern-polyfill":"^10.1.0","@types/dom-navigation":"^1.0.7","@microsoft/webui-router":"0.0.9","@microsoft/webui-framework":"0.0.9","@types/dom-view-transitions":"^1.0.6"},"_npmOperationalInternal":{"tmp":"tmp/webui-router_0.0.9_1776377634996_0.7962607946426623","host":"s3://npm-registry-packages-npm-production"}},"0.0.10":{"name":"@microsoft/webui-router","version":"0.0.10","license":"MIT","_id":"@microsoft/webui-router@0.0.10","maintainers":[{"name":"microsoft1es","email":"npmjs@microsoft.com"},{"name":"microsoft-oss-releases","email":"microsoft-oss-publishing@microsoft.com"}],"dist":{"shasum":"811e3c04991a742c395285138ad57bf0e1d492af","tarball":"https://registry.npmjs.org/@microsoft/webui-router/-/webui-router-0.0.10.tgz","fileCount":11,"integrity":"sha512-PMKKFORnrDCJMEpgDbHZj57TTr0dnmn2PnRJ51blzV1JIweWgag6cE23VZkK43l5nYGA3xJQcyCOrV0SUYQOKg==","signatures":[{"sig":"MEYCIQCuikBFbxfMIvbvgeSeTH6Mlf5F6CjadgcV4WJ1IhhxvwIhAKgN0a0wAucpczUmDNlMpm6Ak76Ad8xUgtdGlorag6aO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61541},"type":"module","_from":"file:M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App2\\temp\\04381528-0404-4604-b60d-580ba0ac9602\\microsoft-webui-router-0.0.10.tgz","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}}},"scripts":{"test":"tsc -p tsconfig.unit-test.json && node --test dist/**/*.test.js && pnpm build:e2e && playwright test","build":"tsc","test:e2e":"playwright test","build:e2e":"esbuild tests/fixtures/router-app/src/index.ts --bundle --outfile=tests/fixtures/router-app/dist/index.js --format=esm --sourcemap --tsconfig=tsconfig.e2e.json","typecheck":"tsc --noEmit","start:server":"cargo run -p microsoft-webui-cli -- serve ./tests/fixtures/router-app/src --plugin=webui --servedir ./tests/fixtures/router-app/dist --state ./tests/fixtures/router-app/data/state.json --port 39102","test:update-snapshots":"playwright test --update-snapshots"},"_npmUser":{"name":"microsoft1es","email":"npmjs@microsoft.com"},"_resolved":"M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App2\\temp\\04381528-0404-4604-b60d-580ba0ac9602\\microsoft-webui-router-0.0.10.tgz","_integrity":"sha512-PMKKFORnrDCJMEpgDbHZj57TTr0dnmn2PnRJ51blzV1JIweWgag6cE23VZkK43l5nYGA3xJQcyCOrV0SUYQOKg==","description":"Lightweight client-side router for WebUI apps. Intercepts navigation, matches routes locally or via server route-data, and hydrates components.","directories":{},"_nodeVersion":"18.5.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.27.3","typescript":"^5.9.3","@types/node":"^25.3.5","@playwright/test":"^1.58.2","urlpattern-polyfill":"^10.1.0","@types/dom-navigation":"^1.0.7","@microsoft/webui-router":"0.0.10","@microsoft/webui-framework":"0.0.10","@types/dom-view-transitions":"^1.0.6"},"_npmOperationalInternal":{"tmp":"tmp/webui-router_0.0.10_1776460061830_0.917950594854597","host":"s3://npm-registry-packages-npm-production"}},"0.0.11":{"name":"@microsoft/webui-router","version":"0.0.11","license":"MIT","_id":"@microsoft/webui-router@0.0.11","maintainers":[{"name":"microsoft1es","email":"npmjs@microsoft.com"},{"name":"microsoft-oss-releases","email":"microsoft-oss-publishing@microsoft.com"}],"dist":{"shasum":"b01e84a6af7570d30e0984a2626a41da9a7dafe4","tarball":"https://registry.npmjs.org/@microsoft/webui-router/-/webui-router-0.0.11.tgz","fileCount":29,"integrity":"sha512-INaeDEim/3KKihrMBidr49BuZ7EOxvmohMJdD761S8cwTOMwtBy+dNpGDAU5gFK+uVvxKl9YZqiJAF3rhskHfQ==","signatures":[{"sig":"MEYCIQDMpSMb6DyEd/gtLYCguaXlx0mnFMLvEOhqUYjl2OIdDQIhAK552KCmaZnOqB0gaG8H4xPydjGJuUosUOGC+01/lgd0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":131105},"type":"module","_from":"file:M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App2\\temp\\0168c1cc-26a7-46d7-93a4-6b64935d26c5\\microsoft-webui-router-0.0.11.tgz","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}}},"scripts":{"test":"tsc -p tsconfig.unit-test.json && node --test dist/**/*.test.js && pnpm build:e2e && playwright test","build":"tsc","test:e2e":"playwright test","build:e2e":"esbuild tests/fixtures/router-app/src/index.ts --bundle --outfile=tests/fixtures/router-app/dist/index.js --format=esm --sourcemap --tsconfig=tsconfig.e2e.json","typecheck":"tsc --noEmit","start:server":"cargo run -p microsoft-webui-cli -- serve ./tests/fixtures/router-app/src --plugin=webui --servedir ./tests/fixtures/router-app/dist --state ./tests/fixtures/router-app/data/state.json --port 39102","test:update-snapshots":"playwright test --update-snapshots"},"_npmUser":{"name":"microsoft1es","email":"npmjs@microsoft.com"},"_resolved":"M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App2\\temp\\0168c1cc-26a7-46d7-93a4-6b64935d26c5\\microsoft-webui-router-0.0.11.tgz","_integrity":"sha512-INaeDEim/3KKihrMBidr49BuZ7EOxvmohMJdD761S8cwTOMwtBy+dNpGDAU5gFK+uVvxKl9YZqiJAF3rhskHfQ==","description":"Lightweight client-side router for WebUI apps. Intercepts navigation, matches routes locally or via server route-data, and hydrates components.","directories":{},"_nodeVersion":"18.5.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.27.3","typescript":"^5.9.3","@types/node":"^25.3.5","@playwright/test":"^1.58.2","urlpattern-polyfill":"^10.1.0","@types/dom-navigation":"^1.0.7","@microsoft/webui-router":"0.0.11","@microsoft/webui-framework":"0.0.11","@types/dom-view-transitions":"^1.0.6"},"_npmOperationalInternal":{"tmp":"tmp/webui-router_0.0.11_1777414704636_0.9959190178976998","host":"s3://npm-registry-packages-npm-production"}},"0.0.12":{"name":"@microsoft/webui-router","version":"0.0.12","license":"MIT","_id":"@microsoft/webui-router@0.0.12","maintainers":[{"name":"microsoft1es","email":"npmjs@microsoft.com"},{"name":"microsoft-oss-releases","email":"microsoft-oss-publishing@microsoft.com"}],"dist":{"shasum":"a58a952879d1453529a746a3c037b9d6742a9b7f","tarball":"https://registry.npmjs.org/@microsoft/webui-router/-/webui-router-0.0.12.tgz","fileCount":29,"integrity":"sha512-wuCruLPgdpRa9hPvn4If4sQ+nVspSeBpd7kvfTJ75yJM9YZCyrcLoZSrUylrglWupXsMop+FfWfmDz+k08cKnQ==","signatures":[{"sig":"MEQCIHjBEbDjWJ1Gu0t0U3UGsTMVo/6E9IIU0KyecDqSZ8K5AiAQuRMgWMV+fDhwWzcvbooc6b2jgdHd1ZCc7BgivCuSmA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":132605},"type":"module","_from":"file:M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App2\\temp\\467aa16b-bc7d-4a76-a8bb-81459dc1b85f\\microsoft-webui-router-0.0.12.tgz","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}}},"scripts":{"test":"tsc -p tsconfig.unit-test.json && node --test dist/**/*.test.js && pnpm build:e2e && playwright test","build":"tsc","test:e2e":"playwright test","build:e2e":"esbuild tests/fixtures/router-app/src/index.ts --bundle --outfile=tests/fixtures/router-app/dist/index.js --format=esm --sourcemap --tsconfig=tsconfig.e2e.json","typecheck":"tsc --noEmit","start:server":"cargo run -p microsoft-webui-cli -- serve ./tests/fixtures/router-app/src --plugin=webui --servedir ./tests/fixtures/router-app/dist --state ./tests/fixtures/router-app/data/state.json --port 39102","test:update-snapshots":"playwright test --update-snapshots"},"_npmUser":{"name":"microsoft1es","email":"npmjs@microsoft.com"},"_resolved":"M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App2\\temp\\467aa16b-bc7d-4a76-a8bb-81459dc1b85f\\microsoft-webui-router-0.0.12.tgz","_integrity":"sha512-wuCruLPgdpRa9hPvn4If4sQ+nVspSeBpd7kvfTJ75yJM9YZCyrcLoZSrUylrglWupXsMop+FfWfmDz+k08cKnQ==","description":"Lightweight client-side router for WebUI apps. Intercepts navigation, matches routes locally or via server route-data, and hydrates components.","directories":{},"_nodeVersion":"18.5.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.27.3","typescript":"^5.9.3","@types/node":"^25.3.5","@playwright/test":"^1.58.2","urlpattern-polyfill":"^10.1.0","@types/dom-navigation":"^1.0.7","@microsoft/webui-router":"0.0.12","@microsoft/webui-framework":"0.0.12","@types/dom-view-transitions":"^1.0.6"},"_npmOperationalInternal":{"tmp":"tmp/webui-router_0.0.12_1777664843778_0.8253483724535704","host":"s3://npm-registry-packages-npm-production"}},"0.0.13":{"name":"@microsoft/webui-router","version":"0.0.13","license":"MIT","_id":"@microsoft/webui-router@0.0.13","maintainers":[{"name":"microsoft1es","email":"npmjs@microsoft.com"},{"name":"microsoft-oss-releases","email":"microsoft-oss-publishing@microsoft.com"}],"dist":{"shasum":"998e2ea8584f0d1878c521b4d87b05610e613995","tarball":"https://registry.npmjs.org/@microsoft/webui-router/-/webui-router-0.0.13.tgz","fileCount":29,"integrity":"sha512-0N4Cm8HoNkEeCoI3EXZ9HYUKw2lUASHe67TGo9lle8FOd34LJk45pxq3rPDd01HczE82/OGxvuzfAn1kObU4tg==","signatures":[{"sig":"MEUCIQCwLmBjtmXbfIOzQPdXv8yKDcDIgbr+yA5SY0i1yFpjggIgdgqygrqcjVuNDmyJd7OQQbg/lCxoFcbaAfIqdopoGjc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":132605},"type":"module","_from":"file:M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App1\\temp\\f7fa8be8-c517-4215-9d7d-a8831fd6e294\\microsoft-webui-router-0.0.13.tgz","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}}},"scripts":{"test":"tsc -p tsconfig.unit-test.json && node --test dist/**/*.test.js && pnpm build:e2e && playwright test","build":"tsc","test:e2e":"playwright test","build:e2e":"esbuild tests/fixtures/router-app/src/index.ts --bundle --outfile=tests/fixtures/router-app/dist/index.js --format=esm --sourcemap --tsconfig=tsconfig.e2e.json","typecheck":"tsc --noEmit","start:server":"cargo run -p microsoft-webui-cli -- serve ./tests/fixtures/router-app/src --plugin=webui --servedir ./tests/fixtures/router-app/dist --state ./tests/fixtures/router-app/data/state.json --port 39102","test:update-snapshots":"playwright test --update-snapshots"},"_npmUser":{"name":"microsoft1es","email":"npmjs@microsoft.com"},"_resolved":"M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App1\\temp\\f7fa8be8-c517-4215-9d7d-a8831fd6e294\\microsoft-webui-router-0.0.13.tgz","_integrity":"sha512-0N4Cm8HoNkEeCoI3EXZ9HYUKw2lUASHe67TGo9lle8FOd34LJk45pxq3rPDd01HczE82/OGxvuzfAn1kObU4tg==","description":"Lightweight client-side router for WebUI apps. Intercepts navigation, matches routes locally or via server route-data, and hydrates components.","directories":{},"_nodeVersion":"18.5.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.27.3","typescript":"^5.9.3","@types/node":"^25.3.5","@playwright/test":"^1.58.2","urlpattern-polyfill":"^10.1.0","@types/dom-navigation":"^1.0.7","@microsoft/webui-router":"0.0.13","@microsoft/webui-framework":"0.0.13","@types/dom-view-transitions":"^1.0.6"},"_npmOperationalInternal":{"tmp":"tmp/webui-router_0.0.13_1779843025338_0.2141462974573083","host":"s3://npm-registry-packages-npm-production"}},"0.0.14":{"name":"@microsoft/webui-router","version":"0.0.14","license":"MIT","_id":"@microsoft/webui-router@0.0.14","maintainers":[{"name":"microsoft1es","email":"npmjs@microsoft.com"},{"name":"microsoft-oss-releases","email":"microsoft-oss-publishing@microsoft.com"}],"dist":{"shasum":"3ea1138c3fd35d5197423a39e65f130e99170343","tarball":"https://registry.npmjs.org/@microsoft/webui-router/-/webui-router-0.0.14.tgz","fileCount":29,"integrity":"sha512-736gorpgdO2GQbvGvRw0l3s6FEhiQi58EQAwNS2nfYK/IKCroSNNeOIAtVswjCiPRjgETpl/1LM2JtiGcrPRgA==","signatures":[{"sig":"MEQCIFQE9sUrbjBhNSgOCwnM7sInoMUlIwbzmNakBUV+YCY8AiB+3UAcawUecOw5t8lxhQCU2rB844RCT7yOx1oz99tKnA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":132605},"type":"module","_from":"file:M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App1\\temp\\c955dcc0-102f-4608-b372-be849ac578b1\\microsoft-webui-router-0.0.14.tgz","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}}},"scripts":{"test":"tsc -p tsconfig.unit-test.json && node --test dist/**/*.test.js && pnpm build:e2e && playwright test","build":"tsc","test:e2e":"playwright test","build:e2e":"esbuild tests/fixtures/router-app/src/index.ts --bundle --outfile=tests/fixtures/router-app/dist/index.js --format=esm --sourcemap --tsconfig=tsconfig.e2e.json","typecheck":"tsc --noEmit","start:server":"cargo run -p microsoft-webui-cli -- serve ./tests/fixtures/router-app/src --plugin=webui --servedir ./tests/fixtures/router-app/dist --state ./tests/fixtures/router-app/data/state.json --port 39102","test:update-snapshots":"playwright test --update-snapshots"},"_npmUser":{"name":"microsoft1es","email":"npmjs@microsoft.com"},"_resolved":"M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App1\\temp\\c955dcc0-102f-4608-b372-be849ac578b1\\microsoft-webui-router-0.0.14.tgz","_integrity":"sha512-736gorpgdO2GQbvGvRw0l3s6FEhiQi58EQAwNS2nfYK/IKCroSNNeOIAtVswjCiPRjgETpl/1LM2JtiGcrPRgA==","description":"Lightweight client-side router for WebUI apps. Intercepts navigation, matches routes locally or via server route-data, and hydrates components.","directories":{},"_nodeVersion":"18.5.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.27.3","typescript":"^5.9.3","@types/node":"^25.3.5","@playwright/test":"^1.58.2","urlpattern-polyfill":"^10.1.0","@types/dom-navigation":"^1.0.7","@microsoft/webui-router":"0.0.14","@microsoft/webui-framework":"0.0.14","@types/dom-view-transitions":"^1.0.6"},"_npmOperationalInternal":{"tmp":"tmp/webui-router_0.0.14_1779921178485_0.8613445188480908","host":"s3://npm-registry-packages-npm-production"}},"0.0.15":{"name":"@microsoft/webui-router","version":"0.0.15","license":"MIT","_id":"@microsoft/webui-router@0.0.15","maintainers":[{"name":"microsoft1es","email":"npmjs@microsoft.com"},{"name":"microsoft-oss-releases","email":"microsoft-oss-publishing@microsoft.com"}],"dist":{"shasum":"7d8ea1b525362613d6272c092acf7631c5d28f04","tarball":"https://registry.npmjs.org/@microsoft/webui-router/-/webui-router-0.0.15.tgz","fileCount":29,"integrity":"sha512-ZEql+jTY8a2gbMXrNrHfbD8OgFYADsmRevfShUMRH2dmywkjBUaggJi0G+IwBjfTR0MEvB8XuQDUMmS1OsLCyg==","signatures":[{"sig":"MEYCIQCP9FgZdz7xgDGNpf3kFNYRoTRqVUhlsgoaQtuS0nrTwgIhAI67QyiNuYeI15X5SNtJFjQA9WHQA7o+TUNwJrO+vvLy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":134076},"type":"module","_from":"file:M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App2\\temp\\26514fcb-e5a2-4b68-86d3-962d5fc76eaa\\microsoft-webui-router-0.0.15.tgz","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}}},"scripts":{"test":"tsc -p tsconfig.unit-test.json && node --test dist/**/*.test.js && pnpm build:e2e && playwright test","build":"tsc","test:e2e":"playwright test","build:e2e":"esbuild tests/fixtures/router-app/src/index.ts --bundle --outfile=tests/fixtures/router-app/dist/index.js --format=esm --sourcemap --tsconfig=tsconfig.e2e.json","typecheck":"tsc --noEmit","start:server":"cargo run -p microsoft-webui-cli -- serve ./tests/fixtures/router-app/src --plugin=webui --servedir ./tests/fixtures/router-app/dist --state ./tests/fixtures/router-app/data/state.json --port 39102","test:update-snapshots":"playwright test --update-snapshots"},"_npmUser":{"name":"microsoft1es","email":"npmjs@microsoft.com"},"_resolved":"M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App2\\temp\\26514fcb-e5a2-4b68-86d3-962d5fc76eaa\\microsoft-webui-router-0.0.15.tgz","_integrity":"sha512-ZEql+jTY8a2gbMXrNrHfbD8OgFYADsmRevfShUMRH2dmywkjBUaggJi0G+IwBjfTR0MEvB8XuQDUMmS1OsLCyg==","description":"Lightweight client-side router for WebUI apps. Intercepts navigation, matches routes locally or via server route-data, and hydrates components.","directories":{},"_nodeVersion":"18.5.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.27.3","typescript":"^5.9.3","@types/node":"^25.3.5","@playwright/test":"^1.58.2","urlpattern-polyfill":"^10.1.0","@types/dom-navigation":"^1.0.7","@microsoft/webui-router":"0.0.15","@microsoft/webui-framework":"0.0.15","@types/dom-view-transitions":"^1.0.6"},"_npmOperationalInternal":{"tmp":"tmp/webui-router_0.0.15_1780949460327_0.8597016835493092","host":"s3://npm-registry-packages-npm-production"}},"0.0.16":{"name":"@microsoft/webui-router","version":"0.0.16","license":"MIT","_id":"@microsoft/webui-router@0.0.16","maintainers":[{"name":"microsoft1es","email":"npmjs@microsoft.com"},{"name":"microsoft-oss-releases","email":"microsoft-oss-publishing@microsoft.com"}],"dist":{"shasum":"8eab600f7f7bffdfa71eddfde23648a37b8f249b","tarball":"https://registry.npmjs.org/@microsoft/webui-router/-/webui-router-0.0.16.tgz","fileCount":29,"integrity":"sha512-pP3OtUQw2F43yUt1RtVdo3UFlZbtfAQiK9VtQNPwRmW7QUF8oswwzJO8rydtd4mMouOvKALUmvjHl/2LkEo3dg==","signatures":[{"sig":"MEUCIGlJmX+zaWSkQShIGi4UOYiJY4dICRe/P6gO6q98n+raAiEAhnSsuObE6wkHPjm8kXaP7bAmll5KHDw2fCa38NhSvGk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":131289},"type":"module","_from":"file:M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App1\\temp\\f6c2db40-2402-4be3-8fb3-45e713705757\\microsoft-webui-router-0.0.16.tgz","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}}},"scripts":{"test":"tsc -p tsconfig.unit-test.json && node --test dist/**/*.test.js && pnpm build:e2e && playwright test","build":"tsc","test:e2e":"playwright test","build:e2e":"esbuild tests/fixtures/router-app/src/index.ts --bundle --outfile=tests/fixtures/router-app/dist/index.js --format=esm --sourcemap --tsconfig=tsconfig.e2e.json","typecheck":"tsc --noEmit","start:server":"cargo run -p microsoft-webui-cli -- serve ./tests/fixtures/router-app/src --plugin=webui --servedir ./tests/fixtures/router-app/dist --state ./tests/fixtures/router-app/data/state.json --port 39102","test:update-snapshots":"playwright test --update-snapshots"},"_npmUser":{"name":"microsoft1es","email":"npmjs@microsoft.com"},"_resolved":"M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App1\\temp\\f6c2db40-2402-4be3-8fb3-45e713705757\\microsoft-webui-router-0.0.16.tgz","_integrity":"sha512-pP3OtUQw2F43yUt1RtVdo3UFlZbtfAQiK9VtQNPwRmW7QUF8oswwzJO8rydtd4mMouOvKALUmvjHl/2LkEo3dg==","description":"Lightweight client-side router for WebUI apps. Intercepts navigation, matches routes locally or via server route-data, and hydrates components.","directories":{},"_nodeVersion":"18.5.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.28.1","typescript":"^5.9.3","@types/node":"^25.3.5","@playwright/test":"^1.58.2","urlpattern-polyfill":"^10.1.0","@types/dom-navigation":"^1.0.7","@microsoft/webui-router":"0.0.16","@microsoft/webui-framework":"0.0.16","@types/dom-view-transitions":"^1.0.6"},"_npmOperationalInternal":{"tmp":"tmp/webui-router_0.0.16_1781745037438_0.8208538315620413","host":"s3://npm-registry-packages-npm-production"}},"0.0.17":{"name":"@microsoft/webui-router","version":"0.0.17","license":"MIT","_id":"@microsoft/webui-router@0.0.17","maintainers":[{"name":"microsoft1es","email":"npmjs@microsoft.com"},{"name":"microsoft-oss-releases","email":"microsoft-oss-publishing@microsoft.com"}],"dist":{"shasum":"7482d378a9d66fd567486e36ab68b8a5e840c6b0","tarball":"https://registry.npmjs.org/@microsoft/webui-router/-/webui-router-0.0.17.tgz","fileCount":29,"integrity":"sha512-gJNBJrZLODK7OOlW3Tw7tmxK4c0JMcDyT/cCx6IErzciQYSa3MAlygz4CUqU4DDGcM33omI0MdXyj0bBVLWvtw==","signatures":[{"sig":"MEUCIQCOqyTN7X1c8+ZI+a8ARxqd2OlxmxxWb3VqaOBW+C5/rAIgK8PnlwwGJJyzOSSIp4oyjyfn90jG95qJLrtNMWoAW3w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":131289},"type":"module","_from":"file:M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App1\\temp\\fd53aeaf-eed8-4966-b3fd-d727c3585afa\\microsoft-webui-router-0.0.17.tgz","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}}},"scripts":{"test":"tsc -p tsconfig.unit-test.json && node --test dist/**/*.test.js && pnpm build:e2e && playwright test","build":"tsc","test:e2e":"playwright test","build:e2e":"esbuild tests/fixtures/router-app/src/index.ts --bundle --outfile=tests/fixtures/router-app/dist/index.js --format=esm --sourcemap --tsconfig=tsconfig.e2e.json","typecheck":"tsc --noEmit","start:server":"cargo run -p microsoft-webui-cli -- serve ./tests/fixtures/router-app/src --plugin=webui --servedir ./tests/fixtures/router-app/dist --state ./tests/fixtures/router-app/data/state.json --port 39102","test:update-snapshots":"playwright test --update-snapshots"},"_npmUser":{"name":"microsoft1es","email":"npmjs@microsoft.com"},"_resolved":"M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App1\\temp\\fd53aeaf-eed8-4966-b3fd-d727c3585afa\\microsoft-webui-router-0.0.17.tgz","_integrity":"sha512-gJNBJrZLODK7OOlW3Tw7tmxK4c0JMcDyT/cCx6IErzciQYSa3MAlygz4CUqU4DDGcM33omI0MdXyj0bBVLWvtw==","description":"Lightweight client-side router for WebUI apps. Intercepts navigation, matches routes locally or via server route-data, and hydrates components.","directories":{},"_nodeVersion":"18.5.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.28.1","typescript":"^5.9.3","@types/node":"^25.3.5","@playwright/test":"^1.58.2","urlpattern-polyfill":"^10.1.0","@types/dom-navigation":"^1.0.7","@microsoft/webui-router":"0.0.17","@microsoft/webui-framework":"0.0.17","@types/dom-view-transitions":"^1.0.6"},"_npmOperationalInternal":{"tmp":"tmp/webui-router_0.0.17_1782156957958_0.9878034166259846","host":"s3://npm-registry-packages-npm-production"}},"0.0.18":{"name":"@microsoft/webui-router","version":"0.0.18","license":"MIT","_id":"@microsoft/webui-router@0.0.18","maintainers":[{"name":"microsoft1es","email":"npmjs@microsoft.com"},{"name":"microsoft-oss-releases","email":"microsoft-oss-publishing@microsoft.com"}],"dist":{"shasum":"1d8b44c5e3548c35cc30809223ffe91e588a8e81","tarball":"https://registry.npmjs.org/@microsoft/webui-router/-/webui-router-0.0.18.tgz","fileCount":29,"integrity":"sha512-8c4cXgWuDH7f9imlGHbMg1d1rw5mm94i0bbJneIBCoyUoDsDlBQ5RkYscT7NeDMaBAh862GWhZv/kJqPRugClQ==","signatures":[{"sig":"MEYCIQDbnGrAjUtnPKgDTHL3dp2o/KUfaVFIykcTtFlfacJEAQIhAO06FJyWcg3EWFeKaa9IVbhSFlCKYTxEn3sLxaPftPNn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":97029},"type":"module","_from":"file:M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App1\\temp\\49244006-c5a3-4694-83de-5afbd9a19dc8\\microsoft-webui-router-0.0.18.tgz","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}}},"scripts":{"test":"tsc -p tsconfig.unit-test.json && node --test dist/**/*.test.js && pnpm build:e2e && playwright test","build":"tsc","test:e2e":"playwright test","build:e2e":"esbuild tests/fixtures/router-app/src/index.ts --bundle --outfile=tests/fixtures/router-app/dist/index.js --format=esm --sourcemap --tsconfig=tsconfig.e2e.json","typecheck":"tsc --noEmit","start:server":"cargo run -p microsoft-webui-cli -- serve ./tests/fixtures/router-app/src --plugin=webui --servedir ./tests/fixtures/router-app/dist --state ./tests/fixtures/router-app/data/state.json --port 39102","test:update-snapshots":"playwright test --update-snapshots"},"_npmUser":{"name":"microsoft1es","email":"npmjs@microsoft.com"},"_resolved":"M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App1\\temp\\49244006-c5a3-4694-83de-5afbd9a19dc8\\microsoft-webui-router-0.0.18.tgz","_integrity":"sha512-8c4cXgWuDH7f9imlGHbMg1d1rw5mm94i0bbJneIBCoyUoDsDlBQ5RkYscT7NeDMaBAh862GWhZv/kJqPRugClQ==","description":"Lightweight client-side router for WebUI apps. Intercepts navigation, matches routes locally or via server route-data, and hydrates components.","directories":{},"_nodeVersion":"18.5.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.28.1","typescript":"^6.0.3","@types/node":"^26.1.0","@playwright/test":"^1.61.1","urlpattern-polyfill":"^10.1.0","@types/dom-navigation":"^1.0.7","@microsoft/webui-router":"0.0.18","@microsoft/webui-framework":"0.0.18","@types/dom-view-transitions":"^1.0.6"},"_npmOperationalInternal":{"tmp":"tmp/webui-router_0.0.18_1783482176249_0.044846312213377315","host":"s3://npm-registry-packages-npm-production"}},"0.0.19":{"name":"@microsoft/webui-router","version":"0.0.19","license":"MIT","_id":"@microsoft/webui-router@0.0.19","maintainers":[{"name":"microsoft1es","email":"npmjs@microsoft.com"},{"name":"microsoft-oss-releases","email":"microsoft-oss-publishing@microsoft.com"}],"dist":{"shasum":"e4418e60fed41a77571722d06e66e94a1007408b","tarball":"https://registry.npmjs.org/@microsoft/webui-router/-/webui-router-0.0.19.tgz","fileCount":29,"integrity":"sha512-Axx5hGVEWCbUixtbzoGrAkVpW9Mfhqmd4r8+kK5ZnAgWzj4HoiXwWz/fzt8jSm7Ud1o85zsb5RyxTjwHtO9EOQ==","signatures":[{"sig":"MEUCIQDwRm6r8FNDqO7PE4gHU6rzOwpUNfGYj12GjWZhRCbHLAIgY+Ecro08pB/jmYQjukTNRS8Yzjs5gHLGXn/ij7Avtdk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":99198},"type":"module","_from":"file:M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App1\\temp\\942494c2-4fb2-4d18-a238-e031d174fe21\\microsoft-webui-router-0.0.19.tgz","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}}},"scripts":{"test":"tsc -p tsconfig.unit-test.json && node --test dist/**/*.test.js && pnpm build:e2e && playwright test","build":"tsc","test:e2e":"playwright test","build:e2e":"esbuild tests/fixtures/router-app/src/index.ts --bundle --outfile=tests/fixtures/router-app/dist/index.js --format=esm --sourcemap --tsconfig=tsconfig.e2e.json","typecheck":"tsc --noEmit","start:server":"cargo run -p microsoft-webui-cli -- serve ./tests/fixtures/router-app/src --plugin=webui --servedir ./tests/fixtures/router-app/dist --state ./tests/fixtures/router-app/data/state.json --port 39102","test:update-snapshots":"playwright test --update-snapshots"},"_npmUser":{"name":"microsoft1es","email":"npmjs@microsoft.com"},"_resolved":"M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App1\\temp\\942494c2-4fb2-4d18-a238-e031d174fe21\\microsoft-webui-router-0.0.19.tgz","_integrity":"sha512-Axx5hGVEWCbUixtbzoGrAkVpW9Mfhqmd4r8+kK5ZnAgWzj4HoiXwWz/fzt8jSm7Ud1o85zsb5RyxTjwHtO9EOQ==","description":"Lightweight client-side router for WebUI apps. Intercepts navigation, matches routes locally or via server route-data, and hydrates components.","directories":{},"_nodeVersion":"18.5.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.28.1","typescript":"^6.0.3","@types/node":"^26.1.0","@playwright/test":"^1.61.1","urlpattern-polyfill":"^10.1.0","@types/dom-navigation":"^1.0.7","@microsoft/webui-router":"0.0.19","@microsoft/webui-framework":"0.0.19","@types/dom-view-transitions":"^1.0.6"},"_npmOperationalInternal":{"tmp":"tmp/webui-router_0.0.19_1784938883767_0.4251994296354793","host":"s3://npm-registry-packages-npm-production"}},"0.0.20":{"name":"@microsoft/webui-router","version":"0.0.20","license":"MIT","_id":"@microsoft/webui-router@0.0.20","maintainers":[{"name":"microsoft1es","email":"npmjs@microsoft.com"},{"name":"microsoft-oss-releases","email":"microsoft-oss-publishing@microsoft.com"}],"dist":{"shasum":"7fe71b62f3090694318c38c5e67ba9ae3a29983f","tarball":"https://registry.npmjs.org/@microsoft/webui-router/-/webui-router-0.0.20.tgz","fileCount":29,"integrity":"sha512-dnXtXCFWvNNTMMTH11nYgf4GqT6GlOz1nPT6vCPBvyrzaFFPkKYtHBdFY5wGIR+cc+TU306sTtBe4BzypnJrfg==","signatures":[{"sig":"MEUCIQC3YTnQGWsUZnC9oCb+vRZOWuxAbUUjVvowmAExcNu5CAIgaO805lqhZpxwyMYzlYK5irlDVtOP2eoo4UjtQ9BEgKY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":99198},"type":"module","_from":"file:M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App1\\temp\\50166976-e101-4dd9-9b9e-6eced629b077\\microsoft-webui-router-0.0.20.tgz","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}}},"scripts":{"test":"tsc -p tsconfig.unit-test.json && node --test dist/**/*.test.js && pnpm build:e2e && playwright test","build":"tsc","test:e2e":"playwright test","build:e2e":"esbuild tests/fixtures/router-app/src/index.ts --bundle --outfile=tests/fixtures/router-app/dist/index.js --format=esm --sourcemap --tsconfig=tsconfig.e2e.json","typecheck":"tsc --noEmit","start:server":"cargo run -p microsoft-webui-cli -- serve ./tests/fixtures/router-app/src --plugin=webui --servedir ./tests/fixtures/router-app/dist --state ./tests/fixtures/router-app/data/state.json --port 39102","test:update-snapshots":"playwright test --update-snapshots"},"_npmUser":{"name":"microsoft1es","email":"npmjs@microsoft.com"},"_resolved":"M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App1\\temp\\50166976-e101-4dd9-9b9e-6eced629b077\\microsoft-webui-router-0.0.20.tgz","_integrity":"sha512-dnXtXCFWvNNTMMTH11nYgf4GqT6GlOz1nPT6vCPBvyrzaFFPkKYtHBdFY5wGIR+cc+TU306sTtBe4BzypnJrfg==","description":"Lightweight client-side router for WebUI apps. Intercepts navigation, matches routes locally or via server route-data, and hydrates components.","directories":{},"_nodeVersion":"18.5.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.28.1","typescript":"^6.0.3","@types/node":"^26.1.0","@playwright/test":"^1.61.1","urlpattern-polyfill":"^10.1.0","@types/dom-navigation":"^1.0.7","@microsoft/webui-router":"0.0.20","@microsoft/webui-framework":"0.0.20","@types/dom-view-transitions":"^1.0.6"},"_npmOperationalInternal":{"tmp":"tmp/webui-router_0.0.20_1785550517534_0.922292575048107","host":"s3://npm-registry-packages-npm-production"}},"0.0.21":{"name":"@microsoft/webui-router","version":"0.0.21","license":"MIT","_id":"@microsoft/webui-router@0.0.21","maintainers":[{"name":"microsoft1es","email":"npmjs@microsoft.com"},{"name":"microsoft-oss-releases","email":"microsoft-oss-publishing@microsoft.com"}],"dist":{"shasum":"342c8e0ed98a9a697476f83c2207048306e18aaa","tarball":"https://registry.npmjs.org/@microsoft/webui-router/-/webui-router-0.0.21.tgz","fileCount":29,"integrity":"sha512-jOzvlEYClIZvbtbftD2KgDsNvAcNslrSE5u6T7RGicaE7aXFPrlcBcxrJOxltDRPj+jeLML/5EN5s+vf+26ydw==","signatures":[{"sig":"MEQCIH85vFPjn87dJNgrrs4yn5dY6Y6lJRixWbJ/2nQdyp6hAiBuT5LyEqEtlLpaHkppS4CmB6i0+ajDk9m4FGxrPm5ozg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":99198},"type":"module","_from":"file:M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App1\\temp\\ae7ee4bf-4680-440e-885f-0c412e294cb1\\microsoft-webui-router-0.0.21.tgz","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}}},"scripts":{"test":"tsc -p tsconfig.unit-test.json && node --test dist/**/*.test.js && pnpm build:e2e && playwright test","build":"tsc","test:e2e":"playwright test","build:e2e":"esbuild tests/fixtures/router-app/src/index.ts --bundle --outfile=tests/fixtures/router-app/dist/index.js --format=esm --sourcemap --tsconfig=tsconfig.e2e.json","typecheck":"tsc --noEmit","start:server":"cargo run -p microsoft-webui-cli -- serve ./tests/fixtures/router-app/src --plugin=webui --servedir ./tests/fixtures/router-app/dist --state ./tests/fixtures/router-app/data/state.json --port 39102","test:update-snapshots":"playwright test --update-snapshots"},"_npmUser":{"name":"microsoft1es","email":"npmjs@microsoft.com"},"_resolved":"M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App1\\temp\\ae7ee4bf-4680-440e-885f-0c412e294cb1\\microsoft-webui-router-0.0.21.tgz","_integrity":"sha512-jOzvlEYClIZvbtbftD2KgDsNvAcNslrSE5u6T7RGicaE7aXFPrlcBcxrJOxltDRPj+jeLML/5EN5s+vf+26ydw==","description":"Lightweight client-side router for WebUI apps. Intercepts navigation, matches routes locally or via server route-data, and hydrates components.","directories":{},"_nodeVersion":"18.5.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.28.1","typescript":"^6.0.3","@types/node":"^26.1.0","@playwright/test":"^1.61.1","urlpattern-polyfill":"^10.1.0","@types/dom-navigation":"^1.0.7","@microsoft/webui-router":"0.0.21","@microsoft/webui-framework":"0.0.21","@types/dom-view-transitions":"^1.0.6"},"_npmOperationalInternal":{"tmp":"tmp/webui-router_0.0.21_1785792007009_0.42535806987847113","host":"s3://npm-registry-packages-npm-production"}},"0.0.22":{"name":"@microsoft/webui-router","version":"0.0.22","license":"MIT","_id":"@microsoft/webui-router@0.0.22","maintainers":[{"name":"microsoft1es","email":"npmjs@microsoft.com"},{"name":"microsoft-oss-releases","email":"microsoft-oss-publishing@microsoft.com"}],"dist":{"shasum":"8a125deda4d3e1a0ee0d539d604ba336b24a4f7f","tarball":"https://registry.npmjs.org/@microsoft/webui-router/-/webui-router-0.0.22.tgz","fileCount":29,"integrity":"sha512-dT5U8VLUWFaY/A5yef1c4Wh7U0C8Vr9Is6uhZv4ngz4Z8yF3HDglfzSsrevgCFen8gfztYk6bfOvYCfNpof2Qg==","signatures":[{"sig":"MEUCIQC4w3qOj+BAJNXRgGXiBSMmXGTjHyNlSYCG5r7bWXjUhgIgHSmEG4AoEB3b6k/STZ1cMRFZu48A/bByadRElkKEUZA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":99198},"type":"module","_from":"file:M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App1\\temp\\503e515d-c8c2-400b-bdad-559f31b76486\\microsoft-webui-router-0.0.22.tgz","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}}},"scripts":{"test":"tsc -p tsconfig.unit-test.json && node --test dist/**/*.test.js && pnpm build:e2e && playwright test","build":"tsc","test:e2e":"playwright test","build:e2e":"esbuild tests/fixtures/router-app/src/index.ts --bundle --outfile=tests/fixtures/router-app/dist/index.js --format=esm --sourcemap --tsconfig=tsconfig.e2e.json","typecheck":"tsc --noEmit","start:server":"cargo run -p microsoft-webui-cli -- serve ./tests/fixtures/router-app/src --plugin=webui --servedir ./tests/fixtures/router-app/dist --state ./tests/fixtures/router-app/data/state.json --port 39102","test:update-snapshots":"playwright test --update-snapshots"},"_npmUser":{"name":"microsoft1es","email":"npmjs@microsoft.com"},"_resolved":"M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App1\\temp\\503e515d-c8c2-400b-bdad-559f31b76486\\microsoft-webui-router-0.0.22.tgz","_integrity":"sha512-dT5U8VLUWFaY/A5yef1c4Wh7U0C8Vr9Is6uhZv4ngz4Z8yF3HDglfzSsrevgCFen8gfztYk6bfOvYCfNpof2Qg==","description":"Lightweight client-side router for WebUI apps. Intercepts navigation, matches routes locally or via server route-data, and hydrates components.","directories":{},"_nodeVersion":"18.5.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.28.1","typescript":"^6.0.3","@types/node":"^26.1.0","@playwright/test":"^1.61.1","urlpattern-polyfill":"^10.1.0","@types/dom-navigation":"^1.0.7","@microsoft/webui-router":"0.0.22","@microsoft/webui-framework":"0.0.22","@types/dom-view-transitions":"^1.0.6"},"_npmOperationalInternal":{"tmp":"tmp/webui-router_0.0.22_1785870765085_0.45859055654905867","host":"s3://npm-registry-packages-npm-production"}},"0.0.23":{"name":"@microsoft/webui-router","version":"0.0.23","license":"MIT","_id":"@microsoft/webui-router@0.0.23","maintainers":[{"name":"microsoft1es","email":"npmjs@microsoft.com"},{"name":"microsoft-oss-releases","email":"microsoft-oss-publishing@microsoft.com"}],"dist":{"shasum":"554fa886adee6349793d48552f43cf22a8a4926b","tarball":"https://registry.npmjs.org/@microsoft/webui-router/-/webui-router-0.0.23.tgz","fileCount":29,"integrity":"sha512-7kao8ATZMscqPoAUfBUFfplyHwgVAyeAcDfqzglPFTg8Xgt+S/kVSf8K2ScvEAJXVEEUNJVkMJSv04yj/iOO9w==","signatures":[{"sig":"MEUCIEjrK1uNoSCxabc7Hm3+p98oTYVrbTqTOKEIhzEl4GolAiEAkMT3MFdELgStNDciRJp1k+zA9KCVXUiGwZx5r0TbUT8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":99198},"type":"module","_from":"file:M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App1\\temp\\d6f16baf-36e6-473f-8a53-3db4552e32ec\\microsoft-webui-router-0.0.23.tgz","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}}},"scripts":{"test":"tsc -p tsconfig.unit-test.json && node --test dist/**/*.test.js && pnpm build:e2e && playwright test","build":"tsc","test:e2e":"playwright test","build:e2e":"esbuild tests/fixtures/router-app/src/index.ts --bundle --outfile=tests/fixtures/router-app/dist/index.js --format=esm --sourcemap --tsconfig=tsconfig.e2e.json","typecheck":"tsc --noEmit","start:server":"cargo run -p microsoft-webui-cli -- serve ./tests/fixtures/router-app/src --plugin=webui --servedir ./tests/fixtures/router-app/dist --state ./tests/fixtures/router-app/data/state.json --port 39102","test:update-snapshots":"playwright test --update-snapshots"},"_npmUser":{"name":"microsoft1es","email":"npmjs@microsoft.com"},"_resolved":"M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App1\\temp\\d6f16baf-36e6-473f-8a53-3db4552e32ec\\microsoft-webui-router-0.0.23.tgz","_integrity":"sha512-7kao8ATZMscqPoAUfBUFfplyHwgVAyeAcDfqzglPFTg8Xgt+S/kVSf8K2ScvEAJXVEEUNJVkMJSv04yj/iOO9w==","description":"Lightweight client-side router for WebUI apps. Intercepts navigation, matches routes locally or via server route-data, and hydrates components.","directories":{},"_nodeVersion":"18.5.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.28.1","typescript":"^6.0.3","@types/node":"^26.1.0","@playwright/test":"^1.61.1","urlpattern-polyfill":"^10.1.0","@types/dom-navigation":"^1.0.7","@microsoft/webui-router":"0.0.23","@microsoft/webui-framework":"0.0.23","@types/dom-view-transitions":"^1.0.6"},"_npmOperationalInternal":{"tmp":"tmp/webui-router_0.0.23_1786421466851_0.8492032516392121","host":"s3://npm-registry-packages-npm-production"}},"0.0.24":{"name":"@microsoft/webui-router","version":"0.0.24","license":"MIT","_id":"@microsoft/webui-router@0.0.24","maintainers":[{"name":"microsoft1es","email":"npmjs@microsoft.com"},{"name":"microsoft-oss-releases","email":"microsoft-oss-publishing@microsoft.com"}],"dist":{"shasum":"68e906f09aa48379ffe409474d55aeb59ff5e1dc","tarball":"https://registry.npmjs.org/@microsoft/webui-router/-/webui-router-0.0.24.tgz","fileCount":31,"integrity":"sha512-GBlU5euMg8CuXSkxZMxU4rQAdTa3uPU0Kh8tOFw5p68FQhMT8PUYN8YwlMcRIvidbazQFDUf/vMxuaWzrg9y8A==","signatures":[{"sig":"MEUCIQCmwPcy9L307a5+9keyOyZxcQvnyx9Fyu/OWrvQcTC/TgIgImVH1ST3VvwcS2e6fWjuYibw2wO5r+PtTYj0SWdKFVA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":107445},"type":"module","_from":"file:M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App1\\temp\\f3312b6d-5fc7-43df-a283-f96b13d61860\\microsoft-webui-router-0.0.24.tgz","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}}},"scripts":{"test":"tsc -p tsconfig.unit-test.json && node --test dist/**/*.test.js && pnpm build:e2e && playwright test","build":"tsc","test:e2e":"playwright test","build:e2e":"esbuild tests/fixtures/router-app/src/index.ts --bundle --outfile=tests/fixtures/router-app/dist/index.js --format=esm --sourcemap --tsconfig=tsconfig.e2e.json","typecheck":"tsc --noEmit","start:server":"cargo run -p microsoft-webui-cli -- serve ./tests/fixtures/router-app/src --plugin=webui --servedir ./tests/fixtures/router-app/dist --state ./tests/fixtures/router-app/data/state.json --port 39102","test:update-snapshots":"playwright test --update-snapshots"},"_npmUser":{"name":"microsoft1es","email":"npmjs@microsoft.com"},"_resolved":"M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App1\\temp\\f3312b6d-5fc7-43df-a283-f96b13d61860\\microsoft-webui-router-0.0.24.tgz","_integrity":"sha512-GBlU5euMg8CuXSkxZMxU4rQAdTa3uPU0Kh8tOFw5p68FQhMT8PUYN8YwlMcRIvidbazQFDUf/vMxuaWzrg9y8A==","description":"Lightweight client-side router for WebUI apps. Intercepts navigation, matches routes locally or via server route-data, and hydrates components.","directories":{},"_nodeVersion":"18.5.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.28.1","typescript":"^6.0.3","@types/node":"^26.1.0","@playwright/test":"^1.61.1","urlpattern-polyfill":"^10.1.0","@types/dom-navigation":"^1.0.7","@microsoft/webui-router":"0.0.24","@microsoft/webui-framework":"0.0.24","@types/dom-view-transitions":"^1.0.6"},"_npmOperationalInternal":{"tmp":"tmp/webui-router_0.0.24_1786650093015_0.5509973427478163","host":"s3://npm-registry-packages-npm-production"}},"0.0.25":{"name":"@microsoft/webui-router","version":"0.0.25","license":"MIT","_id":"@microsoft/webui-router@0.0.25","maintainers":[{"name":"microsoft1es","email":"npmjs@microsoft.com"},{"name":"microsoft-oss-releases","email":"microsoft-oss-publishing@microsoft.com"}],"dist":{"shasum":"295700d9248566a81404cd324bcadc95a9712a27","tarball":"https://registry.npmjs.org/@microsoft/webui-router/-/webui-router-0.0.25.tgz","fileCount":31,"integrity":"sha512-vWpufuZ6yABvYznsj3vmcX2jYRQjg/+ySUPtOneCVy++oLFnnzxODn8Zo32V6Y4E9H0n/DT3bfgGFpr60oXX5A==","signatures":[{"sig":"MEUCIBdxm9tOdF4XbeoWLTEd4wHbRyLVv3mUr6TTJvWL+VYrAiEA+saUe+FMTsF+4FELJefcbplC1UP4TPLgwslnwoxY0UY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":108430},"type":"module","_from":"file:M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App1\\temp\\c0a8daec-ee95-4d2d-b755-a3856ba70e7b\\microsoft-webui-router-0.0.25.tgz","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}}},"scripts":{"test":"tsc -p tsconfig.unit-test.json && node --test dist/**/*.test.js && pnpm build:e2e && playwright test","build":"tsc","test:e2e":"playwright test","build:e2e":"esbuild tests/fixtures/router-app/src/index.ts --bundle --outfile=tests/fixtures/router-app/dist/index.js --format=esm --sourcemap --tsconfig=tsconfig.e2e.json","typecheck":"tsc --noEmit","start:server":"cargo run -p microsoft-webui-cli -- serve ./tests/fixtures/router-app/src --plugin=webui --servedir ./tests/fixtures/router-app/dist --state ./tests/fixtures/router-app/data/state.json --port 39102","test:update-snapshots":"playwright test --update-snapshots"},"_npmUser":{"name":"microsoft1es","email":"npmjs@microsoft.com"},"_resolved":"M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App1\\temp\\c0a8daec-ee95-4d2d-b755-a3856ba70e7b\\microsoft-webui-router-0.0.25.tgz","_integrity":"sha512-vWpufuZ6yABvYznsj3vmcX2jYRQjg/+ySUPtOneCVy++oLFnnzxODn8Zo32V6Y4E9H0n/DT3bfgGFpr60oXX5A==","description":"Lightweight client-side router for WebUI apps. Intercepts navigation, matches routes locally or via server route-data, and hydrates components.","directories":{},"_nodeVersion":"18.5.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.28.1","typescript":"^6.0.3","@types/node":"^26.1.0","@playwright/test":"^1.61.1","urlpattern-polyfill":"^10.1.0","@types/dom-navigation":"^1.0.7","@microsoft/webui-router":"0.0.25","@microsoft/webui-framework":"0.0.25","@types/dom-view-transitions":"^1.0.6"},"_npmOperationalInternal":{"tmp":"tmp/webui-router_0.0.25_1786827306827_0.1632146454690191","host":"s3://npm-registry-packages-npm-production"}},"0.0.26":{"name":"@microsoft/webui-router","version":"0.0.26","license":"MIT","_id":"@microsoft/webui-router@0.0.26","maintainers":[{"name":"microsoft1es","email":"npmjs@microsoft.com"},{"name":"microsoft-oss-releases","email":"microsoft-oss-publishing@microsoft.com"}],"dist":{"shasum":"3cc33a9ba2b1280a1ecdf0148a5cd8a89cc48a69","tarball":"https://registry.npmjs.org/@microsoft/webui-router/-/webui-router-0.0.26.tgz","fileCount":37,"integrity":"sha512-Dz6ytUcKact30FWJlKRGUoI1h4IReTHxcGgi8RaV19mQFTEsMop7hNIeQU0n/8uTNOI+l0sZI8cr+r9ItOlvPQ==","signatures":[{"sig":"MEQCIH9RqZH8sK1ZpjHG8qvVamam8K09YUuUJw63tXasALxHAiAM/2sHmjBnI2awaEoiVdl4fcvsJsE/0w0is0OvAyYqvw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":141532},"type":"module","_from":"file:M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App1\\temp\\9d8ee6e1-cf75-437a-8e18-76a7ff98e983\\microsoft-webui-router-0.0.26.tgz","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./preload.js":{"import":{"types":"./dist/preload-entry.d.ts","default":"./dist/preload-entry.js"}}},"scripts":{"test":"tsc -p tsconfig.unit-test.json && node --test dist/**/*.test.js && pnpm build:e2e && playwright test","build":"tsc","test:e2e":"playwright test","build:e2e":"esbuild tests/fixtures/router-app/src/index.ts tests/fixtures/router-app/src/interaction-entry.ts --bundle --outdir=tests/fixtures/router-app/dist --format=esm --splitting --sourcemap --tsconfig=tsconfig.e2e.json","typecheck":"tsc --noEmit","start:server":"cargo run -p microsoft-webui-cli -- serve ./tests/fixtures/router-app/src --plugin=webui --servedir ./tests/fixtures/router-app/dist --state ./tests/fixtures/router-app/data/state.json --port 39102","test:update-snapshots":"playwright test --update-snapshots"},"_npmUser":{"name":"microsoft1es","email":"npmjs@microsoft.com"},"_resolved":"M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App1\\temp\\9d8ee6e1-cf75-437a-8e18-76a7ff98e983\\microsoft-webui-router-0.0.26.tgz","_integrity":"sha512-Dz6ytUcKact30FWJlKRGUoI1h4IReTHxcGgi8RaV19mQFTEsMop7hNIeQU0n/8uTNOI+l0sZI8cr+r9ItOlvPQ==","description":"Lightweight client-side router for WebUI apps. Intercepts navigation, matches routes locally or via server route-data, and hydrates components.","directories":{},"_nodeVersion":"18.5.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.28.1","typescript":"7.0.2","@types/node":"^26.1.0","@playwright/test":"^1.61.1","urlpattern-polyfill":"^10.1.0","@types/dom-navigation":"^1.0.7","@microsoft/webui-router":"0.0.26","@microsoft/webui-framework":"0.0.26","@types/dom-view-transitions":"^1.0.6"},"_npmOperationalInternal":{"tmp":"tmp/webui-router_0.0.26_1787777971361_0.6729322932914201","host":"s3://npm-registry-packages-npm-production"}},"0.0.27":{"name":"@microsoft/webui-router","version":"0.0.27","license":"MIT","_id":"@microsoft/webui-router@0.0.27","maintainers":[{"name":"microsoft1es","email":"npmjs@microsoft.com"},{"name":"microsoft-oss-releases","email":"microsoft-oss-publishing@microsoft.com"}],"dist":{"shasum":"da14fcf271fa54fcb90fd6ab2093a4a7ad984bf7","tarball":"https://registry.npmjs.org/@microsoft/webui-router/-/webui-router-0.0.27.tgz","fileCount":37,"integrity":"sha512-cTA8z+6z9yHIVZBRckOf7zBe54/aXoq7B+Ao0HcPQMOB9xh7b1yTFSN014R7SwRN+4qcEUZV5PvwaCAaCTnW2Q==","signatures":[{"sig":"MEUCICRzV+FuwHDmWIhnPLKfgCgUz5H9jUoOgb9oY5wRTb11AiEAl6pjlIDPdF4odBb6YoC1jFKpgDq7z0vXXB6PyOrKewM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":141532},"type":"module","_from":"file:M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App1\\temp\\58d2f6e5-f562-45ce-bbc3-d93bfd48e637\\microsoft-webui-router-0.0.27.tgz","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./preload.js":{"import":{"types":"./dist/preload-entry.d.ts","default":"./dist/preload-entry.js"}}},"scripts":{"test":"tsc -p tsconfig.unit-test.json && node --test dist/**/*.test.js && pnpm build:e2e && playwright test","build":"tsc","test:e2e":"playwright test","build:e2e":"esbuild tests/fixtures/router-app/src/index.ts tests/fixtures/router-app/src/interaction-entry.ts --bundle --outdir=tests/fixtures/router-app/dist --format=esm --splitting --sourcemap --tsconfig=tsconfig.e2e.json","typecheck":"tsc --noEmit","start:server":"cargo run -p microsoft-webui-cli -- serve ./tests/fixtures/router-app/src --plugin=webui --servedir ./tests/fixtures/router-app/dist --state ./tests/fixtures/router-app/data/state.json --port 39102","test:update-snapshots":"playwright test --update-snapshots"},"_npmUser":{"name":"microsoft1es","email":"npmjs@microsoft.com"},"_resolved":"M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App1\\temp\\58d2f6e5-f562-45ce-bbc3-d93bfd48e637\\microsoft-webui-router-0.0.27.tgz","_integrity":"sha512-cTA8z+6z9yHIVZBRckOf7zBe54/aXoq7B+Ao0HcPQMOB9xh7b1yTFSN014R7SwRN+4qcEUZV5PvwaCAaCTnW2Q==","description":"Lightweight client-side router for WebUI apps. Intercepts navigation, matches routes locally or via server route-data, and hydrates components.","directories":{},"_nodeVersion":"18.5.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.28.1","typescript":"7.0.2","@types/node":"^26.1.0","@playwright/test":"^1.61.1","urlpattern-polyfill":"^10.1.0","@types/dom-navigation":"^1.0.7","@microsoft/webui-router":"0.0.27","@microsoft/webui-framework":"0.0.27","@types/dom-view-transitions":"^1.0.6"},"_npmOperationalInternal":{"tmp":"tmp/webui-router_0.0.27_1787858835527_0.22314484938221102","host":"s3://npm-registry-packages-npm-production"}},"0.0.28":{"name":"@microsoft/webui-router","version":"0.0.28","license":"MIT","_id":"@microsoft/webui-router@0.0.28","maintainers":[{"name":"microsoft1es","email":"npmjs@microsoft.com"},{"name":"microsoft-oss-releases","email":"microsoft-oss-publishing@microsoft.com"}],"tag":"latest","dist":{"shasum":"1b51bce007d2c4caa5bf0697f51452f5abdd10be","tarball":"https://registry.npmjs.org/@microsoft/webui-router/-/webui-router-0.0.28.tgz","fileCount":37,"integrity":"sha512-OQhIEmVmRZG6CmtiLf1BZ3SEmwBE1dHbXNFsAVxdTeL6llMpX7m5PMgV7VCfNmlpAh1L76dmhf1/wJJICC9ORQ==","signatures":[{"sig":"MEYCIQC7zclvjvbkuGg4bX9bq4y6SiYw/bd7NHDbved6ZzpIwQIhAJX2H6V41cVV3QJCzA7Lg2OvssYhwGZxXp7mb9w9k7Pc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":141578},"type":"module","_from":"file:M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App1\\temp\\a39b577a-45f3-4908-94dd-bf805786e2ba\\microsoft-webui-router-0.0.28.tgz","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./preload.js":{"import":{"types":"./dist/preload-entry.d.ts","default":"./dist/preload-entry.js"}}},"scripts":{"test":"tsc -p tsconfig.unit-test.json && node --test dist/**/*.test.js && pnpm build:e2e && playwright test","build":"tsc","test:e2e":"playwright test","build:e2e":"esbuild tests/fixtures/router-app/src/index.ts tests/fixtures/router-app/src/interaction-entry.ts --bundle --outdir=tests/fixtures/router-app/dist --format=esm --splitting --sourcemap --tsconfig=tsconfig.e2e.json","typecheck":"tsc --noEmit","start:server":"cargo run -p microsoft-webui-cli -- serve ./tests/fixtures/router-app/src --plugin=webui --servedir ./tests/fixtures/router-app/dist --state ./tests/fixtures/router-app/data/state.json --port 39102","test:update-snapshots":"playwright test --update-snapshots"},"_npmUser":{"name":"microsoft1es","email":"npmjs@microsoft.com"},"_resolved":"M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App1\\temp\\a39b577a-45f3-4908-94dd-bf805786e2ba\\microsoft-webui-router-0.0.28.tgz","_integrity":"sha512-OQhIEmVmRZG6CmtiLf1BZ3SEmwBE1dHbXNFsAVxdTeL6llMpX7m5PMgV7VCfNmlpAh1L76dmhf1/wJJICC9ORQ==","description":"Lightweight client-side router for WebUI apps. Intercepts navigation, matches routes locally or via server route-data, and hydrates components.","directories":{},"_nodeVersion":"18.5.0","publishConfig":{"tag":"latest"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.28.1","typescript":"7.0.2","@types/node":"^26.1.0","@playwright/test":"^1.61.1","urlpattern-polyfill":"^10.1.0","@types/dom-navigation":"^1.0.7","@microsoft/webui-router":"0.0.28","@microsoft/webui-framework":"0.0.28","@types/dom-view-transitions":"^1.0.6"},"_npmOperationalInternal":{"tmp":"tmp/webui-router_0.0.28_1788224378198_0.47940194884389786","host":"s3://npm-registry-packages-npm-production"}},"0.0.29":{"name":"@microsoft/webui-router","version":"0.0.29","license":"MIT","_id":"@microsoft/webui-router@0.0.29","maintainers":[{"name":"microsoft1es","email":"npmjs@microsoft.com"},{"name":"microsoft-oss-releases","email":"microsoft-oss-publishing@microsoft.com"}],"tag":"latest","dist":{"shasum":"3062cab80fa79527f0d74360707865455082f550","tarball":"https://registry.npmjs.org/@microsoft/webui-router/-/webui-router-0.0.29.tgz","fileCount":37,"integrity":"sha512-r16hxXKT5hv+jOqeeV28IsJjkl7sIQl0P6jm+9w+hjrXBGhcXmv0kmbzNopdab864tZboBQ0Yo02WBOKBQjPGw==","signatures":[{"sig":"MEUCICYM5cb7LW2HqYzuvWBwXtfuaYnfCNet3605LXyymytDAiEAl525/OIAS1dEb1wqxpNsRlhtdw0PcfVcQh9yTbfziBs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEMCH3M66CMlip/US3EY8oGlVDg107LAp02AeSoKu3262jACIAFzfP/Cos80cZlbrLq9AYmkq3ELOAhE4HMjRUdqlJkC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":141800},"type":"module","_from":"file:M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App1\\temp\\ef24680f-1576-4818-827d-0bfce6feab44\\microsoft-webui-router-0.0.29.tgz","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./preload.js":{"import":{"types":"./dist/preload-entry.d.ts","default":"./dist/preload-entry.js"}}},"scripts":{"test":"tsc -p tsconfig.unit-test.json && node --test dist/**/*.test.js && pnpm build:e2e && playwright test","build":"tsc","test:e2e":"playwright test","build:e2e":"esbuild tests/fixtures/router-app/src/index.ts tests/fixtures/router-app/src/interaction-entry.ts --bundle --outdir=tests/fixtures/router-app/dist --format=esm --splitting --sourcemap --tsconfig=tsconfig.e2e.json","typecheck":"tsc --noEmit","start:server":"cargo run -p microsoft-webui-cli -- serve ./tests/fixtures/router-app/src --plugin=webui --servedir ./tests/fixtures/router-app/dist --state ./tests/fixtures/router-app/data/state.json --port 39102","test:update-snapshots":"playwright test --update-snapshots"},"_npmUser":{"name":"microsoft1es","email":"npmjs@microsoft.com"},"_resolved":"M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App1\\temp\\ef24680f-1576-4818-827d-0bfce6feab44\\microsoft-webui-router-0.0.29.tgz","_integrity":"sha512-r16hxXKT5hv+jOqeeV28IsJjkl7sIQl0P6jm+9w+hjrXBGhcXmv0kmbzNopdab864tZboBQ0Yo02WBOKBQjPGw==","description":"Lightweight client-side router for WebUI apps. Intercepts navigation, matches routes locally or via server route-data, and hydrates components.","directories":{},"_nodeVersion":"18.5.0","publishConfig":{"tag":"latest"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.28.2","typescript":"7.0.2","@types/node":"^26.5.1","@playwright/test":"^1.63.0","urlpattern-polyfill":"^10.1.0","@types/dom-navigation":"^1.0.7","@microsoft/webui-router":"0.0.29","@microsoft/webui-framework":"0.0.29","@types/dom-view-transitions":"^1.0.6"},"_npmOperationalInternal":{"tmp":"tmp/webui-router_0.0.29_1789775620347_0.8579184939669626","host":"s3://npm-registry-packages-npm-production"}},"0.0.30":{"_id":"@microsoft/webui-router@0.0.30","tag":"latest","dist":{"shasum":"3968e305f1a39ef90de346e591ed92a510bc4d71","tarball":"https://registry.npmjs.org/@microsoft/webui-router/-/webui-router-0.0.30.tgz","fileCount":39,"integrity":"sha512-eUlwzGJfwnqVJW15qmwYzO/sr18cehpaSOmRv/zKZ9/FofAFCzgJmSCa6C51PliXqaCy0RvnFr0ZP9nl0fy71g==","signatures":[{"sig":"MEUCIQDjajcmgxIVIpbBlSPEPS/s3+7Nx+id/2NcifksN3b2WgIgI6FK2xTEOYMKtVIG1g96MpqYzTR1tdl8kQHH1iK+yQQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDxlYTIKZWKzJNzROfMuI+vRTaakRLcJ/oKBoyluhNr7AIgRltLCOQFW0gpnP4SaZ2VRNLScy/i4eXB13+1WwX4gC0="}],"unpackedSize":147787},"name":"@microsoft/webui-router","type":"module","_from":"file:M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App1\\temp\\f07c5213-d709-4859-af26-b767eb51e495\\microsoft-webui-router-0.0.30.tgz","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./preload.js":{"import":{"types":"./dist/preload-entry.d.ts","default":"./dist/preload-entry.js"}}},"license":"MIT","scripts":{"test":"tsc -p tsconfig.unit-test.json && node --test dist/**/*.test.js && pnpm build:e2e && playwright test","build":"tsc","test:e2e":"playwright test","build:e2e":"esbuild tests/fixtures/router-app/src/index.ts tests/fixtures/router-app/src/interaction-entry.ts --bundle --outdir=tests/fixtures/router-app/dist --format=esm --splitting --sourcemap --tsconfig=tsconfig.e2e.json","typecheck":"tsc --noEmit","start:server":"cargo run -p microsoft-webui-cli -- serve ./tests/fixtures/router-app/src --plugin=webui --servedir ./tests/fixtures/router-app/dist --state ./tests/fixtures/router-app/data/state.json --port 39102","test:update-snapshots":"playwright test --update-snapshots"},"version":"0.0.30","_npmUser":{"name":"microsoft1es","email":"npmjs@microsoft.com"},"_resolved":"M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App1\\temp\\f07c5213-d709-4859-af26-b767eb51e495\\microsoft-webui-router-0.0.30.tgz","_integrity":"sha512-eUlwzGJfwnqVJW15qmwYzO/sr18cehpaSOmRv/zKZ9/FofAFCzgJmSCa6C51PliXqaCy0RvnFr0ZP9nl0fy71g==","description":"Lightweight client-side router for WebUI apps. Intercepts navigation, matches routes locally or via server route-data, and hydrates components.","directories":{},"maintainers":[{"name":"microsoft1es","email":"npmjs@microsoft.com"},{"name":"microsoft-oss-releases","email":"microsoft-oss-publishing@microsoft.com"}],"_nodeVersion":"18.5.0","publishConfig":{"tag":"latest"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.28.2","typescript":"7.0.2","@types/node":"^26.5.1","@playwright/test":"^1.63.0","urlpattern-polyfill":"^10.1.0","@types/dom-navigation":"^1.0.7","@microsoft/webui-router":"0.0.30","@microsoft/webui-framework":"0.0.30","@types/dom-view-transitions":"^1.0.6"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/webui-router_0.0.30_1790524530939_0.48737772600570595"}}},"time":{"created":"2026-03-25T22:06:47.937Z","modified":"2026-09-27T15:55:31.208Z","0.0.1":"2026-03-25T22:06:48.259Z","0.0.2":"2026-03-26T18:49:14.122Z","0.0.4":"2026-04-09T05:37:55.331Z","0.0.5":"2026-04-09T16:14:59.228Z","0.0.6":"2026-04-09T23:37:43.470Z","0.0.7":"2026-04-11T00:44:55.970Z","0.0.8":"2026-04-14T05:03:09.210Z","0.0.9":"2026-04-16T22:13:55.164Z","0.0.10":"2026-04-17T21:07:41.991Z","0.0.11":"2026-04-28T22:18:24.769Z","0.0.12":"2026-05-01T19:47:23.965Z","0.0.13":"2026-05-27T00:50:25.574Z","0.0.14":"2026-05-27T22:32:58.641Z","0.0.15":"2026-06-08T20:11:00.480Z","0.0.16":"2026-06-18T01:10:37.639Z","0.0.17":"2026-06-22T19:35:58.117Z","0.0.18":"2026-07-08T03:42:56.380Z","0.0.19":"2026-07-25T00:21:23.929Z","0.0.20":"2026-08-01T02:15:17.689Z","0.0.21":"2026-08-03T21:20:07.137Z","0.0.22":"2026-08-04T19:12:45.231Z","0.0.23":"2026-08-11T04:11:06.997Z","0.0.24":"2026-08-13T19:41:33.167Z","0.0.25":"2026-08-15T20:55:06.961Z","0.0.26":"2026-08-26T20:59:31.505Z","0.0.27":"2026-08-27T19:27:15.670Z","0.0.28":"2026-09-01T00:59:38.338Z","0.0.29":"2026-09-18T23:53:40.497Z","0.0.30":"2026-09-27T15:55:31.018Z"},"license":"MIT","description":"Lightweight client-side router for WebUI apps. Intercepts navigation, matches routes locally or via server route-data, and hydrates components.","maintainers":[{"name":"microsoft1es","email":"npmjs@microsoft.com"},{"name":"microsoft-oss-releases","email":"microsoft-oss-publishing@microsoft.com"}],"readme":"# @microsoft/webui-router\n\nBuild-time compiled router for [WebUI](https://github.com/microsoft/webui) apps. Routes, cache tags, invalidation graphs, pending states, and error boundaries are declared as HTML attributes, validated by the Rust compiler, and baked into the binary protocol — zero runtime JavaScript for routing policy.\n\nUses the [Navigation API](https://developer.mozilla.org/en-US/docs/Web/API/Navigation_API) for client-side transitions. The server provides the matched route chain; the client does not perform route matching.\n\n> 📖 **Full documentation at [microsoft.github.io/webui](https://microsoft.github.io/webui)** — see the [Routing Guide](https://microsoft.github.io/webui/guide/concepts/routing) for setup and usage.\n\n## How It Works\n\n1. **Server renders the full page** - the matched route chain is SSR'd with declarative shadow roots. The page is interactive before JavaScript loads.\n2. **Hydration completes** - WebUI Framework hydrates shell components.\n3. **Router starts** - reads the SSR route bootstrap data and intercepts link clicks via the Navigation API. The router never imports framework code.\n4. **Client-side navigation** - fetches a JSON partial from the server, which includes the matched route chain. The client diffs old vs new chain and mounts only the changed component. Parent components stay mounted.\n\nAuthored route components use their registered classes. Scriptless route\ncomponents also navigate without a full page reload when the application loads\n`@microsoft/webui-framework`, which mounts the templates published by the\nrouter.\n\n## Installation\n\n```bash\nnpm install @microsoft/webui-router\n```\n\n## Quick Start\n\n**1. Add `<base href=\"/\">` in your `<head>`:**\n\n```html\n<head>\n  <meta charset=\"utf-8\">\n  <base href=\"/\">\n</head>\n```\n\nAll WebUI apps with routes **must** include `<base href=\"/\">`. Without it, relative asset paths (CSS, JS) break on nested routes — the browser resolves `app.css` against `/contacts/123/` → `/contacts/app.css` instead of `/app.css`.\n\nFor sub-path deployments, set the base to the sub-path: `<base href=\"/my-app/\">`.\n\n**2. Declare nested routes in `index.html`:**\n\n```html\n<body>\n  <route path=\"/\" component=\"app-shell\">\n    <route path=\"\" component=\"home-page\" exact />\n    <route path=\"users\" component=\"user-list\" exact />\n    <route path=\"users/:id\" component=\"user-detail\" exact />\n  </route>\n  <script type=\"module\" src=\"index.js\"></script>\n</body>\n```\n\nChild routes use **relative paths** (no leading `/`). The nesting is the route tree.\n\n**2. Use `<outlet />` in parent components:**\n\n```html\n<!-- app-shell.html -->\n<nav>\n  <a href=\"/\">Home</a>\n  <a href=\"/users\">Users</a>\n</nav>\n<main><outlet /></main>\n<footer>© 2026</footer>\n```\n\n`<outlet />` marks where child route content renders. The nav and footer persist across navigations.\nThe paired form `<outlet></outlet>` is also supported, but outlets are empty and\nthe self-closing form is preferred. Use one outlet at each route level,\nincluding outlets inside nested layout components and directives. Child routes\nhave their own outlet level.\nAdditional outlets produce a `multiple-outlets` build warning because only the\nfirst outlet renders matched child routes. Move duplicated layout around the\nsingle outlet instead.\n\nOn initial SSR, styles for the matched route chain that target the Document are\napplied before `</head>`, including Link-mode bundled chunks. Styles targeting a\nShadowRoot remain tree-local; Link mode preloads them from the head and installs\nthe applying stylesheet inside that root. Inactive route styles stay deferred.\n\n**3. Start the router after hydration:**\n\n```typescript\nimport '@microsoft/webui-framework';\nimport { Router } from '@microsoft/webui-router';\n\nimport './app-shell.js';\n\nwindow.addEventListener('webui:hydration-complete', () => {\n  Router.start({\n    loaders: {\n      'home-page': () => import('./pages/home-page.js'),\n      'user-list': () => import('./pages/user-list.js'),\n      'user-detail': () => import('./pages/user-detail.js'),\n    },\n  });\n});\n```\n\nComponents in `loaders` are lazy-loaded on first navigation. Components not\nlisted are assumed eagerly loaded when already registered. Scriptless route\ntemplates can accept server-provided partial state through the framework\nwithout empty `.ts` files. Add a same-named module only when a route owns\nevents, lifecycle code, decorators, or imperative APIs. If no runtime registers a destination tag, the router safely\nfalls back to a full document request.\n\n## Nested Routes\n\nRoutes nest to any depth. Each parent uses `<outlet />` for child content:\n\n```html\n<route path=\"/\" component=\"app-shell\">\n  <route path=\"\" component=\"dashboard\" exact />\n  <route path=\"settings\" component=\"settings-page\">\n    <route path=\"profile\" component=\"profile-page\" exact />\n    <route path=\"billing\" component=\"billing-page\" exact />\n  </route>\n</route>\n```\n\nNavigating from `/settings/profile` to `/settings/billing` only remounts the billing component — `app-shell` and `settings-page` stay mounted with their state preserved.\n\n### The `exact` Attribute\n\n- **Leaf routes** (no children): add `exact`\n- **Parent routes** (have `<outlet />`): omit `exact`\n\nWithout `exact`, a route matches any URL that starts with its path — which is what parent routes need.\n\n### The `keep-alive` Attribute\n\nPreserve a component across navigations instead of destroying and recreating it:\n\n```html\n<route path=\"./\" component=\"mail-view\" keep-alive>\n  <route path=\"\" component=\"inbox-page\" exact />\n</route>\n<route path=\"calendar\" component=\"calendar-page\" exact keep-alive />\n```\n\nWhen the user navigates away from a `keep-alive` route and returns, the existing component is reused. Its DOM and local state (scroll position, input values, timers) survive the round trip.\n\n**State is preserved by default.** The router only updates route param and query param attributes on reactivation. This means your component's `@observable` properties, scroll position, form inputs, and any client-computed state all survive.\n\nTo refresh data on reactivation, define a [route loader](#route-loaders):\n\n```typescript\nexport class MailView extends WebUIElement {\n  @observable messages = [];\n\n  static async loader({ signal }: RouteLoaderContext) {\n    const resp = await fetch('/api/messages', { signal });\n    return { messages: await resp.json() };\n  }\n}\n```\n\n### Route Loaders\n\nDefine a static `loader()` on a component to fetch data from a custom source instead of using server-provided state:\n\n```typescript\nimport type { RouteLoaderContext } from '@microsoft/webui-router';\n\nexport class LiveDashboard extends WebUIElement {\n  @observable source = '';\n  @observable metrics = {};\n\n  static async loader({ params, query, signal }: RouteLoaderContext) {\n    const resp = await fetch(`/api/dashboard/${params.id}`, { signal });\n    return { source: 'client', metrics: await resp.json() };\n  }\n}\n```\n\n**How it works:**\n- The router checks each route component's constructor for a static `loader()` method\n- Loaders run **before** the view transition — results are ready for synchronous DOM commit\n- The loader receives route `params`, parsed `query`, and an `AbortSignal` tied to the navigation\n- If a loader fails, the router falls back to server-provided state with a console warning\n- Loaders run on both SSR bootstrap and SPA navigations for consistency\n\n**When to use loaders:**\n- WebSocket-driven dashboards that manage their own data stream\n- Components that fetch from a different API than the SSR server\n- Keep-alive components that need fresh data on reactivation\n- Any component that wants full control over its state source\n\n### Base Path (Sub-Path Deployment)\n\nEvery WebUI app with routes needs `<base href=\"/\">` in its `<head>` (see Quick Start above). This ensures relative asset paths resolve correctly on nested routes.\n\nFor sub-path deployments (e.g., `https://example.com/commerce/`), change it to the sub-path:\n\n```html\n<head>\n  <base href=\"/commerce/\">\n</head>\n```\n\nThe `<base>` tag is a core web platform feature. It makes the browser resolve all relative URLs (`<a href>`, `<link href>`, `fetch()`) against the base path. The router detects it at startup and uses it to strip/prepend the prefix on navigation URLs.\n\nWhen using `webui serve --base-path /commerce/`, the `<base>` tag is emitted automatically.\n\n### Preload on Hover\n\nOpt-in speculative fetching for instant click navigation:\n\n```typescript\nRouter.start({ preload: true });\n```\n\nWhen enabled, the router prefetches JSON partials (templates, CSS, state) when the user hovers over internal links. On click, the cached result is used immediately. Preloaded entries are stored in the [tagged cache](#tagged-cache) with a 5-second minimum freshness. Only mouse pointers trigger preload.\n\nThe pre-hydration API is framework-agnostic:\n\n```typescript\nimport { prepareRoutePreload } from '@microsoft/webui-router/preload.js';\n\nconst prepared = prepareRoutePreload({\n  onIntent: () => startYourHydrationRuntime(),\n});\nawait hydrationReady;\nRouter.start({ ...config, preload: prepared });\n```\n\nIt buffers one hovered partial as bounded raw bytes before any hydration\nframework starts, then transfers the in-flight/completed response into normal\nnavigation without a second request or early template parsing. WebUI Framework,\nFAST, and other runtimes start through `onIntent`, then pass the same handle to\nthe router after their own readiness lifecycle.\n\n### Tagged Cache\n\nCache partial responses with server-provided tags for precise invalidation:\n\nCache and preload are optional runtime tiers. The default `Router.start()` path\ndoes not import the cache implementation until `cache` or `preload` opts in.\n\n```typescript\nRouter.start({\n  cache: {\n    staleTime: 30_000,   // ms before refetch (default: 0 = disabled)\n    gcTime: 300_000,     // ms before eviction from memory (default: 5 min)\n    maxEntries: 50,      // LRU cap (default: 50)\n  },\n});\n```\n\nDeclare cache tags on routes as HTML attributes:\n\n```html\n<route path=\"email/:threadId\" component=\"thread-page\" exact\n       cache-tags=\"thread:{threadId},inbox\" />\n```\n\nThe `{threadId}` placeholder is resolved at render time by the Rust handler. The server includes resolved `cacheTags` in the JSON partial. On revisit within `staleTime`, the cached response is used instantly.\n\n### Tag-Based Invalidation\n\nDeclare which tags a route invalidates after mutations:\n\n```html\n<route path=\"compose\" component=\"compose-page\" exact\n       invalidates=\"inbox,sent,counts,drafts\" />\n```\n\nProgrammatic invalidation:\n\n```typescript\nRouter.invalidateTags(['inbox', 'thread:42']);  // evict by tag\nRouter.invalidate('/email/42');                  // evict by path\nRouter.invalidate();                             // evict everything\n```\n\n### Mutation Actions\n\nThe write counterpart to `static loader()`. Enable `Router.start({ actions: true })` to make the router intercept `<form method=\"post\">` and auto-invalidate the cache:\n\n```typescript\nimport type { RouteActionContext, RouteActionResult } from '@microsoft/webui-router';\n\nexport class ComposePage extends WebUIElement {\n  static async action({ formData, params, signal }: RouteActionContext): Promise<RouteActionResult> {\n    await fetch('/api/send', { method: 'POST', body: formData, signal });\n    return {\n      invalidateTags: ['sent'],           // merged with route's invalidates attr\n      state: { status: 'Message sent' },  // optimistic UI (optional)\n    };\n  }\n}\n```\n\nThe action's returned tags are merged with the route's build-time `invalidates` attribute. Only same-origin forms are intercepted.\n\n### Pending UI\n\nShow a loading component during slow navigations (>150ms):\n\n```html\n<route path=\"inbox\" component=\"inbox-page\" exact pending=\"mail-skeleton\" />\n```\n\nThe `pending` component is validated at build time. It remains visible through response\nvalidation, component loading, and route loaders, then is removed atomically with the settled\nroute commit before `webui:route:navigated`. Keep-alive and cached routes skip pending setup.\n\n### Error Boundaries\n\nShow an error component when navigation fails:\n\n```html\n<route path=\"dashboard\" component=\"dashboard-page\" exact error=\"error-display\" />\n```\n\nThe error component receives `{ error, status, path }` as state. It can call `Router.navigate()` to retry.\n\n### Controlling State\n\n| Need | Mechanism |\n|------|-----------|\n| **Server state for authored code** | Authored route component with a sibling `.ts` or `.js` module |\n| **Template-only soft navigation** | Omit the client module and load the framework once |\n| **I fetch my own data** | `static loader()` on component class |\n| **Preserve local state** | `keep-alive` on route |\n| **Preserve DOM, refresh data** | `keep-alive` + `static loader()` |\n| **Handle form submissions** | `static action()` on component class |\n| **Cache responses** | `cache` config on `Router.start()` |\n| **Show loading state** | `pending` attr on route |\n| **Handle failures** | `error` attr on route |\n\n## API\n\n### `Router.start(config?)`\n\nStart the router. Call after hydration completes.\n\n| Option | Type | Description |\n|--------|------|-------------|\n| `loaders` | `Record<string, () => Promise<unknown>>` | Lazy-loading map: component tag -> dynamic import |\n| `templateEndpoint` | `string` | URL for `ensureLoaded()` requests (default: `\"/_webui/templates\"`) |\n| `dev` | `boolean` | Enable development mode warnings |\n| `preload` | `boolean` | Preload routes on link hover for instant navigation |\n| `actions` | `boolean` | Intercept same-origin POST forms and call component `static action()` handlers |\n| `ssrFresh` | `boolean` | Skip initial loader replay on SSR bootstrap (default: `true`). Components with `static ssrLoader = true` still run their loader. |\n| `cache` | `CacheConfig` | Tagged navigation cache: `{ staleTime, gcTime, maxEntries }` |\n\nLoader-owned tags are reserved before the framework claims compiler-owned\nHTML-only templates. This guarantees the dynamic module retains ownership of\n`customElements.define()` even when template metadata is already available.\n\n### `Router.navigate(path)`\n\nProgrammatic navigation:\n\n```typescript\nRouter.navigate('/users/42');\n```\n\n### `Router.ensureLoaded(...tags)`\n\nLoad templates and CSS for components on demand. Components must be declared\nas routes so the build compiles them, but they don't need to be navigated to:\n\n```html\n<!-- Declared as a route — compiled into protocol -->\n<route path=\"settings\" component=\"settings-dialog\" exact />\n```\n\n```typescript\n// Load on demand — fetches from /_webui/templates\nawait Router.ensureLoaded('settings-dialog');\n\n// Batch multiple in one request\nawait Router.ensureLoaded('modal-a', 'modal-b', 'drawer-c');\n```\n\nTemplates are not sent during initial SSR or partial navigation for\nunmatched routes — zero cost until explicitly requested. If a user navigates\ndirectly to the route path, the component renders normally in the outlet.\n\nWhen `@microsoft/webui-framework` is loaded, `ensureLoaded()` also waits for\nbounded Link stylesheet cache warming or an explicit native-link fallback\ndecision. Warmup bytes are never applied; the first native shadow link remains\nthe authorization source for any later shared constructable sheet. JSON and\nNDJSON soft navigation use the same readiness bridge before committing new\nroute components. Globally retained head CSS is injected before this wait, so\naborting a stale navigation cannot advance inventory without retaining its\nstyles. The router does not import the framework; without a runtime listener,\nregistration remains immediate.\n\n### View Transitions\n\nThe router automatically uses the [View Transitions API](https://developer.mozilla.org/en-US/docs/Web/API/Document/startViewTransition) when available. On each client-side navigation, the DOM swap is wrapped in `document.startViewTransition()`, giving you a CSS-driven cross-fade between old and new route content with zero extra code.\n\n**Do NOT wrap `Router.navigate()` in your own `startViewTransition()`** — the router already does this internally.\n\nWhile active, the router installs a nonce-bearing\n`@view-transition { navigation: none; }` override. This disables automatic\ncross-document transitions because they conflict with intercepted routes that\nmust fall back to SSR document requests. Explicit client-side transitions still\nuse `document.startViewTransition()`. `Router.destroy()` removes the override.\n\nTo customize the animation, use `view-transition-name` on specific elements and target them in CSS:\n\n```css\n/* Scope the transition to the reading pane only */\n.route-outlet {\n  view-transition-name: reading-pane;\n}\n\n/* Custom cross-fade for the reading pane */\n::view-transition-old(reading-pane) {\n  animation: fade-out 100ms ease-out;\n}\n::view-transition-new(reading-pane) {\n  animation: fade-in 150ms ease-in;\n}\n```\n\nThe router awaits `transition.updateCallbackDone` (not `.finished`), so rapid navigations supersede each other without queuing animations.\nResizing or starting a newer transition may skip the animation without failing\nthe committed route. Route commit errors still follow normal navigation error handling\nwithout duplicate unhandled transition rejections.\n\n### `Router.back()`\n\nNavigate back in history.\n\n### `Router.invalidateTags(tags)`\n\nEvict all cache entries whose tags overlap with the given tags:\n\n```typescript\nRouter.invalidateTags(['inbox', 'thread:42']);\n```\n\n### `Router.invalidate(path?)`\n\nEvict cache entries by path, or all entries if no path is given:\n\n```typescript\nRouter.invalidate('/email/42');  // one entry\nRouter.invalidate();             // everything\n```\n\n### `Router.activeComponent`\n\nComponent tag of the active leaf route:\n\n```typescript\nconsole.log(Router.activeComponent); // \"user-detail\"\n```\n\n### `Router.activeParams`\n\nBound parameters from all nesting levels:\n\n```typescript\nconsole.log(Router.activeParams); // { id: \"42\" }\n```\n\n### `Router.destroy()`\n\nTear down the router and remove event listeners.\n\n### `Router.gc(tags?)`\n\nRelease cached component templates to free memory. The router clears their\ninventory bits so the server will re-send them on the next navigation that needs\nthem.\n\n```typescript\n// Release all cached templates\nRouter.gc();\n```\n\nFramework template caches become GC-eligible after the router releases the\nmatching templates.\n\n### Navigation Events\n\nDispatched on `window` after each navigation:\n\n```typescript\nwindow.addEventListener('webui:route:navigated', (e) => {\n  const { component, params, query, path } = (e as CustomEvent).detail;\n});\n```\n\nDispatched after a mutation action completes:\n\n```typescript\nwindow.addEventListener('webui:route:action-complete', (e) => {\n  const { component, invalidatedTags, path } = (e as CustomEvent).detail;\n});\n```\n\n> **Note:** The `query` in `navigated` contains **all** URL query parameters (unfiltered). Only\n> parameters declared via the `query` attribute on `<route>` are set as DOM\n> attributes — the event exposes the full set for programmatic use.\n\n## Route Path Syntax\n\n| Pattern | Example | Matches |\n|---------|---------|---------|\n| `literal` | `users` | Exact segment |\n| `:param` | `users/:id` | Captures segment → `{ id: \"42\" }` |\n| `:param?` | `search/:query?` | Optional segment |\n| `*splat` | `files/*path` | Rest of path → `{ path: \"a/b/c\" }` |\n\nPaths are relative to the parent route. Use `/` prefix only for the root route.\n\n## Query Parameters\n\nURL query parameters can be forwarded to components as HTML attributes by\ndeclaring an **allowlist** on the `<route>` element:\n\n```html\n<route path=\"compose\" component=\"page-compose\" query=\"action,to,subject\" exact />\n```\n\nWhen a user navigates to `/compose?action=reply&to=user@test.com`, only the\nthree listed parameters are set as attributes on `<page-compose>`. Any\nunlisted parameter (e.g. `?class=evil&style=display:none`) is silently\ndropped — **deny-by-default**.\n\n### Rules\n\n| Scenario | Behavior |\n|----------|----------|\n| No `query` attribute | No query params forwarded (safe default) |\n| `query=\"action,to\"` | Only `action` and `to` are set as attributes |\n| Collision with route param | Route param wins — query param is skipped |\n| Query-only navigation | Stale attributes from previous query are removed |\n\n### Component usage\n\nDeclare `@attr` properties matching the allowed query param names:\n\n```typescript\nexport class PageCompose extends WebUIElement {\n  @attr action = '';\n  @attr to = '';\n  @attr subject = '';\n}\n```\n\n## Server Contract\n\nOn client-side navigation, the router sends:\n\n```\nGET /users/42\nAccept: application/x-ndjson, application/json\nX-WebUI-Inventory: <hex bitmask>\n```\n\nThe inventory tracks component template and style metadata together. Partial\nresponses therefore omit CSS definitions and closures that the client has\nalready registered; a new closure may reference an existing shared resource\nwithout transmitting that resource again. If a closure dependency is not in\nthe incoming inventory, its resource definition is sent with the new root.\n\nThe server should return:\n\n- **`Accept: application/x-ndjson`** → NDJSON streaming: Chunk 1 `{ componentStyles, templates, inventory, path, chain, cacheTags }`, Chunk 2 `{ states: [...] }` — or fall back to single JSON\n- **`Accept: application/json`** → JSON partial: `{ state, componentStyles, templates, inventory, path, chain, cacheTags, cacheControl }`; `Protocol::render_partial()` returns this complete response\n- **Otherwise** → Full SSR'd HTML page\n\nThe `chain` field contains the matched route chain with `component`, `path`,\n`params`, `exact`, `keepAlive`, `pendingComponent`, `errorComponent`, and\n`invalidates`. The `cacheTags` array contains resolved cache tags from the full\nchain. The optional `cacheControl` object can override `staleTime` per-response.\nThe deferred Chunk 2 reader starts only after Chunk 1 has committed, so state\nqueued during template-resource readiness can never target the previous route.\nFor speculative preloads, Chunk 1 is cached before reading continues; Chunk 2\nstate is merged into that cached response before the entry becomes consumable.\nFailed commits cancel and unlock the unread stream.\n\nSee the [Routing guide](https://github.com/microsoft/webui/blob/main/docs/guide/concepts/routing.md) for complete server implementation examples.\n\n## Architecture\n\nThe router is organized into 13 internal modules, each handling a single concern:\n\n| Module | Responsibility |\n|--------|---------------|\n| `router` | Core router lifecycle, Navigation API integration |\n| `chain` | SSR route bootstrap and active route binding |\n| `navigation-path` | Path matching and parameter extraction |\n| `route-element` | `<webui-route>` custom element and query param handling |\n| `loaders` | Static `loader()` resolution with `ssrFresh` support |\n| `actions` | Optional form submission interception and `static action()` dispatch |\n| `cache` | Tagged LRU navigation cache |\n| `pending` | Lazy pending/error UI lifecycle |\n| `preload` | Optional hover-based speculative prefetching |\n| `templates` | Template injection and inventory management |\n| `streaming` | NDJSON streaming partial responses |\n| `browser-shim` | Navigation API type shims |\n| `types` | Public type definitions and type guards |\n\n## SSR bootstrap data\n\nOn first load, the server emits inert route bootstrap data in `#webui-data`. The\nrouter reads it during startup:\n\n```html\n<script type=\"application/json\" id=\"webui-data\">\n{\n  \"chain\": [],\n  \"inventory\": \"04000400...\",\n  \"nonce\": \"abc123\",\n  \"css\": [\"/styles/main.css\"],\n  \"styles\": [\"app-shell\"],\n  \"state\": {}\n}\n</script>\n```\n\nThe router reads this at startup, eliminating DOM walking and URLPattern usage.\n\n## Exports\n\nThe package exports the following:\n\n| Export | Kind | Description |\n|--------|------|-------------|\n| `Router` | class | Main router singleton |\n| `WebUIRouter` | class | Same as `Router` (named export) |\n| `WebUIRouteElement` | class | `<webui-route>` custom element |\n| `parseQuery` | function | Parse URL query string into a record |\n| `filterQuery` | function | Filter query params by an allowlist |\n| `isStateful` | function | Type guard - checks if an element accepts route state |\n| `StatefulElement` | type | Interface for elements that accept route state |\n| `RouterConfig` | type | Configuration for `Router.start()` |\n| `RouteLoaderContext` | type | Context passed to `static loader()` methods |\n| `RouteActionContext` | type | Context passed to `static action()` methods |\n| `RouteActionResult` | type | Return type of `static action()` |\n| `CacheConfig` | type | Cache configuration options |\n| `NavigationEvent` | type | Detail type for `webui:route:navigated` events |\n| `ActionCompleteEvent` | type | Detail type for `webui:route:action-complete` events |\n\n## License\n\nMIT\n","readmeFilename":"README.md"}