{"_id":"@ape-egg/vibe","_rev":"64-9612325e6fe3ae404cb71f2a0159a5f3","name":"@ape-egg/vibe","dist-tags":{"latest":"4.3.3"},"versions":{"1.0.0":{"name":"@ape-egg/vibe","version":"1.0.0","keywords":["reactive","framework","frontend","ui","mutation-observer","proxy","minimalistic"],"author":{"name":"Kim Korte"},"license":"ISC","_id":"@ape-egg/vibe@1.0.0","maintainers":[{"name":"kortes","email":"me@korte.kim"}],"homepage":"https://vibe.korte.kim","dist":{"shasum":"3715657e3cf135a8b1a2dcd94139bc8a883979a8","tarball":"https://registry.npmjs.org/@ape-egg/vibe/-/vibe-1.0.0.tgz","fileCount":17,"integrity":"sha512-/bLpJOYh9FBhvGSYdyhRrY0gLqdM/XL8hOLf0pegkkgDVb1iP1SdfI2nyfZJt0PEw1piXsQWNw5yGgjo2JQCkQ==","signatures":[{"sig":"MEQCIF3Qsgri1GoEQHCX9gvH4GXNIhMPMloo4Jvmw5wweFkVAiA+veXczHp01q5aPtFnSQiJA1bcniqFNVDTtEKRxCgBxQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":73278},"main":"index.js","type":"module","gitHead":"4d795c5802e546580d77b83ebbf6b6b8812ad729","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"kortes","email":"me@korte.kim"},"_npmVersion":"11.6.2","description":"Runtime-first reactivity","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vibe_1.0.0_1768863010135_0.5440205020727475","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@ape-egg/vibe","version":"1.0.2","keywords":["reactive","framework","frontend","ui","mutation-observer","proxy","minimalistic"],"author":{"name":"Kim Korte"},"license":"ISC","_id":"@ape-egg/vibe@1.0.2","maintainers":[{"name":"kortes","email":"me@korte.kim"}],"homepage":"https://vibe.korte.kim","dist":{"shasum":"ce0ab4d2c990a94361f2047510712781f7cfd7fc","tarball":"https://registry.npmjs.org/@ape-egg/vibe/-/vibe-1.0.2.tgz","fileCount":17,"integrity":"sha512-er5ixzmj6yDBClqhMU+rmzhBvur4rxTBlH08+fVVb2yuzeRzWEYSKtu9SxGyql+qKjD+HVmYwLH/kh8yG0Zp/g==","signatures":[{"sig":"MEYCIQDVAluclaO5S0YJSiRrKaTrwRu4eWJZVCqA5QwhiCAKAAIhANoFtWoFDTWifQ6fG9vX3Y9JE7lLxjYtPiIkPDI0CSqw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74428},"main":"index.js","type":"module","gitHead":"1519e16c84ac2d3dc0d9ffa319f663b799a08682","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"kortes","email":"me@korte.kim"},"_npmVersion":"11.6.2","description":"Runtime-first reactivity","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vibe_1.0.2_1768944159359_0.8580423020851227","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@ape-egg/vibe","version":"1.0.3","keywords":["reactive","framework","frontend","ui","mutation-observer","proxy","minimalistic"],"author":{"name":"Kim Korte"},"license":"ISC","_id":"@ape-egg/vibe@1.0.3","maintainers":[{"name":"kortes","email":"me@korte.kim"}],"homepage":"https://vibe.korte.kim","dist":{"shasum":"cb9f094440f0ce58fa8debf80a1e62ddd0344511","tarball":"https://registry.npmjs.org/@ape-egg/vibe/-/vibe-1.0.3.tgz","fileCount":17,"integrity":"sha512-JRUr2tF6offF5c+99xtN3/MEPG5LijG09VMvdwDqwWocW5YXI6sd+YN5R2cbPxdM5asR+2J4ib0Ybg+5feGlxA==","signatures":[{"sig":"MEQCIFSO3kye7XQgSY1C7sAMJVNYer+QuUXWrYh1aaaPzzObAiAxWThKbMyIk253P9r3IxiBzrdwj5EuGPE8QYuGz0LvTQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":76551},"main":"index.js","type":"module","gitHead":"c63cd472e494f09037ebc847a048a8c19ee4051b","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"kortes","email":"me@korte.kim"},"_npmVersion":"11.6.2","description":"Runtime-first reactivity","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vibe_1.0.3_1769207420825_0.24706518490906504","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@ape-egg/vibe","version":"1.0.5","keywords":["reactive","framework","frontend","ui","mutation-observer","proxy","minimalistic"],"author":{"name":"Kim Korte"},"license":"ISC","_id":"@ape-egg/vibe@1.0.5","maintainers":[{"name":"kortes","email":"me@korte.kim"}],"homepage":"https://vibe.korte.kim","dist":{"shasum":"e05edc42de806635f9037186454b938e63b7ce8d","tarball":"https://registry.npmjs.org/@ape-egg/vibe/-/vibe-1.0.5.tgz","fileCount":18,"integrity":"sha512-kc61tfe+grzI63myTD04aq/o33g1q+OdE3Se+zAd9E70tx+EiHA8u37w1lkNS83M8PaGTtXcqkOHWe9vTTuX4w==","signatures":[{"sig":"MEQCIBLU69tFLqPlegsvl5iY3y29rq56bP84xUKjP6AYA3jaAiAgodshh1JIBCH+1EdG8J9TPL6SQLjWaaD2vofUK/rxDg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":86117},"main":"index.js","type":"module","gitHead":"9d26777c4ad60cdcef03c69357b44e0ac96f3e31","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"kortes","email":"me@korte.kim"},"_npmVersion":"11.6.2","description":"Runtime-first reactivity","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vibe_1.0.5_1769363164545_0.4188219977999461","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@ape-egg/vibe","version":"1.1.1","keywords":["reactive","framework","frontend","ui","mutation-observer","proxy","minimalistic","compiler"],"author":{"name":"Kim Korte"},"license":"ISC","_id":"@ape-egg/vibe@1.1.1","maintainers":[{"name":"kortes","email":"me@korte.kim"}],"homepage":"https://vibe.korte.kim","bin":{"vibe":"compiler/bin/vibe-compile.js"},"dist":{"shasum":"f6a0c55ab11f1771dfc6c4f62834336f0f204864","tarball":"https://registry.npmjs.org/@ape-egg/vibe/-/vibe-1.1.1.tgz","fileCount":32,"integrity":"sha512-un7I1CQaj2dGDGkP8A3OHahArSet18KzOvFUM1+u1r2g78QPOkJtklzixNfWaQ0TgPvFs5upOVSVpbVY6NhWbw==","signatures":[{"sig":"MEUCIHfhC5JIHiUY8tdPG9t50oPBImp3Za7XlU5PVy9xSamDAiEAww6q2cXhpE3uDmddSJa/WyIIU13o5pqFFZ4o8T3m9uA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3733987},"main":"index.js","type":"module","exports":{".":"./index.js","./runtime":"./runtime/index.js","./compiler":"./compiler/bin/vibe-compile.js"},"gitHead":"749189baaa8c5f6ceb77a95e7e22c88ddb8f07eb","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"kortes","email":"me@korte.kim"},"_npmVersion":"11.6.2","description":"Runtime-first reactivity with optional compiler","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vibe_1.1.1_1769979913344_0.42158805239342456","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@ape-egg/vibe","version":"1.1.2","keywords":["reactive","framework","frontend","ui","mutation-observer","proxy","minimalistic","compiler"],"author":{"name":"Kim Korte"},"license":"ISC","_id":"@ape-egg/vibe@1.1.2","maintainers":[{"name":"kortes","email":"me@korte.kim"}],"homepage":"https://vibe.korte.kim","bin":{"vibe":"compiler/bin/vibe-compile.js"},"dist":{"shasum":"8f97ac98bccc6ab6fc9e9f49f6c9be2454a3bca5","tarball":"https://registry.npmjs.org/@ape-egg/vibe/-/vibe-1.1.2.tgz","fileCount":32,"integrity":"sha512-CLo65DFfklKeKYykQ7Or8EybK7pmOmCbpUyV2uenPuvtrSBqNqlM27crSDipndf1vd77aE/nIeH9G5crDq88GQ==","signatures":[{"sig":"MEYCIQC8txc1vblm/nDhCGLljFgxdtzlKGF4s29+2SoSp3eaSQIhAPc+4ARSmiKxJnuHBbGMIuoQ0kGq/ebSFT10/QPFccoC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3734410},"main":"index.js","type":"module","exports":{".":"./index.js","./runtime":"./runtime/index.js","./compiler":"./compiler/bin/vibe-compile.js"},"gitHead":"749189baaa8c5f6ceb77a95e7e22c88ddb8f07eb","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"kortes","email":"me@korte.kim"},"_npmVersion":"11.6.2","description":"Runtime-first reactivity with optional compiler","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vibe_1.1.2_1769981809627_0.4735600534724458","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@ape-egg/vibe","version":"1.2.0","keywords":["reactive","framework","frontend","ui","mutation-observer","proxy","minimalistic","compiler"],"author":{"name":"Kim Korte"},"license":"ISC","_id":"@ape-egg/vibe@1.2.0","maintainers":[{"name":"kortes","email":"me@korte.kim"}],"homepage":"https://vibe.korte.kim","bin":{"vibe":"compiler/bin/vibe-compile.js"},"dist":{"shasum":"ac99bd7c65311471f103f0ff6e5b4e7a37f0b0be","tarball":"https://registry.npmjs.org/@ape-egg/vibe/-/vibe-1.2.0.tgz","fileCount":34,"integrity":"sha512-BsK0Y40kAZhbSODIcDoCopUtKEkXf/BeUAwu+aQvjSy/uTX+wVVsiHJlTShkUyV1yzcZYYCldcF3c52rf5woqw==","signatures":[{"sig":"MEQCIB9Oz3FS00lGgZ/zTAhKA5mHb+S+ZJcz/L7pN2zC3EFBAiBpt6ztGnZ6tKOTw6kasS3oVaJbpmF+7qL59S2MPl4EPQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3756991},"main":"index.js","type":"module","exports":{".":"./index.js","./runtime":"./runtime/index.js","./compiler":"./compiler/bin/vibe-compile.js"},"gitHead":"ccc421e92cda34b3a3ec2cdf4ea1244a93cf7fe1","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"kortes","email":"me@korte.kim"},"_npmVersion":"11.6.2","description":"Runtime-first reactivity with optional compiler","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vibe_1.2.0_1770154406337_0.08718844159648587","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@ape-egg/vibe","version":"1.3.0","keywords":["reactive","framework","frontend","ui","mutation-observer","proxy","minimalistic","compiler"],"author":{"name":"Kim Korte"},"license":"ISC","_id":"@ape-egg/vibe@1.3.0","maintainers":[{"name":"kortes","email":"me@korte.kim"}],"homepage":"https://vibe.korte.kim","bin":{"vibe":"compiler/bin/vibe-compile.js"},"dist":{"shasum":"80f665c25c0c4686975528e4a1c1f1b656046f35","tarball":"https://registry.npmjs.org/@ape-egg/vibe/-/vibe-1.3.0.tgz","fileCount":38,"integrity":"sha512-x2yHAoGyRuBsIkRIc+yZBq5GMIG84Bp0PITvOKJ6XdfX8pfPzGgJ5xfe7xRAEVTP4knSJQ9w9BQbuKo7IiyqDA==","signatures":[{"sig":"MEQCIDETo4DTxeptPffoBPnT007TaCplkV002mUYcO3a8mAuAiBhfBOV5L0XDgzSdJBnRxqIICYfLslHNerZDBsAdTXakQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4477016},"main":"index.js","type":"module","exports":{".":"./index.js","./runtime":"./runtime/index.js","./compiler":"./compiler/bin/vibe-compile.js"},"gitHead":"30ddf0cadf7e2b32df11277a4241fd28609294bc","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"kortes","email":"me@korte.kim"},"_npmVersion":"11.6.2","description":"Runtime-first reactivity with optional compiler","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vibe_1.3.0_1770398274406_0.8441439795390961","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"@ape-egg/vibe","version":"1.3.1","keywords":["reactive","framework","frontend","ui","mutation-observer","proxy","minimalistic","compiler"],"author":{"name":"Kim Korte"},"license":"ISC","_id":"@ape-egg/vibe@1.3.1","maintainers":[{"name":"kortes","email":"me@korte.kim"}],"homepage":"https://vibe.korte.kim","bin":{"vibe":"compiler/bin/vibe-compile.js"},"dist":{"shasum":"959b4a22a036cbca1a23ec4e50c22673bcee68b4","tarball":"https://registry.npmjs.org/@ape-egg/vibe/-/vibe-1.3.1.tgz","fileCount":39,"integrity":"sha512-biDxQ2WT1s9Zrkfu8YSJf/sBM5c0a7+JIpr1aI6u+BI3FTyjBNrFlVOx9P278TO682GQxKsaC+lO9LpT571KvA==","signatures":[{"sig":"MEUCIQDjkDtkq/ySN2VyHr95wKI8SE8hfsezeKKQv43NlrDlxAIgAxnsNG8wEewF+Vw8ZtWw195zhDG5RiwpLAr9Owsg02c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4479254},"main":"index.js","type":"module","exports":{".":"./index.js","./runtime":"./runtime/index.js","./compiler":"./compiler/bin/vibe-compile.js","./component":"./component.js"},"gitHead":"30ddf0cadf7e2b32df11277a4241fd28609294bc","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"kortes","email":"me@korte.kim"},"_npmVersion":"11.6.2","description":"Runtime-first reactivity with optional compiler","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vibe_1.3.1_1770399119493_0.4048609379087822","host":"s3://npm-registry-packages-npm-production"}},"1.3.2":{"name":"@ape-egg/vibe","version":"1.3.2","keywords":["reactive","framework","frontend","ui","mutation-observer","proxy","minimalistic","compiler"],"author":{"name":"Kim Korte"},"license":"ISC","_id":"@ape-egg/vibe@1.3.2","maintainers":[{"name":"kortes","email":"me@korte.kim"}],"homepage":"https://vibe.korte.kim","bin":{"vibe":"compiler/bin/vibe-compile.js"},"dist":{"shasum":"b3296dd7330efb8be237156871c68f4ca0612ba7","tarball":"https://registry.npmjs.org/@ape-egg/vibe/-/vibe-1.3.2.tgz","fileCount":42,"integrity":"sha512-MrEn+QhlRVONI2uZhV9YFrS8mfBTpl0KiCS55wnkcpSYGPFs3yV2G6W+W1fO9/pXWgT5mog4TxwFImxNnGyOfA==","signatures":[{"sig":"MEUCIQCXsHVDAKrY9t002iyx6GXPErvKcV7A8nIPLvRbVcAthQIgbPCPU9LNjnPeZ3jH1Gq/6H2djsEePZ8SyaY9k7+JCmA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4496572},"main":"index.js","type":"module","exports":{".":"./index.js","./runtime":"./runtime/index.js","./compiler":"./compiler/bin/vibe-compile.js","./component":"./component.js"},"gitHead":"30ddf0cadf7e2b32df11277a4241fd28609294bc","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"kortes","email":"me@korte.kim"},"_npmVersion":"11.6.2","description":"Runtime-first reactivity with optional compiler","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vibe_1.3.2_1770399467340_0.3754326828001433","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"@ape-egg/vibe","version":"1.6.0","keywords":["reactive","framework","frontend","ui","mutation-observer","proxy","minimalistic","compiler"],"author":{"name":"Kim Korte"},"license":"ISC","_id":"@ape-egg/vibe@1.6.0","maintainers":[{"name":"kortes","email":"me@korte.kim"}],"homepage":"https://vibe.korte.kim","bin":{"vibe":"compiler/bin/vibe-compile.js"},"dist":{"shasum":"b55608619c40e1a5f5dc93fe3766cd87d432d494","tarball":"https://registry.npmjs.org/@ape-egg/vibe/-/vibe-1.6.0.tgz","fileCount":48,"integrity":"sha512-usSzkGuUMi+E8rejEOZz3T83YbkENPvzGWrw7ZlGFy8WdsK+/dy4/Gne2iaPTVhfFcMcEDIae93YyM//6hQxBQ==","signatures":[{"sig":"MEUCIQD4HBoWA7WqdmGkOF4rI66ZiceKjFAVLXORa13+Zii6IgIgCZXThItfK2wKSy+xSB5LQwPJKQu5ZEaXcmFiOtxuHUY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7184576},"main":"index.js","type":"module","exports":{".":"./index.js","./runtime":"./runtime/index.js","./compiler":"./compiler/bin/vibe-compile.js","./component":"./component.js"},"gitHead":"c36c30ac5976112cf69c0a873a95dc15f0db04dd","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"kortes","email":"me@korte.kim"},"_npmVersion":"11.6.2","description":"Runtime-first reactivity with optional compiler","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vibe_1.6.0_1770906845158_0.27377200729971496","host":"s3://npm-registry-packages-npm-production"}},"1.6.1":{"name":"@ape-egg/vibe","version":"1.6.1","keywords":["reactive","framework","frontend","ui","mutation-observer","proxy","minimalistic","compiler"],"author":{"name":"Kim Korte"},"license":"ISC","_id":"@ape-egg/vibe@1.6.1","maintainers":[{"name":"kortes","email":"me@korte.kim"}],"homepage":"https://vibe.korte.kim","bin":{"vibe":"compiler/bin/vibe-compile.js"},"dist":{"shasum":"1b944a73b33d8dd99a24d8f1955e8950f0ad35ad","tarball":"https://registry.npmjs.org/@ape-egg/vibe/-/vibe-1.6.1.tgz","fileCount":48,"integrity":"sha512-N9jmisLnD3GhG5iVPCFe2FLFtdti8TsrGTiod1Pnmdvd7Dkx46owf9dSAIQh/v08bw8P8fuT7XhXaMZpFEiDdA==","signatures":[{"sig":"MEUCIQCbutN05prLQGgzYE8uH2GyRxMsxPIUeBw62eFouLhkFQIgJiu4sWCPvwo3dI86zTbv0ekyR/ZWMcUgUdt2ffeepgM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7190059},"main":"index.js","type":"module","exports":{".":"./index.js","./runtime":"./runtime/index.js","./compiler":"./compiler/bin/vibe-compile.js","./component":"./component.js"},"gitHead":"e9fd5107e9fa6dd99a2fcf11abf47450ae83ebe6","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"kortes","email":"me@korte.kim"},"_npmVersion":"11.6.2","description":"Runtime-first reactivity with optional compiler","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vibe_1.6.1_1770918206871_0.5631071018394942","host":"s3://npm-registry-packages-npm-production"}},"1.7.0":{"name":"@ape-egg/vibe","version":"1.7.0","keywords":["reactive","framework","frontend","ui","mutation-observer","proxy","minimalistic","compiler"],"author":{"name":"Kim Korte"},"license":"ISC","_id":"@ape-egg/vibe@1.7.0","maintainers":[{"name":"kortes","email":"me@korte.kim"}],"homepage":"https://vibe.korte.kim","bin":{"vibe":"compiler/bin/vibe-compile.js"},"dist":{"shasum":"645811e9d91ff6a70d31a4a4a7b7c47ec79ed84e","tarball":"https://registry.npmjs.org/@ape-egg/vibe/-/vibe-1.7.0.tgz","fileCount":48,"integrity":"sha512-ecKr75IlhkxbMlSzTxclLPIJKIn8yrgysMcNySLW01v5Dd28TF+9Tpui85L1wQZ7xGG5TZ+qu8QS5sInhGOcRg==","signatures":[{"sig":"MEYCIQDGZ2/Vc20jOrii/Who2RdlffK9lnZLhLyQVXNMgAgkfQIhANstNZDvxnebEBE7mDtTSrlDzXKWRDI5DXHOdOy+I4wX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7243348},"main":"index.js","type":"module","exports":{".":"./index.js","./runtime":"./runtime/index.js","./compiler":"./compiler/bin/vibe-compile.js","./component":"./component.js"},"gitHead":"17020e5497c1378eb7ff679f3f40c6819f69e14d","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"kortes","email":"me@korte.kim"},"_npmVersion":"11.6.2","description":"Runtime-first reactivity with optional compiler","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vibe_1.7.0_1771519551273_0.11811585736429486","host":"s3://npm-registry-packages-npm-production"}},"1.7.1":{"name":"@ape-egg/vibe","version":"1.7.1","keywords":["reactive","framework","frontend","ui","mutation-observer","proxy","minimalistic","compiler"],"author":{"name":"Kim Korte"},"license":"ISC","_id":"@ape-egg/vibe@1.7.1","maintainers":[{"name":"kortes","email":"me@korte.kim"}],"homepage":"https://vibe.korte.kim","bin":{"vibe":"compiler/bin/vibe-compile.js"},"dist":{"shasum":"e630926885fc0f52ca73e959cf2f743c09a63201","tarball":"https://registry.npmjs.org/@ape-egg/vibe/-/vibe-1.7.1.tgz","fileCount":49,"integrity":"sha512-gfQThhx6sijRKYOUp3ldwwjlD4zcv7NBePTROgnvHQk4pjAnEAFUWjRAzR3VNDgSiZac28V3/i5RK1uXppuMhw==","signatures":[{"sig":"MEUCIA3M57TYiCpUyWJ9ibftRu1z0TTRE9VqjQUT8PicDtTpAiEAgUNHnSJC6+GnDNXHPSkTdKsM2Rjy+rZMMksXiii7ruc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17480731},"main":"index.js","type":"module","exports":{".":"./index.js","./runtime":"./runtime/index.js","./compiler":"./compiler/bin/vibe-compile.js","./component":"./component.js"},"gitHead":"51520ae31472cd3e042373e05ab45a01d44d82b8","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"kortes","email":"me@korte.kim"},"_npmVersion":"11.6.2","description":"Runtime-first reactivity with optional compiler","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vibe_1.7.1_1772229786153_0.6750252390315998","host":"s3://npm-registry-packages-npm-production"}},"1.7.2":{"name":"@ape-egg/vibe","version":"1.7.2","keywords":["reactive","framework","frontend","ui","mutation-observer","proxy","minimalistic","compiler"],"author":{"name":"Kim Korte"},"license":"ISC","_id":"@ape-egg/vibe@1.7.2","maintainers":[{"name":"kortes","email":"me@korte.kim"}],"homepage":"https://vibe.korte.kim","bin":{"vibe":"compiler/bin/vibe-compile.js"},"dist":{"shasum":"f61b9f08cddd8d0f542ebbccec02da634c0108f2","tarball":"https://registry.npmjs.org/@ape-egg/vibe/-/vibe-1.7.2.tgz","fileCount":49,"integrity":"sha512-LLHplpw6jLfNwy9Aaa0v7H2S83+meEJx0QLelcTpgibADqXbN0sgTHN+4Nu+g0DeMrDlHNVGibJqWWROHtva1w==","signatures":[{"sig":"MEQCIHZJRM+5tJP4ogfrtPX7TcfnYZqs5Ga+qhQ7Is/apMb9AiBRkj8OExW+76CJcf9Mi+Fund9tjpbSvhuIrl/tcn2VdQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17481432},"main":"index.js","type":"module","exports":{".":"./index.js","./runtime":"./runtime/index.js","./compiler":"./compiler/bin/vibe-compile.js","./component":"./component.js"},"gitHead":"51520ae31472cd3e042373e05ab45a01d44d82b8","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"kortes","email":"me@korte.kim"},"_npmVersion":"11.6.2","description":"Runtime-first reactivity with optional compiler","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vibe_1.7.2_1772232603741_0.6507556245409087","host":"s3://npm-registry-packages-npm-production"}},"1.8.0":{"name":"@ape-egg/vibe","version":"1.8.0","keywords":["reactive","framework","frontend","ui","mutation-observer","proxy","minimalistic","compiler"],"author":{"name":"Kim Korte"},"license":"ISC","_id":"@ape-egg/vibe@1.8.0","maintainers":[{"name":"kortes","email":"me@korte.kim"}],"homepage":"https://vibe.korte.kim","bin":{"vibe":"compiler/bin/vibe-compile.js"},"dist":{"shasum":"f573b2ec1fed06b6701943df260f2144e7974dbe","tarball":"https://registry.npmjs.org/@ape-egg/vibe/-/vibe-1.8.0.tgz","fileCount":49,"integrity":"sha512-/+k56CWPR88tHp65Tm+Eor6QETjHXKEu0QVrX2HDOJ3dUGGKmyThGHtn4QL9kY/BTnwjJGpENwGGW/v6zJp8OA==","signatures":[{"sig":"MEUCIAFhUfHAn6dN8oqVPjOYit5wTwL5L01aS9MOU/00kX0rAiEA8vxMwhDoxZO+4N1abia6cHIoKIWaIttRCnti7JcBw6Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15927311},"main":"index.js","type":"module","exports":{".":"./index.js","./runtime":"./runtime/index.js","./compiler":"./compiler/bin/vibe-compile.js","./component":"./component.js"},"gitHead":"c0b8f603bd8f8cc4b9be255dc176493377be38e1","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"kortes","email":"me@korte.kim"},"_npmVersion":"11.6.2","description":"Runtime-first reactivity with optional compiler","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vibe_1.8.0_1775858377388_0.7293718486587024","host":"s3://npm-registry-packages-npm-production"}},"1.9.0":{"name":"@ape-egg/vibe","version":"1.9.0","keywords":["reactive","framework","frontend","ui","mutation-observer","proxy","minimalistic","compiler"],"author":{"name":"kkortes"},"license":"ISC","_id":"@ape-egg/vibe@1.9.0","maintainers":[{"name":"kortes","email":"me@korte.kim"}],"homepage":"https://vibe.korte.kim","bin":{"vibe":"compiler/bin/vibe-compile.js"},"dist":{"shasum":"e07a5a40c912d405ebf01be00c4b76556b3db9e8","tarball":"https://registry.npmjs.org/@ape-egg/vibe/-/vibe-1.9.0.tgz","fileCount":50,"integrity":"sha512-DGn5gqS95YH5uEnHrNW9Hu6yiq+RI97kW/2Qx7xQr8yPaJ6OAoRdxRAUHN/hB4tDDcAHg1++YKyk7nPZuWACHQ==","signatures":[{"sig":"MEUCIQC/QZIxaILQM3wWfWzvgv2VMlXwshXzNSYnB+gX+/wDbgIgVDbt1PaVrKkvRgOKHwXA6GklpQvfg6Ktc7UBArDVu44=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15990010},"main":"index.js","type":"module","exports":{".":"./index.js","./runtime":"./runtime/index.js","./compiler":"./compiler/bin/vibe-compile.js","./component":"./component.js"},"gitHead":"475812202c182809d458c61036ded3aeb3e29c35","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"kortes","email":"me@korte.kim"},"_npmVersion":"11.6.2","description":"Runtime-first reactivity with optional compiler","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vibe_1.9.0_1776544560080_0.25066778889825336","host":"s3://npm-registry-packages-npm-production"}},"1.9.1":{"name":"@ape-egg/vibe","version":"1.9.1","keywords":["reactive","framework","frontend","ui","mutation-observer","proxy","minimalistic","compiler"],"author":{"name":"kkortes"},"license":"ISC","_id":"@ape-egg/vibe@1.9.1","maintainers":[{"name":"kortes","email":"me@korte.kim"}],"homepage":"https://vibe.korte.kim","bin":{"vibe":"compiler/bin/vibe-compile.js"},"dist":{"shasum":"5cf1010e3050b7ac990be37f4dc28a201a78d594","tarball":"https://registry.npmjs.org/@ape-egg/vibe/-/vibe-1.9.1.tgz","fileCount":50,"integrity":"sha512-F/4x4yoe2tPYh5saefMGJGDQaQZkiGyY+5OwM1RLy+cn74F96S4T0DJr2h84bhqpeVIiCduaYg5Ojp2DQBNzEQ==","signatures":[{"sig":"MEYCIQC4qOFD75cnnXZ26dI5gU5C8A3e5S1Hepcamc0GYEE38AIhAPFXhbPwd8vb7XVkrUoDlZ+BCi8erYxMRal7X+qsTaN9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16006371},"main":"index.js","type":"module","exports":{".":"./index.js","./boot":"./boot.js","./runtime":"./runtime/index.js","./compiler":"./compiler/bin/vibe-compile.js","./component":"./component.js"},"gitHead":"866d915df0939da2594ae1bfe5f67c5b81aeef1e","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"kortes","email":"me@korte.kim"},"_npmVersion":"11.6.2","description":"Runtime-first reactivity with optional compiler","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vibe_1.9.1_1777447568471_0.5815611309950957","host":"s3://npm-registry-packages-npm-production"}},"1.9.5":{"name":"@ape-egg/vibe","version":"1.9.5","keywords":["reactive","framework","frontend","ui","mutation-observer","proxy","minimalistic","compiler"],"author":{"name":"kkortes"},"license":"ISC","_id":"@ape-egg/vibe@1.9.5","maintainers":[{"name":"kortes","email":"me@korte.kim"}],"homepage":"https://vibe.korte.kim","bin":{"vibe":"compiler/bin/vibe-compile.js"},"dist":{"shasum":"7eda42d8b7a8216f681b90316c1f379a91737d53","tarball":"https://registry.npmjs.org/@ape-egg/vibe/-/vibe-1.9.5.tgz","fileCount":51,"integrity":"sha512-K+GnwzBhoVv/ROThPZ9agkVLo1Qzv8coV/gvxeJTpDkKnI9cBm3feK6W9t8fszyt4r0MukNpGrK6UDo067Od7w==","signatures":[{"sig":"MEUCIAOPr72waEZmmDyImbgomwYqecLXnwwXK//03I8G0juBAiEAuLg90qecA/DxrSo0tcrTra7mBOCzxYb2H7/8rIZO8No=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16091607},"main":"index.js","type":"module","exports":{".":"./index.js","./boot":"./boot.js","./runtime":"./runtime/index.js","./compiler":"./compiler/bin/vibe-compile.js","./component":"./component.js"},"gitHead":"2b3b2bad6d433d8d5651bdbed00d986d6c0a7c8e","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"kortes","email":"me@korte.kim"},"_npmVersion":"11.6.2","description":"Runtime-first reactivity with optional compiler","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vibe_1.9.5_1779729588737_0.8432956211568865","host":"s3://npm-registry-packages-npm-production"}},"1.9.6":{"name":"@ape-egg/vibe","version":"1.9.6","keywords":["reactive","framework","frontend","ui","mutation-observer","proxy","minimalistic","compiler"],"author":{"name":"kkortes"},"license":"ISC","_id":"@ape-egg/vibe@1.9.6","maintainers":[{"name":"kortes","email":"me@korte.kim"}],"homepage":"https://vibe.korte.kim","bin":{"vibe":"compiler/bin/vibe-compile.js"},"dist":{"shasum":"ec4623806a2b92e40034807d0afb769f5b1a0c17","tarball":"https://registry.npmjs.org/@ape-egg/vibe/-/vibe-1.9.6.tgz","fileCount":51,"integrity":"sha512-bhbZH6GIVUQVqJJzby+MdP7obTD08oUqu3eZk+rvvB1nybXe/R5NSmisstdDREwn2ah+aWk3HvlmAMGLpVHJOg==","signatures":[{"sig":"MEYCIQCuVzBnj9eSLFLWIYRgRgcR8426AM6larSUa6BHJo4OZAIhAIgElC8moGHpFVbclDywVloqlKQxk+yQlq5yCvHAI5A2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16099641},"main":"index.js","type":"module","exports":{".":"./index.js","./boot":"./boot.js","./runtime":"./runtime/index.js","./compiler":"./compiler/bin/vibe-compile.js","./component":"./component.js"},"gitHead":"e21df035ea4a6522c3dd11b42791043da7093e16","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"kortes","email":"me@korte.kim"},"_npmVersion":"11.6.2","description":"Runtime-first reactivity with optional compiler","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vibe_1.9.6_1779976660772_0.14702135453445986","host":"s3://npm-registry-packages-npm-production"}},"1.9.7":{"name":"@ape-egg/vibe","version":"1.9.7","keywords":["reactive","framework","frontend","ui","mutation-observer","proxy","minimalistic","compiler"],"author":{"name":"kkortes"},"license":"ISC","_id":"@ape-egg/vibe@1.9.7","maintainers":[{"name":"kortes","email":"me@korte.kim"}],"homepage":"https://vibe.korte.kim","bin":{"vibe":"compiler/bin/vibe-compile.js"},"dist":{"shasum":"88d8094302bb746602e94d7f45be604d8d18aa3d","tarball":"https://registry.npmjs.org/@ape-egg/vibe/-/vibe-1.9.7.tgz","fileCount":51,"integrity":"sha512-3+q/ciiBt/vKBu3IRNP89S0p7wrkTg3qJgm79PTPLV1Irlq4CidVuU1LDHnyhAD7Jf+6WRUkfgW9U+SKNJ5wHg==","signatures":[{"sig":"MEUCIQD6xBtaT+rXnEil0cAjnMg26OHz0jKB9O5jtX5gn8RFXwIgQMciocPyQFATlKlZaBcOZ6q3fXd2bd2KzWCmaWCQIZQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16111716},"main":"index.js","type":"module","exports":{".":"./index.js","./boot":"./boot.js","./runtime":"./runtime/index.js","./compiler":"./compiler/bin/vibe-compile.js","./component":"./component.js"},"gitHead":"cbc075bbf33bc91e15384a69e454152cea4db25d","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"kortes","email":"me@korte.kim"},"_npmVersion":"11.6.2","description":"Runtime-first reactivity with optional compiler","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vibe_1.9.7_1780306739418_0.826942635266058","host":"s3://npm-registry-packages-npm-production"}},"1.9.8":{"name":"@ape-egg/vibe","version":"1.9.8","keywords":["reactive","framework","frontend","ui","mutation-observer","proxy","minimalistic","compiler"],"author":{"name":"kkortes"},"license":"ISC","_id":"@ape-egg/vibe@1.9.8","maintainers":[{"name":"kortes","email":"me@korte.kim"}],"homepage":"https://vibe.korte.kim","bin":{"vibe":"compiler/bin/vibe-compile.js"},"dist":{"shasum":"83baeefb8570b9832379cc7ccb78dc826dcdefc5","tarball":"https://registry.npmjs.org/@ape-egg/vibe/-/vibe-1.9.8.tgz","fileCount":52,"integrity":"sha512-tBPKTCAgJG9iQtqXUIjSb/wJ5IGThJDtMomXt+R/r5GCS0P0SfD+UI0KMYPWQ47M+TlZOMXfPGtBfcNYqbMhaA==","signatures":[{"sig":"MEUCIA688k9QFaQJWVFmbZcu9MXadoZ5avHF1987JTrIJzKhAiEAkXl/QLqbtxiO8ZnbNXPagAcMig4ZhMoQvaDi6eaGl0Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16123925},"main":"index.js","type":"module","exports":{".":"./index.js","./boot":"./boot.js","./runtime":"./runtime/index.js","./compiler":"./compiler/bin/vibe-compile.js","./component":"./component.js"},"gitHead":"1598a326e9a6a6736cf3714e57407cf0ddadb3fa","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"kortes","email":"me@korte.kim"},"_npmVersion":"11.6.2","description":"Runtime-first reactivity with optional compiler","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vibe_1.9.8_1780473084691_0.598627183253218","host":"s3://npm-registry-packages-npm-production"}},"1.9.9":{"name":"@ape-egg/vibe","version":"1.9.9","keywords":["reactive","framework","frontend","ui","mutation-observer","proxy","minimalistic","compiler"],"author":{"name":"kkortes"},"license":"ISC","_id":"@ape-egg/vibe@1.9.9","maintainers":[{"name":"kortes","email":"me@korte.kim"}],"homepage":"https://vibe.korte.kim","bin":{"vibe":"compiler/bin/vibe-compile.js"},"dist":{"shasum":"16d845824bbd6b31a9cb7e70392f4a8d22c12db4","tarball":"https://registry.npmjs.org/@ape-egg/vibe/-/vibe-1.9.9.tgz","fileCount":52,"integrity":"sha512-PSiclnc1DnHobHE4Ipms1BKsybdsmAkYQBqZxdjPey1Q9J30Vhz+4OvI0gDOJ2DcyewUL1BZac2tPy37uxlgxA==","signatures":[{"sig":"MEUCIQDXxz6sS54Yn93urjv6RnXoVSgn1zDEnV/YbvsqMRVNxgIgefJ+KecjYTlTzk2KNeohdod10no0RPlZkTyJiA86EWE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16134302},"main":"index.js","type":"module","exports":{".":"./index.js","./boot":"./boot.js","./runtime":"./runtime/index.js","./compiler":"./compiler/bin/vibe-compile.js","./component":"./component.js"},"gitHead":"3181c77e288631d34e1155be82d9c55cfa3244b6","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"kortes","email":"me@korte.kim"},"_npmVersion":"11.6.2","description":"Runtime-first reactivity with optional compiler","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vibe_1.9.9_1780731643077_0.9824216930015088","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@ape-egg/vibe","version":"2.0.0","keywords":["reactive","framework","frontend","ui","mutation-observer","proxy","minimalistic","compiler"],"author":{"name":"kkortes"},"license":"ISC","_id":"@ape-egg/vibe@2.0.0","maintainers":[{"name":"kortes","email":"me@korte.kim"}],"homepage":"https://vibe.korte.kim","bin":{"vibe":"compiler/bin/vibe-compile.js"},"dist":{"shasum":"51a34bd6f9bc3051cbb2c592e051b18ce0f8a946","tarball":"https://registry.npmjs.org/@ape-egg/vibe/-/vibe-2.0.0.tgz","fileCount":52,"integrity":"sha512-DeNhMM1EvG1htuvEtZn/TnLczLmpvtODiLS85DGHSlGqkdL17ookQJdtGNvtEQRqRx+aXYeiqdF0XGZgJIZEjA==","signatures":[{"sig":"MEYCIQCaE6M3bxdN8uJTBGAM+id4Y8tBqWI/pkWqk7UL5o766QIhAIowtM/5TlbgHkkMPtOc4lKIPNChpg7bfkvJez5zZ2VH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16135388},"main":"index.js","type":"module","exports":{".":"./index.js","./boot":"./boot.js","./runtime":"./runtime/index.js","./compiler":"./compiler/bin/vibe-compile.js","./component":"./component.js"},"gitHead":"febd6c8d4425a2fef504027c7b15b7946ec70713","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"kortes","email":"me@korte.kim"},"_npmVersion":"11.6.2","description":"Runtime-first reactivity with optional compiler","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vibe_2.0.0_1780929458380_0.600012630682178","host":"s3://npm-registry-packages-npm-production"}},"2.0.5":{"name":"@ape-egg/vibe","version":"2.0.5","keywords":["reactive","framework","frontend","ui","mutation-observer","proxy","minimalistic","compiler"],"author":{"name":"kkortes"},"license":"ISC","_id":"@ape-egg/vibe@2.0.5","maintainers":[{"name":"kortes","email":"me@korte.kim"}],"homepage":"https://vibe.korte.kim","bin":{"vibe":"compiler/bin/vibe-compile.js"},"dist":{"shasum":"189f171d55056222b41379f16939d45747d0fd75","tarball":"https://registry.npmjs.org/@ape-egg/vibe/-/vibe-2.0.5.tgz","fileCount":52,"integrity":"sha512-+ndwyZ2KfU4b25l5CcWyxy0F2hIjT86H7uEJ0Ju63tsYaDNI7txnl8QPnlx2jTs9edkmzvZYoNP+qwgCEYsXEA==","signatures":[{"sig":"MEYCIQCtvkJ0qE+5+pirO4eUVLDIZaWpunvfi5P3FpqGMSUMWwIhAIkhuVO0Njg8V6VjazdcZQu0npvDGp+9y4mTJVxOKLuH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16214302},"main":"index.js","type":"module","exports":{".":"./index.js","./boot":"./boot.js","./runtime":"./runtime/index.js","./compiler":"./compiler/bin/vibe-compile.js","./component":"./component.js"},"gitHead":"2dd62ca3178d6d3bb313c57b7a489c325ab7e9d3","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"kortes","email":"me@korte.kim"},"_npmVersion":"11.6.2","description":"Runtime-first reactivity with optional compiler","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vibe_2.0.5_1781630417914_0.8722343530138958","host":"s3://npm-registry-packages-npm-production"}},"2.1.1":{"name":"@ape-egg/vibe","version":"2.1.1","keywords":["reactive","framework","frontend","ui","mutation-observer","proxy","minimalistic","compiler"],"author":{"name":"kkortes"},"license":"ISC","_id":"@ape-egg/vibe@2.1.1","maintainers":[{"name":"kortes","email":"me@korte.kim"}],"homepage":"https://vibe.korte.kim","bin":{"vibe":"compiler/bin/vibe-compile.js"},"dist":{"shasum":"6594d4af00cedf719423dc0c2d8ce648956a0211","tarball":"https://registry.npmjs.org/@ape-egg/vibe/-/vibe-2.1.1.tgz","fileCount":53,"integrity":"sha512-1KfMA2aBSaehCKv9zqKpKXC05neVANwzYBUbSRNLxB8ZXWnNFaTl+eCZAURTC582IyqLnvlvB+b+wDmcpR1FSA==","signatures":[{"sig":"MEUCIQDoewhj+6YW3cc63S7si8T+TDkGl6u8kCR/c/kZGLpsugIgAYfLvQ6o/wGG6+w4PKmzzOt3gWqFYD0LIGjg3yYj4jc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16224747},"main":"index.js","type":"module","exports":{".":"./index.js","./boot":"./boot.js","./runtime":"./runtime/index.js","./compiler":"./compiler/bin/vibe-compile.js","./component":"./component.js"},"gitHead":"10a221a1ee523cbf89b4e7e100443c2aee6ad42d","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"kortes","email":"me@korte.kim"},"_npmVersion":"11.6.2","description":"Runtime-first reactivity with optional compiler","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vibe_2.1.1_1781771795037_0.8692677023869038","host":"s3://npm-registry-packages-npm-production"}},"2.1.3":{"name":"@ape-egg/vibe","version":"2.1.3","keywords":["reactive","framework","frontend","ui","mutation-observer","proxy","minimalistic","compiler"],"author":{"name":"kkortes"},"license":"ISC","_id":"@ape-egg/vibe@2.1.3","maintainers":[{"name":"kortes","email":"me@korte.kim"}],"homepage":"https://vibe.korte.kim","bin":{"vibe":"compiler/bin/vibe-compile.js"},"dist":{"shasum":"5609047dac4372d3b244c3a381ada0aedd433ca7","tarball":"https://registry.npmjs.org/@ape-egg/vibe/-/vibe-2.1.3.tgz","fileCount":53,"integrity":"sha512-iYxK2y8RXE6fkpjDfzA5I/air+vIld0F6RKQi6kuWK2QeUup0PMJfx2dKDOtMGPIw8qmSlKVZYlPReIgORtG9w==","signatures":[{"sig":"MEUCIQD4dPVqCTPLtx3HnctBYHqW4tZmjGRG26Qhs4LM5opEtgIgdVYjqsoof+CrDNsvZ3jiQll2EP01TQCYKzJ1EHlCrUs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16239376},"main":"index.js","type":"module","exports":{".":"./index.js","./boot":"./boot.js","./runtime":"./runtime/index.js","./compiler":"./compiler/bin/vibe-compile.js","./component":"./component.js"},"gitHead":"99c96aabf6ee711d9f8cc33dc4af1bcdd87d24de","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"kortes","email":"me@korte.kim"},"_npmVersion":"11.6.2","description":"Runtime-first reactivity with optional compiler","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vibe_2.1.3_1781785345136_0.8005776905436799","host":"s3://npm-registry-packages-npm-production"}},"2.1.4":{"name":"@ape-egg/vibe","version":"2.1.4","keywords":["reactive","framework","frontend","ui","mutation-observer","proxy","minimalistic","compiler"],"author":{"name":"kkortes"},"license":"ISC","_id":"@ape-egg/vibe@2.1.4","maintainers":[{"name":"kortes","email":"me@korte.kim"}],"homepage":"https://vibe.korte.kim","bin":{"vibe":"compiler/bin/vibe-compile.js"},"dist":{"shasum":"ef49cd6cc14249d591871b0b3c8e14dcad5f9716","tarball":"https://registry.npmjs.org/@ape-egg/vibe/-/vibe-2.1.4.tgz","fileCount":54,"integrity":"sha512-3MC95ws9v0sLTbs8Joad5bP829gkTYL8qpuZOTYs2h7ZPhkCtXCbJHifWdo4CSNuOiWKPygVQmWLnb5LGdPatw==","signatures":[{"sig":"MEQCIAuiFkGoqkt6AplD9LD3ox4Niyg2xNVsjElNF6HGgYCRAiAWll+dvgHuToG7qTL4EACDE8FpSqKj8W1V69UIQHmzeg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16282287},"main":"index.js","type":"module","exports":{".":"./index.js","./boot":"./boot.js","./runtime":"./runtime/index.js","./compiler":"./compiler/bin/vibe-compile.js","./component":"./component.js"},"gitHead":"2c1f55dae456226216daccb95b9c3b4e2aa1c5b8","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"kortes","email":"me@korte.kim"},"_npmVersion":"11.6.2","description":"Runtime-first reactivity with optional compiler","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vibe_2.1.4_1781814228222_0.8426156228538397","host":"s3://npm-registry-packages-npm-production"}},"2.1.6":{"name":"@ape-egg/vibe","version":"2.1.6","keywords":["reactive","framework","frontend","ui","mutation-observer","proxy","minimalistic","compiler"],"author":{"name":"kkortes"},"license":"ISC","_id":"@ape-egg/vibe@2.1.6","maintainers":[{"name":"kortes","email":"me@korte.kim"}],"homepage":"https://vibe.korte.kim","bin":{"vibe":"compiler/bin/vibe-compile.js"},"dist":{"shasum":"7dbbaf8eb9c18f960ca80f7a30841837804294a1","tarball":"https://registry.npmjs.org/@ape-egg/vibe/-/vibe-2.1.6.tgz","fileCount":55,"integrity":"sha512-xSbRrrlEN04a0DJmt+jRVMaWrD5K3kbKFEIm/8tQJPKVnAe04oBjpObVsSJZ2Tj51nEwBz7QU1tDZ51WF8MqqQ==","signatures":[{"sig":"MEUCIBG00cnoYlPN2Pam1gGp5512tmBsyJYDLVO5CeVAZACxAiEAyV0gKneuqkh29qVg9mxkb52XH45HYryRpqeZq/5C+vA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16506721},"main":"index.js","type":"module","exports":{".":"./index.js","./boot":"./boot.js","./runtime":"./runtime/index.js","./compiler":"./compiler/bin/vibe-compile.js","./component":"./component.js"},"gitHead":"9062be84ce97ff38fbd7ec6ed64bc0ec0b790477","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"kortes","email":"me@korte.kim"},"_npmVersion":"11.6.2","description":"Runtime-first reactivity with optional compiler","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vibe_2.1.6_1781865816711_0.7028223159958826","host":"s3://npm-registry-packages-npm-production"}},"2.1.7":{"name":"@ape-egg/vibe","version":"2.1.7","keywords":["reactive","framework","frontend","ui","mutation-observer","proxy","minimalistic","compiler"],"author":{"name":"kkortes"},"license":"ISC","_id":"@ape-egg/vibe@2.1.7","maintainers":[{"name":"kortes","email":"me@korte.kim"}],"homepage":"https://vibe.korte.kim","bin":{"vibe":"compiler/bin/vibe-compile.js"},"dist":{"shasum":"85e17630aa1cb7d85d79b56731bce75e15c54c37","tarball":"https://registry.npmjs.org/@ape-egg/vibe/-/vibe-2.1.7.tgz","fileCount":55,"integrity":"sha512-upni2GQai9dkl6/rBCY0Ci0LIp/bZh2ksMH0e11NSITOuVrrud3Z3UQeiCc51OFVGarKzDEZ10Br3EfukHaHEg==","signatures":[{"sig":"MEUCIQD6RQuendo0SYn+dpAGKYDqS9ppiiNFjjKyUSb3Q6xRTAIgQ2cXPlOG4siXYZURQx2GQ670LUa2Rfb81EYDWFxA0+Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16509575},"main":"index.js","type":"module","exports":{".":"./index.js","./boot":"./boot.js","./runtime":"./runtime/index.js","./compiler":"./compiler/bin/vibe-compile.js","./component":"./component.js"},"gitHead":"d8e6db36acab46fb3c2b85ed4f865c58e3362443","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"kortes","email":"me@korte.kim"},"_npmVersion":"11.6.2","description":"Runtime-first reactivity with optional compiler","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vibe_2.1.7_1781890186994_0.8479477873571648","host":"s3://npm-registry-packages-npm-production"}},"2.1.8":{"name":"@ape-egg/vibe","version":"2.1.8","keywords":["reactive","framework","frontend","ui","mutation-observer","proxy","minimalistic","compiler"],"author":{"name":"kkortes"},"license":"ISC","_id":"@ape-egg/vibe@2.1.8","maintainers":[{"name":"kortes","email":"me@korte.kim"}],"homepage":"https://vibe.korte.kim","bin":{"vibe":"compiler/bin/vibe-compile.js"},"dist":{"shasum":"56d8dd8d225826fcd4116b66fe3881039d3c6008","tarball":"https://registry.npmjs.org/@ape-egg/vibe/-/vibe-2.1.8.tgz","fileCount":55,"integrity":"sha512-mnT6Wu+AlxdMZwgCfzBuhZMOea4uaYnloHGfdcG4Bu9NT2Eph9aD/fQXxAeMte0KcOXIgR8fQ3cA4qVi04OApA==","signatures":[{"sig":"MEUCIQCD5N4oFBUfWIAih3n1HqMKe5WFo+dIVPbAvKc2UzBT6gIgR5RqCP5FKB/lRBcHqhv0Sc4lCCJYMoUUTeNx7ys6OYo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16535189},"main":"index.js","type":"module","exports":{".":"./index.js","./boot":"./boot.js","./runtime":"./runtime/index.js","./compiler":"./compiler/bin/vibe-compile.js","./component":"./component.js"},"gitHead":"576b480bfc626cfcb28702614800277a86f35404","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"kortes","email":"me@korte.kim"},"_npmVersion":"11.6.2","description":"Runtime-first reactivity with optional compiler","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vibe_2.1.8_1781908251011_0.32823717178635037","host":"s3://npm-registry-packages-npm-production"}},"2.1.9":{"name":"@ape-egg/vibe","version":"2.1.9","keywords":["reactive","framework","frontend","ui","mutation-observer","proxy","minimalistic","compiler"],"author":{"name":"kkortes"},"license":"ISC","_id":"@ape-egg/vibe@2.1.9","maintainers":[{"name":"kortes","email":"me@korte.kim"}],"homepage":"https://vibe.korte.kim","bin":{"vibe":"compiler/bin/vibe-compile.js"},"dist":{"shasum":"30658055e11b817b6b7138362e1e963f01d31662","tarball":"https://registry.npmjs.org/@ape-egg/vibe/-/vibe-2.1.9.tgz","fileCount":55,"integrity":"sha512-O5BgxgoSYXEIMgDiZldtFey8i9Y9IHVDPyhnECHHkAUfwZTcbzfAAiFzzz6YS1u1P9E8XesTkYs0zsOxIRi1kw==","signatures":[{"sig":"MEUCIQDaNfDXmqN4TNGCzuRB5+irQQt3+nUTVJr0Vrb3FEMqqgIgICCDr+A3a82qMXlGJUe6nkyRY7W7kcMVDTFx7vNRjpg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16565961},"main":"index.js","type":"module","exports":{".":"./index.js","./boot":"./boot.js","./runtime":"./runtime/index.js","./compiler":"./compiler/bin/vibe-compile.js","./component":"./component.js"},"gitHead":"1c3217e25658b91a80ae4ca535368d4edf023e29","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"kortes","email":"me@korte.kim"},"_npmVersion":"11.6.2","description":"Runtime-first reactivity with optional compiler","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vibe_2.1.9_1781989814591_0.2865737877330705","host":"s3://npm-registry-packages-npm-production"}},"2.1.10":{"name":"@ape-egg/vibe","version":"2.1.10","keywords":["reactive","framework","frontend","ui","mutation-observer","proxy","minimalistic","compiler"],"author":{"name":"kkortes"},"license":"ISC","_id":"@ape-egg/vibe@2.1.10","maintainers":[{"name":"kortes","email":"me@korte.kim"}],"homepage":"https://vibe.korte.kim","bin":{"vibe":"compiler/bin/vibe-compile.js"},"dist":{"shasum":"e98d8ae28cbcd106b89bec82ed4888807d463521","tarball":"https://registry.npmjs.org/@ape-egg/vibe/-/vibe-2.1.10.tgz","fileCount":55,"integrity":"sha512-U8WrnqrOlifq0Tg+v1gZ5avhWRf6iWWZ/3yIKNQGEfLAdgBgAaGUGYl13VY1NlX3tOvCfsv4dBtnHno+8zK54A==","signatures":[{"sig":"MEUCIQDwxTZGGsNkt9ABFb8NlNMMWGBAK9jYaDz46rg1OSTANgIgHX7yMPJTUBf1JFxpO27ebtAcfg9fX6g1ku2MMDJi0RY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16580771},"main":"index.js","type":"module","exports":{".":"./index.js","./boot":"./boot.js","./runtime":"./runtime/index.js","./compiler":"./compiler/bin/vibe-compile.js","./component":"./component.js"},"gitHead":"8c00e4dd8b56aca22ebce4970da31154e827479e","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"kortes","email":"me@korte.kim"},"_npmVersion":"11.6.2","description":"Runtime-first reactivity with optional compiler","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vibe_2.1.10_1782115629081_0.016324135208026336","host":"s3://npm-registry-packages-npm-production"}},"2.1.11":{"name":"@ape-egg/vibe","version":"2.1.11","keywords":["reactive","framework","frontend","ui","mutation-observer","proxy","minimalistic","compiler"],"author":{"name":"kkortes"},"license":"ISC","_id":"@ape-egg/vibe@2.1.11","maintainers":[{"name":"kortes","email":"me@korte.kim"}],"homepage":"https://vibe.korte.kim","bin":{"vibe":"compiler/bin/vibe-compile.js"},"dist":{"shasum":"23d951a0b837b939565cc15e57c88ad53eb6bcb8","tarball":"https://registry.npmjs.org/@ape-egg/vibe/-/vibe-2.1.11.tgz","fileCount":56,"integrity":"sha512-8bFWIOSDDuBIt0ZQx5+Aw54cuzTxvj42sQ1SERUqPmAW34TwldX7uQe3ebLiF0If9ckTbOku+whenE7A2eYoUQ==","signatures":[{"sig":"MEUCIQDIkiinJhoVbDnHmf8PvY/+J57PeWEyamPcqWGJ/BHy2QIgJ9VpCwWAKAFF4kwazZz+WrFY0NEy0stcPV+4ShTQ+HI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16596449},"main":"index.js","type":"module","exports":{".":"./index.js","./boot":"./boot.js","./runtime":"./runtime/index.js","./compiler":"./compiler/bin/vibe-compile.js","./component":"./component.js"},"gitHead":"9f48e484eeeff647269171cd5b6d245c205e942c","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"kortes","email":"me@korte.kim"},"_npmVersion":"11.6.2","description":"Runtime-first reactivity with optional compiler","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vibe_2.1.11_1782119478717_0.01082922498787342","host":"s3://npm-registry-packages-npm-production"}},"2.1.12":{"name":"@ape-egg/vibe","version":"2.1.12","keywords":["reactive","framework","frontend","ui","mutation-observer","proxy","minimalistic","compiler"],"author":{"name":"kkortes"},"license":"ISC","_id":"@ape-egg/vibe@2.1.12","maintainers":[{"name":"kortes","email":"me@korte.kim"}],"homepage":"https://vibe.korte.kim","bin":{"vibe":"compiler/bin/vibe-compile.js"},"dist":{"shasum":"db3e471d1569aecaa3118570e0a97d125bf15ea5","tarball":"https://registry.npmjs.org/@ape-egg/vibe/-/vibe-2.1.12.tgz","fileCount":56,"integrity":"sha512-lazyL7FGHuZLGLvcSPYfb/uLJUQwV/BItdcx/bhuVUThffzSn2+fbMKTTNT4WcPoKGvXsO0Hyr/APRJmZ644Hw==","signatures":[{"sig":"MEUCIQDDI30ZzWpuYDDZ+if5az0Tl+VfVP2pSaworpvO9iSxvQIgSHrLfWp16EBp63ql2ewDqUP3wSaGX4dEF/UoMsjgLnM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16600004},"main":"index.js","type":"module","exports":{".":"./index.js","./boot":"./boot.js","./runtime":"./runtime/index.js","./compiler":"./compiler/bin/vibe-compile.js","./component":"./component.js"},"gitHead":"ff63f00d4b7a3bf6c62153ea5906c7f39e73dea8","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"kortes","email":"me@korte.kim"},"_npmVersion":"11.6.2","description":"Runtime-first reactivity with optional compiler","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vibe_2.1.12_1782147669940_0.40871414507347437","host":"s3://npm-registry-packages-npm-production"}},"2.1.13":{"name":"@ape-egg/vibe","version":"2.1.13","keywords":["reactive","framework","frontend","ui","mutation-observer","proxy","minimalistic","compiler"],"author":{"name":"kkortes"},"license":"ISC","_id":"@ape-egg/vibe@2.1.13","maintainers":[{"name":"kortes","email":"me@korte.kim"}],"homepage":"https://vibe.korte.kim","bin":{"vibe":"compiler/bin/vibe-compile.js"},"dist":{"shasum":"9ecfe4080c13918cdff961aec5a28005bb596f42","tarball":"https://registry.npmjs.org/@ape-egg/vibe/-/vibe-2.1.13.tgz","fileCount":57,"integrity":"sha512-ZN7u8sX7tkBIhayz/Znh1ZMYyThJcQ3pEEvK7WnYXS1C34RqR8QQjP4ixNLi92WDrNQFHsCuPhif7AHQRoGx/Q==","signatures":[{"sig":"MEYCIQDJgEzfUVbjnWqSNcPvXwU6z6W6GuV6Lwv+7CDePgdk1wIhAKS9xCAFTR80LaIXn8wEZ7jhSKKzqsyrkPFkNCi00BSH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16644664},"main":"index.js","type":"module","exports":{".":"./index.js","./boot":"./boot.js","./runtime":"./runtime/index.js","./compiler":"./compiler/bin/vibe-compile.js","./component":"./component.js"},"gitHead":"07e7ed6c5ce5a5973c60019ac5be77ea78dc1b0c","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"kortes","email":"me@korte.kim"},"_npmVersion":"11.6.2","description":"Runtime-first reactivity with optional compiler","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vibe_2.1.13_1782165071294_0.09731719048218923","host":"s3://npm-registry-packages-npm-production"}},"2.1.14":{"name":"@ape-egg/vibe","version":"2.1.14","keywords":["reactive","framework","frontend","ui","mutation-observer","proxy","minimalistic","compiler"],"author":{"name":"kkortes"},"license":"ISC","_id":"@ape-egg/vibe@2.1.14","maintainers":[{"name":"kortes","email":"me@korte.kim"}],"homepage":"https://vibe.korte.kim","bin":{"vibe":"compiler/bin/vibe-compile.js"},"dist":{"shasum":"2433675ca03a818a21829bfe318b298c03f9905f","tarball":"https://registry.npmjs.org/@ape-egg/vibe/-/vibe-2.1.14.tgz","fileCount":57,"integrity":"sha512-Q6slZZYIXi6xiwRBGg4NGF3FccyrLeSgxYtbJzljcjRGHAgy1J2AcngJXiFMQ2kKiONeZZ2PZCmKDBiCNH3zfg==","signatures":[{"sig":"MEQCIFsYVfDzBu3prouU1f8QPGCpFYqqtsMex7fyF+BIPqJ5AiBrOudj6Vyp/Is+VxKG1uzPSDlYw6B1YYgzOtp0BkRUdA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16646877},"main":"index.js","type":"module","exports":{".":"./index.js","./boot":"./boot.js","./runtime":"./runtime/index.js","./compiler":"./compiler/bin/vibe-compile.js","./component":"./component.js"},"gitHead":"782992f313351635644682af9e90e542d5267140","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"kortes","email":"me@korte.kim"},"_npmVersion":"11.6.2","description":"Runtime-first reactivity with optional compiler","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vibe_2.1.14_1782231833489_0.6052356092246636","host":"s3://npm-registry-packages-npm-production"}},"2.1.15":{"name":"@ape-egg/vibe","version":"2.1.15","keywords":["reactive","framework","frontend","ui","mutation-observer","proxy","minimalistic","compiler"],"author":{"name":"kkortes"},"license":"ISC","_id":"@ape-egg/vibe@2.1.15","maintainers":[{"name":"kortes","email":"me@korte.kim"}],"homepage":"https://vibe.korte.kim","bin":{"vibe":"compiler/bin/vibe-compile.js"},"dist":{"shasum":"86c97b6cf7f7250c02eab2a5553790d148683b4c","tarball":"https://registry.npmjs.org/@ape-egg/vibe/-/vibe-2.1.15.tgz","fileCount":57,"integrity":"sha512-1M5/9hv8FVANFqArP5HKKwpOq5ou9GB1BcIfGAhpqUJldkmgRBAkRZ+EzBb3CSxwhYl2s3h+oZFiAzBzhW9bMg==","signatures":[{"sig":"MEUCIQCiHpugIqkkQeCb5sGe8rX2oAUCJeTuT1JjtE+tHPmXrwIgIlZKYfgz0JgdqLRqyIrZiDalFfLRaI3dBgR3dulqZ1A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16651039},"main":"index.js","type":"module","exports":{".":"./index.js","./boot":"./boot.js","./runtime":"./runtime/index.js","./compiler":"./compiler/bin/vibe-compile.js","./component":"./component.js"},"gitHead":"43a4b0f89c24e0799c25a5282487d437280e03d5","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"kortes","email":"me@korte.kim"},"_npmVersion":"11.6.2","description":"Runtime-first reactivity with optional compiler","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vibe_2.1.15_1782244454402_0.19141043240739086","host":"s3://npm-registry-packages-npm-production"}},"2.1.16":{"name":"@ape-egg/vibe","version":"2.1.16","keywords":["reactive","framework","frontend","ui","mutation-observer","proxy","minimalistic","compiler"],"author":{"name":"kkortes"},"license":"ISC","_id":"@ape-egg/vibe@2.1.16","maintainers":[{"name":"kortes","email":"me@korte.kim"}],"homepage":"https://vibe.korte.kim","bin":{"vibe":"compiler/bin/vibe-compile.js"},"dist":{"shasum":"3f9537f34eb6e7554168ee7be918ae255d197b61","tarball":"https://registry.npmjs.org/@ape-egg/vibe/-/vibe-2.1.16.tgz","fileCount":57,"integrity":"sha512-MJMkti45Tdx5j44kWMZpyRk0NwC0Ydo9rdRZz4C+j1p65Z605/2DzoonUjPAUcERp80emQQiUMUGFLtOGCRmIw==","signatures":[{"sig":"MEYCIQCe5SEeQj2rbChWK/XRnorOjl3h6dq6ABSXjp7wd5HNHAIhAOuZ7krtDY7syGc+20KeSJsYLrvqW8HtVyMRyTHk01Gu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16653546},"main":"index.js","type":"module","exports":{".":"./index.js","./boot":"./boot.js","./runtime":"./runtime/index.js","./compiler":"./compiler/bin/vibe-compile.js","./component":"./component.js"},"gitHead":"eae9d5bf686dbb05fa3458c297d72c191d4c7e27","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"kortes","email":"me@korte.kim"},"_npmVersion":"11.6.2","description":"Runtime-first reactivity with optional compiler","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vibe_2.1.16_1782246524043_0.9339923464793591","host":"s3://npm-registry-packages-npm-production"}},"2.1.17":{"name":"@ape-egg/vibe","version":"2.1.17","keywords":["reactive","framework","frontend","ui","mutation-observer","proxy","minimalistic","compiler"],"author":{"name":"kkortes"},"license":"ISC","_id":"@ape-egg/vibe@2.1.17","maintainers":[{"name":"kortes","email":"me@korte.kim"}],"homepage":"https://vibe.korte.kim","bin":{"vibe":"compiler/bin/vibe-compile.js"},"dist":{"shasum":"4f928938059c1e417e4d3600dce7746536d16b65","tarball":"https://registry.npmjs.org/@ape-egg/vibe/-/vibe-2.1.17.tgz","fileCount":57,"integrity":"sha512-tR6NPdIThamcLJNrsQvYUD+Cse9NjUPMr50BhpNhKvB0cUujbWlDf9JArEhdGZwYaXiDJqv/omyJeOMm/qV7aQ==","signatures":[{"sig":"MEYCIQCZt/qYw+Vd+lqowbVqynDCK863+3rYTGPNEpcPy9B1eQIhAP0KZvf9DoSRvzElBfc/WbtNSCYjcxZ6shHx311l1C48","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16658099},"main":"index.js","type":"module","exports":{".":"./index.js","./boot":"./boot.js","./runtime":"./runtime/index.js","./compiler":"./compiler/bin/vibe-compile.js","./component":"./component.js"},"gitHead":"9e9dbd356b0dd0853a596b22b2c0e146a97f2f66","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"kortes","email":"me@korte.kim"},"_npmVersion":"11.6.2","description":"Runtime-first reactivity with optional compiler","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vibe_2.1.17_1782305744561_0.9904423021080004","host":"s3://npm-registry-packages-npm-production"}},"2.1.18":{"name":"@ape-egg/vibe","version":"2.1.18","keywords":["reactive","framework","frontend","ui","mutation-observer","proxy","minimalistic","compiler"],"author":{"name":"kkortes"},"license":"ISC","_id":"@ape-egg/vibe@2.1.18","maintainers":[{"name":"kortes","email":"me@korte.kim"}],"homepage":"https://vibe.korte.kim","bin":{"vibe":"compiler/bin/vibe-compile.js"},"dist":{"shasum":"aec40e845e8f35cc4e50ff60bfd1868144f5a720","tarball":"https://registry.npmjs.org/@ape-egg/vibe/-/vibe-2.1.18.tgz","fileCount":57,"integrity":"sha512-udXGDccthbCLlQ0JSqi4VkHGlcMjm2JjEuuTH0pRhE8RRQZt6/OBb6RAHdHuTa2s4f380pmvnjm06M9pAHdtKQ==","signatures":[{"sig":"MEYCIQCoGjoQ7+R7/zB0eAOwjg/5A4jAYo+wgRD8P7YeupRKOAIhAOe4Wtomnkii5Eks11C6St86Ayag/IyItkRvw5Jts2Yg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16661394},"main":"index.js","type":"module","exports":{".":"./index.js","./boot":"./boot.js","./runtime":"./runtime/index.js","./compiler":"./compiler/bin/vibe-compile.js","./component":"./component.js"},"gitHead":"a6a08bab1250bbbe393974bc2ffa5c14c7e2f176","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"kortes","email":"me@korte.kim"},"_npmVersion":"11.6.2","description":"Runtime-first reactivity with optional compiler","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vibe_2.1.18_1782409520240_0.5346048625776745","host":"s3://npm-registry-packages-npm-production"}},"2.1.19":{"name":"@ape-egg/vibe","version":"2.1.19","keywords":["reactive","framework","frontend","ui","mutation-observer","proxy","minimalistic","compiler"],"author":{"name":"kkortes"},"license":"ISC","_id":"@ape-egg/vibe@2.1.19","maintainers":[{"name":"kortes","email":"me@korte.kim"}],"homepage":"https://vibe.korte.kim","bin":{"vibe":"compiler/bin/vibe-compile.js"},"dist":{"shasum":"97ee096d71da8497c406f7bfb7b751f09e76b45d","tarball":"https://registry.npmjs.org/@ape-egg/vibe/-/vibe-2.1.19.tgz","fileCount":57,"integrity":"sha512-i2JVuKGsRX43YLM8oCL9Kds5dlxcIuyvBn9rRKMht2Qx7efaKvJrSvNJjudl7hZcM636P9vz3nXsnVrm8cqIiA==","signatures":[{"sig":"MEUCIAbG3d8k86X+XPCdlfN/u+4Kg9fo/lZpc/nG8/wO7R5eAiEA/GWFmCcjt0+rO/FqcNwo3bG311GkuV9mC27ssKh+lXE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16668833},"main":"index.js","type":"module","exports":{".":"./index.js","./boot":"./boot.js","./runtime":"./runtime/index.js","./compiler":"./compiler/bin/vibe-compile.js","./component":"./component.js"},"gitHead":"c48c9ff682d0ee5b18c936e2b0f6c371422718e0","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"kortes","email":"me@korte.kim"},"_npmVersion":"11.6.2","description":"Runtime-first reactivity with optional compiler","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vibe_2.1.19_1782415775762_0.8431484218202225","host":"s3://npm-registry-packages-npm-production"}},"2.1.20":{"name":"@ape-egg/vibe","version":"2.1.20","keywords":["reactive","framework","frontend","ui","mutation-observer","proxy","minimalistic","compiler"],"author":{"name":"kkortes"},"license":"ISC","_id":"@ape-egg/vibe@2.1.20","maintainers":[{"name":"kortes","email":"me@korte.kim"}],"homepage":"https://vibe.korte.kim","bin":{"vibe":"compiler/bin/vibe-compile.js"},"dist":{"shasum":"8a1dc6bff406d2e32796a390f468803091054b31","tarball":"https://registry.npmjs.org/@ape-egg/vibe/-/vibe-2.1.20.tgz","fileCount":58,"integrity":"sha512-7ymJNgsXExYH8jM9BIr7pd6xYjUO8poRMEs8UOcujQrLsKvXOicczyPdwI0VdbmMpRGCW43AMMijslj5x9zYYw==","signatures":[{"sig":"MEQCICHMj26yc3iIc0ROUzxgG9ZnDUUIjr7X8fk71ZZpKR0sAiBpsGrxqJ1H65jI2AHrzilik7tPxpM/rcpyEic0hcVUeA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16687946},"main":"index.js","type":"module","exports":{".":"./index.js","./boot":"./boot.js","./runtime":"./runtime/index.js","./compiler":"./compiler/bin/vibe-compile.js","./component":"./component.js","./hot-module-refresh":"./hot-module-refresh.js"},"gitHead":"f7decfcc207ea509a3bb3248a41e66dca4e3a878","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"kortes","email":"me@korte.kim"},"_npmVersion":"11.6.2","description":"Runtime-first reactivity with optional compiler","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vibe_2.1.20_1782570000932_0.021645963329680384","host":"s3://npm-registry-packages-npm-production"}},"2.1.21":{"name":"@ape-egg/vibe","version":"2.1.21","keywords":["reactive","framework","frontend","ui","mutation-observer","proxy","minimalistic","compiler"],"author":{"name":"kkortes"},"license":"ISC","_id":"@ape-egg/vibe@2.1.21","maintainers":[{"name":"kortes","email":"me@korte.kim"}],"homepage":"https://vibe.korte.kim","bin":{"vibe":"compiler/bin/vibe-compile.js"},"dist":{"shasum":"c7d1941c0d556931d58203f51554f2ea93da88cd","tarball":"https://registry.npmjs.org/@ape-egg/vibe/-/vibe-2.1.21.tgz","fileCount":58,"integrity":"sha512-fNh2cz7ZoKAZ61PgV2nRXWx8iTqkt4RcnWnDT8WDjBuj/KXIOXrK5CCiVIAMFTjXF0apUwoR0i/yMtO20akrMQ==","signatures":[{"sig":"MEYCIQDZN959uB41v7hUVVSmvx4roN12P/Nm/zIkxPw6nCsy4AIhAKn0Ot0qCtuqX3yAB7f0OFJiNTrUGvUkCj1TqOBz5kkV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16740219},"main":"index.js","type":"module","exports":{".":"./index.js","./boot":"./boot.js","./runtime":"./runtime/index.js","./compiler":"./compiler/bin/vibe-compile.js","./component":"./component.js","./hot-module-refresh":"./hot-module-refresh.js"},"gitHead":"ab9fd7baa18e8163d4f9aa15d02c10a6d37d7779","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"kortes","email":"me@korte.kim"},"_npmVersion":"11.6.2","description":"Runtime-first reactivity with optional compiler","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vibe_2.1.21_1782942728733_0.23972257509627992","host":"s3://npm-registry-packages-npm-production"}},"2.1.22":{"name":"@ape-egg/vibe","version":"2.1.22","keywords":["reactive","framework","frontend","ui","mutation-observer","proxy","minimalistic","compiler"],"author":{"name":"kkortes"},"license":"ISC","_id":"@ape-egg/vibe@2.1.22","maintainers":[{"name":"kortes","email":"me@korte.kim"}],"homepage":"https://vibe.korte.kim","bin":{"vibe":"compiler/bin/vibe-compile.js"},"dist":{"shasum":"7dec939409ec3880de4687570cf05adca39d072b","tarball":"https://registry.npmjs.org/@ape-egg/vibe/-/vibe-2.1.22.tgz","fileCount":58,"integrity":"sha512-eyp1ubqnjcxcD2It6lWPzg2wZt2B9HNJr9Jj7weRVIaCyME1O8OCNKrOjoi5tREPwDyDynxnxi+FV0Rnd2FxBg==","signatures":[{"sig":"MEUCIQDDmRZ4zgN6Z5lPmEg7n8fj2V5ks15DqMcjAzsvBNR5owIga8CN/guSnOIlHdarmLkZVIGEcxdNjrRSmz5g/8f7FYc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16761905},"main":"index.js","type":"module","exports":{".":"./index.js","./boot":"./boot.js","./runtime":"./runtime/index.js","./compiler":"./compiler/bin/vibe-compile.js","./component":"./component.js","./hot-module-refresh":"./hot-module-refresh.js"},"gitHead":"b73bf4c46a4bedae9c4b68681d7527ae0bed9713","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"kortes","email":"me@korte.kim"},"_npmVersion":"11.6.2","description":"Runtime-first reactivity with optional compiler","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vibe_2.1.22_1782983623416_0.18652002628140174","host":"s3://npm-registry-packages-npm-production"}},"2.3.0":{"name":"@ape-egg/vibe","version":"2.3.0","keywords":["reactive","framework","frontend","ui","mutation-observer","proxy","minimalistic","compiler"],"author":{"name":"kkortes"},"license":"ISC","_id":"@ape-egg/vibe@2.3.0","maintainers":[{"name":"kortes","email":"me@korte.kim"}],"homepage":"https://vibe.korte.kim","bin":{"vibe":"compiler/bin/vibe-compile.js"},"dist":{"shasum":"cf8a9bb751c30ed4f80d98ef42697fb2da55deab","tarball":"https://registry.npmjs.org/@ape-egg/vibe/-/vibe-2.3.0.tgz","fileCount":60,"integrity":"sha512-M5Ioc+UpzeifeenoAZGbmOSIAS5WA0zMG8EfJifIlqB9R/sFGOD5LikB89kuZv8doWWqAQ/Wy6nbvewYI+AD8g==","signatures":[{"sig":"MEUCIAN/3/YQiWHZmw2UcFnm07TjV7ea8yExwpkFo0xDXGG+AiEApnTp+x2Qo7X6SGYRtJ7Xxfees5PEtSLDMV/uUxdKcAk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17003166},"main":"index.js","type":"module","exports":{".":"./index.js","./spa":"./spa.js","./boot":"./boot.js","./runtime":"./runtime/index.js","./compiler":"./compiler/bin/vibe-compile.js","./component":"./component.js","./hot-module-refresh":"./hot-module-refresh.js"},"gitHead":"5690a76ad31ca20bf99f95cb82effd9df3616ea3","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"kortes","email":"me@korte.kim"},"_npmVersion":"11.6.2","description":"Runtime-first reactivity with optional compiler","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vibe_2.3.0_1783018354279_0.07070491500929998","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"@ape-egg/vibe","version":"3.0.0","keywords":["reactive","framework","frontend","ui","no-build","mutation-observer","proxy","minimalistic"],"author":{"name":"kkortes"},"license":"ISC","_id":"@ape-egg/vibe@3.0.0","maintainers":[{"name":"kortes","email":"me@korte.kim"}],"homepage":"https://vibe.korte.kim","bugs":{"url":"https://github.com/kkortes/vibe/issues"},"dist":{"shasum":"f07312d25807acc3a1584ff23026d8920eab3249","tarball":"https://registry.npmjs.org/@ape-egg/vibe/-/vibe-3.0.0.tgz","fileCount":33,"integrity":"sha512-pc6jEnKmpPlBTRVxNUN0MqLbV71riiyTu45E4w5z54oacUPqmliwSmd6C+rqqSnkY5NgLY9DN9J73NVQbobd1A==","signatures":[{"sig":"MEUCIEsWtj5tQNHHxsVwftwN122/AKTqej5JcHWRkOF1A1T+AiEAy3kVoPPb3VdbCe6UR+FPBdrPDAA7RTYS+R6SidDRJBM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":512562},"main":"index.js","type":"module","exports":{".":"./index.js","./spa":"./spa.js","./component":"./component.js","./hot-module-refresh":"./hot-module-refresh.js"},"gitHead":"f00f21880c7ac9174d9f8d82569d254763603608","_npmUser":{"name":"kortes","email":"me@korte.kim"},"repository":{"url":"git+https://github.com/kkortes/vibe.git","type":"git"},"_npmVersion":"11.6.2","description":"Runtime-first reactivity for plain HTML — no build step, no virtual DOM, no new syntax to learn","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vibe_3.0.0_1784497758873_0.5977418388382627","host":"s3://npm-registry-packages-npm-production"}},"3.0.1":{"name":"@ape-egg/vibe","version":"3.0.1","keywords":["reactive","framework","frontend","ui","no-build","mutation-observer","proxy","minimalistic"],"author":{"name":"kkortes"},"license":"ISC","_id":"@ape-egg/vibe@3.0.1","maintainers":[{"name":"kortes","email":"me@korte.kim"}],"homepage":"https://vibe.korte.kim","bugs":{"url":"https://github.com/kkortes/vibe/issues"},"dist":{"shasum":"8ac9cbe600c30c7ea9084eb9edfefd79a8aed0e9","tarball":"https://registry.npmjs.org/@ape-egg/vibe/-/vibe-3.0.1.tgz","fileCount":33,"integrity":"sha512-UMyml0DLVljEZ9G6RGokBjpuSpdRhYft+eHqOxtXVYF/+BiA3bz3y29v0X12SQHEbn5KS7g6U0bGyNkcmSsHQg==","signatures":[{"sig":"MEUCIQDM3NRrMQYneqeCH+ykC5mCJ8egAEx9cbhsKxy67fEoLQIgF4LBXb5OE16odob9v5RCBANBRjaN/hVvHKIlq9wdiLs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":512562},"main":"index.js","type":"module","exports":{".":"./index.js","./spa":"./spa.js","./component":"./component.js","./hot-module-refresh":"./hot-module-refresh.js"},"gitHead":"3d70633118ff10365aa21dc1f44117c156ae859c","_npmUser":{"name":"kortes","email":"me@korte.kim"},"repository":{"url":"git+https://github.com/kkortes/vibe.git","type":"git"},"_npmVersion":"11.6.2","description":"Runtime-first reactivity for plain HTML — no build step, no virtual DOM, no new syntax to learn","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vibe_3.0.1_1784504373941_0.5378328933048546","host":"s3://npm-registry-packages-npm-production"}},"3.0.2":{"name":"@ape-egg/vibe","version":"3.0.2","keywords":["reactive","framework","frontend","ui","no-build","mutation-observer","proxy","minimalistic"],"author":{"name":"kkortes"},"license":"ISC","_id":"@ape-egg/vibe@3.0.2","maintainers":[{"name":"kortes","email":"me@korte.kim"}],"homepage":"https://vibe.korte.kim","bugs":{"url":"https://github.com/kkortes/vibe/issues"},"dist":{"shasum":"51e6d8703509e974f70cb0048ba82f6f27146de7","tarball":"https://registry.npmjs.org/@ape-egg/vibe/-/vibe-3.0.2.tgz","fileCount":33,"integrity":"sha512-HMxrjHhrgPjNN1GWL3Y/NdwUbu3weR8nENwlaZQ+9dkBef2KakAj3MEJWVAK9Cy3pewautIIvuhaSwhhte9meg==","signatures":[{"sig":"MEYCIQCM+O5XwzrgTDkW+32Q7yQACBwZSzyiwFNjMCJ2eP7w+QIhAIpc9reu3e3UIGS6zfclBi5x1h4Tln/w1Ab9bURtGs9E","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":512962},"main":"index.js","type":"module","exports":{".":"./index.js","./spa":"./spa.js","./component":"./component.js","./hot-module-refresh":"./hot-module-refresh.js"},"gitHead":"5b684435bea1651fbd4fad7c518ffa402bcf917f","_npmUser":{"name":"kortes","email":"me@korte.kim"},"repository":{"url":"git+https://github.com/kkortes/vibe.git","type":"git"},"_npmVersion":"11.6.2","description":"Runtime-first reactivity for plain HTML — no build step, no virtual DOM, no new syntax to learn","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vibe_3.0.2_1784533812530_0.6523390926660224","host":"s3://npm-registry-packages-npm-production"}},"3.0.4":{"name":"@ape-egg/vibe","version":"3.0.4","keywords":["reactive","framework","frontend","ui","no-build","mutation-observer","proxy","minimalistic"],"author":{"name":"kkortes"},"license":"ISC","_id":"@ape-egg/vibe@3.0.4","maintainers":[{"name":"kortes","email":"me@korte.kim"}],"homepage":"https://vibe.korte.kim","bugs":{"url":"https://github.com/kkortes/vibe/issues"},"dist":{"shasum":"1d230e9c53ba0f8f996b362aff0045ffdc81ec30","tarball":"https://registry.npmjs.org/@ape-egg/vibe/-/vibe-3.0.4.tgz","fileCount":33,"integrity":"sha512-LK3c7JJzhhEXSk92vGWgqZyTqIOS1An2fkvJ+VTQo+NLAV+sYa8QJA5EovwnumZvQN3sXTeAsqAk7QDri5KxVw==","signatures":[{"sig":"MEUCIQCSyQ4fYmq9N9M87+uAAmgcSwSJXLOsuOf7fM1HOs1IHgIgOzi/xpkezfJHQBfoNYjVompi5515iKWz2nMdh972ZgA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":519694},"main":"index.js","type":"module","exports":{".":"./index.js","./spa":"./spa.js","./component":"./component.js","./hot-module-refresh":"./hot-module-refresh.js"},"gitHead":"d5fdc99f6ce8a58e72df70cd9f99e27aeff3c237","_npmUser":{"name":"kortes","email":"me@korte.kim"},"repository":{"url":"git+https://github.com/kkortes/vibe.git","type":"git"},"_npmVersion":"11.6.2","description":"Runtime-first reactivity for plain HTML — no build step, no virtual DOM, no new syntax to learn","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vibe_3.0.4_1785104679802_0.5102554146405796","host":"s3://npm-registry-packages-npm-production"}},"3.0.5":{"name":"@ape-egg/vibe","version":"3.0.5","keywords":["reactive","framework","frontend","ui","no-build","mutation-observer","proxy","minimalistic"],"author":{"name":"kkortes"},"license":"ISC","_id":"@ape-egg/vibe@3.0.5","maintainers":[{"name":"kortes","email":"me@korte.kim"}],"homepage":"https://vibe.korte.kim","bugs":{"url":"https://github.com/kkortes/vibe/issues"},"dist":{"shasum":"4b0fd2b27f413dec1679f79933c93eb78d25500c","tarball":"https://registry.npmjs.org/@ape-egg/vibe/-/vibe-3.0.5.tgz","fileCount":33,"integrity":"sha512-XRrUCH+VT1OEs05Y5KTNP3xLEXLmGG58NfWdOMn/zATp6bkiNcKTkc463xAfdqY3tllQ665hbmFKzDuBzEKDgg==","signatures":[{"sig":"MEQCICAToFgekshyHUtGNBxcpHweJGd8SXJRzz9FdCrOETcYAiBx90kLTkwGK1ug/9JdkXz4BdyaXMZ4Fr784loZormK9w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":523876},"main":"index.js","type":"module","exports":{".":"./index.js","./spa":"./spa.js","./component":"./component.js","./hot-module-refresh":"./hot-module-refresh.js"},"gitHead":"0402b438f1576b33ce6f1ee097abeacd20cbabb8","_npmUser":{"name":"kortes","email":"me@korte.kim"},"repository":{"url":"git+https://github.com/kkortes/vibe.git","type":"git"},"_npmVersion":"11.6.2","description":"Runtime-first reactivity for plain HTML — no build step, no virtual DOM, no new syntax to learn","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vibe_3.0.5_1786965107105_0.9841211856419445","host":"s3://npm-registry-packages-npm-production"}},"4.0.0":{"name":"@ape-egg/vibe","version":"4.0.0","keywords":["reactive","framework","frontend","ui","no-build","mutation-observer","proxy","minimalistic"],"author":{"name":"kkortes"},"license":"ISC","_id":"@ape-egg/vibe@4.0.0","maintainers":[{"name":"kortes","email":"me@korte.kim"}],"homepage":"https://vibe.korte.kim","bugs":{"url":"https://github.com/kkortes/vibe/issues"},"dist":{"shasum":"220d5f2c3e38fe946a47adfce0ccd7ee9f140705","tarball":"https://registry.npmjs.org/@ape-egg/vibe/-/vibe-4.0.0.tgz","fileCount":34,"integrity":"sha512-d/lKGzhjgyqNN1mxLCMP2b3oQNNth52QhHdWyb469u/bFFvrJxSOTGhO7nAxfQbtPnUqOB5oz05d9oTWOcs8xw==","signatures":[{"sig":"MEYCIQCgSuYHIdKdQ3QEnxFWejJQDrGPyiRPFRuF+ftHKcq2lgIhAOzvbn9k9DyGRHFv/G8GR8lW78rjGyLQBsxSC2MuIfhv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":525902},"main":"index.js","type":"module","exports":{".":"./index.js","./spa":"./spa.js","./component":"./component.js","./hot-module-refresh":"./hot-module-refresh.js"},"gitHead":"087405c6dcb83f8cba05b94d85a8b84697bad48d","_npmUser":{"name":"kortes","email":"me@korte.kim"},"repository":{"url":"git+https://github.com/kkortes/vibe.git","type":"git"},"_npmVersion":"11.6.2","description":"Runtime-first reactivity for plain HTML — no build step, no virtual DOM, no new syntax to learn","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vibe_4.0.0_1787134911209_0.9347232720013827","host":"s3://npm-registry-packages-npm-production"}},"4.0.1":{"name":"@ape-egg/vibe","version":"4.0.1","keywords":["reactive","framework","frontend","ui","no-build","mutation-observer","proxy","minimalistic"],"author":{"name":"kkortes"},"license":"ISC","_id":"@ape-egg/vibe@4.0.1","maintainers":[{"name":"kortes","email":"me@korte.kim"}],"homepage":"https://vibe.korte.kim","bugs":{"url":"https://github.com/kkortes/vibe/issues"},"dist":{"shasum":"2983d9d2f932eee9a122247eb70fbcb9c09d9e8c","tarball":"https://registry.npmjs.org/@ape-egg/vibe/-/vibe-4.0.1.tgz","fileCount":34,"integrity":"sha512-n+T5sL3ini1iccp3XpN00fnPAKBb7q1e3/OF0yAwdkfoOKEJb2HOD9VoOYwxT1Fpcd5gd5mU/eI/V0q861pRbw==","signatures":[{"sig":"MEQCIE5zUU2kIAMbv/jSYOF2fjv3ZHl00KuVqF6E4NP2DbXsAiBXUHirxklAUZLgh4303R46B6AXw7ojHKVXOh+Eb9pmNw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":528166},"main":"index.js","type":"module","exports":{".":"./index.js","./spa":"./spa.js","./component":"./component.js","./hot-module-refresh":"./hot-module-refresh.js"},"gitHead":"c2194998e9fb59821c98d7a735a07018b4230546","_npmUser":{"name":"kortes","email":"me@korte.kim"},"repository":{"url":"git+https://github.com/kkortes/vibe.git","type":"git"},"_npmVersion":"11.6.2","description":"Runtime-first reactivity for plain HTML — no build step, no virtual DOM, no new syntax to learn","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vibe_4.0.1_1787233106306_0.9984713029162557","host":"s3://npm-registry-packages-npm-production"}},"4.1.1":{"name":"@ape-egg/vibe","version":"4.1.1","keywords":["reactive","framework","frontend","ui","no-build","mutation-observer","proxy","minimalistic"],"author":{"name":"kkortes"},"license":"ISC","_id":"@ape-egg/vibe@4.1.1","maintainers":[{"name":"kortes","email":"me@korte.kim"}],"homepage":"https://vibe.korte.kim","bugs":{"url":"https://github.com/kkortes/vibe/issues"},"dist":{"shasum":"0c2d0c8cef2c146b3f5aec874f2f82d925e82c50","tarball":"https://registry.npmjs.org/@ape-egg/vibe/-/vibe-4.1.1.tgz","fileCount":35,"integrity":"sha512-vnZIIVf571qkHSXnG7ab4hLMz1XOQ85MFJs02C4G5OzMx3GLmmq4kAGFj+aLeEVbwVaE18Ba1ONRnLuBeuxJKg==","signatures":[{"sig":"MEQCIBjq3ryIB7/Yxtizw4Eup5FSSdCMkkeQKBCaHxhuUPPuAiBbcWTgitR4hfDUTFI+SMIX1wa54E9DGoHUDaVycIMv2w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":306877},"main":"index.js","type":"module","exports":{".":"./index.js","./spa":"./spa.js","./vibe.css":"./vibe.css","./component":"./component.js","./hot-module-refresh":"./hot-module-refresh.js"},"gitHead":"02d73f3c10eb2a94979412440299e7b9b65fcccd","_npmUser":{"name":"kortes","email":"me@korte.kim"},"repository":{"url":"git+https://github.com/kkortes/vibe.git","type":"git"},"_npmVersion":"11.6.2","description":"Runtime-first reactivity for plain HTML — no build step, no virtual DOM, no new syntax to learn","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vibe_4.1.1_1787335435339_0.3878487793169598","host":"s3://npm-registry-packages-npm-production"}},"4.1.3":{"name":"@ape-egg/vibe","version":"4.1.3","keywords":["reactive","framework","frontend","ui","no-build","mutation-observer","proxy","minimalistic"],"author":{"name":"kkortes"},"license":"ISC","_id":"@ape-egg/vibe@4.1.3","maintainers":[{"name":"kortes","email":"me@korte.kim"}],"homepage":"https://vibe.korte.kim","bugs":{"url":"https://github.com/kkortes/vibe/issues"},"dist":{"shasum":"08c52c952a54553728c0272e4a4160842e7cffac","tarball":"https://registry.npmjs.org/@ape-egg/vibe/-/vibe-4.1.3.tgz","fileCount":36,"integrity":"sha512-2rkOj3+sXBtiOyYMXJ51NxJ0z+zSeJUe0wOphHd+qi05l5FQle4+9SiUMHrkKmIAC5FT+ZncL9hugHnfSxQqVQ==","signatures":[{"sig":"MEUCIQCCeviuT8hb+CYHBZvywkp/8dCmwlU6QFPLdTomnLpocwIgTbf6j88+6knEvG411EscyDn2NvNtTr+HB0GCm7wiZuU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":304246},"main":"index.js","type":"module","exports":{".":"./index.js","./spa":"./spa.js","./vibe.css":"./vibe.css","./component":"./component.js","./hot-module-refresh":"./hot-module-refresh.js"},"gitHead":"740b10d11cf3d1545d0891ce4ed237bce6af62ff","_npmUser":{"name":"kortes","email":"me@korte.kim"},"repository":{"url":"git+https://github.com/kkortes/vibe.git","type":"git"},"_npmVersion":"11.6.2","description":"Runtime-first reactivity for plain HTML — no build step, no virtual DOM, no new syntax to learn","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vibe_4.1.3_1787691734452_0.5994660539118062","host":"s3://npm-registry-packages-npm-production"}},"4.1.4":{"name":"@ape-egg/vibe","version":"4.1.4","keywords":["reactive","framework","frontend","ui","no-build","mutation-observer","proxy","minimalistic"],"author":{"name":"kkortes"},"license":"ISC","_id":"@ape-egg/vibe@4.1.4","maintainers":[{"name":"kortes","email":"me@korte.kim"}],"homepage":"https://vibe.korte.kim","bugs":{"url":"https://github.com/kkortes/vibe/issues"},"dist":{"shasum":"8118a06d7fb956b9c25b301faf06586d75ad367c","tarball":"https://registry.npmjs.org/@ape-egg/vibe/-/vibe-4.1.4.tgz","fileCount":36,"integrity":"sha512-3jpKq8gJI3ots7fWcY1VhzUu5s+H6VA50JOFQ8EEo/F/cUjhFqQ1R+Rw0QKSlfb3vJO5clZyCfOKJca2sSvLUA==","signatures":[{"sig":"MEYCIQDBHoRHH2qBQSnZfieBNSvXsNteKRBlsC5Ea8L5l/MtkQIhAK2Wg3NV2SRy0zobTIZmRhZ+5qPBd4T8TBJy+7bB9oFI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":304246},"main":"index.js","type":"module","exports":{".":"./index.js","./spa":"./spa.js","./vibe.css":"./vibe.css","./component":"./component.js","./hot-module-refresh":"./hot-module-refresh.js"},"gitHead":"102346876f4601f401f15c54da66765ca1e51018","_npmUser":{"name":"kortes","email":"me@korte.kim"},"repository":{"url":"git+https://github.com/kkortes/vibe.git","type":"git"},"_npmVersion":"11.6.2","description":"Runtime-first reactivity for plain HTML — no build step, no virtual DOM, no new syntax to learn","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vibe_4.1.4_1787694273356_0.6928973164222652","host":"s3://npm-registry-packages-npm-production"}},"4.2.0":{"name":"@ape-egg/vibe","version":"4.2.0","keywords":["reactive","framework","frontend","ui","no-build","mutation-observer","proxy","minimalistic"],"author":{"name":"kkortes"},"license":"ISC","_id":"@ape-egg/vibe@4.2.0","maintainers":[{"name":"kortes","email":"me@korte.kim"}],"homepage":"https://vibe.korte.kim","bugs":{"url":"https://github.com/kkortes/vibe/issues"},"dist":{"shasum":"01756e363b595089ca0722f40c40775cf9542814","tarball":"https://registry.npmjs.org/@ape-egg/vibe/-/vibe-4.2.0.tgz","fileCount":37,"integrity":"sha512-P/1MJnQ3Bn1L9xXdKs9jpWe8Q8Rin7t3nN9fZJGoyr9ZQaJlpxOLI5vKvgWvqxtVQYzy2WcIdvwpRRMcfJWRiA==","signatures":[{"sig":"MEYCIQCSVvYZouA7FZZRmKDBG/HKQg81YXSvG+hHSnM/ftED8gIhAKtTS4HTwMeygPGMHgjnYrLwEZU3puZwSi3uWLqeKgpY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":311498},"main":"index.js","type":"module","exports":{".":"./index.js","./spa":"./spa.js","./vibe.css":"./vibe.css","./component":"./component.js","./constants":"./runtime/constants.js","./hot-module-refresh":"./hot-module-refresh.js"},"gitHead":"8445a27194b779532965f9431c8e56b27aa0d90b","_npmUser":{"name":"kortes","email":"me@korte.kim"},"repository":{"url":"git+https://github.com/kkortes/vibe.git","type":"git"},"_npmVersion":"11.6.2","description":"Runtime-first reactivity for plain HTML — no build step, no virtual DOM, no new syntax to learn","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vibe_4.2.0_1787814852436_0.4954568659292551","host":"s3://npm-registry-packages-npm-production"}},"4.2.1":{"name":"@ape-egg/vibe","version":"4.2.1","keywords":["reactive","framework","frontend","ui","no-build","mutation-observer","proxy","minimalistic"],"author":{"name":"kkortes"},"license":"ISC","_id":"@ape-egg/vibe@4.2.1","maintainers":[{"name":"kortes","email":"me@korte.kim"}],"homepage":"https://vibe.korte.kim","bugs":{"url":"https://github.com/kkortes/vibe/issues"},"dist":{"shasum":"99145f6aefdbed9e53a5fd7a18dd1cc09214c071","tarball":"https://registry.npmjs.org/@ape-egg/vibe/-/vibe-4.2.1.tgz","fileCount":37,"integrity":"sha512-VaYSmsHdbUNrR1tiu9Wi11kmzknsEd5wlPGw8gh6FaOFJOvGzc1UHorTuwgZKo9lcJdxahm1s+/J2PEHHx6c6w==","signatures":[{"sig":"MEUCIQDAq3+Lwq9laVCt6s0ntdbkccKiS4H1Jaa/AMv3k4AZJgIgKWaAX/8+JQmm1rIZgx+oIVULX++tUSLL9cqeh+LaG20=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":311929},"main":"index.js","type":"module","exports":{".":"./index.js","./spa":"./spa.js","./vibe.css":"./vibe.css","./component":"./component.js","./constants":"./runtime/constants.js","./hot-module-refresh":"./hot-module-refresh.js"},"gitHead":"051b58a7e7c9627387d9ec6afd41f569ffe87516","_npmUser":{"name":"kortes","email":"me@korte.kim"},"repository":{"url":"git+https://github.com/kkortes/vibe.git","type":"git"},"_npmVersion":"11.6.2","description":"Runtime-first reactivity for plain HTML — no build step, no virtual DOM, no new syntax to learn","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vibe_4.2.1_1788197063604_0.39598754345419884","host":"s3://npm-registry-packages-npm-production"}},"4.3.0":{"name":"@ape-egg/vibe","version":"4.3.0","keywords":["reactive","framework","frontend","ui","no-build","mutation-observer","proxy","minimalistic"],"author":{"name":"kkortes"},"license":"ISC","_id":"@ape-egg/vibe@4.3.0","maintainers":[{"name":"kortes","email":"me@korte.kim"}],"homepage":"https://vibe.korte.kim","bugs":{"url":"https://github.com/kkortes/vibe/issues"},"dist":{"shasum":"46e4285f538d0ad897482d6e52815fb615d712f8","tarball":"https://registry.npmjs.org/@ape-egg/vibe/-/vibe-4.3.0.tgz","fileCount":37,"integrity":"sha512-v1/XKuKo4US68f3WqTpvBRRLqTIcWn6hTilTkrhcERiOrqdV7PMX4CSlzN1IjVhYdpcYNs1OpYSkKIhfPGQtpw==","signatures":[{"sig":"MEQCIAgFQfHYcOLUUHMqMcU5u2kKgDmGz8gs+ElivYu0B2HzAiBY9q2UZf8LjqN5tGr4+URMTof5fFs4jnq+9v6CbCGmSQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":320762},"main":"index.js","type":"module","exports":{".":"./index.js","./spa":"./spa.js","./vibe.css":"./vibe.css","./component":"./component.js","./constants":"./runtime/constants.js","./hot-module-refresh":"./hot-module-refresh.js"},"gitHead":"c61fe767beaf55e37455a11e10e5ef826d8c82c6","_npmUser":{"name":"kortes","email":"me@korte.kim"},"repository":{"url":"git+https://github.com/kkortes/vibe.git","type":"git"},"_npmVersion":"11.6.2","description":"Runtime-first reactivity for plain HTML — no build step, no virtual DOM, no new syntax to learn","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vibe_4.3.0_1788432694638_0.6496344390448963","host":"s3://npm-registry-packages-npm-production"}},"4.3.1":{"name":"@ape-egg/vibe","version":"4.3.1","keywords":["reactive","framework","frontend","ui","no-build","mutation-observer","proxy","minimalistic"],"author":{"name":"kkortes"},"license":"ISC","_id":"@ape-egg/vibe@4.3.1","maintainers":[{"name":"kortes","email":"me@korte.kim"}],"homepage":"https://vibe.korte.kim","bugs":{"url":"https://github.com/kkortes/vibe/issues"},"dist":{"shasum":"6a6d6409b1620b4a7c8eaecb19b01bd4df2cc257","tarball":"https://registry.npmjs.org/@ape-egg/vibe/-/vibe-4.3.1.tgz","fileCount":37,"integrity":"sha512-GAduttIT6suqeLmy06UcRZ161t9URw31cseW2bch1RkZmMDaT6SoJOSFUZELFKMtx8BcuzJUpVEPcaK0aMncuQ==","signatures":[{"sig":"MEUCIEa0t0CuM/bfk4mTdNEdZAYYknOUVSn3Mxczot/OkuC0AiEA+IyCJbEvC+JzH1oi+eWF8JYLfAiU4XXYHQCgd9V2he4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDCXonRh7uENBaIUIwndfAck/Gm+IPpfEpab+HSac3ERgIgYgJx5TdLQ7JroLQGPbHB8rbM/cnCHaaioOpY5sT8dN0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":321309},"main":"index.js","type":"module","exports":{".":"./index.js","./spa":"./spa.js","./vibe.css":"./vibe.css","./component":"./component.js","./constants":"./runtime/constants.js","./hot-module-refresh":"./hot-module-refresh.js"},"gitHead":"8253bd7434731d405995c044c49f6ad78681e0b1","_npmUser":{"name":"kortes","email":"me@korte.kim"},"repository":{"url":"git+https://github.com/kkortes/vibe.git","type":"git"},"_npmVersion":"11.6.2","description":"Runtime-first reactivity for plain HTML — no build step, no virtual DOM, no new syntax to learn","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vibe_4.3.1_1788555920005_0.3161949822043497","host":"s3://npm-registry-packages-npm-production"}},"4.3.2":{"name":"@ape-egg/vibe","version":"4.3.2","keywords":["reactive","framework","frontend","ui","no-build","mutation-observer","proxy","minimalistic"],"author":{"name":"kkortes"},"license":"ISC","_id":"@ape-egg/vibe@4.3.2","maintainers":[{"name":"kortes","email":"me@korte.kim"}],"homepage":"https://vibe.korte.kim","bugs":{"url":"https://github.com/kkortes/vibe/issues"},"dist":{"shasum":"aa7db1ecb9cf76e0b37e50a7ccc62c125ae22007","tarball":"https://registry.npmjs.org/@ape-egg/vibe/-/vibe-4.3.2.tgz","fileCount":37,"integrity":"sha512-5JSapP9VpCGkYRjAhOYSDTTt/4fEdFqm3uhCxiY6KBeryaReenrQaiXiqUOY+Qi15t3hbglsbsuoMgCDKffHGg==","signatures":[{"sig":"MEYCIQDTeY0Gt2aBKlQm+QEGqOFQHLcEUe1cbttp/O98x1BpSgIhAJc//Hu5akmYUgX09o731EZYS4JZNKlyedrIFU8KE/zD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDzrb3idh/yw9sTQ9gqldCBW88XRoJVkt02TNNTS70iUwIhAPG4aAkZz+yGu/0zHbHzTT5XwrwShVkxhRYss9ge7lfV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":321343},"main":"index.js","type":"module","exports":{".":"./index.js","./spa":"./spa.js","./vibe.css":"./vibe.css","./component":"./component.js","./constants":"./runtime/constants.js","./hot-module-refresh":"./hot-module-refresh.js"},"gitHead":"a1d454f3988e520e35bbddf9f1e0d3179f4060c7","_npmUser":{"name":"kortes","email":"me@korte.kim"},"repository":{"url":"git+https://github.com/kkortes/vibe.git","type":"git"},"_npmVersion":"11.6.2","description":"Runtime-first reactivity for plain HTML — no build step, no virtual DOM, no new syntax to learn","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vibe_4.3.2_1788852850975_0.8210566841346516","host":"s3://npm-registry-packages-npm-production"}},"4.3.3":{"_id":"@ape-egg/vibe@4.3.3","bugs":{"url":"https://github.com/kkortes/vibe/issues"},"dist":{"shasum":"390357ce9d5bb45e2bd0cbe974053c0c97cadff0","tarball":"https://registry.npmjs.org/@ape-egg/vibe/-/vibe-4.3.3.tgz","fileCount":37,"integrity":"sha512-hQ8CcZ/biNeVib2iFD19PzPETLcLWuDKxupMiqA81qqWdCq0uScPSUN3s22A/GnSwRK+HAi90Yf8qPhAwrAQmw==","signatures":[{"sig":"MEUCIQDoe0+Lu8VkNZyYKrQ7TxYfLx6BLlgGE0qd7L8jyRljbwIgE1JSLDAZpjvI/s2yO/WZz3j6RjDxEPjRhfttddd8QW4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDOAtHMVeYYvbBgMk78kvCCUCwWYNwTNmU6Mst9lS9F6wIgLjGlc5K+K2ilok9aPL2VGVLaKUQWrnPhuKZGQSk8YMA="}],"unpackedSize":321343},"main":"index.js","name":"@ape-egg/vibe","type":"module","author":{"name":"kkortes"},"exports":{".":"./index.js","./spa":"./spa.js","./vibe.css":"./vibe.css","./component":"./component.js","./constants":"./runtime/constants.js","./hot-module-refresh":"./hot-module-refresh.js"},"gitHead":"a1d454f3988e520e35bbddf9f1e0d3179f4060c7","license":"ISC","version":"4.3.3","_npmUser":{"name":"kortes","email":"me@korte.kim"},"homepage":"https://vibe.korte.kim","keywords":["reactive","framework","frontend","ui","no-build","mutation-observer","proxy","minimalistic"],"repository":{"url":"git+https://github.com/kkortes/vibe.git","type":"git"},"_npmVersion":"11.6.2","description":"Runtime-first reactivity for plain HTML — no build step, no virtual DOM, no new syntax to learn","directories":{},"maintainers":[{"name":"kortes","email":"me@korte.kim"}],"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/vibe_4.3.3_1788853271508_0.5094982773174117"}}},"time":{"created":"2026-01-19T22:50:10.062Z","modified":"2026-09-08T07:41:11.882Z","1.0.0":"2026-01-19T22:50:10.295Z","1.0.2":"2026-01-20T21:22:39.527Z","1.0.3":"2026-01-23T22:30:20.973Z","1.0.5":"2026-01-25T17:46:04.719Z","1.1.0":"2026-02-01T20:34:58.784Z","1.1.1":"2026-02-01T21:05:13.584Z","1.1.2":"2026-02-01T21:36:49.838Z","1.2.0":"2026-02-03T21:33:26.587Z","1.3.0":"2026-02-06T17:17:54.661Z","1.3.1":"2026-02-06T17:31:59.734Z","1.3.2":"2026-02-06T17:37:47.651Z","1.6.0":"2026-02-12T14:34:05.499Z","1.6.1":"2026-02-12T17:43:27.187Z","1.7.0":"2026-02-19T16:45:51.621Z","1.7.1":"2026-02-27T22:03:06.588Z","1.7.2":"2026-02-27T22:50:04.163Z","1.8.0":"2026-04-10T21:59:37.776Z","1.9.0":"2026-04-18T20:36:00.481Z","1.9.1":"2026-04-29T07:26:08.893Z","1.9.5":"2026-05-25T17:19:49.084Z","1.9.6":"2026-05-28T13:57:41.122Z","1.9.7":"2026-06-01T09:38:59.650Z","1.9.8":"2026-06-03T07:51:25.019Z","1.9.9":"2026-06-06T07:40:43.319Z","2.0.0":"2026-06-08T14:37:38.646Z","2.0.5":"2026-06-16T17:20:18.217Z","2.1.1":"2026-06-18T08:36:35.294Z","2.1.3":"2026-06-18T12:22:25.432Z","2.1.4":"2026-06-18T20:23:48.547Z","2.1.6":"2026-06-19T10:43:36.975Z","2.1.7":"2026-06-19T17:29:47.267Z","2.1.8":"2026-06-19T22:30:51.314Z","2.1.9":"2026-06-20T21:10:14.882Z","2.1.10":"2026-06-22T08:07:09.346Z","2.1.11":"2026-06-22T09:11:18.980Z","2.1.12":"2026-06-22T17:01:10.296Z","2.1.13":"2026-06-22T21:51:11.586Z","2.1.14":"2026-06-23T16:23:53.767Z","2.1.15":"2026-06-23T19:54:14.740Z","2.1.16":"2026-06-23T20:28:44.313Z","2.1.17":"2026-06-24T12:55:44.843Z","2.1.18":"2026-06-25T17:45:20.492Z","2.1.19":"2026-06-25T19:29:36.130Z","2.1.20":"2026-06-27T14:20:01.245Z","2.1.21":"2026-07-01T21:52:09.106Z","2.1.22":"2026-07-02T09:13:43.678Z","2.3.0":"2026-07-02T18:52:34.567Z","3.0.0":"2026-07-19T21:49:19.041Z","3.0.1":"2026-07-19T23:39:34.093Z","3.0.2":"2026-07-20T07:50:12.695Z","3.0.4":"2026-07-26T22:24:40.089Z","3.0.5":"2026-08-17T11:11:47.259Z","4.0.0":"2026-08-19T10:21:51.361Z","4.0.1":"2026-08-20T13:38:26.479Z","4.1.1":"2026-08-21T18:03:55.482Z","4.1.3":"2026-08-25T21:02:14.608Z","4.1.4":"2026-08-25T21:44:33.540Z","4.2.0":"2026-08-27T07:14:12.580Z","4.2.1":"2026-08-31T17:24:23.774Z","4.3.0":"2026-09-03T10:51:34.783Z","4.3.1":"2026-09-04T21:05:20.103Z","4.3.2":"2026-09-08T07:34:11.096Z","4.3.3":"2026-09-08T07:41:11.590Z"},"bugs":{"url":"https://github.com/kkortes/vibe/issues"},"author":{"name":"kkortes"},"license":"ISC","homepage":"https://vibe.korte.kim","keywords":["reactive","framework","frontend","ui","no-build","mutation-observer","proxy","minimalistic"],"repository":{"url":"git+https://github.com/kkortes/vibe.git","type":"git"},"description":"Runtime-first reactivity for plain HTML — no build step, no virtual DOM, no new syntax to learn","maintainers":[{"name":"kortes","email":"me@korte.kim"}],"readme":"# Vibe\n\n**Version 4.3.3** — Runtime-first reactivity for plain HTML. Drop a script tag into any page and get reactive bindings, control flow, and URL-loaded components — no build step required. Compile later if you want; the compiler is a separate, optional package (`@ape-egg/vibe-compiler`).\n\n## Security model & CSP\n\nVibe escapes by default: `@[expr]` renders as text, never markup. The one deliberate exception is `@[$.unsafe(trustedHtml)]`, which sets `innerHTML` and is for trusted input only.\n\nWhat you must know before adopting: **Vibe's engine evaluates binding expressions with `new Function` and uses inline `on*` attributes as its event model.** A site running Vibe therefore needs a Content-Security-Policy that allows `'unsafe-eval'` and inline event handlers — i.e. it cannot deploy a strict CSP. Vibe itself is not an XSS vector, but strict CSP is a browser-level safety net against *other* injection bugs anywhere on a page, and Vibe requires that net loosened.\n\nIf you ship to an environment that mandates strict CSP (banks, healthcare, government, security-reviewed enterprise), Vibe is currently the wrong tool. For everything else — personal sites, games, dashboards, internal tools, most product work — this is the same posture as running Vue's in-browser template compiler or Alpine.js, and it is a documented trade-off, not an accident.\n\nNo virtual DOM. No build step required. Just modern JavaScript. When you need production optimizations, add the optional Rust-based compiler.\n\n```bash\nnpm install @ape-egg/vibe\n```\n\n**Status:** Functional and ready to use, but expect bugs and breaking changes daily until stable. Use in production at your own risk.\n\n---\n\n## Vibe Runtime\n\nThe core reactive runtime. Works directly in the browser without any build tools.\n\n### Quick Start\n\n```html\n<html>\n  <head>\n    <link rel=\"stylesheet\" href=\"./node_modules/@ape-egg/vibe/vibe.css\" />\n    <script type=\"module\">\n      import vibe from './node_modules/@ape-egg/vibe/index.js';\n\n      window.$ = vibe({ name: 'World', count: 0 });\n    </script>\n  </head>\n  <body vibe-fouc>\n    <h1>Hello, @[name]!</h1>\n    <button onclick=\"$.count++\">Clicked @[count] times</button>\n  </body>\n</html>\n```\n\n### The `vibe()` Signature\n\n```js\nwindow.$ = vibe(state, config?, targetSelector?);\n```\n\n- **`state`** *(object, required)* — initial reactive state. Becomes `window.$`. Mutate freely (`$.count++`, `$.user.name = 'Alice'`); deep mutations trigger updates automatically. Methods on the object are preserved.\n\n- **`config`** *(object, optional)* — runtime configuration. Currently supported keys:\n  - `debug` *(boolean, default `false`)* — colored console logs for every lifecycle phase (parse, hydrate, iterate, mutate, …). Useful for debugging reactivity issues.\n  - `noCache` *(boolean, default `false`)* — disable the component template cache (see **Component Template Caching** below). When set, every `<component src>` mount refetches its template.\n\n- **`targetSelector`** *(string, optional)* — CSS selector for the root element vibe attaches to. **Defaults to `document.body`.** Vibe parses, hydrates, and observes mutations only inside this root — anything outside (e.g. `<head>`, sibling `<aside>` elements) is ignored. If the selector matches nothing, vibe silently falls back to `document.body`. Pass `'html'` to include `<head>` (e.g. for binding `<title>@[pageTitle]</title>`).\n\n```js\nwindow.$ = vibe({ count: 0 }, { debug: true }, '#app');\n```\n\n### Prevent FOUC\n\nTo prevent a flash of unstyled content while Vibe hydrates:\n\n1. Include `vibe.css` in your HTML\n2. Add the `vibe-fouc` attribute (or `class=\"vibe-fouc\"`) to an element — typically `<body>`\n\n`vibe.css` hides `[vibe-fouc]` and `.vibe-fouc` until hydration completes; Vibe removes the attribute/class once it's done.\n\nThe cover is more than cosmetic: authored `on*` handlers (`onclick=\"this.flip()\"`) are native inline handlers until boot rewrites them, so a click that lands while the page is uncovered runs one raw and throws. Vibe injects the cover itself, so it holds whether or not you link `vibe.css` — but it can only do that once its own JavaScript evaluates. **Link `vibe.css` (step 1) to be covered from first paint.** Without it, the stretch between first paint and Vibe's modules arriving is uncovered, which on a slow connection is long enough for an early click, or for a CSS animation to run and deliver `animationend` to a raw handler. The compiler and the Vite plugin write the cover into `<head>` at build/serve time, so compiled output and dev both close that stretch too.\n\n### Reactive Bindings\n\nVibe supports bindings in three positions:\n\n**Text content** — Inside element tags:\n\n```html\n<div>@[firstName] @[lastName]</div>\n<h1>Hello, @[name]!</h1>\n```\n\n**Attribute values** — In attribute value position:\n\n```html\n<input value=\"@[username]\" />\n<div class=\"@[theme]\" style=\"color: @[color]\"></div>\n<a href=\"@[url]\">Link</a>\n```\n\n**Attribute names** — In attribute name position (useful for dynamic attributes):\n\n```html\n<icon @[iconName]></icon>\n<button @[state]>Click me</button>\n```\n\n**CSS** — Bindings also work in style tags:\n\n```html\n<style>\n  .box {\n    background: @[themeColor];\n  }\n</style>\n```\n\n### Iteration\n\n```html\n<!-- each items as item, index -->\n<li>@[index]: @[item]</li>\n<!-- /each -->\n```\n\nThe \"array\" position accepts any JS expression evaluated in scope, not just a state path:\n\n```html\n<!-- each items.filter(i => i.active) as item -->...<!-- /each -->\n<!-- each Array.from({ length: count }) as n, index -->...<!-- /each -->\n```\n\n**Keyed iteration** — give each row a stable identity with `(keyExpr)` so survivors keep their DOM (and listeners / animation state) when the list reorders or items are removed. The key comes before the optional index. Without a key, Vibe falls back to an index-coupled hash and bulk-re-renders the tail on reorder.\n\n```html\n<!-- each rows as row (row.id) -->\n<li>@[row.label]</li>\n<!-- /each -->\n\n<!-- key + index -->\n<!-- each rows as row (row.id), index -->\n<li>@[index]: @[row.label]</li>\n<!-- /each -->\n```\n\nNested iteration with dot paths:\n\n```html\n<!-- each categories as category -->\n<!-- each category.items as item -->\n<span>@[item.name]</span>\n<!-- /each -->\n<!-- /each -->\n```\n\n### Conditionals\n\n```html\n<!-- if user.isAdmin -->\n<admin-badge>Admin</admin-badge>\n<!-- else -->\n<span>User</span>\n<!-- /if -->\n```\n\n### Components\n\nRuntime component loading with props and slots. Slot content (between the tags) replaces `<slot></slot>` inside the component template:\n\n```html\n<!-- /components/card.html -->\n<div class=\"card\">\n  <h3>@[title]</h3>\n  <slot></slot>\n</div>\n\n<!-- usage -->\n<component src=\"/components/card.html\" title=\"@[pageTitle]\" theme=\"dark\">\n  <p>Content passed as slot</p>\n</component>\n```\n\n`<div class=\"component\" src=\"...\">` is an equivalent alternative to `<component src=\"...\">` for cases where standard HTML elements are required (validation, accessibility tooling).\n\nProps can be reactive bindings (`title=\"@[pageTitle]\"`), static literals (`theme=\"dark\"`), or live objects/arrays passed through iteration scope (`<component src=\"/card.html\" card=\"@[card]\">` inside `<!-- each cards as card -->`). Non-primitive props are stashed in an internal registry so the child template can dot/iterate into them (`@[card.name]`, `<!-- each card.abilities as a -->`).\n\n### Component-Local State\n\nFor state scoped to a single component, import `component` from `@ape-egg/vibe/component` and call it from a `<script type=\"module\">` inside the component file:\n\n```html\n<!-- /components/Counter.html -->\n<script type=\"module\">\n  import component from '@ape-egg/vibe/component';\n  component({\n    count: 0,\n    increment() { this.count++; }\n  });\n</script>\n\n<button onclick=\"this.increment()\">Clicked @[this.count] times</button>\n```\n\nHow it works:\n\n1. `component({...})` generates a unique id (e.g. `_c0`, `_c1`) and registers the state at `$[id]`\n2. The `<script>` and every following sibling is tagged with `data-vibe-internal-component-id=\"<id>\"`\n3. Inside that subtree, `@[this.X.Y]` is rewritten to `@[_c0.X.Y]`, and `this.` in event handlers resolves at fire time by declared keys: names registered in `component({...})` address `$[id]` (`onclick=\"this.method()\"`, `this.count++`), every other name reaches the native element (`this.value`, `this.closest(...)`, `this.focus()`). `$.this.X = ...` is always an explicit state write\n4. When the component leaves the DOM, its state entry is freed automatically\n\nMulti-segment paths (`@[this.user.profile.name]`), conditionals (`<!-- if this.editing -->`), and iterations (`<!-- each this.items as item -->`) all resolve against the component's bucket. Global `$` and component `this.X` coexist freely.\n\n### Drop-In Components (no `vibe()` needed)\n\n`component()` auto-boots the runtime. You can drop a self-contained reactive block into any HTML page — no top-level `vibe(...)` call, no global state setup, no build step. Import directly from a CDN and the runtime wires itself up:\n\n```html\n<component>\n  <script type=\"module\">\n    import component from 'https://esm.sh/@ape-egg/vibe/component.js';\n    component({ count: 0 });\n  </script>\n  <button onclick=\"this.count--\">-</button>\n  <span>Count: <strong>@[this.count]</strong></span>\n  <button onclick=\"this.count++\">+</button>\n</component>\n```\n\nHow it works:\n\n1. `component({...})` claims the nearest unprocessed `<component>` (or `<div class=\"component\">`) wrapper, registers state at `$[id]`, and tags the wrapper with `data-vibe-internal-component-id`\n2. Internally it triggers the boot pipeline, which initializes `window.$`, parses the DOM, hydrates bindings, and starts the MutationObserver — exactly once, even if multiple `<component>` blocks call `component()`\n3. From there, `@[this.X]`, `onclick=\"this.fn()\"`, and `<!-- if this.X -->` work as documented\n\nMultiple drop-in blocks on the same page each get their own state bucket. They can read each other's state via global `$['_c0'].count` if they need to coordinate, but in most drop-in cases they're independent.\n\n### Component Template Caching\n\nVibe loads a `<component src=\"...\">` by fetching its HTML template. A page often mounts the same component many times (a list of cards, a row of stat bars), and an SPA re-mounts components on every navigation. By default Vibe caches each fetched template by `src`, so:\n\n- **Concurrent mounts coalesce.** Twenty `<component src=\"/components/Bar.html\">` in the same render share **one** in-flight request instead of stampeding the network with twenty.\n- **Repeat mounts are free.** Later mounts — including after an SPA navigation away and back — resolve the template from memory with **no network request at all**. This is the one win a browser HTTP cache can't give you: it revalidates per request and never coalesces concurrent ones.\n\nThe cache is **session-lived and content-busted, never time-based**. In production a component template is immutable for the life of the page (it only changes on redeploy, which is a new session), so there is nothing to invalidate and no staleness window. Per-instance props, slots, and component-local state are unaffected — only the fetched template text is shared; each instance still hydrates independently.\n\nTurn it off with `vibe(state, { noCache: true })` — useful if you serve component HTML that genuinely changes within a session.\n\nManual invalidation (rarely needed):\n\n```javascript\n$.clearComponentCache('/components/Card.html'); // drop one template (query string ignored)\n$.clearComponentCache();                        // drop all cached templates\n```\n\n> Dev note: `@ape-egg/vite-plugin-vibe` calls `$.clearComponentCache(path)` on hot update, so editing a component file is reflected immediately for both live and freshly-mounted instances — the runtime itself stays free of any dev-server coupling.\n\n### Lifecycle Hooks\n\n```javascript\n$.on('ready', () => {});            // once, after initial parse + first hydrate + all components mounted\n$.on('afterUpdate', (cur, prev) => {}); // every state change (batched per microtask)\n$.on('afterDomMutation', () => {});  // after every MutationObserver batch\n```\n\n`$.ready` is also exposed as a Promise (`await $.ready`), useful for code that captured `window.$` before boot.\n\n```javascript\n$.on('unmount', () => {});           // scope-resolved teardown: component scripts → that component\n                                     // unmounts; page level → pagehide\n```\n\n### SPA Router (`@ape-egg/vibe/spa`)\n\nA standalone client-side router built on one contract: `$.page = { path, route, params, src, name }`. Point a reactive component src at it and the outlet is your route view:\n\n```html\n<script type=\"module\">\n  import vibe from '@ape-egg/vibe';\n  import { setupSpa, resolve } from '@ape-egg/vibe/spa';\n\n  const routes = [\n    { route: '/brawlers/:index', src: '/components/brawler.html', title: 'Brawler' },\n    { route: '/docs/:rest*',     src: '/components/docs.html' },\n    { route: '/',                src: '/components/home.html', title: 'Home' },\n    { route: '*',                src: '/components/lost.html' },\n  ];\n\n  window.$ = vibe({ page: resolve(location, routes) ?? {} });\n  setupSpa({ routes });\n</script>\n\n<component src=\"@[page.src]\" key=\"@[page.path]\"></component>\n```\n\n**Route grammar** (shared with the compiler's route table): literal segments, `:param` captures one segment, a trailing `:name*` captures zero or more (`/docs` matches with `rest: ''`), and `'*'` is the declared no-match fallback. Tables are pre-sorted most-specific-first; `resolve` returns the first match. `resolve(location, routes)` is pure — it accepts anything with a `.pathname` (or a bare path string) and returns `{ path, route, params, src, name, title? }` or `null`.\n\n**Route names**: `name` is the route slug — segments joined with dashes, params flattened to their bare name: `'/' → 'home'`, `'/pve/:id' → 'pve-id'`, `'/docs/:rest*' → 'docs-rest'`, the `'*'` fallback keeps its literal `'*'`. Stable across param values, so markup hangs page-scoped attributes and active checks on it: `<page @[page.name]>`, `page.name.startsWith('pve')`.\n\n**Keyed outlet**: `key` on a fetched `<component>` declares its identity — when the resolved key changes, the component remounts even if `src` is unchanged. With `key=\"@[page.path]\"`, param→param navigation on the same route (`/brawlers/0 → /brawlers/1` — same fragment src) mounts fresh, exactly like an MPA reload on the new URL. `src` and `key` are the wrapper's own contract and are never passed to the component as props.\n\n**Link claiming**: one document-level click listener claims same-origin, unmodified, untargeted clicks whose pathname matches a **real** route — pushState + a fresh `$.page` assignment + `document.title` swap when the route carries one, scroll to top. The entry route gets the same title swap when `setupSpa` runs, so a deep link never shows the shell's title. Everything else navigates natively: other origins, modified clicks, `target`/`download` links, same-page hash anchors, and unrouted paths — which is what makes mixed MPA/SPA output work. `'*'` never claims a click; it only resolves deep-link entries and popstate. `popstate` re-resolves (including `'*'`) without scrolling — the browser restores position.\n\n**No match, no `'*'`**: `$.page.src` stays unset and the outlet mounts nothing. There is no built-in 404.\n\n`setupSpa({ routes, onNavigate? })` returns `{ navigate, dispose }`. `navigate(path)` claims like a link click (unrouted paths get a native load); `dispose()` removes the listeners. Pass a custom `onNavigate(resolved)` and the module is a pure router — parse/claim/history only, no Vibe in sight.\n\n### App-Lifetime State Defaults (built into `vibe()`)\n\n`vibe()` called once the app is booted applies **defaults semantics**: only keys that do not yet exist on `$` are set.\n\n```javascript\nimport vibe from '@ape-egg/vibe';\nvibe({ ...globalState, notifications: [] }); // first mount seeds, re-mounts never clobber\n```\n\nPre-boot, state accumulates and boot is queued as always — on a fresh document load nothing changes, MPA behavior is byte-identical. Once booted, \"initial state, declared again\" seeds missing keys only: under SPA a re-mounted page fragment's `vibe({...})` call re-runs on every visit, and live state (notifications, session, timers) is never reset to initial values. No separate entry, no compiler rewrite — the same import does the right thing in both lifetimes. The pure `applyDefaults(target, state)` is exported for reuse.\n\n**The rule**: `vibe()` state is app-lifetime; `component()` state is mount-lifetime (resets per visit). Per-page-reset state belongs in a component — that's the Timer pattern.\n\n### Subtree Reconciliation (advanced)\n\n`$.reconcile(el, html)` is the template-aware subtree reconciliation the vite plugin's HMR path runs on: the fresh `html` is parsed by the same parser that built the page, and every paired node updates the runtime's knowledge before the DOM — a changed text or attribute template is re-hydrated in place, an iteration or conditional swaps its stored template so later renders follow it, structural inserts are hydrated under the right scope — while DOM identity, focus, selection and scroll position survive. The underscore-prefixed helpers beside it (`$._refreshComponent(el, rawHtml)`, `$._remountComponent(el)`, `$._renderComponent(...)`) are tooling plumbing, not application API; all of it may still evolve.\n\n### Dehydrate\n\nSkip reactive processing for an element:\n\n```html\n<code vibe-dehydrate>@[this] displays literally</code>\n```\n\n### Raw HTML (`$.unsafe`)\n\n`@[expr]` escapes its output (`textContent`) — safe by default. To render **trusted** markup instead, wrap the value in `$.unsafe(...)`; the binding sets `innerHTML`. This is Vibe's equivalent of Svelte `{@html}` / Vue `v-html` / React `dangerouslySetInnerHTML`.\n\n```html\n<p>@[$.unsafe(description)]</p>\n```\n\n- The binding **must be the sole content of its element** (innerHTML semantics). Mixed into surrounding text, it falls back to escaped literal text.\n- Injected markup is **inert** — `@[...]` / `<!-- if -->` / `<!-- each -->` inside it are not processed (matches Svelte `{@html}`); the subtree is opaque to the MutationObserver.\n- Fully **reactive** — re-renders on value change; works in iterations, conditionals, and components. Compiled mode paints the markup at stamp time and re-hydrates at runtime.\n- **Trusted input only** — no sanitizing. Don't pass user-supplied strings.\n\n### Internal Names (don't collide)\n\nThese are used by the runtime — don't repurpose them in your code:\n\n- `window.__vibeManifest`, `window.__vibeCompiling`, `window.__vibeComponents`, `window.__vibeIterProps` — internal registries\n- `data-vibe-internal-component-id`, `data-vibe-internal-iter-prop` — element-level bookkeeping attributes (set automatically)\n\n### Deep Reactivity\n\nVibe uses recursive proxies to detect changes at any nesting level:\n\n```javascript\n// All of these trigger reactive updates:\n$.user.name = 'Alice';\n$.todos[2].completed = true;\n$.config.theme.colors.primary = '#007bff';\n```\n\nNo need for immutable update patterns or spread operators. Just mutate and Vibe handles the rest.\n\n### How It Works\n\n1. **Proxy-based state** — `window.$` intercepts property changes\n2. **Deep reactivity** — Nested mutations trigger updates automatically (`$.obj.nested.prop = x`)\n3. **DOM parsing** — Finds all `@[...]` bindings on load\n4. **Auto-tracked subscriptions** — Every binding, conditional, and iteration records which state keys its expression read during evaluation; a write dispatches exactly its subscribers — O(what changed), no tree walk, no virtual DOM\n5. **MutationObserver** — Tracks dynamically added elements\n\nOne contract follows from #4: **an expression that should react must read reactive state.** `@[items.map(format)]` re-renders when `$.items` changes because `items` was read from `$` — but if `format` is a window global that you later *reassign*, nothing re-renders, because assigning a global is not a state write. Values that change over time belong in `$`. (Helpers defined by component scripts are safe: mounts re-settle their directives once their scripts have run.)\n\n---\n\n## Vibe Compiler\n\nOptional build step for production optimization. The compiler provides component inlining, iteration optimization, watch mode, and hydration manifests while preserving directory structure.\n\n### Installation\n\nThe compiler requires Rust for non-macOS ARM64 platforms:\n\n```bash\ncurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh\n```\n\n**Note:** A prebuilt binary for macOS ARM64 is included. Other platforms will compile from source automatically.\n\n### Usage\n\n```bash\n# Initialize config in package.json\nbunx vibe compile --init\n\n# Basic compilation\nbunx vibe compile\n# or shorthand\nbunx vibe c\n\n# Watch mode (incremental compilation)\nbunx vibe compile --watch\n\n# Production build\nbunx vibe compile --minify --source-maps\n\n# With options\nbunx vibe compile --verbose             # Step-by-step logging\nbunx vibe compile --minify              # Minify output\nbunx vibe compile --elements-as-is      # Keep custom elements as-is\nbunx vibe compile --source-maps         # Generate source maps\nbunx vibe compile --node-modules-as-is  # Copy node_modules as-is\nbunx vibe compile --components-as-is    # Skip component inlining\nbunx vibe compile --runtime-as-is       # Skip manifest generation\nbunx vibe compile --iterations-as-is    # Skip iteration optimization\nbunx vibe compile --spa                 # Compile the pages tree to SPA output\n```\n\nOr via npm scripts:\n\n```json\n{\n  \"scripts\": {\n    \"compile\": \"vibe compile\",\n    \"compile:watch\": \"vibe compile --watch\",\n    \"compile:prod\": \"vibe compile --minify --source-maps\"\n  }\n}\n```\n\nThen run with `npm run compile` or `bun compile`.\n\n### Configuration\n\nAdd to your `package.json`:\n\n```json\n{\n  \"vibe-compiler\": {\n    \"source\": \"./\",\n    \"output\": \"./compiled\",\n    \"components\": \"components\",\n    \"pages\": \"pages\",\n    \"assets\": \"assets\",\n    \"minify\": false,\n    \"elementsAsIs\": false,\n    \"reservedElements\": [],\n    \"sourceMaps\": false,\n    \"nodeModulesAsIs\": false,\n    \"componentsAsIs\": false,\n    \"runtimeAsIs\": false,\n    \"iterationsAsIs\": false,\n    \"spa\": false\n  }\n}\n```\n\n**Key Options:**\n\n- `elementsAsIs: false` — Transform custom elements to divs (default)\n- `reservedElements: []` — Additional element names to reserve (appends to built-in HTML5 elements + \"component\")\n- `componentsAsIs: false` — Inline components (default) or keep separate for runtime\n- `iterationsAsIs: false` — Optimize iterations (default) or use runtime rendering\n- `runtimeAsIs: false` — Generate manifest (default) or skip for runtime-only\n- `spa: false` — Compile the pages tree to SPA output: fragments + route table + shell (see SPA Mode)\n\n**Defaults** (when no config):\n\n- `source`: `./`\n- `output`: `./compiled`\n- `components`: `<source>/components`\n- `pages`: `<source>/pages`\n- `assets`: `<source>/assets`\n\n### Asset Handling\n\nThe compiler uses a whitelist approach. These file types are automatically copied:\n\n**Fonts:** `.ttf`, `.otf`, `.woff`, `.woff2`, `.eot`\n**Images:** `.png`, `.jpg`, `.jpeg`, `.gif`, `.svg`, `.webp`, `.avif`, `.ico`\n**Media:** `.mp4`, `.webm`, `.ogg`, `.mp3`, `.wav`, `.flac`, `.aac`\n**Documents:** `.pdf`\n**Data:** `.json`, `.xml`, `.csv`\n\nHTML, CSS, and JavaScript files are processed by the compiler.\n\n### Node Modules (Self-Contained Output)\n\nBy default, the compiler creates deployable output by installing production dependencies directly into the output directory:\n\n1. Copies `package.json` and lockfile to output\n2. Runs `<package-manager> install --production` in output directory\n3. Removes `package.json` and lockfile from output (cleanup)\n\nThis ensures:\n\n- Compiled output only includes runtime dependencies (from `dependencies`, not `devDependencies`)\n- Local `node_modules` is never modified\n- Faster than copying (no intermediate copy step)\n\n**Package Manager Detection:**\nAuto-detects based on lockfiles: `bun.lockb`, `pnpm-lock.yaml`, `yarn.lock`, `package-lock.json`\n\n**Opt-out:**\nSet `nodeModulesAsIs: true` in config or use `--node-modules-as-is` flag to copy node_modules as-is.\n\n### Watch Mode\n\nWatch mode enables incremental compilation with intelligent dependency tracking:\n\n```bash\nbunx vibe compile --watch\n```\n\nFeatures:\n\n- **Incremental builds** — Only recompiles changed files (~100ms)\n- **Dependency tracking** — Changes to components trigger recompilation of pages using them\n- **Debounced** — 300ms debounce prevents excessive compilation during rapid changes\n- **Delta output** — First compile shows full output, subsequent compiles show only changes\n\n### SPA Mode\n\n`\"spa\": true` (or `--spa`) compiles the same MPA `pages/` tree into a single-page app — authors change **nothing** about how pages are written:\n\n```json\n{ \"vibe-compiler\": { \"spa\": true } }\n```\n\nThe pages tree becomes three things:\n\n1. **Page fragments** at `/components/vibe-spa/<pages-relative-path>` — each page's body content, with its head `<style>` tags prepended and its `<script type=\"module\">` carried along byte-identical. No rewrites: `vibe()` itself applies defaults semantics once booted (see App-Lifetime State Defaults above), so page state gets app-lifetime behavior with the page's own import.\n2. **A generated route table** — `pages/brawlers/$index.html` → `{ route: '/brawlers/:index', src: '/components/vibe-spa/brawlers/$index.html', title: <harvested from the page's <title>> }`. `$param` → `:param`, terminal `$$name` → `:name*`, terminal `index` serves its directory path. Sorted most-specific-first.\n3. **A composed shell** at the output root `/index.html` — plain runtime-Vibe code: the deduped union of every page's head resources (`<meta>` keeps only the set common to all pages; page-specific meta is dropped with a verbose note), the `/` route's title, the union of page body attributes minus `vibe-fouc`, a `window.__MANIFEST__` hint naming the shell's own hyperspeed manifest (the shell is the document at every route, so the runtime loads that one manifest directly instead of probing paths derived from the URL), one generated boot script (`resolve` seeds `$.page`, `setupSpa` wires navigation — imports reuse the pages' own import style), and the keyed route outlet: `<component src=\"@[page.src]\" key=\"@[page.path]\"></component>` (a path change remounts the fragment even when the route — and so the src — is unchanged: param→param navigation mounts fresh, like the MPA reload it replaces).\n\n**What SPA mode skips**: per-page stamped HTML, per-page manifests, and the `pages/` output directory. Fragments are runtime-parsed on mount (per-route lazy loading falls out of the reactive src for free); the shell itself gets a manifest but is deliberately left unstamped — it is served at every route path, so its first paint is location-dependent by nature. The shell ships **without** `vibe-fouc`: its absence is the compiled-mode marker (it gates hyperspeed manifest loading), and there is nothing to flash — the outlet is empty and fragments hydrate off-DOM before insertion.\n\n**Deployment**: one rewrite — every route serves `/index.html`; `/components/**`, `/vibe-hyperspeed/**`, and assets serve as files. The vercel.json shape:\n\n```json\n{\n  \"rewrites\": [\n    { \"source\": \"/((?!components/|vibe-hyperspeed/|nodemodules/|.*\\\\..*).*)\", \"destination\": \"/index.html\" }\n  ]\n}\n```\n\nDev-server equivalents: any \"history API fallback\" option (`vite preview`, `serve -s`, Caddy `try_files`, or `http-server -P http://localhost:8080?` — the trailing `?` proxies unresolved paths to the root).\n\n**Watch mode**: `--spa --watch` re-runs the SPA pass on any pages-tree change — edited pages re-transform, added/removed pages resync the route table and prune orphan fragments, title/head edits recompose the shell, and the shell's manifest refreshes.\n\n**Current scope**: `spa: true` converts the entire pages tree (per-page selection is planned as a config-object form — parsing already tolerates it). Fragments ship as separate fetched files either way; `componentsAsIs` decides their children: `false` (the default) inlines child components into each fragment, making every route one self-contained fetch, while `true` keeps children as runtime `<component src>` fetches deduped across routes by the component cache. Compiling every fragment into the shell itself behind route conditionals (single document, zero per-route fetches) is specified but lands only once compiled branch-scripts stop double-running. Pages that wrap themselves in a Layout component remount it per navigation — exactly like an MPA reload; persistent chrome is out of scope for now. `components/vibe-spa/` in your source is reserved.\n\n### MPA → SPA Compliance Contract\n\nSPA mode assumes; this contract defines. Pages that follow it compile to MPA today and SPA tomorrow with no edits:\n\n1. **Side effects register teardown.** Anything a page script starts — `setInterval`, `addEventListener`, sockets — must be released in `$.on('unmount', …)`. Under MPA that callback fires on `pagehide`; under SPA it fires when the page fragment unmounts on navigation. The compiler emits a warning for page scripts that start side effects and never reference `$.on('unmount'`.\n2. **`vibe()` state is app-lifetime; `component()` state is mount-lifetime.** Under SPA, a page's `vibe({...})` seeds missing keys only (defaults semantics) — it never resets live state. State that must reset on every visit belongs in a `component()`.\n3. **Head resources are shell-safe.** Stylesheets and scripts linked from a page's `<head>` end up in the shared shell head (deduped union) — they must be safe to load once for the whole app. Page-specific styling goes in `<style>` tags (which travel with the fragment) or components, not head links. Page-specific `<meta>` is dropped.\n4. **No full-document assumptions.** Pages don't rely on `window.onload`-era patterns or being the entire document — a page's body becomes a fragment inside a live shell. Use absolute URLs for assets and component srcs (the fragment is served from a different path than the page was authored at).\n\n### Component System\n\nComponents are automatically inlined during compilation with full support for props and slots:\n\n```html\n<!-- Source: components/card.html -->\n<div class=\"card\">\n  <h2>@[title]</h2>\n  <p>@[description]</p>\n  <slot></slot>\n</div>\n\n<!-- Usage in page -->\n<component src=\"/components/card.html\" title=\"My Card\" description=\"Card description\">\n  <p>Slot content</p>\n</component>\n\n<!-- Compiled output -->\n<component>\n  <div class=\"card\">\n    <h2>My Card</h2>\n    <p>Card description</p>\n    <p>Slot content</p>\n  </div>\n</component>\n```\n\n**Custom element syntax:** Components can also use custom element syntax (e.g., `<card>` → auto-converts to `<component src=\"/components/card.html\">`).\n\n**Opt-out:** Set `componentsAsIs: true` to keep components as separate files for runtime loading.\n\n### Iteration Optimization\n\nThe compiler generates optimized batch functions for `<!-- each -->` loops, providing 2-3x faster rendering:\n\n```html\n<!-- Source -->\n<!-- each items as item, index -->\n<li>@[index]: @[item]</li>\n<!-- /each -->\n\n<!-- Compiled to optimized batch function -->\n```\n\n**Opt-out:** Set `iterationsAsIs: true` to use runtime rendering for all iterations.\n\n### Pre-rendered Global State (write state the way the compiler expects)\n\nTo eliminate the flash of raw `@[...]` markers, the compiler **bakes** any global `$`\nvalue it can prove is constant straight into the pre-rendered HTML. `BETA v@[version]`\nships as `BETA v0.1.5`. Everything else stays a live binding the runtime fills on\nhydration.\n\nA global key is baked **only** when both hold:\n\n- **It's a primitive** — `string` / `number` / `boolean` / `null`. Objects and arrays\n  are never baked (their contents can be mutated through a reference the compiler\n  can't follow), so an `@[config.theme]` binding always stays live.\n- **It's never reassigned** anywhere the compiler scans (every `.js` module, inline\n  `<script>`, and `on*` handler under `source`, minus `skipFiles`). Any `$.key = …`,\n  `$.key += …`, `$.key++`, `delete $.key`, or `$['key'] = …` marks it dynamic.\n\nThis is why **how you write a mutation matters** — write global state through a\n**direct member assignment on `$`**:\n\n```js\n$.coins = gameState.coins;     // ✅ seen → `coins` stays a live binding\n```\n\nIf you mutate global state by a path static analysis can't follow, the compiler won't\nsee the write and may bake a stale initial value:\n\n```js\nconst s = $; s.coins = 5;      // ⚠️ aliasing $ — disables baking for ALL keys (safe, but loses the optimization)\napplyState($, patch);          // ⚠️ if applyState does `arg.coins = …`, that write is INVISIBLE → `coins` may wrongly bake\n```\n\nPassing `$` as a read-only argument (`derive($, opts)`) is fine; only writing through\nthe alias is the problem. Reach for `$.key = …` and the classifier stays correct.\n\nThe baked value comes from your `vibe({ ... })` initial state, resolved statically\n(including default imports, e.g. `version: VERSION` → `version.js`'s `export default`).\nIf the initial value is a runtime call (`settings: loadLocalStorage(...)`), it simply\nisn't baked — the binding stays live, which is harmless.\n\n**Iterations follow the same rule.** An `<!-- each -->` over a global/dynamic array is\nrendered **empty** in the compiled HTML (the raw `@[item.x]` template body is dropped,\nnot painted), and the runtime restores it from the manifest once the array has data.\nDon't rely on a loop's template body existing in the DOM before hydration.\n\n**Still use `vibe-fouc`.** Baking removes raw markers for *constant* values, but\nsession/runtime state (auth, server data, anything you reassign) can't be pre-rendered\n— keep the `vibe-fouc` guard so that state doesn't flash either.\n\n### Output Structure\n\nMirrors source structure:\n\n```\nsrc/                     compiled/\n├── pages/              ├── pages/\n│   └── index.html      │   └── index.html\n├── components/         │   (components inlined)\n│   └── counter.html\n├── assets/             ├── assets/\n│   └── image.png       │   └── image.png\n└── node_modules/       └── node_modules/\n    └── @ape-egg/           └── @ape-egg/\n        └── vibe/               └── vibe/\n```\n\n### Element Transformation\n\nBy default (`elementsAsIs: false`), custom HTML elements are transformed to divs with classes for better HTML validity:\n\n```html\n<!-- input -->\n<counter-header>Count</counter-header>\n\n<!-- output -->\n<div class=\"counter-header\">Count</div>\n```\n\nSet `elementsAsIs: true` or use `--elements-as-is` flag to keep custom elements unchanged.\n\n**Note:** The `<component>` element is a framework element and is never transformed.\n\n### Reserved Element Names\n\nThe compiler validates component filenames against reserved element names (all HTML5 elements + \"component\" + your custom list). This prevents confusing bugs where components share names with HTML elements.\n\n```json\n{\n  \"vibe-compiler\": {\n    \"reservedElements\": [\"my-custom-element\", \"another-reserved-name\"]\n  }\n}\n```\n\n**Case-sensitive validation:** `nav.html` conflicts with `<nav>` and will error, but `Nav.html` is allowed.\n\n### Building Native Binaries\n\nFor distribution without Rust:\n\n```bash\ncd node_modules/@ape-egg/vibe/compiler/src\n\n# Build for current platform\ncargo build --release\n\n# Copy binary to native directory\ncp target/release/vibe-compiler ../native/vibe-compiler-darwin-arm64\n```\n\nSupported platforms:\n\n- `vibe-compiler-darwin-arm64` (macOS Apple Silicon) ✅ Included\n- `vibe-compiler-darwin-x64` (macOS Intel)\n- `vibe-compiler-linux-x64`\n- `vibe-compiler-linux-arm64`\n- `vibe-compiler-win32-x64.exe`\n\nThe CLI wrapper automatically falls back to `cargo run` when native binaries aren't present.\n\n---\n\n## Browser Support\n\nModern browsers with Proxy and MutationObserver support.\n\n## License\n\nISC\n\n---\n\n## Future improvements to refactor\n\n### Dependency tracking uses string matching, not AST\n\n`affected()` determines which bindings to re-hydrate by string-matching expression text against state key names. When matching fails, a safety fallback marks the binding as affected on every state change.\n\n- `runtime/affected.js:15` — `matchesKey` does exact/prefix match, then word-boundary search\n- `runtime/affected.js:~122` — `shouldAffect = noMatch || ...` fallback for unmatched expressions\n- `runtime/affected.js:~248` — same fallback for name bindings\n\nAs of 3.0.0 this is solved — not by static extraction (which lies for helper calls) but by the subscription engine: every binding records the state keys it actually reads during evaluation, live at the proxy's get trap, so a write notifies exactly its subscribers. Update cost is O(change), and it costs zero authoring syntax.\n\n### HTML lowercases attribute names — breaks name binding matching\n\nThe browser lowercases all attribute names during HTML parsing. `<page @[pageName]>` becomes `@[pagename]` in the DOM. Every value hydrated into an attribute NAME position loses its case. `@[myCoolPage]` → DOM stores `@[mycoolpage]`, causing comparison mismatches against camelCase state keys.\n\nHandled today by case-insensitive fallbacks in three places:\n- `runtime/hydrate.js:~32` — case-insensitive state key lookup when evaluating name bindings (clone path)\n- `runtime/affected.js:~235` — case-insensitive `matchesKey` wrapper for name bindings\n- `runtime/iterate.js` — case-insensitive lookup against `stateKeys` inside `compileBatchFn`'s name-binding emission (batch path)\n\nAll three are workarounds for HTML's behavior. A cleaner architecture would centralize the case-insensitive state key resolution into one helper, or normalize the name binding expression to canonical state-key case at first evaluation and cache it on the tree node.\n\n### Related: value hydration into attribute values is case-preserving\n\nOnly attribute NAMES are lowercased by HTML, not values. So `title=\"@[pageName]\"` and `@[pageName]` in text content preserve case and work without fallbacks — the issue is specific to name bindings.\n","readmeFilename":"README.md"}