{"_id":"@microsoft/webui-framework","_rev":"32-94e1f7a656fbc8abca4c646123a5ea51","name":"@microsoft/webui-framework","dist-tags":{"latest":"0.0.30"},"versions":{"0.0.4":{"name":"@microsoft/webui-framework","version":"0.0.4","license":"MIT","_id":"@microsoft/webui-framework@0.0.4","maintainers":[{"name":"microsoft1es","email":"npmjs@microsoft.com"},{"name":"microsoft-oss-releases","email":"microsoft-oss-publishing@microsoft.com"}],"dist":{"shasum":"025078947209555df50971244cd251d2a572b08f","tarball":"https://registry.npmjs.org/@microsoft/webui-framework/-/webui-framework-0.0.4.tgz","fileCount":3,"integrity":"sha512-59NMcamwCHoC8Skp5lyiISozeFVbPE0sLsFbPKFhGGkS4toVgaLFgDcL3t9fcwUUPKqztcud+ozAEPeaX2Gp9A==","signatures":[{"sig":"MEUCIQD7Dlk6l2Be5RabNI1jiPTXIydiONHbji5bC0/buiGmdgIgb7VzVTRu5A32NMs2crj2C18+pY/yVQEJNceZkz+L4t4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27336},"type":"module","_from":"file:M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App2\\temp\\3ca3479a-2742-4623-a0b8-c4df96782907\\microsoft-webui-framework-0.0.4.tgz","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}}},"scripts":{"test":"pnpm test:unit && pnpm test:e2e","build":"find src -name '*.ts' ! -name '*.test.ts' | xargs esbuild --outdir=dist --outbase=src --format=esm --platform=browser && tsc --emitDeclarationOnly","test:e2e":"pnpm typecheck:e2e && pnpm build:e2e && playwright test","build:e2e":"pnpm build:e2e:scripts","test:unit":"esbuild \"src/**/*.test.ts\" --bundle --outdir=dist/tests --outbase=src --format=esm --platform=node --target=es2022 && node --test \"dist/tests/**/*.test.js\"","typecheck":"tsc --noEmit","typecheck:e2e":"tsc -p tsconfig.test.json --noEmit","build:e2e:scripts":"esbuild ./tests/server.ts --bundle --external:esbuild --outdir=tests/dist --format=esm --platform=node --target=es2022","test:update-snapshots":"pnpm test:e2e:update-snapshots","test:e2e:update-snapshots":"pnpm typecheck:e2e && pnpm build:e2e && playwright test --update-snapshots"},"_npmUser":{"name":"microsoft1es","email":"npmjs@microsoft.com"},"_resolved":"M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App2\\temp\\3ca3479a-2742-4623-a0b8-c4df96782907\\microsoft-webui-framework-0.0.4.tgz","_integrity":"sha512-59NMcamwCHoC8Skp5lyiISozeFVbPE0sLsFbPKFhGGkS4toVgaLFgDcL3t9fcwUUPKqztcud+ozAEPeaX2Gp9A==","description":"WebUI Framework Next — Preact-inspired lightweight Web Component runtime with SSR hydration. 15KB minified, compiled-template path mapping, no hydration markers.","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","@microsoft/webui-test-support":"0.0.4"},"_npmOperationalInternal":{"tmp":"tmp/webui-framework_0.0.4_1775713066983_0.9110482557109312","host":"s3://npm-registry-packages-npm-production"}},"0.0.5":{"name":"@microsoft/webui-framework","version":"0.0.5","license":"MIT","_id":"@microsoft/webui-framework@0.0.5","maintainers":[{"name":"microsoft1es","email":"npmjs@microsoft.com"},{"name":"microsoft-oss-releases","email":"microsoft-oss-publishing@microsoft.com"}],"dist":{"shasum":"97133a8ae8cbda74271e28c5632638ed7342e1ed","tarball":"https://registry.npmjs.org/@microsoft/webui-framework/-/webui-framework-0.0.5.tgz","fileCount":23,"integrity":"sha512-gu0rxcrcX6Im5pHcWwzzFcMoeqygImCMBne+Htm7zatXauRuzkx98yggN2KSWWRoX5O0TyWp+0SDlyJPR2rQXQ==","signatures":[{"sig":"MEYCIQD540JizjxGJnHHIWrOF1q7rjXOgz6xz0aukvg8qttGvQIhAIzUMhO7kzU2DYCO+cU7hPS4zaUTBcLADGntkNDJCQez","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":91872},"type":"module","_from":"file:M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App2\\temp\\a25a5624-64da-4e3e-806a-8c59e2fc2aa0\\microsoft-webui-framework-0.0.5.tgz","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}}},"scripts":{"test":"pnpm test:unit && pnpm test:e2e","build":"find src -name '*.ts' ! -name '*.test.ts' | xargs esbuild --outdir=dist --outbase=src --format=esm --platform=browser && tsc --emitDeclarationOnly","test:e2e":"pnpm typecheck:e2e && pnpm build:e2e && playwright test","build:e2e":"pnpm build:e2e:scripts","test:unit":"esbuild \"src/**/*.test.ts\" --bundle --outdir=dist/tests --outbase=src --format=esm --platform=node --target=es2022 && node --test \"dist/tests/**/*.test.js\"","typecheck":"tsc --noEmit","typecheck:e2e":"tsc -p tsconfig.test.json --noEmit","build:e2e:scripts":"esbuild ./tests/server.ts --bundle --external:esbuild --outdir=tests/dist --format=esm --platform=node --target=es2022","test:update-snapshots":"pnpm test:e2e:update-snapshots","test:e2e:update-snapshots":"pnpm typecheck:e2e && pnpm build:e2e && playwright test --update-snapshots"},"_npmUser":{"name":"microsoft1es","email":"npmjs@microsoft.com"},"_resolved":"M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App2\\temp\\a25a5624-64da-4e3e-806a-8c59e2fc2aa0\\microsoft-webui-framework-0.0.5.tgz","_integrity":"sha512-gu0rxcrcX6Im5pHcWwzzFcMoeqygImCMBne+Htm7zatXauRuzkx98yggN2KSWWRoX5O0TyWp+0SDlyJPR2rQXQ==","description":"WebUI Framework Next — Preact-inspired lightweight Web Component runtime with SSR hydration. 15KB minified, compiled-template path mapping, no hydration markers.","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","@microsoft/webui-test-support":"0.0.5"},"_npmOperationalInternal":{"tmp":"tmp/webui-framework_0.0.5_1775751291592_0.048411193198558466","host":"s3://npm-registry-packages-npm-production"}},"0.0.6":{"name":"@microsoft/webui-framework","version":"0.0.6","license":"MIT","_id":"@microsoft/webui-framework@0.0.6","maintainers":[{"name":"microsoft1es","email":"npmjs@microsoft.com"},{"name":"microsoft-oss-releases","email":"microsoft-oss-publishing@microsoft.com"}],"dist":{"shasum":"eebefe036c3ebd834581c165149fe4d138e4507d","tarball":"https://registry.npmjs.org/@microsoft/webui-framework/-/webui-framework-0.0.6.tgz","fileCount":23,"integrity":"sha512-JmAMtg79zHuKeUG+lxxmxZTEM1NOXELYfRoIaEBTYHvdi5enZ0I7k3ADJmVpI5+TK6A1ohWxplU1FjJF00e1RQ==","signatures":[{"sig":"MEQCIFt9NXkWy1Rdt2Nr+HguzRGG5P1lqju5YhpbPYBpBx9nAiB9TFedrjaQ6WH8PX/ZEbNDyAZRakQWwDXMvq0OSV1ACw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":91872},"type":"module","_from":"file:M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App2\\temp\\8533248b-0ddc-4de5-94d9-cf3efc6ecb71\\microsoft-webui-framework-0.0.6.tgz","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}}},"scripts":{"test":"pnpm test:unit && pnpm test:e2e","build":"find src -name '*.ts' ! -name '*.test.ts' | xargs esbuild --outdir=dist --outbase=src --format=esm --platform=browser && tsc --emitDeclarationOnly","test:e2e":"pnpm typecheck:e2e && pnpm build:e2e && playwright test","build:e2e":"pnpm build:e2e:scripts","test:unit":"esbuild \"src/**/*.test.ts\" --bundle --outdir=dist/tests --outbase=src --format=esm --platform=node --target=es2022 && node --test \"dist/tests/**/*.test.js\"","typecheck":"tsc --noEmit","typecheck:e2e":"tsc -p tsconfig.test.json --noEmit","build:e2e:scripts":"esbuild ./tests/server.ts --bundle --external:esbuild --outdir=tests/dist --format=esm --platform=node --target=es2022","test:update-snapshots":"pnpm test:e2e:update-snapshots","test:e2e:update-snapshots":"pnpm typecheck:e2e && pnpm build:e2e && playwright test --update-snapshots"},"_npmUser":{"name":"microsoft1es","email":"npmjs@microsoft.com"},"_resolved":"M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App2\\temp\\8533248b-0ddc-4de5-94d9-cf3efc6ecb71\\microsoft-webui-framework-0.0.6.tgz","_integrity":"sha512-JmAMtg79zHuKeUG+lxxmxZTEM1NOXELYfRoIaEBTYHvdi5enZ0I7k3ADJmVpI5+TK6A1ohWxplU1FjJF00e1RQ==","description":"WebUI Framework Next — Preact-inspired lightweight Web Component runtime with SSR hydration. 15KB minified, compiled-template path mapping, no hydration markers.","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","@microsoft/webui-test-support":"0.0.6"},"_npmOperationalInternal":{"tmp":"tmp/webui-framework_0.0.6_1775777855830_0.44872255434321917","host":"s3://npm-registry-packages-npm-production"}},"0.0.7":{"name":"@microsoft/webui-framework","version":"0.0.7","license":"MIT","_id":"@microsoft/webui-framework@0.0.7","maintainers":[{"name":"microsoft1es","email":"npmjs@microsoft.com"},{"name":"microsoft-oss-releases","email":"microsoft-oss-publishing@microsoft.com"}],"dist":{"shasum":"52ca348bc4803c9256ec5424737202435d075af6","tarball":"https://registry.npmjs.org/@microsoft/webui-framework/-/webui-framework-0.0.7.tgz","fileCount":23,"integrity":"sha512-TRj85Oi8xLgokVWW2j01NKLBEYgzBId351qtNfkNibSVUmf6wvYCeSE8vC0h6SY00dpud2z30tik3ajIfExJBQ==","signatures":[{"sig":"MEYCIQDu13oWjq+wnIlUMfa/6qY7nlgYlsJpffpWk9RfCu+YywIhAKxGIELgHQwv2CWfhh3wf1Uj+GAeIPHtgwl2VNCWAN5J","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":124064},"type":"module","_from":"file:M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App2\\temp\\1beee874-cdce-442a-9cc7-46573a1d9b78\\microsoft-webui-framework-0.0.7.tgz","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}}},"scripts":{"test":"pnpm test:unit && pnpm test:e2e","build":"tsc","test:e2e":"pnpm typecheck:e2e && playwright test","test:unit":"tsc -p tsconfig.unit-test.json && node --test \"dist/**/*.test.js\"","typecheck":"tsc --noEmit","typecheck:e2e":"tsc -p tsconfig.test.json --noEmit","test:update-snapshots":"pnpm test:e2e:update-snapshots","test:e2e:update-snapshots":"pnpm typecheck:e2e && playwright test --update-snapshots"},"_npmUser":{"name":"microsoft1es","email":"npmjs@microsoft.com"},"_resolved":"M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App2\\temp\\1beee874-cdce-442a-9cc7-46573a1d9b78\\microsoft-webui-framework-0.0.7.tgz","_integrity":"sha512-TRj85Oi8xLgokVWW2j01NKLBEYgzBId351qtNfkNibSVUmf6wvYCeSE8vC0h6SY00dpud2z30tik3ajIfExJBQ==","description":"WebUI Framework Next — Preact-inspired lightweight Web Component runtime with SSR hydration. 15KB minified, compiled-template path mapping, no hydration markers.","directories":{},"_nodeVersion":"18.5.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^25.3.5","@playwright/test":"^1.58.2","@microsoft/webui-test-support":"0.0.7"},"_npmOperationalInternal":{"tmp":"tmp/webui-framework_0.0.7_1775868288543_0.7566343755644824","host":"s3://npm-registry-packages-npm-production"}},"0.0.8":{"name":"@microsoft/webui-framework","version":"0.0.8","license":"MIT","_id":"@microsoft/webui-framework@0.0.8","maintainers":[{"name":"microsoft1es","email":"npmjs@microsoft.com"},{"name":"microsoft-oss-releases","email":"microsoft-oss-publishing@microsoft.com"}],"dist":{"shasum":"11a50c1f7c7f00cf24097df3ad9cf1816063dedd","tarball":"https://registry.npmjs.org/@microsoft/webui-framework/-/webui-framework-0.0.8.tgz","fileCount":23,"integrity":"sha512-Nn7LwPmCBYrXa4VQHswd0ighnEVf6NDU1UeW6X2mkYJCgVV3ic316hPBMhJJ8CWKxorVLsdZoPQGX8Q1GfN54Q==","signatures":[{"sig":"MEQCIF4dR8lCJCACAj1QxlIcsqlU1oBzO2gu1HYXWuw8Rm8zAiAWTZE/6ekW4PHOKFm55HMUprREMAX1bukkx1hdbamg1g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":125776},"type":"module","_from":"file:M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App2\\temp\\b463c7da-6922-4426-b569-0ffff50ba54d\\microsoft-webui-framework-0.0.8.tgz","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}}},"scripts":{"test":"pnpm test:unit && pnpm test:e2e","build":"tsc","test:e2e":"pnpm typecheck:e2e && playwright test","test:unit":"tsc -p tsconfig.unit-test.json && node --test \"dist/**/*.test.js\"","typecheck":"tsc --noEmit","typecheck:e2e":"tsc -p tsconfig.test.json --noEmit","test:update-snapshots":"pnpm test:e2e:update-snapshots","test:e2e:update-snapshots":"pnpm typecheck:e2e && 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-framework-0.0.8.tgz","_integrity":"sha512-Nn7LwPmCBYrXa4VQHswd0ighnEVf6NDU1UeW6X2mkYJCgVV3ic316hPBMhJJ8CWKxorVLsdZoPQGX8Q1GfN54Q==","description":"WebUI Framework Next — Preact-inspired lightweight Web Component runtime with SSR hydration. 15KB minified, compiled-template path mapping, no hydration markers.","directories":{},"_nodeVersion":"18.5.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^25.3.5","@playwright/test":"^1.58.2","@microsoft/webui-test-support":"0.0.8"},"_npmOperationalInternal":{"tmp":"tmp/webui-framework_0.0.8_1776142981650_0.5553871349423902","host":"s3://npm-registry-packages-npm-production"}},"0.0.9":{"name":"@microsoft/webui-framework","version":"0.0.9","license":"MIT","_id":"@microsoft/webui-framework@0.0.9","maintainers":[{"name":"microsoft1es","email":"npmjs@microsoft.com"},{"name":"microsoft-oss-releases","email":"microsoft-oss-publishing@microsoft.com"}],"dist":{"shasum":"c0d852e60b06acad68324871e9fd89e6d168abec","tarball":"https://registry.npmjs.org/@microsoft/webui-framework/-/webui-framework-0.0.9.tgz","fileCount":23,"integrity":"sha512-iwaCwfGhT1Uyacx883AgvlF66sLzcEkTZjNC/AdCsvoZefroEh2R6Q5G3Pe6RP4nycS7TboYhwwpQO+2NusiSw==","signatures":[{"sig":"MEUCIBKSa61WL1F7wmYyX7Gcxa3nwmOHB75Ls7dhC39nq+5jAiEAmbkfImc1aGKLhGrIj+xUX1akTzEgOqpzVNsD7KbXvkY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":128321},"type":"module","_from":"file:M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App2\\temp\\9be65ab6-25ec-4231-92ce-5c0ec59cd573\\microsoft-webui-framework-0.0.9.tgz","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}}},"scripts":{"test":"pnpm test:unit && pnpm test:e2e","build":"tsc","test:e2e":"pnpm typecheck:e2e && playwright test","test:unit":"tsc -p tsconfig.unit-test.json && node --test \"dist/**/*.test.js\"","typecheck":"tsc --noEmit","typecheck:e2e":"tsc -p tsconfig.test.json --noEmit","test:update-snapshots":"pnpm test:e2e:update-snapshots","test:e2e:update-snapshots":"pnpm typecheck:e2e && 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-framework-0.0.9.tgz","_integrity":"sha512-iwaCwfGhT1Uyacx883AgvlF66sLzcEkTZjNC/AdCsvoZefroEh2R6Q5G3Pe6RP4nycS7TboYhwwpQO+2NusiSw==","description":"WebUI Framework Next — Preact-inspired lightweight Web Component runtime with SSR hydration. 15KB minified, compiled-template path mapping, no hydration markers.","directories":{},"_nodeVersion":"18.5.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^25.3.5","@playwright/test":"^1.58.2","@microsoft/webui-test-support":"0.0.9"},"_npmOperationalInternal":{"tmp":"tmp/webui-framework_0.0.9_1776377627874_0.3258793322951168","host":"s3://npm-registry-packages-npm-production"}},"0.0.10":{"name":"@microsoft/webui-framework","version":"0.0.10","license":"MIT","_id":"@microsoft/webui-framework@0.0.10","maintainers":[{"name":"microsoft1es","email":"npmjs@microsoft.com"},{"name":"microsoft-oss-releases","email":"microsoft-oss-publishing@microsoft.com"}],"dist":{"shasum":"53e2323d330aab86dd633e1b9398e1caa5365895","tarball":"https://registry.npmjs.org/@microsoft/webui-framework/-/webui-framework-0.0.10.tgz","fileCount":23,"integrity":"sha512-VLVJu2hMXKvllaee8Rb0A+0bYfZrKepEVyIQJtKSpNpbpNUoK2UcDaZjGQvAgcOL80OXu6Kg6FAwevnqzTGV8g==","signatures":[{"sig":"MEQCIFwOUOEaOYDqT/ePliCjs1gtHtZm23ZIGd4FHLslgzwuAiAHLLkNv7E/KUno2ZCHaKqHFtFIVoVguYEXocDnj8JVOw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":130813},"type":"module","_from":"file:M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App2\\temp\\04381528-0404-4604-b60d-580ba0ac9602\\microsoft-webui-framework-0.0.10.tgz","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}}},"scripts":{"test":"pnpm test:unit && pnpm test:e2e","build":"tsc","test:e2e":"pnpm typecheck:e2e && playwright test","test:unit":"tsc -p tsconfig.unit-test.json && node --test \"dist/**/*.test.js\"","typecheck":"tsc --noEmit","typecheck:e2e":"tsc -p tsconfig.test.json --noEmit","test:update-snapshots":"pnpm test:e2e:update-snapshots","test:e2e:update-snapshots":"pnpm typecheck:e2e && 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-framework-0.0.10.tgz","_integrity":"sha512-VLVJu2hMXKvllaee8Rb0A+0bYfZrKepEVyIQJtKSpNpbpNUoK2UcDaZjGQvAgcOL80OXu6Kg6FAwevnqzTGV8g==","description":"WebUI Framework Next — Preact-inspired lightweight Web Component runtime with SSR hydration. 15KB minified, compiled-template path mapping, no hydration markers.","directories":{},"_nodeVersion":"18.5.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^25.3.5","@playwright/test":"^1.58.2","@microsoft/webui-test-support":"0.0.10"},"_npmOperationalInternal":{"tmp":"tmp/webui-framework_0.0.10_1776460054468_0.08692742985155988","host":"s3://npm-registry-packages-npm-production"}},"0.0.11":{"name":"@microsoft/webui-framework","version":"0.0.11","license":"MIT","_id":"@microsoft/webui-framework@0.0.11","maintainers":[{"name":"microsoft1es","email":"npmjs@microsoft.com"},{"name":"microsoft-oss-releases","email":"microsoft-oss-publishing@microsoft.com"}],"dist":{"shasum":"3f6a96cab44143de8278ffcdc146d401c1834429","tarball":"https://registry.npmjs.org/@microsoft/webui-framework/-/webui-framework-0.0.11.tgz","fileCount":23,"integrity":"sha512-5RnYvpZXeb4o0FbTlIoRw1Ya7KHzz9b1XxOYHixGw43HeCIzBdmboM57oJs5HIA0Kf/ZM/Avn9mM8gcrV438iQ==","signatures":[{"sig":"MEQCIEPmXZSjdrr2BdFhjtMDbOaDqorn1Ko+7kKjS6uMuEvuAiBNPBeTqQw9ZPKMoGEkGNcF6sOCOQ1hqoJwYKzX/fnv9A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":132768},"type":"module","_from":"file:M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App2\\temp\\0168c1cc-26a7-46d7-93a4-6b64935d26c5\\microsoft-webui-framework-0.0.11.tgz","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}}},"scripts":{"test":"pnpm test:unit && pnpm test:e2e","build":"tsc","test:e2e":"pnpm typecheck:e2e && playwright test","test:unit":"tsc -p tsconfig.unit-test.json && node --test \"dist/**/*.test.js\"","typecheck":"tsc --noEmit","typecheck:e2e":"tsc -p tsconfig.test.json --noEmit","test:update-snapshots":"pnpm test:e2e:update-snapshots","test:e2e:update-snapshots":"pnpm typecheck:e2e && 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-framework-0.0.11.tgz","_integrity":"sha512-5RnYvpZXeb4o0FbTlIoRw1Ya7KHzz9b1XxOYHixGw43HeCIzBdmboM57oJs5HIA0Kf/ZM/Avn9mM8gcrV438iQ==","description":"WebUI Framework Next — Preact-inspired lightweight Web Component runtime with SSR hydration. 15KB minified, compiled-template path mapping, no hydration markers.","directories":{},"_nodeVersion":"18.5.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^25.3.5","@playwright/test":"^1.58.2","@microsoft/webui-test-support":"0.0.11"},"_npmOperationalInternal":{"tmp":"tmp/webui-framework_0.0.11_1777414697109_0.7000965036964071","host":"s3://npm-registry-packages-npm-production"}},"0.0.12":{"name":"@microsoft/webui-framework","version":"0.0.12","license":"MIT","_id":"@microsoft/webui-framework@0.0.12","maintainers":[{"name":"microsoft1es","email":"npmjs@microsoft.com"},{"name":"microsoft-oss-releases","email":"microsoft-oss-publishing@microsoft.com"}],"dist":{"shasum":"cad643a70b48fafc5d796ad27d5dc1b66a1fd855","tarball":"https://registry.npmjs.org/@microsoft/webui-framework/-/webui-framework-0.0.12.tgz","fileCount":23,"integrity":"sha512-ThMCRrKNwUpaslrXWbjBjk2MoHQi+Al0uf+bHztpzeLFdG+0WUuLvFf3cu54eu99pbc+l0Ui+i79occBEXuRuQ==","signatures":[{"sig":"MEUCIQDq4PVpTw1iaHxdr708oMEv0xNyoX3tifIm94/PR3Hd1wIgejFoRvrWtQHQkOzFM7iWIl+t2pKLBUjSteSxwXgXPvQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":132768},"type":"module","_from":"file:M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App2\\temp\\467aa16b-bc7d-4a76-a8bb-81459dc1b85f\\microsoft-webui-framework-0.0.12.tgz","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}}},"scripts":{"test":"pnpm test:unit && pnpm test:e2e","build":"tsc","test:e2e":"pnpm typecheck:e2e && playwright test","test:unit":"tsc -p tsconfig.unit-test.json && node --test \"dist/**/*.test.js\"","typecheck":"tsc --noEmit","typecheck:e2e":"tsc -p tsconfig.test.json --noEmit","test:update-snapshots":"pnpm test:e2e:update-snapshots","test:e2e:update-snapshots":"pnpm typecheck:e2e && 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-framework-0.0.12.tgz","_integrity":"sha512-ThMCRrKNwUpaslrXWbjBjk2MoHQi+Al0uf+bHztpzeLFdG+0WUuLvFf3cu54eu99pbc+l0Ui+i79occBEXuRuQ==","description":"WebUI Framework Next — Preact-inspired lightweight Web Component runtime with SSR hydration. 15KB minified, compiled-template path mapping, no hydration markers.","directories":{},"_nodeVersion":"18.5.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^25.3.5","@playwright/test":"^1.58.2","@microsoft/webui-test-support":"0.0.12"},"_npmOperationalInternal":{"tmp":"tmp/webui-framework_0.0.12_1777664835329_0.03574627139590425","host":"s3://npm-registry-packages-npm-production"}},"0.0.13":{"name":"@microsoft/webui-framework","version":"0.0.13","license":"MIT","_id":"@microsoft/webui-framework@0.0.13","maintainers":[{"name":"microsoft1es","email":"npmjs@microsoft.com"},{"name":"microsoft-oss-releases","email":"microsoft-oss-publishing@microsoft.com"}],"dist":{"shasum":"e71ce3f9d27685004ff8c118feca766d79af3a26","tarball":"https://registry.npmjs.org/@microsoft/webui-framework/-/webui-framework-0.0.13.tgz","fileCount":23,"integrity":"sha512-RtQjHnryB/OAUnWluEnjzPEGuEQ8CKPqNsn+Tf0HQiBwJkhIB7eAIQQSZ7RppgvKKSvUXTZ9LtqU3gLm1L/78g==","signatures":[{"sig":"MEUCIFd2VHCAJ06fEWXlKdtnrL9VKl4mWx0cqE7bx1LYGbZQAiEA8rWIUbAqZWHU8C/078CrrHVyU3ryNCwiVf1O2jnse0E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":140838},"type":"module","_from":"file:M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App1\\temp\\f7fa8be8-c517-4215-9d7d-a8831fd6e294\\microsoft-webui-framework-0.0.13.tgz","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}}},"scripts":{"test":"pnpm test:unit && pnpm test:e2e","build":"tsc","test:e2e":"pnpm typecheck:e2e && playwright test","test:unit":"tsc -p tsconfig.unit-test.json && node --test \"dist/**/*.test.js\"","typecheck":"tsc --noEmit","typecheck:e2e":"tsc -p tsconfig.test.json --noEmit","test:update-snapshots":"pnpm test:e2e:update-snapshots","test:e2e:update-snapshots":"pnpm typecheck:e2e && 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-framework-0.0.13.tgz","_integrity":"sha512-RtQjHnryB/OAUnWluEnjzPEGuEQ8CKPqNsn+Tf0HQiBwJkhIB7eAIQQSZ7RppgvKKSvUXTZ9LtqU3gLm1L/78g==","description":"WebUI Framework Next — Preact-inspired lightweight Web Component runtime with SSR hydration. 15KB minified, compiled-template path mapping, no hydration markers.","directories":{},"_nodeVersion":"18.5.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^25.3.5","@playwright/test":"^1.58.2","@microsoft/webui-test-support":"0.0.13"},"_npmOperationalInternal":{"tmp":"tmp/webui-framework_0.0.13_1779843018196_0.1969632679129576","host":"s3://npm-registry-packages-npm-production"}},"0.0.14":{"name":"@microsoft/webui-framework","version":"0.0.14","license":"MIT","_id":"@microsoft/webui-framework@0.0.14","maintainers":[{"name":"microsoft1es","email":"npmjs@microsoft.com"},{"name":"microsoft-oss-releases","email":"microsoft-oss-publishing@microsoft.com"}],"dist":{"shasum":"72e7ec29df96818986e00f42ab3f3bbee879dab1","tarball":"https://registry.npmjs.org/@microsoft/webui-framework/-/webui-framework-0.0.14.tgz","fileCount":23,"integrity":"sha512-t+3FeDBoslneFihvx4WoM6KyZv8eS3LGcY1i/YYccDmd1JahrHJIEPaMDWFrqjS/DVSIqw+N4AttWO93deVDsg==","signatures":[{"sig":"MEQCIAsnUWDU/1Xl4ZjOzUmYU5WeaXKJGrV8yTspt6zKlrCxAiA3/clAlQCGJJFPOHF+mlhXlTOSM68CScmAqeJ0JROmkQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":140838},"type":"module","_from":"file:M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App1\\temp\\c955dcc0-102f-4608-b372-be849ac578b1\\microsoft-webui-framework-0.0.14.tgz","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}}},"scripts":{"test":"pnpm test:unit && pnpm test:e2e","build":"tsc","test:e2e":"pnpm typecheck:e2e && playwright test","test:unit":"tsc -p tsconfig.unit-test.json && node --test \"dist/**/*.test.js\"","typecheck":"tsc --noEmit","typecheck:e2e":"tsc -p tsconfig.test.json --noEmit","test:update-snapshots":"pnpm test:e2e:update-snapshots","test:e2e:update-snapshots":"pnpm typecheck:e2e && 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-framework-0.0.14.tgz","_integrity":"sha512-t+3FeDBoslneFihvx4WoM6KyZv8eS3LGcY1i/YYccDmd1JahrHJIEPaMDWFrqjS/DVSIqw+N4AttWO93deVDsg==","description":"WebUI Framework Next — Preact-inspired lightweight Web Component runtime with SSR hydration. 15KB minified, compiled-template path mapping, no hydration markers.","directories":{},"_nodeVersion":"18.5.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^25.3.5","@playwright/test":"^1.58.2","@microsoft/webui-test-support":"0.0.14"},"_npmOperationalInternal":{"tmp":"tmp/webui-framework_0.0.14_1779921171300_0.5372505754837626","host":"s3://npm-registry-packages-npm-production"}},"0.0.15":{"name":"@microsoft/webui-framework","version":"0.0.15","license":"MIT","_id":"@microsoft/webui-framework@0.0.15","maintainers":[{"name":"microsoft1es","email":"npmjs@microsoft.com"},{"name":"microsoft-oss-releases","email":"microsoft-oss-publishing@microsoft.com"}],"dist":{"shasum":"aae6547ce71741283ca596edf8406043cf78c968","tarball":"https://registry.npmjs.org/@microsoft/webui-framework/-/webui-framework-0.0.15.tgz","fileCount":23,"integrity":"sha512-qsQiQJrTrVUxb3CflZolNsBBDrQFMEAemoByqQM2W2MaeNJGDZzb5wy4TkLJsBCzCE0hvOv84zpQTPIJsdwsYA==","signatures":[{"sig":"MEUCIQCAnaxMAyFMYxY92CbIcsSnfe2zEF4dba7uPIKy9MkfjAIgdNnBNbTBG0+2TtWU4c+mi+elV5VRXxDat1O+euMDCrE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":143852},"type":"module","_from":"file:M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App2\\temp\\26514fcb-e5a2-4b68-86d3-962d5fc76eaa\\microsoft-webui-framework-0.0.15.tgz","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}}},"scripts":{"test":"pnpm test:unit && pnpm test:e2e","build":"tsc","test:e2e":"pnpm typecheck:e2e && playwright test","test:unit":"tsc -p tsconfig.unit-test.json && node --test \"dist/**/*.test.js\"","typecheck":"tsc --noEmit","typecheck:e2e":"tsc -p tsconfig.test.json --noEmit","test:update-snapshots":"pnpm test:e2e:update-snapshots","test:e2e:update-snapshots":"pnpm typecheck:e2e && 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-framework-0.0.15.tgz","_integrity":"sha512-qsQiQJrTrVUxb3CflZolNsBBDrQFMEAemoByqQM2W2MaeNJGDZzb5wy4TkLJsBCzCE0hvOv84zpQTPIJsdwsYA==","description":"WebUI Framework Next — Preact-inspired lightweight Web Component runtime with SSR hydration. 15KB minified, compiled-template path mapping, no hydration markers.","directories":{},"_nodeVersion":"18.5.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^25.3.5","@playwright/test":"^1.58.2","@microsoft/webui-test-support":"0.0.15"},"_npmOperationalInternal":{"tmp":"tmp/webui-framework_0.0.15_1780949452301_0.17923821195709033","host":"s3://npm-registry-packages-npm-production"}},"0.0.16":{"name":"@microsoft/webui-framework","version":"0.0.16","license":"MIT","_id":"@microsoft/webui-framework@0.0.16","maintainers":[{"name":"microsoft1es","email":"npmjs@microsoft.com"},{"name":"microsoft-oss-releases","email":"microsoft-oss-publishing@microsoft.com"}],"dist":{"shasum":"05bac77a3af012c33389569217e83be3cd7d1a77","tarball":"https://registry.npmjs.org/@microsoft/webui-framework/-/webui-framework-0.0.16.tgz","fileCount":23,"integrity":"sha512-3QgLiWu2AB8chD/Lfa7Eq7tDYOba0D4yZhNO+Z0FYmqb8UZqEoJy1eTItMPcby4kvu2oZs99aTpR4FquJB6c9Q==","signatures":[{"sig":"MEUCIQClkPQsr687XhCoT7hLjsrE3Ux/ZpnLrMbBE/mIn2xFmwIgZ6+Dffnvc0+dxHxmbP5wM4XQNHOYtZCKI8JVFO2Cpf0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":147208},"type":"module","_from":"file:M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App1\\temp\\f6c2db40-2402-4be3-8fb3-45e713705757\\microsoft-webui-framework-0.0.16.tgz","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}}},"scripts":{"test":"pnpm test:unit && pnpm test:e2e","build":"tsc","test:e2e":"pnpm typecheck:e2e && playwright test","test:unit":"tsc -p tsconfig.unit-test.json && node --test \"dist/**/*.test.js\"","typecheck":"tsc --noEmit","typecheck:e2e":"tsc -p tsconfig.test.json --noEmit","test:update-snapshots":"pnpm test:e2e:update-snapshots","test:e2e:update-snapshots":"pnpm typecheck:e2e && 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-framework-0.0.16.tgz","_integrity":"sha512-3QgLiWu2AB8chD/Lfa7Eq7tDYOba0D4yZhNO+Z0FYmqb8UZqEoJy1eTItMPcby4kvu2oZs99aTpR4FquJB6c9Q==","description":"WebUI Framework Next — Preact-inspired lightweight Web Component runtime with SSR hydration. 15KB minified, compiled-template path mapping, no hydration markers.","directories":{},"_nodeVersion":"18.5.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^25.3.5","@playwright/test":"^1.58.2","@microsoft/webui-test-support":"0.0.16"},"_npmOperationalInternal":{"tmp":"tmp/webui-framework_0.0.16_1781745027428_0.6587510683996991","host":"s3://npm-registry-packages-npm-production"}},"0.0.17":{"name":"@microsoft/webui-framework","version":"0.0.17","license":"MIT","_id":"@microsoft/webui-framework@0.0.17","maintainers":[{"name":"microsoft1es","email":"npmjs@microsoft.com"},{"name":"microsoft-oss-releases","email":"microsoft-oss-publishing@microsoft.com"}],"dist":{"shasum":"40e89ede7bd48d4e8cc7b6a7ae7f5a750e194fbd","tarball":"https://registry.npmjs.org/@microsoft/webui-framework/-/webui-framework-0.0.17.tgz","fileCount":23,"integrity":"sha512-ZeAmsRhBf4XX3Koc3P5PQ4nVYAKFYjzkLzY9/Mt0VStTyjchaAYG/F+GvLOddMGizMr7gDK9S6oX1yUIwT5w/g==","signatures":[{"sig":"MEUCIQDVdgpXyrQINUD+dq9mq0wQBJVFTR46/7FYbJgt8bM1mAIgGMQJfmaV2pGAteJxu2ycfLFcbHI8dy8D7V/dIGUlI5g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":147208},"type":"module","_from":"file:M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App1\\temp\\fd53aeaf-eed8-4966-b3fd-d727c3585afa\\microsoft-webui-framework-0.0.17.tgz","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}}},"scripts":{"test":"pnpm test:unit && pnpm test:e2e","build":"tsc","test:e2e":"pnpm typecheck:e2e && playwright test","test:unit":"tsc -p tsconfig.unit-test.json && node --test \"dist/**/*.test.js\"","typecheck":"tsc --noEmit","typecheck:e2e":"tsc -p tsconfig.test.json --noEmit","test:update-snapshots":"pnpm test:e2e:update-snapshots","test:e2e:update-snapshots":"pnpm typecheck:e2e && 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-framework-0.0.17.tgz","_integrity":"sha512-ZeAmsRhBf4XX3Koc3P5PQ4nVYAKFYjzkLzY9/Mt0VStTyjchaAYG/F+GvLOddMGizMr7gDK9S6oX1yUIwT5w/g==","description":"WebUI Framework Next — Preact-inspired lightweight Web Component runtime with SSR hydration. 15KB minified, compiled-template path mapping, no hydration markers.","directories":{},"_nodeVersion":"18.5.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^25.3.5","@playwright/test":"^1.58.2","@microsoft/webui-test-support":"0.0.17"},"_npmOperationalInternal":{"tmp":"tmp/webui-framework_0.0.17_1782156944703_0.6854663782415307","host":"s3://npm-registry-packages-npm-production"}},"0.0.18":{"name":"@microsoft/webui-framework","version":"0.0.18","license":"MIT","_id":"@microsoft/webui-framework@0.0.18","maintainers":[{"name":"microsoft1es","email":"npmjs@microsoft.com"},{"name":"microsoft-oss-releases","email":"microsoft-oss-publishing@microsoft.com"}],"dist":{"shasum":"6aacccf93ca8c168958aa338a915508dc7456d8d","tarball":"https://registry.npmjs.org/@microsoft/webui-framework/-/webui-framework-0.0.18.tgz","fileCount":35,"integrity":"sha512-AmUlRiNfthISC5jXjiliun3kkILW04HrkwHxKxLTkNKkob+Fkud5eI/fvxpifDf9a6nW6506Ft+RvB9mYNOYKQ==","signatures":[{"sig":"MEQCIC6SBsSVN/U6wr0jtvu9ABE5x47q9G1D05RmV7jnRrjRAiAfyKVMJeQ7aoEq6VG2wGYoTHEBKzkRlRASUnAwnoYSKw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":134602},"type":"module","_from":"file:M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App1\\temp\\49244006-c5a3-4694-83de-5afbd9a19dc8\\microsoft-webui-framework-0.0.18.tgz","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./component-asset.js":{"import":{"types":"./dist/component-asset.d.ts","default":"./dist/component-asset.js"}}},"scripts":{"test":"pnpm test:unit && pnpm test:e2e","build":"tsc","test:e2e":"pnpm typecheck:e2e && playwright test","test:unit":"tsc -p tsconfig.unit-test.json && node --test \"dist/**/*.test.js\"","typecheck":"tsc --noEmit","typecheck:e2e":"tsc -p tsconfig.test.json --noEmit","test:update-snapshots":"pnpm test:e2e:update-snapshots","test:e2e:update-snapshots":"pnpm typecheck:e2e && 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-framework-0.0.18.tgz","_integrity":"sha512-AmUlRiNfthISC5jXjiliun3kkILW04HrkwHxKxLTkNKkob+Fkud5eI/fvxpifDf9a6nW6506Ft+RvB9mYNOYKQ==","description":"WebUI Framework Next — Preact-inspired lightweight Web Component runtime with SSR hydration. 15KB minified, compiled-template path mapping, no hydration markers.","directories":{},"_nodeVersion":"18.5.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^26.1.0","@playwright/test":"^1.61.1","@microsoft/webui-test-support":"0.0.18"},"_npmOperationalInternal":{"tmp":"tmp/webui-framework_0.0.18_1783482168778_0.05260283439956148","host":"s3://npm-registry-packages-npm-production"}},"0.0.19":{"name":"@microsoft/webui-framework","version":"0.0.19","license":"MIT","_id":"@microsoft/webui-framework@0.0.19","maintainers":[{"name":"microsoft1es","email":"npmjs@microsoft.com"},{"name":"microsoft-oss-releases","email":"microsoft-oss-publishing@microsoft.com"}],"dist":{"shasum":"a0cbeb4493805801c73f3a866e943f343e99d029","tarball":"https://registry.npmjs.org/@microsoft/webui-framework/-/webui-framework-0.0.19.tgz","fileCount":35,"integrity":"sha512-fxFp79bKsfsUHC7qw2XkKIZCxgNUll/FUGmhStTpNjXxex+fUjhVe9diuBPzCfCU6T+4Jm6SET3xSYvfo/CyvQ==","signatures":[{"sig":"MEYCIQDLOw2BxdniP2SJK0q/QT6jTJuU+6GrcTwqWwzF2A9bLgIhALUwlHsKu91KtZaGXJzI/Lw/oNtQdPCAdh79bPa03P2R","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":146054},"type":"module","_from":"file:M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App1\\temp\\942494c2-4fb2-4d18-a238-e031d174fe21\\microsoft-webui-framework-0.0.19.tgz","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./component-asset.js":{"import":{"types":"./dist/component-asset.d.ts","default":"./dist/component-asset.js"}}},"scripts":{"test":"pnpm test:unit && pnpm test:e2e","build":"tsc","test:e2e":"pnpm typecheck:e2e && playwright test","test:unit":"tsc -p tsconfig.unit-test.json && node --test \"dist/**/*.test.js\"","typecheck":"tsc --noEmit","typecheck:e2e":"tsc -p tsconfig.test.json --noEmit","test:update-snapshots":"pnpm test:e2e:update-snapshots","test:e2e:update-snapshots":"pnpm typecheck:e2e && 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-framework-0.0.19.tgz","_integrity":"sha512-fxFp79bKsfsUHC7qw2XkKIZCxgNUll/FUGmhStTpNjXxex+fUjhVe9diuBPzCfCU6T+4Jm6SET3xSYvfo/CyvQ==","description":"WebUI Framework Next — Preact-inspired lightweight Web Component runtime with SSR hydration. 15KB minified, compiled-template path mapping, no hydration markers.","directories":{},"_nodeVersion":"18.5.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^26.1.0","@playwright/test":"^1.61.1","@microsoft/webui-test-support":"0.0.19"},"_npmOperationalInternal":{"tmp":"tmp/webui-framework_0.0.19_1784938874516_0.19192327017040522","host":"s3://npm-registry-packages-npm-production"}},"0.0.20":{"name":"@microsoft/webui-framework","version":"0.0.20","license":"MIT","_id":"@microsoft/webui-framework@0.0.20","maintainers":[{"name":"microsoft1es","email":"npmjs@microsoft.com"},{"name":"microsoft-oss-releases","email":"microsoft-oss-publishing@microsoft.com"}],"dist":{"shasum":"fbc29a23c627ea0a236c7fef3317a7ecdb8694b4","tarball":"https://registry.npmjs.org/@microsoft/webui-framework/-/webui-framework-0.0.20.tgz","fileCount":57,"integrity":"sha512-MP8Y+U7OdEwt3XsnAH82Sg/4Y8buQFPmtRdNCXaws7N4Dh9GZgizLRaVQg6O/1GH6DwGpVfBazkgpLAdfOfNaw==","signatures":[{"sig":"MEQCIFZdT7THrr59BWGs3qhvPM20iaPxFr6Y5UhDJ3supnYIAiBhIZ9xiS2ksVPFX+2UjjfvKyFkO9OW3lvBU4VxYId3bA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":194774},"type":"module","_from":"file:M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App1\\temp\\50166976-e101-4dd9-9b9e-6eced629b077\\microsoft-webui-framework-0.0.20.tgz","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./streaming.js":{"import":{"types":"./dist/streaming-entry.d.ts","default":"./dist/streaming-entry.js"}},"./component-asset.js":{"import":{"types":"./dist/component-asset.d.ts","default":"./dist/component-asset.js"}}},"scripts":{"test":"pnpm test:unit && pnpm test:e2e","build":"tsc","test:e2e":"pnpm typecheck:e2e && playwright test","test:unit":"tsc -p tsconfig.unit-test.json && node --test \"dist/**/*.test.js\"","typecheck":"tsc --noEmit","typecheck:e2e":"tsc -p tsconfig.test.json --noEmit","test:update-snapshots":"pnpm test:e2e:update-snapshots","test:e2e:update-snapshots":"pnpm typecheck:e2e && 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-framework-0.0.20.tgz","_integrity":"sha512-MP8Y+U7OdEwt3XsnAH82Sg/4Y8buQFPmtRdNCXaws7N4Dh9GZgizLRaVQg6O/1GH6DwGpVfBazkgpLAdfOfNaw==","description":"WebUI Framework Next — Preact-inspired lightweight Web Component runtime with SSR hydration and compiled-template path mapping.","directories":{},"_nodeVersion":"18.5.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^26.1.0","@playwright/test":"^1.61.1","@microsoft/webui-test-support":"0.0.20"},"_npmOperationalInternal":{"tmp":"tmp/webui-framework_0.0.20_1785550509544_0.19197974134618434","host":"s3://npm-registry-packages-npm-production"}},"0.0.21":{"name":"@microsoft/webui-framework","version":"0.0.21","license":"MIT","_id":"@microsoft/webui-framework@0.0.21","maintainers":[{"name":"microsoft1es","email":"npmjs@microsoft.com"},{"name":"microsoft-oss-releases","email":"microsoft-oss-publishing@microsoft.com"}],"dist":{"shasum":"b1b2f90dbf1653e5b7461b80e192fee4042bde99","tarball":"https://registry.npmjs.org/@microsoft/webui-framework/-/webui-framework-0.0.21.tgz","fileCount":67,"integrity":"sha512-NPxmef4XWTmt0n1Sd+6HXQ1GXPPjz4M02WoN0uJb4CLJi50r0YeZa6Z9ybQgOwexfH7iKH/mL6Vl0cFlbBiy8g==","signatures":[{"sig":"MEUCIQD+NPdAJygaa8xuwdzJh+FVMZqFoUa8hA5K4pmm5H6jnAIgT7TKtTP973sf1BIv2on6s8GRmhmKMqGhaCUSRaJ27/s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":208547},"type":"module","_from":"file:M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App1\\temp\\ae7ee4bf-4680-440e-885f-0c412e294cb1\\microsoft-webui-framework-0.0.21.tgz","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./streaming.js":{"import":{"types":"./dist/streaming-entry.d.ts","default":"./dist/streaming-entry.js"}},"./component-asset.js":{"import":{"types":"./dist/component-asset.d.ts","default":"./dist/component-asset.js"}}},"scripts":{"test":"pnpm test:unit && pnpm test:e2e","build":"tsc","test:e2e":"pnpm typecheck:e2e && playwright test","test:unit":"tsc -p tsconfig.unit-test.json && node --test \"dist/**/*.test.js\"","typecheck":"tsc --noEmit","typecheck:e2e":"tsc -p tsconfig.test.json --noEmit","test:update-snapshots":"pnpm test:e2e:update-snapshots","test:e2e:update-snapshots":"pnpm typecheck:e2e && 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-framework-0.0.21.tgz","_integrity":"sha512-NPxmef4XWTmt0n1Sd+6HXQ1GXPPjz4M02WoN0uJb4CLJi50r0YeZa6Z9ybQgOwexfH7iKH/mL6Vl0cFlbBiy8g==","description":"WebUI Framework Next — Preact-inspired lightweight Web Component runtime with SSR hydration and compiled-template path mapping.","directories":{},"_nodeVersion":"18.5.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^26.1.0","@playwright/test":"^1.61.1","@microsoft/webui-test-support":"0.0.21"},"_npmOperationalInternal":{"tmp":"tmp/webui-framework_0.0.21_1785791998485_0.38684653170704797","host":"s3://npm-registry-packages-npm-production"}},"0.0.22":{"name":"@microsoft/webui-framework","version":"0.0.22","license":"MIT","_id":"@microsoft/webui-framework@0.0.22","maintainers":[{"name":"microsoft1es","email":"npmjs@microsoft.com"},{"name":"microsoft-oss-releases","email":"microsoft-oss-publishing@microsoft.com"}],"dist":{"shasum":"4d5c77d6f28201faca1d2f908c644a798e6bee81","tarball":"https://registry.npmjs.org/@microsoft/webui-framework/-/webui-framework-0.0.22.tgz","fileCount":67,"integrity":"sha512-pUniPwwCUrjJEHumFvWfb1E5ptyabRN2GJImIfT4X3cWn/xlPw+kmaix8Vtq9cyF64yNYc89lpatLGzyx08EYw==","signatures":[{"sig":"MEUCIQDajiLXHO+zYjgZGi3eK6d9ogN2lPf/iSz1C8AbMb2CzgIgR9No9tGdDf9+AA/H1KXL1ojWPe+3mCZO+e33DOG4gik=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":208547},"type":"module","_from":"file:M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App1\\temp\\503e515d-c8c2-400b-bdad-559f31b76486\\microsoft-webui-framework-0.0.22.tgz","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./streaming.js":{"import":{"types":"./dist/streaming-entry.d.ts","default":"./dist/streaming-entry.js"}},"./component-asset.js":{"import":{"types":"./dist/component-asset.d.ts","default":"./dist/component-asset.js"}}},"scripts":{"test":"pnpm test:unit && pnpm test:e2e","build":"tsc","test:e2e":"pnpm typecheck:e2e && playwright test","test:unit":"tsc -p tsconfig.unit-test.json && node --test \"dist/**/*.test.js\"","typecheck":"tsc --noEmit","typecheck:e2e":"tsc -p tsconfig.test.json --noEmit","test:update-snapshots":"pnpm test:e2e:update-snapshots","test:e2e:update-snapshots":"pnpm typecheck:e2e && 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-framework-0.0.22.tgz","_integrity":"sha512-pUniPwwCUrjJEHumFvWfb1E5ptyabRN2GJImIfT4X3cWn/xlPw+kmaix8Vtq9cyF64yNYc89lpatLGzyx08EYw==","description":"WebUI Framework Next — Preact-inspired lightweight Web Component runtime with SSR hydration and compiled-template path mapping.","directories":{},"_nodeVersion":"18.5.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^26.1.0","@playwright/test":"^1.61.1","@microsoft/webui-test-support":"0.0.22"},"_npmOperationalInternal":{"tmp":"tmp/webui-framework_0.0.22_1785870757262_0.1566069351602717","host":"s3://npm-registry-packages-npm-production"}},"0.0.23":{"name":"@microsoft/webui-framework","version":"0.0.23","license":"MIT","_id":"@microsoft/webui-framework@0.0.23","maintainers":[{"name":"microsoft1es","email":"npmjs@microsoft.com"},{"name":"microsoft-oss-releases","email":"microsoft-oss-publishing@microsoft.com"}],"dist":{"shasum":"d6e89a47125f338533babdcaa51e4889487e2b7a","tarball":"https://registry.npmjs.org/@microsoft/webui-framework/-/webui-framework-0.0.23.tgz","fileCount":73,"integrity":"sha512-rt0CNhP7EAE8qwqMPY/27QHGR+IgdEaXtjec90sS4Oyp+S0yNFJ2N07ZtXbKbMomzGeXwM8w68afI5k2L1KF4w==","signatures":[{"sig":"MEQCIAfC8GfeZkHujJm5rz5KDacy/+8aEAR7pFtkNOJrwDokAiAq+ivEB8tgqgPOR3u9CiSzO5Y1fDsJ/YmIh6sxT7Wciw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":247551},"type":"module","_from":"file:M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App1\\temp\\d6f16baf-36e6-473f-8a53-3db4552e32ec\\microsoft-webui-framework-0.0.23.tgz","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./streaming.js":{"import":{"types":"./dist/streaming-entry.d.ts","default":"./dist/streaming-entry.js"}},"./lazy-hydration.js":{"import":{"types":"./dist/lazy-hydration-entry.d.ts","default":"./dist/lazy-hydration-entry.js"}},"./component-asset.js":{"import":{"types":"./dist/component-asset.d.ts","default":"./dist/component-asset.js"}}},"scripts":{"test":"pnpm test:unit && pnpm test:e2e","build":"tsc","test:e2e":"pnpm typecheck:e2e && playwright test","test:unit":"tsc -p tsconfig.unit-test.json && node --test \"dist/**/*.test.js\"","typecheck":"tsc --noEmit","typecheck:e2e":"tsc -p tsconfig.test.json --noEmit","test:update-snapshots":"pnpm test:e2e:update-snapshots","test:e2e:update-snapshots":"pnpm typecheck:e2e && 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-framework-0.0.23.tgz","_integrity":"sha512-rt0CNhP7EAE8qwqMPY/27QHGR+IgdEaXtjec90sS4Oyp+S0yNFJ2N07ZtXbKbMomzGeXwM8w68afI5k2L1KF4w==","description":"WebUI Framework Next — Preact-inspired lightweight Web Component runtime with SSR hydration and compiled-template path mapping.","directories":{},"_nodeVersion":"18.5.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^26.1.0","@playwright/test":"^1.61.1","@microsoft/webui-test-support":"0.0.23"},"_npmOperationalInternal":{"tmp":"tmp/webui-framework_0.0.23_1786421458838_0.5721857337206266","host":"s3://npm-registry-packages-npm-production"}},"0.0.24":{"name":"@microsoft/webui-framework","version":"0.0.24","license":"MIT","_id":"@microsoft/webui-framework@0.0.24","maintainers":[{"name":"microsoft1es","email":"npmjs@microsoft.com"},{"name":"microsoft-oss-releases","email":"microsoft-oss-publishing@microsoft.com"}],"dist":{"shasum":"4a4ab235da13ec5b77f6ea6674b662c0c5357f35","tarball":"https://registry.npmjs.org/@microsoft/webui-framework/-/webui-framework-0.0.24.tgz","fileCount":73,"integrity":"sha512-hVuMz3VtzmOQeFSKaoSIX/WUFiz20OrLUdPTDm2sYelpoA9n4Aq+YVdR3cXsIap+QljygiRGDO4toj+NwrMlzw==","signatures":[{"sig":"MEYCIQCXT1vpPupV1UXmrPltwCLIWX42dkhbogkLcKU4YPL5mwIhAN1RvZ/S7JfwDonJNvcr9Sb1UdqASOtpn+FOCHZ/O5nr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":250609},"type":"module","_from":"file:M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App1\\temp\\f3312b6d-5fc7-43df-a283-f96b13d61860\\microsoft-webui-framework-0.0.24.tgz","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./streaming.js":{"import":{"types":"./dist/streaming-entry.d.ts","default":"./dist/streaming-entry.js"}},"./lazy-hydration.js":{"import":{"types":"./dist/lazy-hydration-entry.d.ts","default":"./dist/lazy-hydration-entry.js"}},"./component-asset.js":{"import":{"types":"./dist/component-asset.d.ts","default":"./dist/component-asset.js"}}},"scripts":{"test":"pnpm test:unit && pnpm test:e2e","build":"tsc","test:e2e":"pnpm typecheck:e2e && playwright test","test:unit":"tsc -p tsconfig.unit-test.json && node --test \"dist/**/*.test.js\"","typecheck":"tsc --noEmit","typecheck:e2e":"tsc -p tsconfig.test.json --noEmit","test:update-snapshots":"pnpm test:e2e:update-snapshots","test:e2e:update-snapshots":"pnpm typecheck:e2e && 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-framework-0.0.24.tgz","_integrity":"sha512-hVuMz3VtzmOQeFSKaoSIX/WUFiz20OrLUdPTDm2sYelpoA9n4Aq+YVdR3cXsIap+QljygiRGDO4toj+NwrMlzw==","description":"WebUI Framework Next — Preact-inspired lightweight Web Component runtime with SSR hydration and compiled-template path mapping.","directories":{},"_nodeVersion":"18.5.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^26.1.0","@playwright/test":"^1.61.1","@microsoft/webui-test-support":"0.0.24"},"_npmOperationalInternal":{"tmp":"tmp/webui-framework_0.0.24_1786650084928_0.12421685384749814","host":"s3://npm-registry-packages-npm-production"}},"0.0.25":{"name":"@microsoft/webui-framework","version":"0.0.25","license":"MIT","_id":"@microsoft/webui-framework@0.0.25","maintainers":[{"name":"microsoft1es","email":"npmjs@microsoft.com"},{"name":"microsoft-oss-releases","email":"microsoft-oss-publishing@microsoft.com"}],"dist":{"shasum":"e83ddc4b7d01eec50d7465efda79f8dbdbceb945","tarball":"https://registry.npmjs.org/@microsoft/webui-framework/-/webui-framework-0.0.25.tgz","fileCount":73,"integrity":"sha512-9IeEG5aR1XihLEKSmQyZ+EwLNSzUgh9PiYKzbooxqltTIMcq5nzodeQC1jw5uuUoTAxGW6zED8ahjdYArDxE5w==","signatures":[{"sig":"MEYCIQCmnwJL5sy0EZ0Oh5UOGPaOX6mSV5jjkBbaX+m9OxAFlwIhANW8p0ah1YIY5hIRNAgkTuxSMApCXj0xk82IYKM3krTn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":250637},"type":"module","_from":"file:M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App1\\temp\\c0a8daec-ee95-4d2d-b755-a3856ba70e7b\\microsoft-webui-framework-0.0.25.tgz","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./streaming.js":{"import":{"types":"./dist/streaming-entry.d.ts","default":"./dist/streaming-entry.js"}},"./lazy-hydration.js":{"import":{"types":"./dist/lazy-hydration-entry.d.ts","default":"./dist/lazy-hydration-entry.js"}},"./component-asset.js":{"import":{"types":"./dist/component-asset.d.ts","default":"./dist/component-asset.js"}}},"scripts":{"test":"pnpm test:unit && pnpm test:e2e","build":"tsc","test:e2e":"pnpm typecheck:e2e && playwright test","test:unit":"tsc -p tsconfig.unit-test.json && node --test \"dist/**/*.test.js\"","typecheck":"tsc --noEmit","typecheck:e2e":"tsc -p tsconfig.test.json --noEmit","test:update-snapshots":"pnpm test:e2e:update-snapshots","test:e2e:update-snapshots":"pnpm typecheck:e2e && 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-framework-0.0.25.tgz","_integrity":"sha512-9IeEG5aR1XihLEKSmQyZ+EwLNSzUgh9PiYKzbooxqltTIMcq5nzodeQC1jw5uuUoTAxGW6zED8ahjdYArDxE5w==","description":"WebUI Framework Next — Preact-inspired lightweight Web Component runtime with SSR hydration and compiled-template path mapping.","directories":{},"_nodeVersion":"18.5.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^26.1.0","@playwright/test":"^1.61.1","@microsoft/webui-test-support":"0.0.25"},"_npmOperationalInternal":{"tmp":"tmp/webui-framework_0.0.25_1786827298784_0.9660052930916803","host":"s3://npm-registry-packages-npm-production"}},"0.0.26":{"name":"@microsoft/webui-framework","version":"0.0.26","license":"MIT","_id":"@microsoft/webui-framework@0.0.26","maintainers":[{"name":"microsoft1es","email":"npmjs@microsoft.com"},{"name":"microsoft-oss-releases","email":"microsoft-oss-publishing@microsoft.com"}],"dist":{"shasum":"9fd63100252406f5f67742459158fd76092ba3d6","tarball":"https://registry.npmjs.org/@microsoft/webui-framework/-/webui-framework-0.0.26.tgz","fileCount":81,"integrity":"sha512-kig6Gy/PgjhiTm7WGzcg+nz4MoXC0OxHGcHsWD8TLw5BKi4xgyNOw4J1zTwzyUyG/aPoiO/vwupFk+GpFFdyJw==","signatures":[{"sig":"MEYCIQCdLm0CZY28lE8gU7Kexv6j35JGBHfJ2xsQmF+DYrq1aAIhAMl2cb4pqWJ5znUVXj/eL6Edb29/Og9c72sklk2DwjZM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":375210},"type":"module","_from":"file:M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App1\\temp\\9d8ee6e1-cf75-437a-8e18-76a7ff98e983\\microsoft-webui-framework-0.0.26.tgz","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./streaming.js":{"import":{"types":"./dist/streaming-entry.d.ts","default":"./dist/streaming-entry.js"}},"./lazy-hydration.js":{"import":{"types":"./dist/lazy-hydration-entry.d.ts","default":"./dist/lazy-hydration-entry.js"}},"./component-asset.js":{"import":{"types":"./dist/component-asset.d.ts","default":"./dist/component-asset.js"}},"./interaction-hydration.js":{"import":{"types":"./dist/interaction-hydration.d.ts","default":"./dist/interaction-hydration.js"}}},"scripts":{"test":"pnpm test:unit && pnpm test:e2e","build":"tsc","test:e2e":"pnpm typecheck:e2e && playwright test","test:unit":"tsc -p tsconfig.unit-test.json && node --test \"dist/**/*.test.js\"","typecheck":"tsc --noEmit","typecheck:e2e":"tsc -p tsconfig.test.json --noEmit","test:update-snapshots":"pnpm test:e2e:update-snapshots","test:e2e:update-snapshots":"pnpm typecheck:e2e && 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-framework-0.0.26.tgz","_integrity":"sha512-kig6Gy/PgjhiTm7WGzcg+nz4MoXC0OxHGcHsWD8TLw5BKi4xgyNOw4J1zTwzyUyG/aPoiO/vwupFk+GpFFdyJw==","description":"WebUI Framework Next — Preact-inspired lightweight Web Component runtime with SSR hydration and compiled-template path mapping.","directories":{},"_nodeVersion":"18.5.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"7.0.2","@types/node":"^26.1.0","@playwright/test":"^1.61.1","@microsoft/webui-test-support":"0.0.26"},"_npmOperationalInternal":{"tmp":"tmp/webui-framework_0.0.26_1787777962885_0.5962919414178851","host":"s3://npm-registry-packages-npm-production"}},"0.0.27":{"name":"@microsoft/webui-framework","version":"0.0.27","license":"MIT","_id":"@microsoft/webui-framework@0.0.27","maintainers":[{"name":"microsoft1es","email":"npmjs@microsoft.com"},{"name":"microsoft-oss-releases","email":"microsoft-oss-publishing@microsoft.com"}],"dist":{"shasum":"7f6ad03e4fc888ea983194c812b26c2465be7022","tarball":"https://registry.npmjs.org/@microsoft/webui-framework/-/webui-framework-0.0.27.tgz","fileCount":81,"integrity":"sha512-GibOYBlsv8+XjOpHBRSQ4eKj/FVq+V8Zc2wjTmR6ZbH+SUkZijW3P/f6TcTskf/7gyY5E09WxSBFA7RSDb/VmA==","signatures":[{"sig":"MEYCIQCmu5nch5EZxyiVR3IpKCsogjcv/dW9wwImj7qQKgkSbAIhAOH9lmXrR2lOs41ZIyK1/exVzcnXnfrQbSBntt7LUDPv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":375517},"type":"module","_from":"file:M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App1\\temp\\58d2f6e5-f562-45ce-bbc3-d93bfd48e637\\microsoft-webui-framework-0.0.27.tgz","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./streaming.js":{"import":{"types":"./dist/streaming-entry.d.ts","default":"./dist/streaming-entry.js"}},"./lazy-hydration.js":{"import":{"types":"./dist/lazy-hydration-entry.d.ts","default":"./dist/lazy-hydration-entry.js"}},"./component-asset.js":{"import":{"types":"./dist/component-asset.d.ts","default":"./dist/component-asset.js"}},"./interaction-hydration.js":{"import":{"types":"./dist/interaction-hydration.d.ts","default":"./dist/interaction-hydration.js"}}},"scripts":{"test":"pnpm test:unit && pnpm test:e2e","build":"tsc","test:e2e":"pnpm typecheck:e2e && playwright test","test:unit":"tsc -p tsconfig.unit-test.json && node --test \"dist/**/*.test.js\"","typecheck":"tsc --noEmit","typecheck:e2e":"tsc -p tsconfig.test.json --noEmit","test:update-snapshots":"pnpm test:e2e:update-snapshots","test:e2e:update-snapshots":"pnpm typecheck:e2e && 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-framework-0.0.27.tgz","_integrity":"sha512-GibOYBlsv8+XjOpHBRSQ4eKj/FVq+V8Zc2wjTmR6ZbH+SUkZijW3P/f6TcTskf/7gyY5E09WxSBFA7RSDb/VmA==","description":"WebUI Framework Next — Preact-inspired lightweight Web Component runtime with SSR hydration and compiled-template path mapping.","directories":{},"_nodeVersion":"18.5.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"7.0.2","@types/node":"^26.1.0","@playwright/test":"^1.61.1","@microsoft/webui-test-support":"0.0.27"},"_npmOperationalInternal":{"tmp":"tmp/webui-framework_0.0.27_1787858826304_0.3025274419947921","host":"s3://npm-registry-packages-npm-production"}},"0.0.28":{"name":"@microsoft/webui-framework","version":"0.0.28","license":"MIT","_id":"@microsoft/webui-framework@0.0.28","maintainers":[{"name":"microsoft1es","email":"npmjs@microsoft.com"},{"name":"microsoft-oss-releases","email":"microsoft-oss-publishing@microsoft.com"}],"tag":"latest","dist":{"shasum":"cd5e3ce37b7bb71fbc6a0c8f8736f0b5887f5767","tarball":"https://registry.npmjs.org/@microsoft/webui-framework/-/webui-framework-0.0.28.tgz","fileCount":83,"integrity":"sha512-lRmv7ixRa+bEtDm5VPzqX1fm3GKwlfDyBxtD9GeBaYkE+7qQJa2fqgE9CVP1bpcSnFWPxqEyUjSSHB5Y4EQkrw==","signatures":[{"sig":"MEUCIE0J2n5K+pyMJLD6+u6Ktt/+fmIXeF/o+r1uVQIk904IAiEAtkH/PNDTreZ935kObiOdoac2NTN5Bvtp1LDWXshtsi0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":378514},"type":"module","_from":"file:M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App1\\temp\\a39b577a-45f3-4908-94dd-bf805786e2ba\\microsoft-webui-framework-0.0.28.tgz","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./streaming.js":{"import":{"types":"./dist/streaming-entry.d.ts","default":"./dist/streaming-entry.js"}},"./lazy-hydration.js":{"import":{"types":"./dist/lazy-hydration-entry.d.ts","default":"./dist/lazy-hydration-entry.js"}},"./component-asset.js":{"import":{"types":"./dist/component-asset.d.ts","default":"./dist/component-asset.js"}},"./interaction-hydration.js":{"import":{"types":"./dist/interaction-hydration.d.ts","default":"./dist/interaction-hydration.js"}}},"scripts":{"test":"pnpm test:unit && pnpm test:e2e","build":"tsc","test:e2e":"pnpm typecheck:e2e && playwright test","test:unit":"tsc -p tsconfig.unit-test.json && node --test \"dist/**/*.test.js\"","typecheck":"tsc --noEmit","typecheck:e2e":"tsc -p tsconfig.test.json --noEmit","test:update-snapshots":"pnpm test:e2e:update-snapshots","test:e2e:update-snapshots":"pnpm typecheck:e2e && 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-framework-0.0.28.tgz","_integrity":"sha512-lRmv7ixRa+bEtDm5VPzqX1fm3GKwlfDyBxtD9GeBaYkE+7qQJa2fqgE9CVP1bpcSnFWPxqEyUjSSHB5Y4EQkrw==","description":"WebUI Framework Next — Preact-inspired lightweight Web Component runtime with SSR hydration and compiled-template path mapping.","directories":{},"_nodeVersion":"18.5.0","publishConfig":{"tag":"latest"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"7.0.2","@types/node":"^26.1.0","@playwright/test":"^1.61.1","@microsoft/webui-test-support":"0.0.28"},"_npmOperationalInternal":{"tmp":"tmp/webui-framework_0.0.28_1788224370374_0.31937921342567543","host":"s3://npm-registry-packages-npm-production"}},"0.0.29":{"name":"@microsoft/webui-framework","version":"0.0.29","license":"MIT","_id":"@microsoft/webui-framework@0.0.29","maintainers":[{"name":"microsoft1es","email":"npmjs@microsoft.com"},{"name":"microsoft-oss-releases","email":"microsoft-oss-publishing@microsoft.com"}],"tag":"latest","dist":{"shasum":"d806ca1b50df7d52fed54f5666a1e07a465ba649","tarball":"https://registry.npmjs.org/@microsoft/webui-framework/-/webui-framework-0.0.29.tgz","fileCount":91,"integrity":"sha512-OVa1t87deXO6Sk8pqluR+b4xqvE4egHTbLFthjWZUPl01aECFXcljkvfW/4ugYujWNrA6AMvJ4y5i8XTuab8hQ==","signatures":[{"sig":"MEUCIQCHomwOWTrwmhexLP1wGXEt8Oh12ZUYi7y4x7nGNfH0UAIgLsP1lUArfDnKG+grw7Hg5O4EAKAoTrMv4Bv6sCj6nuk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCCbyd9G4jNpOFRWTn7mL6cwHO/xFRS6IVLRRThZJwe9AIhAKywUsavjgViCOoxne6/Vyz8c4mftPj/LeAymmVhU7OP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":388731},"type":"module","_from":"file:M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App1\\temp\\ef24680f-1576-4818-827d-0bfce6feab44\\microsoft-webui-framework-0.0.29.tgz","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./streaming.js":{"import":{"types":"./dist/streaming-entry.d.ts","default":"./dist/streaming-entry.js"}},"./lazy-hydration.js":{"import":{"types":"./dist/lazy-hydration-entry.d.ts","default":"./dist/lazy-hydration-entry.js"}},"./component-asset.js":{"import":{"types":"./dist/component-asset.d.ts","default":"./dist/component-asset.js"}},"./interaction-hydration.js":{"import":{"types":"./dist/interaction-hydration.d.ts","default":"./dist/interaction-hydration.js"}}},"scripts":{"test":"pnpm test:unit && pnpm test:e2e","build":"tsc","test:e2e":"pnpm typecheck:e2e && playwright test","test:unit":"tsc -p tsconfig.unit-test.json && node --test \"dist/**/*.test.js\"","typecheck":"tsc --noEmit","typecheck:e2e":"tsc -p tsconfig.test.json --noEmit","test:update-snapshots":"pnpm test:e2e:update-snapshots","test:e2e:update-snapshots":"pnpm typecheck:e2e && 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-framework-0.0.29.tgz","_integrity":"sha512-OVa1t87deXO6Sk8pqluR+b4xqvE4egHTbLFthjWZUPl01aECFXcljkvfW/4ugYujWNrA6AMvJ4y5i8XTuab8hQ==","description":"WebUI Framework Next — Preact-inspired lightweight Web Component runtime with SSR hydration and compiled-template path mapping.","directories":{},"_nodeVersion":"18.5.0","publishConfig":{"tag":"latest"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"7.0.2","@types/node":"^26.5.1","@playwright/test":"^1.63.0","@microsoft/webui-test-support":"0.0.29"},"_npmOperationalInternal":{"tmp":"tmp/webui-framework_0.0.29_1789775591865_0.18270458924883948","host":"s3://npm-registry-packages-npm-production"}},"0.0.30":{"_id":"@microsoft/webui-framework@0.0.30","tag":"latest","dist":{"shasum":"a0289154a01fc9ba2ddc57d4a9262bec8e88a787","tarball":"https://registry.npmjs.org/@microsoft/webui-framework/-/webui-framework-0.0.30.tgz","fileCount":91,"integrity":"sha512-vHSFOBHpDB1Yfuq+S3R2WYl9VxslBPF1iE96mKcz1iG8PY/Ku/HK3BUOSA5atxeiw5nB/pZW9kbHSl9g+3ZXoA==","signatures":[{"sig":"MEYCIQD/z+k8Y0DDnA5IVz3fmsAO2BNeQnV6R/gp7ZbjytYTtQIhAK+phBULeJyEiJaxsznxAqin8h8f6lwDK7uUFBxw2zo5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDAOixvdfFH5k5N8A/l8g1kdZN5B+RilgTDMrywKmNAMgIgUdyYyElrtCY6nDHOBLltWgpjPB7g4oew47UuuvgP2lQ="}],"unpackedSize":395735},"name":"@microsoft/webui-framework","type":"module","_from":"file:M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App1\\temp\\f07c5213-d709-4859-af26-b767eb51e495\\microsoft-webui-framework-0.0.30.tgz","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./streaming.js":{"import":{"types":"./dist/streaming-entry.d.ts","default":"./dist/streaming-entry.js"}},"./lazy-hydration.js":{"import":{"types":"./dist/lazy-hydration-entry.d.ts","default":"./dist/lazy-hydration-entry.js"}},"./component-asset.js":{"import":{"types":"./dist/component-asset.d.ts","default":"./dist/component-asset.js"}},"./interaction-hydration.js":{"import":{"types":"./dist/interaction-hydration.d.ts","default":"./dist/interaction-hydration.js"}}},"license":"MIT","scripts":{"test":"pnpm test:unit && pnpm test:e2e","build":"tsc","test:e2e":"pnpm typecheck:e2e && playwright test","test:unit":"tsc -p tsconfig.unit-test.json && node --test \"dist/**/*.test.js\"","typecheck":"tsc --noEmit","typecheck:e2e":"tsc -p tsconfig.test.json --noEmit","test:update-snapshots":"pnpm test:e2e:update-snapshots","test:e2e:update-snapshots":"pnpm typecheck:e2e && 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-framework-0.0.30.tgz","_integrity":"sha512-vHSFOBHpDB1Yfuq+S3R2WYl9VxslBPF1iE96mKcz1iG8PY/Ku/HK3BUOSA5atxeiw5nB/pZW9kbHSl9g+3ZXoA==","description":"WebUI Framework Next — Preact-inspired lightweight Web Component runtime with SSR hydration and compiled-template path mapping.","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":{"typescript":"7.0.2","@types/node":"^26.5.1","@playwright/test":"^1.63.0","@microsoft/webui-test-support":"0.0.30"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/webui-framework_0.0.30_1790524523504_0.12869945722574605"}}},"time":{"created":"2026-04-09T05:37:46.874Z","modified":"2026-09-27T15:55:23.813Z","0.0.4":"2026-04-09T05:37:47.119Z","0.0.5":"2026-04-09T16:14:51.785Z","0.0.6":"2026-04-09T23:37:35.968Z","0.0.7":"2026-04-11T00:44:48.689Z","0.0.8":"2026-04-14T05:03:01.798Z","0.0.9":"2026-04-16T22:13:48.011Z","0.0.10":"2026-04-17T21:07:34.615Z","0.0.11":"2026-04-28T22:18:17.249Z","0.0.12":"2026-05-01T19:47:15.517Z","0.0.13":"2026-05-27T00:50:18.333Z","0.0.14":"2026-05-27T22:32:51.441Z","0.0.15":"2026-06-08T20:10:52.464Z","0.0.16":"2026-06-18T01:10:27.619Z","0.0.17":"2026-06-22T19:35:44.865Z","0.0.18":"2026-07-08T03:42:48.915Z","0.0.19":"2026-07-25T00:21:14.659Z","0.0.20":"2026-08-01T02:15:09.688Z","0.0.21":"2026-08-03T21:19:58.624Z","0.0.22":"2026-08-04T19:12:37.440Z","0.0.23":"2026-08-11T04:10:58.979Z","0.0.24":"2026-08-13T19:41:25.055Z","0.0.25":"2026-08-15T20:54:58.931Z","0.0.26":"2026-08-26T20:59:23.068Z","0.0.27":"2026-08-27T19:27:06.479Z","0.0.28":"2026-09-01T00:59:30.527Z","0.0.29":"2026-09-18T23:53:11.938Z","0.0.30":"2026-09-27T15:55:23.621Z"},"license":"MIT","description":"WebUI Framework Next — Preact-inspired lightweight Web Component runtime with SSR hydration and compiled-template path mapping.","maintainers":[{"name":"microsoft1es","email":"npmjs@microsoft.com"},{"name":"microsoft-oss-releases","email":"microsoft-oss-publishing@microsoft.com"}],"readme":"# `@microsoft/webui-framework`\n\nLightweight Web Component runtime for WebUI apps.\n\nThis package is the browser-side runtime used by `webui build --plugin=webui`. It provides:\n\n- `WebUIElement` for SSR hydration and client-created elements\n- `@observable`, `@attr`, and `@volatile` decorators\n- direct DOM binding updates\n- Shadow-default components with opt-in global Light and authored Shadow islands\n- SSR state seeding\n\nIf you are building WebUI apps in this repo, this is the component model used by examples like `examples/app/todo-webui`, `examples/app/commerce`, and `examples/app/contact-book-manager`.\n\n> 📖 **Full documentation at [microsoft.github.io/webui](https://microsoft.github.io/webui)**, see the [Interactivity Guide](https://microsoft.github.io/webui/guide/concepts/interactivity) for component authoring patterns. For framework internals (hydration, path resolution, reactive update model), see [the hydration contract](https://github.com/microsoft/webui/blob/main/specs/hydration.md).\n\n## Install\n\nTrusted Types support is automatic; no setup call is needed. To enforce it,\nallow the `webui` policy in CSP. See [Trusted Types](https://microsoft.github.io/webui/guide/concepts/hydration#trusted-types)\nfor CSP requirements and raw-HTML limits.\n\nIn this workspace:\n\n```json\n{\n  \"dependencies\": {\n    \"@microsoft/webui-framework\": \"workspace:*\"\n  }\n}\n```\n\nOutside the workspace:\n\n```bash\npnpm add @microsoft/webui-framework\n```\n\nTypeScript must enable decorator emit:\n\n```json\n{\n  \"compilerOptions\": {\n    \"experimentalDecorators\": true,\n    \"useDefineForClassFields\": false\n  }\n}\n```\n\n## Quick Example\n\n1. Author a component class in TypeScript\n2. Author a WebUI template in HTML\n3. Run `webui build --plugin=webui`\n4. The runtime hydrates SSR output or creates client-side components using compiled path mapping\n\n### `counter-card.ts`\n\n```ts\nimport { WebUIElement, attr, observable, volatile } from '@microsoft/webui-framework';\n\nexport class CounterCard extends WebUIElement {\n  @attr label = 'Clicks';\n  @observable count = 0;\n\n  @volatile\n  get doubled(): number {\n    return this.count * 2;\n  }\n\n  increment(): void {\n    this.count += 1;\n  }\n}\n\nCounterCard.define('counter-card');\n```\n\n### `counter-card.html`\n\n```html\n<p>{{label}}: {{count}} ({{doubled}})</p>\n<button @click=\"{increment()}\">Increment</button>\n```\n\nUnwrapped components default to Shadow. A `dom: \"light\"` build renders them as\nLight while preserving any sole top-level\n`<template shadowrootmode=\"open\">` component as Shadow.\n\n### Use it from your page\n\n```html\n<counter-card label=\"Taps\"></counter-card>\n```\n\n### HTML-only dormant components\n\nIf a component has no event handlers, custom lifecycle code, or client-only\nmethods, it can ship only `component.html` and optional `component.css`.\n\nThe sibling `.ts` or `.js` file is the authored behavior boundary. With\nmanifest-enabled projection, only `@observable` and `@attr` fields opt into\ninitial state hydration; template-only roots stay in the trusted SSR DOM.\nWithout a module, template bindings render on the server and the component\ncontributes no projected keys. Without projection metadata, the server\npreserves full state. The compiler still emits template metadata for scriptless\ncomponents. When the framework is loaded, it can activate that template when\nbrowser state or client-side creation needs it.\nIf that first write omits a repeat collection, the host preserves the existing\nSSR items until the collection is explicitly supplied.\n\nCreate a custom element only for an Interactive Island: event handlers, custom\nlifecycle code, imperative methods, or state that TypeScript code reads or\nmutates. `@observable` and `@attr` are optional; add them when JavaScript needs\nto access the value or when the value is part of the component's public API.\n\n### Offscreen work reduction\n\nFor components repeated beyond the initial viewport, put the complete policy on\nthe component template:\n\n```html\n<template\n  w-render=\"lazy\"\n  w-reserve-block-size=\"18rem\"\n>\n  <!-- Component content -->\n</template>\n```\n\n`w-render=\"lazy\"` combines visibility-deferred hydration with the browser's\n`content-visibility: auto` rendering deferral. The reservation is the typical\nrendered block size of one instance; WebUI emits it as\n`contain-intrinsic-block-size: auto 18rem` before first layout. The SSR DOM\nremains present, searchable, and accessible while the browser skips offscreen\nstyle, layout, and paint work. The generated policy applies to instances in the\ndocument, Light DOM, and standard Shadow DOM components. A Light component\ninside a Shadow root receives the rule through its precomputed style\nclosure, which delivers the stylesheet into that root under every CSS strategy.\n\nImport the optional coordinator entry once before component modules:\n\n```ts\nimport '@microsoft/webui-framework/lazy-hydration.js';\nimport './product-card.js';\n```\n\nUse hydration-only deferral when rendering containment is not safe for a\ncomponent:\n\n```html\n<template w-hydrate=\"lazy\">\n  <!-- Component content -->\n</template>\n```\n\nComponents are eager by default. Instance attributes provide explicit escape\nhatches:\n\n```html\n<!-- Keep rendering deferral, but hydrate this instance immediately. -->\n<product-card w-hydrate=\"eager\"></product-card>\n\n<!-- Disable both rendering and hydration deferral for this instance. -->\n<product-card w-render=\"eager\"></product-card>\n```\n\nClient-created instances and reconnects after a successful mount remain eager.\nIf the optional entry or `IntersectionObserver` is unavailable, hydration falls\nback to eager; `content-visibility` remains browser-managed. See\n[Lazy Hydration](https://microsoft.github.io/webui/guide/concepts/hydration#lazy-hydration).\n\nRouter applications should author `<template w-hydrate=\"interaction\">` and use\nthe framework-agnostic `@microsoft/webui-router/preload.js` handle. FAST and\nother hydration runtimes use that same handle with their own readiness signal.\nNon-router apps use the lower-level framework entry:\n\n```ts\nimport {\n  installInteractionHydration,\n  isInteractionReplay,\n} from\n  '@microsoft/webui-framework/interaction-hydration.js';\n\ninstallInteractionHydration({\n  load: () => import('./components.js'),\n});\n```\n\nPointer-down, focus, and keyboard intent starts `load()` without cancellation.\nAn unmodified primary click waits and replays on its original composed-path\ntarget; `load()` must resolve only after listeners are ready. Hover, modified\nclicks, and previously cancelled clicks do not replay. Use\n`isInteractionReplay(event)` to deduplicate ancestor capture work.\n\nThis opt-in trades first-interaction latency for lower startup JS and heap.\nPrefer an eager root with lazy descendants when request-to-hydrated time matters.\nSynthetic replay cannot preserve transient user activation or target controls\ninside closed shadow roots; hydrate those paths eagerly.\n\nOne offscreen singleton boundary can retain browser rendering deferral while\nalso deferring its module graph:\n\n```html\n<template\n  w-render=\"lazy\"\n  w-reserve-block-size=\"18rem\"\n  w-hydrate=\"interaction\"\n>\n  <!-- Component content -->\n</template>\n```\n\nDo not use the combined form for repeated items. A visible app root gains no\nrendering benefit from `content-visibility`; keep interaction on that root and\nput `w-render=\"lazy\"` on offscreen descendants.\n\n\n### Build with the WebUI plugin\n\n```bash\ncargo run -p microsoft-webui-cli -- build ./src --out ./dist --plugin=webui\n```\n\nThe WebUI plugin prepares component templates for the browser. Bundle your\nsource browser entry directly. Import `@microsoft/webui-framework` from authored\ncomponent modules. An app that stays static after SSR needs no framework\nbrowser import. Import the framework once when HTML-only components must accept\nbrowser state or participate in soft navigation.\n\nThe plugin alone preserves full server state. To emit exact `@observable` and\n`@attr` state surfaces, run the application's bundler first with\n`@microsoft/webui/projection.js`, then pass its manifest to `webui build` with\n`--projection-manifest`. The manifest tooling is build-only; this runtime\npackage does not depend on esbuild or TypeScript.\n\n### Progressive streaming hydration\n\nStreaming applications opt into a separate side-effect entry:\n\n```ts\nimport '@microsoft/webui-framework/streaming.js';\nimport './counter-card.js';\n```\n\nImport it before component registration modules and load the application entry\nearly with `<script type=\"module\" async>` in `<head>`. The server must render\nauthored `<boundary>` directives through\n`WebUIHandler::render_streaming`. The default\n`@microsoft/webui-framework` entry has no dependency on the coordinator, so\nnormal applications pay no streaming bundle or initialization cost.\n\nTo keep the full application out of `<head>`, put the explicit\n`import '@microsoft/webui-framework/streaming.js'` in a small application-owned\nentry. Register that file with your bundler, preserve its side effect, and\nshare framework modules with the application. Identify its output and static\ndependencies through native bundler metadata and your existing asset handoff.\nWebUI does not create entries, inject imports, or require a streaming manifest.\n\nLoad the coordinator with `type=\"module\" async`; marker-based deferral handles\napplication-first delivery without a second framework bundle.\nThe application may load later, but early-interactive components still need\ntheir registration modules. Use `fetchpriority=\"low\"` on deferred authored\nmodule scripts to exclude them from automatic modulepreload hints. See\n[Separate coordinator and application assets](https://microsoft.github.io/webui/guide/concepts/hydration#separate-coordinator-and-application-assets).\n\nBoundaries may be authored in entries and reusable components, including\nruntime conditions, outlets, and selected routes. A boundary-bearing subtree\nreached from a `<for>` body fails the build with `boundary-in-repeat`. A whole\n`<for>` may sit inside one boundary, and boundaries before or after a `<for>`\nare valid. A component-local boundary uses a generated parent span, so an early\ncompiler-marked child can hydrate before the opaque parent tail in light or\nshadow DOM. The server's boundary-only `resume` emits that checkpoint first;\n`advance` emits the following parent tail, with no sibling boundary workaround.\nAuthored boundaries cannot nest.\n\nSpan resolution is entirely coordinator-owned: the generated `data-ws-span` and\n`data-ws-enclosing` attributes, and the open-span registry that pairs them, live\nonly in the opt-in streaming entry. It resolves the one ancestor an entitled\nearly child may skip and passes that element to the activation hook, which\ncompares it by identity. The always-shipped entry therefore carries no span\nattribute name and no span bookkeeping at all.\n\nEach runtime occurrence receives an ephemeral state object directly during\nactivation. The coordinator does not publish that state to\n`window.__webui.state`, and it removes generated checkpoint and span\nscaffolding after commit. Updates apply state to retained roots and never insert\nmarkup or rerun hydration.\n\nThe browser reads the single unversioned\n`[sequence, kind, target, payload]` contract for final checkpoints,\nupdatable checkpoints, updates, span completions, and terminal. Every commit\nalso emits a `performance.mark()` - `webui:boundary:<id>`,\n`webui:boundary:<id>:update`, `webui:span:<id>`, or\n`webui:streaming:terminal` - which needs no flag or listener.\nSet `window.__WEBUI_STREAMING_DEBUG__ = true` only when tooling needs the live\n`webui:boundary-hydrated` event as well.\n\nA range record can reuse the exact preceding range state with `stateRef` and\ncarry only a top-level `stateDelta`. References are backward-only and resolved\nbefore activation; missing, stale, forward, or malformed references halt and\nclean up the stream. The reference base is released on terminal, cancellation,\nfailure, or coordinator reset.\n\nSet `window.__WEBUI_STREAMING_SLICE_MS__` to a positive millisecond budget to\nmake the coordinator yield between boundaries instead of draining its queue in\none pass. That is for pages where an intermediary coalesces the response into a\nsingle chunk; it costs total hydration time, so leave it unset otherwise.\n\n### Property binding lifecycle\n\nProperty bindings use the `:` prefix to pass values directly to child DOM properties:\n\n```html\n<profile-card :config=\"{{settings}}\"></profile-card>\n```\n\nFor client-created component trees, WebUI applies initial property bindings\nbefore child `connectedCallback` methods run. A child can read an initial\nparent-provided property in `connectedCallback`. If the parent value is not set,\nthe child may initialize its own fallback there, and later parent updates still\nflow through the live binding.\n\nDuring SSR hydration the framework trusts the server-rendered DOM and does not\nre-render it. An `@observable` written before hydration finishes — in a field\ninitializer, the `constructor`, or before `super.connectedCallback()` — cannot\nupdate that DOM, so the write is dropped and the runtime logs a\n`[WebUI] Hydration mismatch` warning naming the properties. Seed such values in\nthe SSR state, or assign them from `hydratedCallback()`. The warning is\ndevelopment-only and is dead-code-eliminated from production bundles via the\n`__WEBUI_DEV__` compile-time flag (on by default; `webui press build` sets it to\n`false`). See the\n[Interactivity Guide](https://microsoft.github.io/webui/guide/concepts/interactivity#setting-observable-state-during-setup).\n\nOverride the protected `hydratedCallback()` hook for work that requires the\ncomponent's bindings, events, and `w-ref` references to be ready. It runs\nexactly once with the first successful ordinary SSR hydration, client-created\nmount, lazy activation, deferred streamed activation, or dormant static-host\nwake. If CSP blocks the temporary Link-mode prepaint guard, a client-created\nmount keeps non-style content detached and delays `$ready` and this callback\nuntil its native links load and the content is appended. Reactive writes made\nwhile detached are reconciled immediately before append. A synchronous\ndisconnect/reconnect preserves the pending mount; a lasting disconnect cancels\nit. The callback's once-latch is set before author code runs, so a thrown\ncallback is not retried on reconnect.\n\n`connectedCallback()` remains a native per-connection lifecycle. On ordinary\nSSR and client-created mounts, `super.connectedCallback()` hydrates\nsynchronously, but a lazy root or streamed `data-ws` root can return while still\ndeferred. Therefore `connectedCallback()` cannot be used as a universal\npost-hydration signal. Descendants must not structurally mutate a containing\ncomponent's SSR subtree before it hydrates, because hydration relies on stable\ncompiled paths.\n\n### Light and Shadow DOM\n\nAn unwrapped component receives a generated open Shadow root by default. In a\n`dom: \"light\"` build it renders as direct children of its host. A component\nwhose sole top-level element is a bare `<template>` explicitly renders as Light\nand is unwrapped, even under the Shadow fallback. A sole\n`<template shadowrootmode=\"open\">` remains Shadow in either mode. Templates with\nattributes and policy wrappers do not select a mode. Closed roots and invalid\nvalues or placement are build errors; `<slot>` is rejected only for effective\nLight components.\n\nThe runtime auto-detects which mode was used at hydration time:\n- If a `shadowRoot` already exists → shadow DOM SSR path\n- If `childNodes` exist but no shadow root → light DOM SSR path\n- If neither → client-created path (uses `meta.sd` to decide)\n\nLight components use authored/global ordinary CSS in the owning CSS tree.\nShadow components keep native Shadow scoping. `:host`, `:host-context`, and\n`::slotted` fail in effective Light CSS.\nThe Link, Style, and Module delivery strategies all support both modes.\n\nIn a Light build, add open wrappers to slot, native-encapsulation, or CSS-heavy\nfrequently restyled components.\n\n---\n\n## API Reference\n\n### `WebUIElement`\n\nBase class for framework components.\n\n| Member | Purpose |\n|--------|---------|\n| `static define(tagName)` | Register the class as a custom element |\n| `protected hydratedCallback()` | Run once after the first successful hydration or client mount |\n| `$emit(name, detail?)` | Dispatch a bubbling, composed `CustomEvent` |\n| `$update()` | Force a reactive update (normally called automatically) |\n| `disconnectedCallback()` | Override for cleanup (global listeners, etc.) |\n\nIn most components you do not call `$update()` directly. Property changes through `@observable` and `@attr` trigger updates for you.\n\n### Static component assets\n\n`webui build --plugin=webui --emit-component-assets settings-dialog` emits\n`settings-dialog.webui.js` next to `protocol.bin`. Load the ESM asset before\ncreating the component when you are not using `@microsoft/webui-router`:\n\n```ts\nimport { settingsAssets } from './lazy-assets.js';\n\nsettingsAssets.preload('settings-dialog');\npanelSlot.replaceChildren(await settingsAssets.create('settings-dialog'));\n```\n\n```ts\n// lazy-assets.ts\nimport { defineComponentAssets } from '@microsoft/webui-framework/component-asset.js';\n\nexport const settingsAssets = defineComponentAssets({\n  'settings-dialog': {\n    asset: '/settings-dialog.webui.js',\n    module: () => import('./settings-dialog/settings-dialog.js'),\n    data: async () => await (await fetch('/settings-dialog-data.json')).json(),\n  },\n});\n```\n\nThe asset graph keeps entry-owned templates external, leaves single-root\ndependencies inline, and emits dependencies shared by multiple roots once as\nflat dynamic chunks. Component assets cannot be combined with `<route>`. Load\nthe normal entry bundle first so external prerequisites are registered.\nCurrent assets require version 3 and an atomically validated\n`componentStyles` catalog; any other version is rejected as unsupported.\n\nThe compiler records final Link stylesheet filenames in the protocol. For\nShadow builds, the handler emits that finite manifest as inert JSON in the\ndocument head; body-only host protocols emit it at the start of their rendered\nbody fragment. Light builds emit the same hrefs as deduplicated document\nstylesheets because their CSS must apply globally.\nAutomatic Shadow intent preloading therefore requires HTML rendered through the\nWebUI handler or `Protocol`, which emits `#webui-component-assets`. A shell that\nuses build artifacts without rendering the protocol still mounts safely through\nthe native stylesheet guard, but it does not receive the earlier\ncompiler-owned style preload.\nShared chunk and content-hashed stylesheet filenames are generated and must not\nbe copied into authored code. Each root asset carries its own dynamic imports;\n`--metafile` remains available for analysis and build tooling.\n\nIn Shadow builds, `preload(tag)` reads the compiler-owned style metadata and\nstarts Link styles beside the authored root asset, component module, and\noptional data request. Only the stable root asset URL remains in application\ncode; shared chunks and content-hashed CSS stay compiler-owned.\n\nBundler-generated loaders can use `asset: () => import('./settings-dialog.webui.js')`\ninstead of a URL. This keeps chunk naming and public-path rewriting inside the\nbundler while preserving the same `preload(tag)` and `create(tag)` lifecycle.\nConcurrent roots share in-flight chunk and stylesheet work. `create(tag)`\ncreates the element after template/module work is ready and does not block on\noptional data by default. Use\n`create(tag, { awaitData: true, dataTimeoutMs: 150 })` only when a component\nmust wait briefly for state before mounting. A rejected root asset or authored\nmodule is evicted from the registry so a later `preload(tag)` or `create(tag)`\nretries it.\n\n### `@observable`\n\nMarks a property as reactive. When the value changes, the framework\nupdates template bindings that reference it. Use it for state that TypeScript\ncode reads or mutates. Values used only by the template do not need an\n`@observable` class field.\n\n```ts\nclass SearchPanel extends WebUIElement {\n  @observable open = false;\n\n  toggle(): void {\n    this.open = !this.open;\n  }\n}\n```\n\n### `@attr`\n\nLike `@observable` but also reflects to/from an HTML attribute (kebab-case).\n\n```ts\nclass ProductPrice extends WebUIElement {\n  @attr currency = 'USD';\n  @attr({ attribute: 'amount-cents' }) amountCents = '0';\n}\n```\n\nNotes:\n\n- default attribute names use kebab-case\n- attribute values arrive as strings\n- during SSR hydration, an existing host attribute wins over projected state\n- use `@observable` for state that client code reads or mutates\n\n### `@volatile`\n\nMarks a computed getter that should be re-read whenever bindings access it.\n\n```ts\nclass CartSummary extends WebUIElement {\n  @observable items: Array<{ count: number }> = [];\n\n  @volatile\n  get totalCount(): number {\n    return this.items.reduce((sum, item) => sum + item.count, 0);\n  }\n}\n```\n\n## Template Features\n\nThe WebUI plugin supports these template features:\n\n- text bindings: `{{title}}`\n- attribute bindings: `href=\"{{item.href}}\"`\n- event handlers: `@click=\"{onClick()}\"`, `@click=\"{onSelect(item.id, e)}\"`\n- refs: `w-ref=\"addInput\"`\n- conditionals: `<if condition=\"...\">`\n- repeats: `<for each=\"item in items\">`\n\nComponents that use `@event` must have authored `.ts` or `.js` code that\ndefines a `WebUIElement` for the tag. HTML-only components do not provide\napplication event handlers.\n\nExample from `examples/app/todo-webui`:\n\n```html\n<h1>{{title}}</h1>\n\n<input\n  class=\"add-input\"\n  w-ref=\"addInput\"\n  @keydown=\"{onAddKeydown(e)}\"\n/>\n\n<for each=\"item in items\">\n  <todo-item\n    id=\"{{item.id}}\"\n    title=\"{{item.title}}\"\n    state=\"{{item.state}}\"\n  ></todo-item>\n</for>\n```\n\nRoot-level events (e.g. `@toggle-item=\"{onToggleItem(e)}\"`) can be declared on the component's host element and are wired via `meta.re`.\n\n## Recommended Patterns\n\n- Treat decorated properties as the source of truth for state used by\n  TypeScript code.\n- Update state with property assignments such as `this.open = !this.open`.\n- Use `$emit()` for child-to-parent communication.\n- Use `w-ref` for true DOM-only concerns like focus or reading input values.\n- Omit `@observable` for values that are only read by the template and seeded\n  externally after construction.\n- Omit the TypeScript class when compiled template behavior is sufficient,\n  including browser-applied state, route updates, and client-created instances.\n  Add a same-named module only for authored events, lifecycle, decorators, or\n  imperative APIs.\n\nAvoid imperative DOM mutation for application state that can be represented by reactive properties.\n\n---\n\n## Performance Philosophy\n\nThis framework is designed for **minimal memory, minimal work, zero waste**.\nEvery design decision optimizes for real-world interactive performance on\nresource-constrained devices.\n\n### Design principles\n\n1. **No work on the hot path that doesn't change the DOM.**\n   `$update(path)` only visits bindings that reference the changed property.\n   Everything else is skipped via a per-path index built once at hydration time.\n\n2. **Zero framework allocations during ordinary updates.**\n   Targeted updates are a single `Map.get()` → direct array iteration.\n   No intermediate arrays, no object creation, no spread operators on the\n   update path. A changed raw HTML binding necessarily parses and creates its\n   replacement DOM nodes inside its pre-resolved ownership range.\n\n3. **Parse once, clone forever.**\n   Compiled template HTML is parsed via `innerHTML` once per component tag\n   and cached as a `DocumentFragment`.  Every subsequent instance uses\n   `cloneNode(true)` — DOM cloning is significantly faster than HTML parsing.\n\n4. **Resolve event targets once.**\n   Event bindings store their target path in compiled metadata.  Hydration\n   resolves each target once, installs the listener directly, and captures the\n   active repeat scope so handler arguments like `item.id` are read at dispatch.\n\n5. **Single-pass hydration via path mapping.**\n   SSR DOM is matched to compiled template bindings through\n   the lockstep hydration walk (`buildSSRIndex`). Ordinary buffered hydration\n   needs no marker comments or data attributes for binding resolution. The\n   hydration walk touches each DOM node exactly once.\n\n6. **Keep the framework out of the GC's way.**\n   Fewer JS objects = fewer GC pauses.  Binding arrays are pre-built at\n   hydration time and reused across updates.  No per-update temporaries.\n\n### Benchmark fixtures\n\nThe `tests/fixtures/bench/` directory contains Playwright-driven benchmarks\nthat validate these properties:\n\n- **Update throughput**: 50k single-prop mutations with 65 bindings\n- **Repeat instantiation**: 200 items created from compiled templates\n- **Event memory**: 1000 event bindings measured via heap snapshots\n\nRun benchmarks with:\n\n```bash\ncd packages/webui-framework\nnpx playwright test tests/fixtures/bench/\n```\n\n### What NOT to do\n\nWhen contributing to the runtime, avoid these patterns:\n\n- **Don't allocate on the update path.** No `[...spread]`, no `new Map()`,\n  no object literals inside `$updateBindings` or `$updateInstance`.\n- **Don't add `querySelector` calls during updates.** All DOM references are\n  pre-resolved at hydration time via compiled path mapping.\n- **Don't use recursion in hot paths.** Condition evaluation and DOM walks\n  use iterative stacks.\n- **Don't allocate on the update path for events.** Event listeners are created\n  once during hydration and should not trigger extra DOM lookup work later.\n- **Don't re-parse template HTML.** Always clone from the cached fragment.\n\n---\n\n## Architecture\n\n### How It Fits Together\n\n```\n┌──────────────────────┐     ┌───────────────────────┐      ┌──────────────────────┐\n│   Rust Compiler      │     │   Any Server          │      │   Browser            │\n│                      │     │   (Rust/Go/C#/…)      │      │                      │\n│  HTML template       │     │                       │      │  SSR HTML (light or  │\n│  + expressions       │────▶│  TemplateMeta (JSON)  │────▶│  shadow DOM) +       │\n│  + @if / @for        │     │  + state data         │      │  webui-data JSON     │\n│                      │     │                       │      │                      │\n│  Outputs:            │     │  Renders:             │      │  Hydrates:           │\n│  • TemplateMeta      │     │  • Full HTML page     │      │  • Path-based DOM    │\n│  • Static HTML       │     │  • Shadow or light    │      │    resolution        │\n│  • Binding metadata  │     │  • State as JSON      │      │  • O(1) updates      │\n└──────────────────────┘     └───────────────────────┘      └──────────────────────┘\n```\n\n**Key differentiator: language-agnostic SSR.**  React, Solid, Svelte, and\nAngular all require a JavaScript runtime on the server.  This framework's SSR\nis driven by data (template metadata + state values), not code.  Any language\nthat can read the compiled metadata and produce HTML can serve as the SSR\nbackend.  No comment markers or data attributes are needed — the runtime\nresolves ordinary buffered SSR nodes via the lockstep hydration walk.\nProgressive streaming uses temporary checkpoint and generated-span scaffolding\nto activate complete runtime regions; it removes that scaffolding after commit.\n\n### Build → Serve → Hydrate → Update\n\n```mermaid\nflowchart LR\n    subgraph Build [\"Build Time (Rust)\"]\n        T[HTML Template] --> P[Parser Plugin]\n        P --> M[TemplateMeta JSON]\n        P --> H[Static HTML]\n    end\n\n    subgraph Serve [\"Server (Any Language)\"]\n        M --> R[Route Handler]\n        S[State Data] --> R\n        R --> HTML[\"Full SSR HTML<br/>(shadow or light DOM)<br/>+ inert #webui-data\"]\n    end\n\n    subgraph Browser [\"Browser\"]\n        HTML --> CE[Custom Element Upgrade]\n        CE --> MT{$mount}\n        MT -- SSR DOM exists --> SSR[\"$applySSRState<br/>$hydrate (path-based)\"]\n        MT -- No SSR DOM --> CL[\"$wire (from template)\"]\n        SSR --> BIND[Binding Arrays]\n        CL --> BIND\n        BIND --> UPD[\"$update() — O(1) patches\"]\n    end\n```\n\n### Module Structure\n\n```mermaid\ngraph TD\n    EL[\"element.ts (~850 lines)<br/><i>Orchestrator</i><br/>$mount, $wire, $hydrate,<br/>buildSSRIndex, $applySSRState,<br/>$update, events, cleanup\"]\n\n    DIFF[\"element/diff.ts<br/><i>List Reconciliation</i><br/>positional + explicit-key diffing<br/>for &lt;for&gt; repeat blocks\"]\n\n    COND[\"element/conditions.ts<br/><i>Condition Evaluation</i><br/>evaluateCondition (iterative),<br/>conditionUsesPath\"]\n\n    TYPES[\"element/types.ts<br/><i>Shared Types</i><br/>TemplateInstance, TextBinding,<br/>AttrBinding, CondBinding,<br/>RepeatBinding, ScopeFrame,<br/>RepeatHost\"]\n\n    TMPL[\"template.ts<br/><i>Metadata Types + Registry</i><br/>TemplateMeta, getTemplate,<br/>registerTemplateData\"]\n\n    DEC[\"decorators.ts<br/><i>Reactive Properties</i><br/>@observable, @attr, @volatile\"]\n\n    LIFE[\"lifecycle.ts<br/><i>Hydration Timing</i><br/>Performance marks,<br/>hydration-complete event\"]\n\n    EL --> DIFF\n    EL --> COND\n    EL --> TMPL\n    EL --> DEC\n    EL --> LIFE\n    DIFF --> TYPES\n    EL --> TYPES\n```\n\n---\n\n## Lifecycle Detail\n\n### SSR Hydration Path\n\nWhen the server renders a component, it emits HTML content (as a declarative\nshadow root or as light DOM children) along with an inert `#webui-data`\nJSON payload.  The browser parses this DOM before any JavaScript runs.\nWhen the component's JS loads and `connectedCallback` fires, the framework\nuses compiled template paths to resolve ordinary buffered SSR DOM nodes without\nbinding markers:\n\n```mermaid\nsequenceDiagram\n    participant Server\n    participant Browser\n    participant CE as Custom Element\n    participant FW as Framework\n\n    Server->>Browser: HTML (shadow or light DOM)<br/>+ inert #webui-data JSON\n    Browser->>Browser: Parse HTML → DOM exists\n    Browser->>CE: Custom element upgrade\n    CE->>CE: attributeChangedCallback (pre-existing attrs)\n    CE->>FW: connectedCallback() → $mount()\n    FW->>FW: SSR DOM detected (shadow root or children exist)\n    FW->>FW: $applySSRState() — seed decorated state\n    FW->>FW: $hydrate() — template-parallel path resolution\n    FW->>FW: buildSSRIndex() — number SSR nodes in one pre-order walk\n    FW->>FW: $wireEvents() + $wireRefs()\n    FW->>FW: $buildPathIndex(), $ready = true\n    FW->>CE: hydratedCallback() (once)\n    Note over FW: DOM is already correct from SSR.<br/>No $update() call needed.\n```\n\n### Client-Created Path\n\nWhen a component is created dynamically (e.g. inside a `@for` loop or via\n`document.createElement`), there's no SSR DOM:\n\n```mermaid\nsequenceDiagram\n    participant App\n    participant CE as Custom Element\n    participant FW as Framework\n\n    App->>CE: document.createElement('my-comp')\n    App->>CE: Append to DOM\n    CE->>FW: connectedCallback() → $mount()\n    FW->>FW: No SSR DOM → client path\n    FW->>FW: Parse + clone template from meta.h\n    FW->>FW: Attach to shadow root or light DOM\n    FW->>FW: $wire(root, meta) — resolve via childNode paths\n    FW->>FW: $wireEvents() + $wireRefs()\n    FW->>FW: $buildPathIndex(), $ready = true\n    FW->>FW: $update() — flush initial property values\n    FW->>CE: hydratedCallback() (once)\n```\n\n---\n\n## Compiled Template Metadata\n\nThe Rust compiler transforms HTML templates into a `TemplateMeta` JSON object\nthat describes every dynamic binding without any template syntax.  This object\nis delivered to the browser as a `<script>` tag.\n\n### Metadata Shape\n\n```typescript\ninterface TemplateMeta {\n  h: string;                           // Static HTML (no markers)\n  tx?: [slot, parts][];                // Text run locators\n  a?: CompiledAttrMeta[];              // Attribute bindings\n  ag?: [path, start, count][];         // Attribute target groups\n  c?: [conditionAST, blockIndex, slot][]; // Conditional blocks\n  r?: [collection, itemVar, blockIdx, slot][]; // Repeat blocks\n  eg?: [event, [[handler, argSpecs, targetIndex, usesEvent?]]][]; // Events\n  b?: TemplateBlockMeta[];             // Nested block metadata\n  sd?: 1;                              // Shadow DOM flag for client-created\n  re?: [event, handler, argSpecs][];    // Root-level events\n  tr?: string[];                       // Template state roots\n  ta?: string[];                       // Host attributes aligned with tr\n}\n```\n\n### Example\n\nTemplate:\n```html\n<h1>{{title}}</h1>\n<button @click=\"{increment()}\">Count: {{count}}</button>\n```\n\nCompiled metadata:\n```javascript\n{\n  h: '<h1></h1><button>Count: </button>',\n  tx: [\n    [[[0], 0], [[\"title\"]]],           // slot in <h1>, dynamic \"title\"\n    [[[1], 1], [\"Count: \", [\"count\"]]]  // slot in <button>, static + dynamic\n  ],\n  eg: [[\"click\", [[\"increment\", [], [1]]]]] // click -> increment, no event args\n}\n```\n\n### Condition references\n\nConditions are emitted as `[functionIndex, paths]` references. The index points\nto a component-local closure in `window.__webui.templateFns[tagName]`, while\n`paths` lets the runtime build targeted reactive indexes without parsing\nfunction source.\n\nThe runtime normalizes each condition reference into `[fn, paths]` once before\nhydration or client-created wiring, so hot update paths call the closure\ndirectly.\n\n---\n\n## Reactive Update Model\n\n### How `@observable` Triggers Updates\n\n```mermaid\nsequenceDiagram\n    participant App as Application Code\n    participant Dec as @observable setter\n    participant FW as $update('count')\n    participant IDX as Path Index\n    participant DOM\n\n    App->>Dec: this.count = 5\n    Dec->>Dec: Store in _count backing field\n    Dec->>Dec: Call countChanged(old, new) if defined\n    Dec->>FW: $update('count') (if element.isConnected)\n    FW->>IDX: Look up 'count' bindings + '*' wildcards\n    IDX-->>FW: 2 text bindings + 1 volatile binding\n    FW->>DOM: Patch only affected nodes\n```\n\n### Why Updates Are O(affected)\n\nAfter hydration, every dynamic value in the template is connected to a direct\nDOM node reference stored in a binding array. A per-path index maps each\ndecorated property or compiled template root to the subset of bindings that\nreference it.\n\nWhen `this.count = 5` fires, the `@observable` setter calls `$update('count')`,\nwhich looks up `'count'` in the index and only patches the bindings that\nactually depend on `count` — not every binding in the component.\n\nComputed/volatile getters and other paths that are not known state roots are\nstored under a wildcard key and always included in targeted updates.\n\n```typescript\n// Targeted update (simplified):\nconst entry = this.$pathIndex.get(path);  // O(1) map lookup\nconst wild = this.$pathIndex.get('*');     // volatile/computed bindings\n// Only walk affected bindings, not all 65+\nfor (const binding of [...entry.texts, ...wild.texts]) {\n  if (binding.node.textContent !== str) {\n    binding.node.textContent = str;  // Direct Text node reference\n  }\n}\n```\n\nNo virtual DOM diffing.  No selector queries.  No tree walking.  Each binding\nis a pre-resolved pointer to the exact DOM node that needs updating, and the\npath index ensures only affected pointers are visited.\n\n---\n\n## SSR State Seeding\n\nWhen the server renders `<span>42</span>` for a template binding, the browser\nsees `42` in the DOM before the component's JavaScript state exists. Without\nseeding, the first `$update()` would overwrite the SSR content with the wrong\nvalue.\n\nState seeding uses `window.__webui.state` loaded from the server-emitted\n`#webui-data` block. When the protocol contains projection metadata, only\n`@observable` and `@attr` keys from reachable authored components select\ninitial state; HTML-only dormant components and authored template-only roots\ncontribute no startup keys. Without projection metadata, the server preserves\nfull state. The startup state is not a permanent application store. Eager\ncomponents consume it during hydration, lazy components copy their projected\nroots before deferral, and the framework releases the global handoff when\n`webui:hydration-complete` fires on a page without a route chain. Routed pages\nretain it for router-owned lazy startup. Normalized template closure entries are\nreleased as soon as their functions are embedded in template metadata. During\n`$mount()`, `$applySSRState()` writes matching decorated keys\ndirectly to observable backing fields before any bindings are wired:\n\n```mermaid\nflowchart LR\n    SCRIPT[\"&lt;script type='application/json' id='webui-data'&gt;<br/>{ state: { count: 42 } }\"] --> APPLY[\"$applySSRState()\"]\n    APPLY --> SEED[\"Write decorated backing fields\"]\n    SEED --> HYDRATE[\"$hydrate() — bindings match<br/>server-rendered DOM\"]\n```\n\nDecorated writes go to the backing field (`_prop`) directly, avoiding reactive\nupdates before bindings are wired. For `@attr`, an existing SSR host attribute\ntakes precedence and the projected value is skipped. Template-only values\nremain represented by the SSR DOM until browser state explicitly changes them.\nLater `setState()` calls, including router partials, accept both decorated\nproperties and compiled template roots; undecorated roots are stored in hidden\nframework state. The first write to a dormant HTML-only host replays only the\nroots present in that write, preserving omitted SSR text, attributes,\nconditions, and repeats.\n\n---\n\n## Repeat Reconciliation\n\n`<for>` blocks reconcile by array position by default. The existing block at\nindex `i` receives the current item at index `i`; only a new or removed tail\ncreates or removes blocks.\n\nDuplicate values and attributes are safe because dynamic attributes never act\nas hidden keys. Reordering rebinds existing blocks in place, so local\nbrowser-owned or component state remains associated with positions rather than\nlogical items.\n\nFor reorderable or stateful lists, author `key=\"{{item.id}}\"` on the first\nchild inside `<for>` to move existing blocks with their logical items.\n`key=\"{{item}}\"` supports arrays of unique string or finite-number primitives.\n`key` is compiler-only metadata and is removed from SSR and client HTML;\n`data-key` remains an ordinary attribute with no identity semantics. Key paths\nare compiler-validated and stored only for explicitly keyed repeats, so\nunkeyed bindings carry no key state or map allocation. Duplicate or invalid\nruntime keys warn once, clear identity, and use positional reconciliation until\nvalid identity is re-established.\n\n### SSR State Reading\n\nOn initial hydration, the repeat system walks existing SSR children and\nreconstructs collection instances by matching them against the compiled\ntemplate via the `buildSSRIndex` walk.  State is already seeded from\n`window.__webui.state`, so repeat items reflect the server-rendered list\nwithout parsing marker comments.\n\n---\n\n## CSS Strategies\n\nThe framework supports three CSS delivery strategies:\n\n| Strategy | How it works |\n|----------|-------------|\n| **Link** | `<link>` tag baked into `meta.h`; the first client-created shadow instance authorizes shared constructable sheets through native loading, then warm instances adopt them before paint |\n| **Style** | `<style>` tag baked into `meta.h` — no external request |\n| **Module** | `<script type=\"importmap\">{\"imports\":{\"tag-name\":\"data:text/css,...\"}}</script>` in the HTML payload registers the CSS as a module under `tag-name`. The framework imports it via `import(tag, { with: { type: 'css' } })` and applies the resulting `CSSStyleSheet` via `adoptedStyleSheets` for shadow DOM isolation |\n\nLink promotion is progressive enhancement. Registration performs a bounded\n`<link rel=\"preload\" as=\"style\">` using the stylesheet's CORS, integrity, and\nreferrer-policy attributes, so the native stylesheet link can reuse the same\nstyle-destination request. Preload bytes are never applied directly, and a\npreload cannot inspect response MIME type; the first client instance's native\nlink remains authoritative for CSP, MIME, integrity, CORS, redirects, and\nservice workers. The framework releases the instance's paint guard as soon as\nevery original link loads, before constructing the shared ordered set from\nnative CSSOM. It then adopts that set before existing sheets with one assignment\nand shares it with later instances. Promoted links remain disabled in place so\nreconnect hydration retains the compiled element indexes. Classes with an authored\n`hydratedCallback()` still take the guarded native path on warm mounts, allowing\nlifecycle-added `<style>` elements to preserve native cascade order. If\nconstruction is unsupported, native CSSOM or\nunredirected, non-service-worker timing is unavailable, or `@import`, unsafe URL\nsyntax, link attributes, bindings, compiled events, or authored DOM `<style>`\ncascade semantics cannot be preserved, the original links remain. An anonymous\nfirst-layer shadow guard prevents component CSS from overriding the loading\ngate and cancels host transitions before hiding. When CSP blocks that guard,\nnon-style content, `$ready`, and `hydratedCallback()` remain deferred; current\nreactive state is reconciled before append. If that reconciliation changes a\nrequest-affecting bound link value, the framework waits for the replacement\nnative load before append. Disconnecting permanently cancels\nthe pending mount, while a synchronous reconnect preserves it. A link error\nis reported, leaves the browser's native links in place, releases the temporary\nguard, and completes deferred hydration. The component may be unstyled after a\ndefinitive stylesheet failure, but it remains visible and usable. SSR hydration,\nStyle, Module, and authored/global Light DOM behavior are unchanged.\n\n### Intent-time Link preloading for component assets\n\nIn a Shadow build, call `assets.preload(tag)` from pointer, focus, or other\nintent handling. The framework reads the compiler-owned head manifest, so\napplication code never derives or hardcodes content-hashed CSS names. Link\nstyles begin before the root asset executes, and later template registration\nreuses the same style-destination request. Repeated intent is deduplicated. An\nintent that never mounts the component may still produce the browser's standard\nunused-preload warning. Light builds load component-asset CSS as document\nstylesheets at the structural head boundary instead.\n\nCSS module stylesheets are cached so each component instance adopts the same\nparsed sheet without re-parsing CSS.  The `meta.sa` field specifies the\nstylesheet specifier for a component.\n\n---\n\n## Path-Based Binding Resolution\n\nUnlike frameworks that use comment markers or data attributes to locate each\ndynamic binding, this framework uses **compiled element indices** — each\nbinding names its element by pre-order position within its compiled section.\nProgressive streaming's temporary boundary and span markers locate complete\nactivation regions, not individual bindings.\n\n### Client-created resolution (`collectTemplateElements`)\n\nFor client-created components the DOM matches `meta.h` exactly (it was cloned\nfrom the parsed template fragment), so a plain pre-order walk reproduces the\ncompiled numbering:\n\n```typescript\n// elements[0] is the section root; elements[i] is the i-th element\n// a depth-first walk of the template meets.\nconst elements = collectTemplateElements(root);\nconst target = elements[index];\n```\n\n### SSR resolution (`buildSSRIndex`)\n\nSSR DOM differs from the compiled template: the renderer strips inter-element\nwhitespace, `<if>` / `<for>` bodies are rendered inline between structural\nmarkers, and raw HTML values can contribute arbitrary element runs.\n`buildSSRIndex` walks the SSR DOM and the compiled template DOM **in lockstep**,\nskipping whole marker ranges, and numbers the result the same way:\n\n```typescript\n// Elements are paired positionally and numbered in pre-order.\n// Structural and raw HTML ranges are skipped whole - that content\n// is not part of the enclosing section's static element numbering.\n// Text is the exception: whitespace stripping means text nodes do\n// not line up, so each text slot resolves from its compiled\n// right-hand static or marker boundary.\n```\n\nThis eliminates annotations for ordinary bindings: no `data-w-*` attributes and\nno comments around escaped text. The SSR server emits five structural comments\nfor `<if>` / `<for>` bodies plus paired `<!--wN-->` / `<!--/wN-->` markers around each raw HTML\nbinding. Structural closing/item markers are removed after hydration. Raw HTML\nanchors remain so updates can replace zero or multiple direct sibling nodes\nwithout touching content outside the binding's range. These exact marker\ncomments are framework-reserved and must not appear in the trusted raw value\ninside that range.\n\n---\n\n## Performance Characteristics\n\n| Operation | Cost | Why |\n|-----------|------|-----|\n| Initial hydration | O(nodes) | One pre-order walk numbers the subtree; each binding is then an index lookup |\n| Reactive update | O(affected) | Per-path index skips unrelated bindings |\n| Conditional toggle | O(block size) | Create/destroy a block instance |\n| Repeat reconciliation | O(items) | Positional scan; explicit keys use a reusable map only when order changes |\n| Event wiring | O(events) | One-time during hydration |\n\n### What the framework does NOT do\n\n- **No virtual DOM** — no tree copy, no diff algorithm\n- **No runtime template parsing** — the Rust compiler handles all syntax\n- **No parent-wide `innerHTML` on updates** — raw HTML parses into its bounded\n  contextual range; escaped text and attributes patch direct node references\n- **No `querySelector` on updates** — all nodes are pre-resolved references\n- **No recursion in hot paths** — conditions use iterative stack evaluation\n\n---\n\n## Debugging Hydration\n\nThe runtime exposes hydration timing via the Performance API:\n\n- Per component: `webui:hydrate:<tag>:start` / `webui:hydrate:<tag>:end`\n- Global: `webui:hydrate:total:start` / `webui:hydrate:total:end`\n- Window event: `webui:hydration-complete`\n\n```ts\nwindow.addEventListener('webui:hydration-complete', () => {\n  console.log('The startup hydration cohort is complete.');\n});\n```\n\nParser-startup lazy components hold this event only through their first\nintersection result. Initially visible roots finish first; dormant roots do not\nhold the one-shot event open or redispatch it later. Use `hydratedCallback()`\nfor instance readiness.\n\n---\n\n## Where to Look Next\n\n- `examples/app/todo-webui`\n- `examples/app/contact-book-manager`\n- `examples/app/commerce`\n\n## Package Development\n\n```bash\npnpm --dir packages/webui-framework build\npnpm --dir packages/webui-framework typecheck\npnpm --dir packages/webui-framework test\n```\n","readmeFilename":"README.md"}