{"_id":"@ubean/vue","_rev":"30-f37f14d94e9f25f9231da9fe25bdfcb3","name":"@ubean/vue","dist-tags":{"latest":"0.6.0-beta.5"},"versions":{"0.2.0":{"name":"@ubean/vue","version":"0.2.0","_id":"@ubean/vue@0.2.0","maintainers":[{"name":"honghuangdc","email":"soybeanjs@outlook.com"}],"dist":{"shasum":"e93f847667027817ae6352542d502879b2840f6a","tarball":"https://registry.npmjs.org/@ubean/vue/-/vue-0.2.0.tgz","fileCount":11,"integrity":"sha512-WLwX+vjgHviOubrRlLgg1WintSZ1JqA5D78J9kLr3ztLEZNjjGYcUxuPDMRyRpqqwfTU8Fm4uRdZESqG/BF8Mw==","signatures":[{"sig":"MEQCICRmmhV4bkL9HS/UBzJZIOF6+l/B1YVdYVfpQCwHLji1AiATSuCqSfNVEbyBUbUBSQ2dlxlBEtjjEqSD6EWoTBk3fg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":199312},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./vite":{"types":"./dist/vite.d.ts","import":"./dist/vite.js"},"./generator":{"types":"./dist/generator/index.d.ts","import":"./dist/generator/index.js"}},"scripts":{"dev":"vp pack --watch","test":"vp test","build":"vp pack","typecheck":"tsc --noEmit --skipLibCheck"},"_npmUser":{"name":"honghuangdc","email":"soybeanjs@outlook.com"},"description":"Lean Vue client kernel & page-routing owner for ubean — plugin-first page routing outlet, page cache (keep-alive), transitions, reload signal, definePage macro + file-routing Vite plugin (/vite: multi-dir scan, reuse routes, markdown & page-head opt-in). ","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ufo":"^1.6.4","vue":"^3.5.41","pathe":"^2.0.3","scule":"^1.3.0","tinyglobby":"^0.2.17","vue-router":"^5.2.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"npm:@voidzero-dev/vite-plus-core@0.2.9","vitest":"4.1.10","happy-dom":"^20.11.2","vite-plus":"0.2.9","typescript":"7.0.2","@types/node":"^26.2.0","@unhead/vue":"^3.3.2","@ubean/markdown":"0.2.0","@vue/server-renderer":"^3.5.41"},"peerDependencies":{"vite":"^5.0.0 || ^6.0.0 || ^7.0.0","@unhead/vue":">=2.0.0","@ubean/markdown":">=0.1.0"},"peerDependenciesMeta":{"vite":{"optional":true},"@unhead/vue":{"optional":true},"@ubean/markdown":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vue_0.2.0_1787227845836_0.7522753112329923","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@ubean/vue","version":"0.2.1","_id":"@ubean/vue@0.2.1","maintainers":[{"name":"honghuangdc","email":"soybeanjs@outlook.com"}],"dist":{"shasum":"d4cb575d4167791561d8457cb6edeefb4990c020","tarball":"https://registry.npmjs.org/@ubean/vue/-/vue-0.2.1.tgz","fileCount":11,"integrity":"sha512-OSoE4+r0XDyk99ToHTTm+fGepiGIR1mNnX00Kp3RvTBn8ycbi/7bwO1FODplB10GcIYQ6XlkAGzUklhQv4I97g==","signatures":[{"sig":"MEUCIQCkLMpdMd02gpMypb+7mx3M7hhVhtjJoCt32ytoiY/IuwIgd+5XLqeOIQjKmttSt6+nSraf3bHj8v+cEQwn5F0AL/U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":199312},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./vite":{"types":"./dist/vite.d.ts","import":"./dist/vite.js"},"./generator":{"types":"./dist/generator/index.d.ts","import":"./dist/generator/index.js"}},"scripts":{"dev":"vp pack --watch","test":"vp test","build":"vp pack","typecheck":"tsc --noEmit --skipLibCheck"},"_npmUser":{"name":"honghuangdc","email":"soybeanjs@outlook.com"},"description":"Lean Vue client kernel & page-routing owner for ubean — plugin-first page routing outlet, page cache (keep-alive), transitions, reload signal, definePage macro + file-routing Vite plugin (/vite: multi-dir scan, reuse routes, markdown & page-head opt-in). ","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ufo":"^1.6.4","vue":"^3.5.41","pathe":"^2.0.3","scule":"^1.3.0","tinyglobby":"^0.2.17","vue-router":"^5.2.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"npm:@voidzero-dev/vite-plus-core@0.2.9","vitest":"4.1.11","happy-dom":"^20.11.6","vite-plus":"0.2.9","typescript":"7.0.2","@types/node":"^26.2.0","@unhead/vue":"^3.3.2","@ubean/markdown":"0.2.1","@vue/server-renderer":"^3.5.41"},"peerDependencies":{"vite":"^5.0.0 || ^6.0.0 || ^7.0.0","@unhead/vue":">=2.0.0","@ubean/markdown":">=0.1.0"},"peerDependenciesMeta":{"vite":{"optional":true},"@unhead/vue":{"optional":true},"@ubean/markdown":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vue_0.2.1_1787228060464_0.3330149729527072","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@ubean/vue","version":"0.2.2","_id":"@ubean/vue@0.2.2","maintainers":[{"name":"honghuangdc","email":"soybeanjs@outlook.com"}],"dist":{"shasum":"1cae4d2abe391e60d147f82ef59e8e365202c0c7","tarball":"https://registry.npmjs.org/@ubean/vue/-/vue-0.2.2.tgz","fileCount":11,"integrity":"sha512-VVLjBSpgboSCm8qfQy40oeOg84fjLzKNd9TioF+TK6xPCymtNwuurFxehNj9tjGWaVT6GuX0w1fSXizVXW0Jxw==","signatures":[{"sig":"MEQCIEumMGzy5CQga80t7yIj+OZI+Hla5Q794rgRAGafFSG5AiAXgdi+XM3Ryqs+cop9IXqd+O2ouewLymQOYNRl1kcLSA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":199312},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./vite":{"types":"./dist/vite.d.ts","import":"./dist/vite.js"},"./generator":{"types":"./dist/generator/index.d.ts","import":"./dist/generator/index.js"}},"scripts":{"dev":"vp pack --watch","test":"vp test","build":"vp pack","typecheck":"tsc --noEmit --skipLibCheck"},"_npmUser":{"name":"honghuangdc","email":"soybeanjs@outlook.com"},"description":"Lean Vue client kernel & page-routing owner for ubean — plugin-first page routing outlet, page cache (keep-alive), transitions, reload signal, definePage macro + file-routing Vite plugin (/vite: multi-dir scan, reuse routes, markdown & page-head opt-in). ","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ufo":"^1.6.4","vue":"^3.5.41","pathe":"^2.0.3","scule":"^1.3.0","tinyglobby":"^0.2.17","vue-router":"^5.2.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"npm:@voidzero-dev/vite-plus-core@0.2.9","vitest":"4.1.11","happy-dom":"^20.11.6","vite-plus":"0.2.9","typescript":"7.0.2","@types/node":"^26.2.0","@unhead/vue":"^3.3.2","@ubean/markdown":"0.2.2","@vue/server-renderer":"^3.5.41"},"peerDependencies":{"vite":"^5.0.0 || ^6.0.0 || ^7.0.0","@unhead/vue":">=2.0.0","@ubean/markdown":">=0.1.0"},"peerDependenciesMeta":{"vite":{"optional":true},"@unhead/vue":{"optional":true},"@ubean/markdown":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vue_0.2.2_1787305943051_0.491794990910432","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@ubean/vue","version":"0.3.0","_id":"@ubean/vue@0.3.0","maintainers":[{"name":"honghuangdc","email":"soybeanjs@outlook.com"}],"dist":{"shasum":"12d00df0e0165c840fea49001d215d20ade01f03","tarball":"https://registry.npmjs.org/@ubean/vue/-/vue-0.3.0.tgz","fileCount":11,"integrity":"sha512-B5oo2XGIoegYFJrOE+ndogMRuh2Md075F6EUuT/UzBf1Xf86U065mE3EQ6+NMBk93686rUQGkMS8cRnB58z7HA==","signatures":[{"sig":"MEYCIQCOencVurHIUyUgi3UL/U/TL1agA3cUzeH1CtOaGi9ylAIhALl0GHbO/68F2kCx8Cl8FbdZvIXNZM6bnjgN12D/10se","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":201888},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./vite":{"types":"./dist/vite.d.ts","import":"./dist/vite.js"},"./generator":{"types":"./dist/generator.d.ts","import":"./dist/generator.js"}},"scripts":{"dev":"vp pack --watch","test":"vp test","build":"vp pack","typecheck":"tsc --noEmit --skipLibCheck"},"_npmUser":{"name":"honghuangdc","email":"soybeanjs@outlook.com"},"description":"Lean Vue client kernel & page-routing owner for ubean — plugin-first page routing outlet, page cache (keep-alive), transitions, reload signal, definePage macro + file-routing Vite plugin (/vite: multi-dir scan, reuse routes, markdown & page-head opt-in). ","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ufo":"^1.6.4","vue":"^3.5.41","pathe":"^2.0.3","scule":"^1.3.0","tinyglobby":"^0.2.17","vue-router":"^5.2.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"npm:@voidzero-dev/vite-plus-core@0.2.9","vitest":"4.1.11","happy-dom":"^20.11.6","vite-plus":"0.2.9","typescript":"7.0.2","@types/node":"^26.2.0","@unhead/vue":"^3.4.0","@ubean/markdown":"0.3.0","@vue/server-renderer":"^3.5.41"},"peerDependencies":{"vite":"^5.0.0 || ^6.0.0 || ^7.0.0","@unhead/vue":">=2.0.0","@ubean/markdown":">=0.1.0"},"peerDependenciesMeta":{"vite":{"optional":true},"@unhead/vue":{"optional":true},"@ubean/markdown":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vue_0.3.0_1787415792521_0.7982484836818162","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@ubean/vue","version":"0.3.1","_id":"@ubean/vue@0.3.1","maintainers":[{"name":"honghuangdc","email":"soybeanjs@outlook.com"}],"dist":{"shasum":"01dd6181738e45db8aa41d0bb8cbdcfa0eeb1bb8","tarball":"https://registry.npmjs.org/@ubean/vue/-/vue-0.3.1.tgz","fileCount":11,"integrity":"sha512-kvsG4IkfHT1s64h4IJrQSv6IfOZsk4yjxXLa94kQRh0cKI7har/NZI/LDpsfEi1anletxJzQ7WCn+FXn9L/+8w==","signatures":[{"sig":"MEUCIQCd3M+NDjQSEHB6wourYJpo85QX6Qs9LV4e+z740mti8gIgWCpP1xCUIQO7B8BBM3p5PfRn/6J14cWM8zzTt7ynY3Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":201888},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./vite":{"types":"./dist/vite.d.ts","import":"./dist/vite.js"},"./generator":{"types":"./dist/generator.d.ts","import":"./dist/generator.js"}},"scripts":{"dev":"vp pack --watch","test":"vp test","build":"vp pack","typecheck":"tsc --noEmit --skipLibCheck"},"_npmUser":{"name":"honghuangdc","email":"soybeanjs@outlook.com"},"description":"Lean Vue client kernel & page-routing owner for ubean — plugin-first page routing outlet, page cache (keep-alive), transitions, reload signal, definePage macro + file-routing Vite plugin (/vite: multi-dir scan, reuse routes, markdown & page-head opt-in). ","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ufo":"^1.6.4","vue":"^3.5.42","pathe":"^2.0.3","scule":"^1.3.0","tinyglobby":"^0.2.17","vue-router":"^5.3.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"npm:@voidzero-dev/vite-plus-core@0.3.0","vitest":"4.1.11","happy-dom":"^20.12.0","vite-plus":"0.3.0","typescript":"7.0.2","@types/node":"^26.4.0","@unhead/vue":"^3.4.0","@ubean/markdown":"0.3.1","@vue/server-renderer":"^3.5.42"},"peerDependencies":{"vite":"^5.0.0 || ^6.0.0 || ^7.0.0","@unhead/vue":">=2.0.0","@ubean/markdown":">=0.1.0"},"peerDependenciesMeta":{"vite":{"optional":true},"@unhead/vue":{"optional":true},"@ubean/markdown":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vue_0.3.1_1788195844801_0.15825890072867987","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@ubean/vue","version":"0.3.2","_id":"@ubean/vue@0.3.2","maintainers":[{"name":"honghuangdc","email":"soybeanjs@outlook.com"}],"dist":{"shasum":"394729aa8807627f48efd434d2eea843ca4e6fda","tarball":"https://registry.npmjs.org/@ubean/vue/-/vue-0.3.2.tgz","fileCount":11,"integrity":"sha512-TvLl/22JG5VEdLCk0NXZoHgh4QhB36p/mZQfaBBwNCfcLflNpt3gqyvmEgqHtnEgR0LU6prNEB5jm2SmmEd+Gw==","signatures":[{"sig":"MEQCICzTuKaKgZRirC60fuqK3xjdJ8PeRhmggyUMIGRNYI5hAiAA7e8ynQ/FBT+sZJdI5sE3kAxWxaOWQq8IYpwVH08gtA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":201888},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./vite":{"types":"./dist/vite.d.ts","import":"./dist/vite.js"},"./generator":{"types":"./dist/generator.d.ts","import":"./dist/generator.js"}},"scripts":{"dev":"vp pack --watch","test":"vp test","build":"vp pack","typecheck":"tsc --noEmit --skipLibCheck"},"_npmUser":{"name":"honghuangdc","email":"soybeanjs@outlook.com"},"description":"Lean Vue client kernel & page-routing owner for ubean — plugin-first page routing outlet, page cache (keep-alive), transitions, reload signal, definePage macro + file-routing Vite plugin (/vite: multi-dir scan, reuse routes, markdown & page-head opt-in). ","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ufo":"^1.6.4","vue":"^3.5.42","pathe":"^2.0.3","scule":"^1.3.0","tinyglobby":"^0.2.17","vue-router":"^5.3.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"npm:@voidzero-dev/vite-plus-core@0.3.0","vitest":"4.1.11","happy-dom":"^20.12.0","vite-plus":"0.3.0","typescript":"7.0.2","@types/node":"^26.4.0","@unhead/vue":"^3.4.0","@ubean/markdown":"0.3.2","@vue/server-renderer":"^3.5.42"},"peerDependencies":{"vite":"^5.0.0 || ^6.0.0 || ^7.0.0","@unhead/vue":">=2.0.0","@ubean/markdown":">=0.1.0"},"peerDependenciesMeta":{"vite":{"optional":true},"@unhead/vue":{"optional":true},"@ubean/markdown":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vue_0.3.2_1788201173401_0.14649911406745875","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@ubean/vue","version":"0.3.3","_id":"@ubean/vue@0.3.3","maintainers":[{"name":"honghuangdc","email":"soybeanjs@outlook.com"}],"dist":{"shasum":"e54d92a8945fed7ad34315b1b8d25b9cae88b2a2","tarball":"https://registry.npmjs.org/@ubean/vue/-/vue-0.3.3.tgz","fileCount":11,"integrity":"sha512-YYNviUmTqtGwSsHuoxl5XJhRfrV9j256L9ZDc0b3MfhO6+0aeoXqZ+7HNEIBy+a6GBbqUBJNLp1WviQ4lG+/ig==","signatures":[{"sig":"MEQCIGxJldZyjV5XLg9b7qo+67FDC2F8fpDivab9rZASLnxpAiB0SdbFKTYwVxt4rxVV3bPI9GKY4Rl+JnO53wCbdNv47w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":201888},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./vite":{"types":"./dist/vite.d.ts","import":"./dist/vite.js"},"./generator":{"types":"./dist/generator.d.ts","import":"./dist/generator.js"}},"scripts":{"dev":"vp pack --watch","test":"vp test","build":"vp pack","typecheck":"tsc --noEmit --skipLibCheck"},"_npmUser":{"name":"honghuangdc","email":"soybeanjs@outlook.com"},"description":"Lean Vue client kernel & page-routing owner for ubean — plugin-first page routing outlet, page cache (keep-alive), transitions, reload signal, definePage macro + file-routing Vite plugin (/vite: multi-dir scan, reuse routes, markdown & page-head opt-in). ","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ufo":"^1.6.4","vue":"^3.5.42","pathe":"^2.0.3","scule":"^1.3.0","tinyglobby":"^0.2.17","vue-router":"^5.3.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"npm:@voidzero-dev/vite-plus-core@0.3.0","vitest":"4.1.11","happy-dom":"^20.12.0","vite-plus":"0.3.0","typescript":"7.0.2","@types/node":"^26.4.0","@unhead/vue":"^3.4.0","@ubean/markdown":"0.3.3","@vue/server-renderer":"^3.5.42"},"peerDependencies":{"vite":"^5.0.0 || ^6.0.0 || ^7.0.0","@unhead/vue":">=2.0.0","@ubean/markdown":">=0.1.0"},"peerDependenciesMeta":{"vite":{"optional":true},"@unhead/vue":{"optional":true},"@ubean/markdown":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vue_0.3.3_1788245740362_0.48188136992073183","host":"s3://npm-registry-packages-npm-production"}},"0.3.4":{"name":"@ubean/vue","version":"0.3.4","_id":"@ubean/vue@0.3.4","maintainers":[{"name":"honghuangdc","email":"soybeanjs@outlook.com"}],"dist":{"shasum":"c008146b2f7eb39eb20c812d042069192f97c43b","tarball":"https://registry.npmjs.org/@ubean/vue/-/vue-0.3.4.tgz","fileCount":11,"integrity":"sha512-cmpUcSoLPsbRP0FlIRGk/oUZtbiNxdi/bHy9dDCfMmd0GEs5r24AXr4ZgfOohLa7Yf39triIFktt0ZxsBVZGWA==","signatures":[{"sig":"MEYCIQDLOjLrdZjb6OLhGoJsyrN6ji6Rk9TQg2S3jh6K8wVcFQIhAK2f2dvsFSZrjMjnKNKMsFGms9LgdN7Wg1SwSUJVaWr5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":202872},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./vite":{"types":"./dist/vite.d.ts","import":"./dist/vite.js"},"./generator":{"types":"./dist/generator.d.ts","import":"./dist/generator.js"}},"scripts":{"dev":"vp pack --watch","test":"vp test","build":"vp pack","typecheck":"tsc --noEmit --skipLibCheck"},"_npmUser":{"name":"honghuangdc","email":"soybeanjs@outlook.com"},"description":"Lean Vue client kernel & page-routing owner for ubean — plugin-first page routing outlet, page cache (keep-alive), transitions, reload signal, definePage macro + file-routing Vite plugin (/vite: multi-dir scan, reuse routes, markdown & page-head opt-in). ","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ufo":"^1.6.4","vue":"^3.5.42","pathe":"^2.0.3","scule":"^1.3.0","tinyglobby":"^0.2.17","vue-router":"^5.3.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"npm:@voidzero-dev/vite-plus-core@0.3.0","vitest":"4.1.11","happy-dom":"^20.12.0","vite-plus":"0.3.0","typescript":"7.0.2","@types/node":"^26.4.0","@unhead/vue":"^3.4.0","@ubean/markdown":"0.3.4","@vue/server-renderer":"^3.5.42"},"peerDependencies":{"vite":"^5.0.0 || ^6.0.0 || ^7.0.0","@unhead/vue":">=2.0.0","@ubean/markdown":">=0.1.0"},"peerDependenciesMeta":{"vite":{"optional":true},"@unhead/vue":{"optional":true},"@ubean/markdown":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vue_0.3.4_1788255536886_0.4833225906187406","host":"s3://npm-registry-packages-npm-production"}},"0.3.5":{"name":"@ubean/vue","version":"0.3.5","_id":"@ubean/vue@0.3.5","maintainers":[{"name":"honghuangdc","email":"soybeanjs@outlook.com"}],"dist":{"shasum":"1f2b472c7c55d073c75853ba6221af1ca0cf5ab1","tarball":"https://registry.npmjs.org/@ubean/vue/-/vue-0.3.5.tgz","fileCount":11,"integrity":"sha512-sSf8NLjWtTKRWeKeqAM9Hzruxt5LTtcRNCWI+3bxmukvSr+gjHXzivcv2GnUEzBjHIn83pHkqKzTWci9gu3xGA==","signatures":[{"sig":"MEUCIQDcb+36ZuC1ohflCt1t9la5ws2Rprp77xE4RET7jEW8mAIgIbxUu37cQFZlZG3xF93VicG6qGkl5IHFLF7KYsIxXAM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":202872},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./vite":{"types":"./dist/vite.d.ts","import":"./dist/vite.js"},"./generator":{"types":"./dist/generator.d.ts","import":"./dist/generator.js"}},"scripts":{"dev":"vp pack --watch","test":"vp test","build":"vp pack","typecheck":"tsc --noEmit --skipLibCheck"},"_npmUser":{"name":"honghuangdc","email":"soybeanjs@outlook.com"},"description":"Lean Vue client kernel & page-routing owner for ubean — plugin-first page routing outlet, page cache (keep-alive), transitions, reload signal, definePage macro + file-routing Vite plugin (/vite: multi-dir scan, reuse routes, markdown & page-head opt-in). ","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ufo":"^1.6.4","vue":"^3.5.42","pathe":"^2.0.3","scule":"^1.3.0","tinyglobby":"^0.2.17","vue-router":"^5.3.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"npm:@voidzero-dev/vite-plus-core@0.3.0","vitest":"4.1.11","happy-dom":"^20.12.0","vite-plus":"0.3.0","typescript":"7.0.2","@types/node":"^26.4.0","@unhead/vue":"^3.4.0","@ubean/markdown":"0.3.5","@vue/server-renderer":"^3.5.42"},"peerDependencies":{"vite":"^5.0.0 || ^6.0.0 || ^7.0.0","@unhead/vue":">=2.0.0","@ubean/markdown":">=0.1.0"},"peerDependenciesMeta":{"vite":{"optional":true},"@unhead/vue":{"optional":true},"@ubean/markdown":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vue_0.3.5_1788265060199_0.5337458546206924","host":"s3://npm-registry-packages-npm-production"}},"0.3.6":{"name":"@ubean/vue","version":"0.3.6","_id":"@ubean/vue@0.3.6","maintainers":[{"name":"honghuangdc","email":"soybeanjs@outlook.com"}],"dist":{"shasum":"f5d6a0a1e3ba3c0cfaafc505d109f9f2807055fd","tarball":"https://registry.npmjs.org/@ubean/vue/-/vue-0.3.6.tgz","fileCount":11,"integrity":"sha512-SjaC7EA00LrbpmnW7y8pht4rxM/6tq8btEx3OfDfZfIOQF7Ih1FO7qY9ll12Z/0/I7zQ2KTckseCqdF9U0/Z0w==","signatures":[{"sig":"MEUCIFLLL9v9SAupvKds9bPVN035R0anH4FXmz5HnhYdLgjUAiEAo/OKO9I8KEQ15iH1BOLnxWkzzWQWS9R0s4ROHy6aEDw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":202872},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./vite":{"types":"./dist/vite.d.ts","import":"./dist/vite.js"},"./generator":{"types":"./dist/generator.d.ts","import":"./dist/generator.js"}},"scripts":{"dev":"vp pack --watch","test":"vp test","build":"vp pack","typecheck":"tsc --noEmit --skipLibCheck"},"_npmUser":{"name":"honghuangdc","email":"soybeanjs@outlook.com"},"description":"Lean Vue client kernel & page-routing owner for ubean — plugin-first page routing outlet, page cache (keep-alive), transitions, reload signal, definePage macro + file-routing Vite plugin (/vite: multi-dir scan, reuse routes, markdown & page-head opt-in). ","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ufo":"^1.6.4","vue":"^3.5.42","pathe":"^2.0.3","scule":"^1.3.0","tinyglobby":"^0.2.17","vue-router":"^5.3.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"npm:@voidzero-dev/vite-plus-core@0.3.0","vitest":"4.1.11","happy-dom":"^20.12.0","vite-plus":"0.3.0","typescript":"7.0.2","@types/node":"^26.4.0","@unhead/vue":"^3.4.0","@ubean/markdown":"0.3.6","@vue/server-renderer":"^3.5.42"},"peerDependencies":{"vite":"^5.0.0 || ^6.0.0 || ^7.0.0","@unhead/vue":">=2.0.0","@ubean/markdown":">=0.1.0"},"peerDependenciesMeta":{"vite":{"optional":true},"@unhead/vue":{"optional":true},"@ubean/markdown":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vue_0.3.6_1788324887154_0.6119271293066548","host":"s3://npm-registry-packages-npm-production"}},"0.3.7":{"name":"@ubean/vue","version":"0.3.7","_id":"@ubean/vue@0.3.7","maintainers":[{"name":"honghuangdc","email":"soybeanjs@outlook.com"}],"dist":{"shasum":"c4576be7fc40ace015a3f2d5deecc795c6175632","tarball":"https://registry.npmjs.org/@ubean/vue/-/vue-0.3.7.tgz","fileCount":11,"integrity":"sha512-QNJnqnE1qXgv2mZ4Q+RcEc/TNHXK/9R9Z71PNhvyUDTqvhBbac0xrDTVf9sHmB5SHBGM6i7NKhbhg1D+aw7XnA==","signatures":[{"sig":"MEUCIGHvIQ08dO9YJ8+PCiX+eMhjDY+7mCI854TCYNbFCR59AiEAxs+b2nYwvuKln35Jl83C1qKBxQovaeRZqXgCD9RfT+s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":202872},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./vite":{"types":"./dist/vite.d.ts","import":"./dist/vite.js"},"./generator":{"types":"./dist/generator.d.ts","import":"./dist/generator.js"}},"scripts":{"dev":"vp pack --watch","test":"vp test","build":"vp pack","typecheck":"tsc --noEmit --skipLibCheck"},"_npmUser":{"name":"honghuangdc","email":"soybeanjs@outlook.com"},"description":"Lean Vue client kernel & page-routing owner for ubean — plugin-first page routing outlet, page cache (keep-alive), transitions, reload signal, definePage macro + file-routing Vite plugin (/vite: multi-dir scan, reuse routes, markdown & page-head opt-in). ","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ufo":"^1.6.4","vue":"^3.5.42","pathe":"^2.0.3","scule":"^1.3.0","tinyglobby":"^0.2.17","vue-router":"^5.3.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"npm:@voidzero-dev/vite-plus-core@0.3.0","vitest":"4.1.11","happy-dom":"^20.12.0","vite-plus":"0.3.0","typescript":"7.0.2","@types/node":"^26.4.0","@unhead/vue":"^3.4.0","@ubean/markdown":"0.3.7","@vue/server-renderer":"^3.5.42"},"peerDependencies":{"vite":"^5.0.0 || ^6.0.0 || ^7.0.0","@unhead/vue":">=2.0.0","@ubean/markdown":">=0.1.0"},"peerDependenciesMeta":{"vite":{"optional":true},"@unhead/vue":{"optional":true},"@ubean/markdown":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vue_0.3.7_1788337864446_0.7362115670099234","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@ubean/vue","version":"0.4.0","_id":"@ubean/vue@0.4.0","maintainers":[{"name":"honghuangdc","email":"soybeanjs@outlook.com"}],"dist":{"shasum":"96dc7f2d16ef53967fed5434cf3cdd57e903e312","tarball":"https://registry.npmjs.org/@ubean/vue/-/vue-0.4.0.tgz","fileCount":11,"integrity":"sha512-A6kK+oSA9ViiyZyAP3r/mA1IJnfGPCSnKFGmrxzKb2P8AqsogWPVOO03getTAm901F3qfQ2KD9MYoIVqk75HEA==","signatures":[{"sig":"MEUCIQCuqVn6FUwiNbtoMPeZi4mwcm92hxO5JUzzAE/oJM0+PwIgUE4jSFnKKUN/DKOsLa5UI8LvmnZy2lN1Ws7lPjFcd9Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":202872},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./vite":{"types":"./dist/vite.d.ts","import":"./dist/vite.js"},"./generator":{"types":"./dist/generator.d.ts","import":"./dist/generator.js"}},"scripts":{"dev":"vp pack --watch","test":"vp test","build":"vp pack","typecheck":"tsc --noEmit --skipLibCheck"},"_npmUser":{"name":"honghuangdc","email":"soybeanjs@outlook.com"},"description":"Lean Vue client kernel & page-routing owner for ubean — plugin-first page routing outlet, page cache (keep-alive), transitions, reload signal, definePage macro + file-routing Vite plugin (/vite: multi-dir scan, reuse routes, markdown & page-head opt-in). ","directories":{},"_nodeVersion":"24.20.0","dependencies":{"ufo":"^1.6.4","vue":"^3.5.42","pathe":"^2.0.3","scule":"^1.3.0","tinyglobby":"^0.2.17","vue-router":"^5.3.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"npm:@voidzero-dev/vite-plus-core@0.3.0","vitest":"4.1.11","happy-dom":"^20.12.0","vite-plus":"0.3.0","typescript":"7.0.2","@types/node":"^26.4.0","@unhead/vue":"^3.4.0","@ubean/markdown":"0.4.0","@vue/server-renderer":"^3.5.42"},"peerDependencies":{"vite":"^5.0.0 || ^6.0.0 || ^7.0.0","@unhead/vue":">=2.0.0","@ubean/markdown":">=0.1.0"},"peerDependenciesMeta":{"vite":{"optional":true},"@unhead/vue":{"optional":true},"@ubean/markdown":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vue_0.4.0_1788780746557_0.5661734550192719","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@ubean/vue","version":"0.4.1","_id":"@ubean/vue@0.4.1","maintainers":[{"name":"honghuangdc","email":"soybeanjs@outlook.com"}],"dist":{"shasum":"f14c2dcea617a0cb2d6ad70c86c131cce90933cd","tarball":"https://registry.npmjs.org/@ubean/vue/-/vue-0.4.1.tgz","fileCount":11,"integrity":"sha512-gIx/6lMBs1mUlYsUfYmNXb5J94rBY2uWGCrBcLhxa21vL4co1eKnBOvQdQQd/V5XDsWbXjNDoCmUkZE+bugI/Q==","signatures":[{"sig":"MEUCIQC55zsxT2rLnayAvML/+MHK0pSS7mwj0hlByVbDKKqUAgIgRmlYetEftvjPdhxxFcTd1y96rqD/8kYw9DUYFxAmjDU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":202871},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./vite":{"types":"./dist/vite.d.ts","import":"./dist/vite.js"},"./generator":{"types":"./dist/generator.d.ts","import":"./dist/generator.js"}},"scripts":{"dev":"vp pack --watch","test":"vp test","build":"vp pack","typecheck":"tsc --noEmit --skipLibCheck"},"_npmUser":{"name":"honghuangdc","email":"soybeanjs@outlook.com"},"description":"Lean Vue client kernel & page-routing owner for ubean — plugin-first page routing outlet, page cache (keep-alive), transitions, reload signal, definePage macro + file-routing Vite plugin (/vite: multi-dir scan, reuse routes, markdown & page-head opt-in). ","directories":{},"dependencies":{"ufo":"^1.6.4","vue":"^3.5.42","pathe":"^2.0.3","scule":"^1.3.0","tinyglobby":"^0.2.17","vue-router":"^5.3.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"npm:@voidzero-dev/vite-plus-core@0.3.0","vitest":"5.0.0","happy-dom":"^20.14.0","vite-plus":"0.3.0","typescript":"7.0.2","@types/node":"^26.4.1","@unhead/vue":"^3.4.0","@ubean/markdown":"0.4.1","@vue/server-renderer":"^3.5.42"},"peerDependencies":{"vite":"^5.0.0 || ^6.0.0 || ^7.0.0","@unhead/vue":">=2.0.0","@ubean/markdown":">=0.1.0"},"peerDependenciesMeta":{"vite":{"optional":true},"@unhead/vue":{"optional":true},"@ubean/markdown":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vue_0.4.1_1788781827337_0.6067998584480689","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@ubean/vue","version":"0.4.2","_id":"@ubean/vue@0.4.2","maintainers":[{"name":"honghuangdc","email":"soybeanjs@outlook.com"}],"dist":{"shasum":"dec7db7a73cb2b4e27fed8622a409eee92acfd74","tarball":"https://registry.npmjs.org/@ubean/vue/-/vue-0.4.2.tgz","fileCount":11,"integrity":"sha512-SXfibYvf55UZNMx8mq00Z99BTQnSos1Jf4jzxgZO2q/T/9M0CzCfAdRLUAWCIJ2SILGDbPQn5+B+Z1oAkKV3oA==","signatures":[{"sig":"MEQCIHAEVXEKJxH1KJhLGG2VRdk/LP2uUwn8lMasXocv2BYXAiB44BGeGfNbNvlakrDWZBl/TFjAxy/rXMCSZS7kt9mpGg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":202871},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./vite":{"types":"./dist/vite.d.ts","import":"./dist/vite.js"},"./generator":{"types":"./dist/generator.d.ts","import":"./dist/generator.js"}},"scripts":{"dev":"vp pack --watch","test":"vp test","build":"vp pack","typecheck":"tsc --noEmit --skipLibCheck"},"_npmUser":{"name":"honghuangdc","email":"soybeanjs@outlook.com"},"description":"Lean Vue client kernel & page-routing owner for ubean — plugin-first page routing outlet, page cache (keep-alive), transitions, reload signal, definePage macro + file-routing Vite plugin (/vite: multi-dir scan, reuse routes, markdown & page-head opt-in). ","directories":{},"dependencies":{"ufo":"^1.6.4","vue":"^3.5.42","pathe":"^2.0.3","scule":"^1.3.0","tinyglobby":"^0.2.17","vue-router":"^5.3.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"npm:@voidzero-dev/vite-plus-core@0.3.0","vitest":"5.0.0","happy-dom":"^20.14.0","vite-plus":"0.3.0","typescript":"7.0.2","@types/node":"^26.4.1","@unhead/vue":"^3.4.0","@ubean/markdown":"0.4.2","@vue/server-renderer":"^3.5.42"},"peerDependencies":{"vite":"^5.0.0 || ^6.0.0 || ^7.0.0","@unhead/vue":">=2.0.0","@ubean/markdown":">=0.1.0"},"peerDependenciesMeta":{"vite":{"optional":true},"@unhead/vue":{"optional":true},"@ubean/markdown":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vue_0.4.2_1788841718765_0.8568788372257008","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"name":"@ubean/vue","version":"0.4.3","_id":"@ubean/vue@0.4.3","maintainers":[{"name":"honghuangdc","email":"soybeanjs@outlook.com"}],"dist":{"shasum":"3c1ec090aaaa5395470346bb34fe022845d12e79","tarball":"https://registry.npmjs.org/@ubean/vue/-/vue-0.4.3.tgz","fileCount":11,"integrity":"sha512-Qww0LljKymCRN/bBfrIXbRMjYPv050yfHd1lbpCIPEZGss9d/BNJnyFI1+Sn0RZ2qNR3Mv8dPoaozDd5jkyYRw==","signatures":[{"sig":"MEYCIQDTuz6tpaUcrZoUO6OgVtpX3fhikTeM5GwAPa0oR0SM4gIhAKD4NsJkl4t1nXCYrg0R3KQKJUUHA0G7/jYUCn/tX5rI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":202871},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./vite":{"types":"./dist/vite.d.ts","import":"./dist/vite.js"},"./generator":{"types":"./dist/generator.d.ts","import":"./dist/generator.js"}},"scripts":{"dev":"vp pack --watch","test":"vp test","build":"vp pack","typecheck":"tsc --noEmit --skipLibCheck"},"_npmUser":{"name":"honghuangdc","email":"soybeanjs@outlook.com"},"description":"Lean Vue client kernel & page-routing owner for ubean — plugin-first page routing outlet, page cache (keep-alive), transitions, reload signal, definePage macro + file-routing Vite plugin (/vite: multi-dir scan, reuse routes, markdown & page-head opt-in). ","directories":{},"dependencies":{"ufo":"^1.6.4","vue":"^3.5.42","pathe":"^2.0.3","scule":"^1.3.0","tinyglobby":"^0.2.17","vue-router":"^5.3.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"npm:@voidzero-dev/vite-plus-core@0.3.0","vitest":"5.0.0","happy-dom":"^20.14.0","vite-plus":"0.3.0","typescript":"7.0.2","@types/node":"^26.5.0","@unhead/vue":"^3.4.0","@ubean/markdown":"0.4.3","@vue/server-renderer":"^3.5.42"},"peerDependencies":{"vite":"^5.0.0 || ^6.0.0 || ^7.0.0","@unhead/vue":">=2.0.0","@ubean/markdown":">=0.1.0"},"peerDependenciesMeta":{"vite":{"optional":true},"@unhead/vue":{"optional":true},"@ubean/markdown":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vue_0.4.3_1788859980366_0.16899459168207098","host":"s3://npm-registry-packages-npm-production"}},"0.4.4":{"name":"@ubean/vue","version":"0.4.4","_id":"@ubean/vue@0.4.4","maintainers":[{"name":"honghuangdc","email":"soybeanjs@outlook.com"}],"dist":{"shasum":"7c43b6893524fbfc1cfc3199ffbd72497697dc35","tarball":"https://registry.npmjs.org/@ubean/vue/-/vue-0.4.4.tgz","fileCount":11,"integrity":"sha512-PngV4tuujJGebHhi49JyOsIlKJhxPaEgFEsSqhIF/U0qn5LN0SmkEPeYvJ82cx2m1laz/qy15/qVyQh/dRfuKg==","signatures":[{"sig":"MEYCIQDnOSSE9xNo5yI7azGxYNyQ+ds4L2bqF+ujYjQHKc++PwIhAOlwQseeEbPE9TwI6H+LdfRlelTryDmvjd5BdRUidoWn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":202871},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./vite":{"types":"./dist/vite.d.ts","import":"./dist/vite.js"},"./generator":{"types":"./dist/generator.d.ts","import":"./dist/generator.js"}},"scripts":{"dev":"vp pack --watch","test":"vp test","build":"vp pack","typecheck":"tsc --noEmit --skipLibCheck"},"_npmUser":{"name":"honghuangdc","email":"soybeanjs@outlook.com"},"description":"Lean Vue client kernel & page-routing owner for ubean — plugin-first page routing outlet, page cache (keep-alive), transitions, reload signal, definePage macro + file-routing Vite plugin (/vite: multi-dir scan, reuse routes, markdown & page-head opt-in). ","directories":{},"dependencies":{"ufo":"^1.6.4","vue":"^3.5.42","pathe":"^2.0.3","scule":"^1.3.0","tinyglobby":"^0.2.17","vue-router":"^5.3.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"npm:@voidzero-dev/vite-plus-core@0.3.0","vitest":"5.0.0","happy-dom":"^20.14.0","vite-plus":"0.3.0","typescript":"7.0.2","@types/node":"^26.5.0","@unhead/vue":"^3.4.0","@ubean/markdown":"0.4.4","@vue/server-renderer":"^3.5.42"},"peerDependencies":{"vite":"^5.0.0 || ^6.0.0 || ^7.0.0","@unhead/vue":">=2.0.0","@ubean/markdown":">=0.1.0"},"peerDependenciesMeta":{"vite":{"optional":true},"@unhead/vue":{"optional":true},"@ubean/markdown":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vue_0.4.4_1788862026046_0.4987984632227822","host":"s3://npm-registry-packages-npm-production"}},"0.4.5":{"name":"@ubean/vue","version":"0.4.5","_id":"@ubean/vue@0.4.5","maintainers":[{"name":"honghuangdc","email":"soybeanjs@outlook.com"}],"dist":{"shasum":"e10851c9345d28d5569eaeda84a60c66c858d5dc","tarball":"https://registry.npmjs.org/@ubean/vue/-/vue-0.4.5.tgz","fileCount":11,"integrity":"sha512-O183WYPbt04owhByggMY8cqcfWoeIyEs0P2DjSPvdhFb4ipf/vsxA08Pw34mHPwZvhT1QSKda0ouoKwqbmZLlg==","signatures":[{"sig":"MEQCICkt8yi+X55I7Zzpf0NjNEfPbt19BnIjLOOb+GcMuYOYAiAV6MuAyWw/PCAhPJjSlxU//xcYwN7rfa2Ylmt8/t7xkw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":202871},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./vite":{"types":"./dist/vite.d.ts","import":"./dist/vite.js"},"./generator":{"types":"./dist/generator.d.ts","import":"./dist/generator.js"}},"scripts":{"dev":"vp pack --watch","test":"vp test","build":"vp pack","typecheck":"tsc --noEmit --skipLibCheck"},"_npmUser":{"name":"honghuangdc","email":"soybeanjs@outlook.com"},"description":"Lean Vue client kernel & page-routing owner for ubean — plugin-first page routing outlet, page cache (keep-alive), transitions, reload signal, definePage macro + file-routing Vite plugin (/vite: multi-dir scan, reuse routes, markdown & page-head opt-in). ","directories":{},"dependencies":{"ufo":"^1.6.4","vue":"^3.5.42","pathe":"^2.0.3","scule":"^1.3.0","tinyglobby":"^0.2.17","vue-router":"^5.3.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"npm:@voidzero-dev/vite-plus-core@0.3.0","vitest":"5.0.0","happy-dom":"^20.14.0","vite-plus":"0.3.0","typescript":"7.0.2","@types/node":"^26.5.0","@unhead/vue":"^3.4.0","@ubean/markdown":"0.4.5","@vue/server-renderer":"^3.5.42"},"peerDependencies":{"vite":"^5.0.0 || ^6.0.0 || ^7.0.0","@unhead/vue":">=2.0.0","@ubean/markdown":">=0.1.0"},"peerDependenciesMeta":{"vite":{"optional":true},"@unhead/vue":{"optional":true},"@ubean/markdown":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vue_0.4.5_1788884840374_0.4190255910055962","host":"s3://npm-registry-packages-npm-production"}},"0.4.6":{"name":"@ubean/vue","version":"0.4.6","_id":"@ubean/vue@0.4.6","maintainers":[{"name":"honghuangdc","email":"soybeanjs@outlook.com"}],"dist":{"shasum":"5956aa6ecd90248864e70c0330d188138f25f9a8","tarball":"https://registry.npmjs.org/@ubean/vue/-/vue-0.4.6.tgz","fileCount":11,"integrity":"sha512-o3g1NUw+xQanxHMM2iCyBMXaHgBBwp69z0HXbpsB2XH9iGSMm+QA9BR9agarsVyyCAc5RkLanyTnkL7FsuezKA==","signatures":[{"sig":"MEUCID3FzUIE59JRxNrUnmNEn8wJwnR6+MFNzOi5e38PlB6tAiEA3sBo1nunXAomF6QGbT8zX7moU2VQ8nUws+FlaA+hX0U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":210791},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./vite":{"types":"./dist/vite.d.ts","import":"./dist/vite.js"},"./generator":{"types":"./dist/generator.d.ts","import":"./dist/generator.js"}},"scripts":{"dev":"vp pack --watch","test":"vp test","build":"vp pack","typecheck":"tsc --noEmit --skipLibCheck"},"_npmUser":{"name":"honghuangdc","email":"soybeanjs@outlook.com"},"description":"Lean Vue client kernel & page-routing owner for ubean — plugin-first page routing outlet, page cache (keep-alive), transitions, reload signal, definePage macro + file-routing Vite plugin (/vite: multi-dir scan, reuse routes, markdown & page-head opt-in). ","directories":{},"dependencies":{"ufo":"^1.6.4","vue":"^3.5.42","pathe":"^2.0.3","scule":"^1.3.0","tinyglobby":"^0.2.17","vue-router":"^5.3.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"npm:@voidzero-dev/vite-plus-core@0.3.1","vitest":"5.0.0","happy-dom":"^20.14.0","vite-plus":"0.3.1","typescript":"npm:typescript-native-bridge@latest","@types/node":"^26.5.0","@unhead/vue":"^3.4.0","@ubean/markdown":"0.4.6","@vue/server-renderer":"^3.5.42"},"peerDependencies":{"vite":"^5.0.0 || ^6.0.0 || ^7.0.0","@unhead/vue":">=2.0.0","@ubean/markdown":">=0.1.0"},"peerDependenciesMeta":{"vite":{"optional":true},"@unhead/vue":{"optional":true},"@ubean/markdown":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vue_0.4.6_1788944607280_0.8940094869071074","host":"s3://npm-registry-packages-npm-production"}},"0.4.7":{"name":"@ubean/vue","version":"0.4.7","_id":"@ubean/vue@0.4.7","maintainers":[{"name":"honghuangdc","email":"soybeanjs@outlook.com"}],"dist":{"shasum":"ebb48b782ec03071f1165e1fa9b89b27a7c2657d","tarball":"https://registry.npmjs.org/@ubean/vue/-/vue-0.4.7.tgz","fileCount":11,"integrity":"sha512-iH8JnEhzGQosKc890Sczl7U7Rv89AOuK10MoN6fThze6rY6NnnrSaa+SZ/6EJPxcSXpW04FwJH37KJTf4HlTZQ==","signatures":[{"sig":"MEQCIEzkn1PtXglQyh+zZpBUHXqzVO7dWi4EoW6sa1wv1/LOAiBghLD7clo68FqGZ3C7ja1PC8QorwLGF9amQnMV2Zor7A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":210791},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./vite":{"types":"./dist/vite.d.ts","import":"./dist/vite.js"},"./generator":{"types":"./dist/generator.d.ts","import":"./dist/generator.js"}},"scripts":{"dev":"vp pack --watch","test":"vp test","build":"vp pack","typecheck":"tsc --noEmit --skipLibCheck"},"_npmUser":{"name":"honghuangdc","email":"soybeanjs@outlook.com"},"description":"Lean Vue client kernel & page-routing owner for ubean — plugin-first page routing outlet, page cache (keep-alive), transitions, reload signal, definePage macro + file-routing Vite plugin (/vite: multi-dir scan, reuse routes, markdown & page-head opt-in). ","directories":{},"dependencies":{"ufo":"^1.6.4","vue":"^3.5.42","pathe":"^2.0.3","scule":"^1.3.0","tinyglobby":"^0.2.17","vue-router":"^5.3.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"npm:@voidzero-dev/vite-plus-core@0.3.1","vitest":"5.0.0","happy-dom":"^20.14.0","vite-plus":"0.3.1","typescript":"npm:typescript-native-bridge@latest","@types/node":"^26.5.0","@unhead/vue":"^3.4.0","@ubean/markdown":"0.4.7","@vue/server-renderer":"^3.5.42"},"peerDependencies":{"vite":"^5.0.0 || ^6.0.0 || ^7.0.0","@unhead/vue":">=2.0.0","@ubean/markdown":">=0.1.0"},"peerDependenciesMeta":{"vite":{"optional":true},"@unhead/vue":{"optional":true},"@ubean/markdown":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vue_0.4.7_1789011946774_0.9740080103507651","host":"s3://npm-registry-packages-npm-production"}},"0.4.8":{"name":"@ubean/vue","version":"0.4.8","_id":"@ubean/vue@0.4.8","maintainers":[{"name":"honghuangdc","email":"soybeanjs@outlook.com"}],"dist":{"shasum":"bca343c656e712f5d8851051018d0ccceced6c3d","tarball":"https://registry.npmjs.org/@ubean/vue/-/vue-0.4.8.tgz","fileCount":11,"integrity":"sha512-Ko/cPRWvvkEMKwk7tuyTAaXEcM1y6JUuCJ8JYzRotiU7x4W5ZFi16DUfAMVsjgsXcW9tCKRAY6s01atuqOfGDQ==","signatures":[{"sig":"MEUCIQDEc7o5EWNF+0eeNQa/043FR9qCeigXy5aKN9QNYodDhQIgA7U/0CFTYQMX0gFrVcgfhmqNB6/TEdvpm3snn0TZYLA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":210791},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./vite":{"types":"./dist/vite.d.ts","import":"./dist/vite.js"},"./generator":{"types":"./dist/generator.d.ts","import":"./dist/generator.js"}},"scripts":{"dev":"vp pack --watch","test":"vp test","build":"vp pack","typecheck":"tsc --noEmit --skipLibCheck"},"_npmUser":{"name":"honghuangdc","email":"soybeanjs@outlook.com"},"description":"Lean Vue client kernel & page-routing owner for ubean — plugin-first page routing outlet, page cache (keep-alive), transitions, reload signal, definePage macro + file-routing Vite plugin (/vite: multi-dir scan, reuse routes, markdown & page-head opt-in). ","directories":{},"dependencies":{"ufo":"^1.6.4","vue":"^3.5.42","pathe":"^2.0.3","scule":"^1.3.0","tinyglobby":"^0.2.17","vue-router":"^5.3.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"npm:@voidzero-dev/vite-plus-core@0.3.1","vitest":"5.0.0","happy-dom":"^20.14.0","vite-plus":"0.3.1","typescript":"npm:typescript-native-bridge@latest","@types/node":"^26.5.0","@unhead/vue":"^3.4.0","@ubean/markdown":"0.4.8","@vue/server-renderer":"^3.5.42"},"peerDependencies":{"vite":"^5.0.0 || ^6.0.0 || ^7.0.0","@unhead/vue":">=2.0.0","@ubean/markdown":">=0.1.0"},"peerDependenciesMeta":{"vite":{"optional":true},"@unhead/vue":{"optional":true},"@ubean/markdown":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vue_0.4.8_1789020427289_0.1334151298335351","host":"s3://npm-registry-packages-npm-production"}},"0.4.9":{"name":"@ubean/vue","version":"0.4.9","_id":"@ubean/vue@0.4.9","maintainers":[{"name":"honghuangdc","email":"soybeanjs@outlook.com"}],"dist":{"shasum":"c509a6f20ebded3b69e5a143c8cbc296eaea2aff","tarball":"https://registry.npmjs.org/@ubean/vue/-/vue-0.4.9.tgz","fileCount":11,"integrity":"sha512-RmG9h63Q/UOYZZXfCry7Io6zOWII8l87mMoNVd4S30ZFk9SiyTJ4RsehqEN68B0UWsFcJRv4Gs5JVLuuEsKwOw==","signatures":[{"sig":"MEUCIAXBcMM0CzGg1labjheDXY2B4Lh3xBlOtw86CCaX5wMGAiEAnMrHIbtQYxvCyK47AQuO9OVw5Pq3qc5wF97wUIM9qUs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":210791},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./vite":{"types":"./dist/vite.d.ts","import":"./dist/vite.js"},"./generator":{"types":"./dist/generator.d.ts","import":"./dist/generator.js"}},"scripts":{"dev":"vp pack --watch","test":"vp test","build":"vp pack","typecheck":"tsc --noEmit --skipLibCheck"},"_npmUser":{"name":"honghuangdc","email":"soybeanjs@outlook.com"},"description":"Lean Vue client kernel & page-routing owner for ubean — plugin-first page routing outlet, page cache (keep-alive), transitions, reload signal, definePage macro + file-routing Vite plugin (/vite: multi-dir scan, reuse routes, markdown & page-head opt-in). ","directories":{},"dependencies":{"ufo":"^1.6.4","vue":"^3.5.42","pathe":"^2.0.3","scule":"^1.3.0","tinyglobby":"^0.2.17","vue-router":"^5.3.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"npm:@voidzero-dev/vite-plus-core@0.3.1","vitest":"5.0.0","happy-dom":"^20.14.0","vite-plus":"0.3.1","typescript":"npm:typescript-native-bridge@latest","@types/node":"^26.5.0","@unhead/vue":"^3.4.0","@ubean/markdown":"0.4.9","@vue/server-renderer":"^3.5.42"},"peerDependencies":{"vite":"^5.0.0 || ^6.0.0 || ^7.0.0","@unhead/vue":">=2.0.0","@ubean/markdown":">=0.1.0"},"peerDependenciesMeta":{"vite":{"optional":true},"@unhead/vue":{"optional":true},"@ubean/markdown":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vue_0.4.9_1789021826803_0.41638321357484087","host":"s3://npm-registry-packages-npm-production"}},"0.4.10":{"name":"@ubean/vue","version":"0.4.10","_id":"@ubean/vue@0.4.10","maintainers":[{"name":"honghuangdc","email":"soybeanjs@outlook.com"}],"dist":{"shasum":"de1cadd22b2341d2e960fd068b0a0dc4b389f8e0","tarball":"https://registry.npmjs.org/@ubean/vue/-/vue-0.4.10.tgz","fileCount":11,"integrity":"sha512-TpBUVZbWUmTThfMsne4XEsBRSCoB5GHc1dJo5PSA4w8/EeNK8LdfHVNqcQmZKkWT0I5BYCUzOTRXH7P+4FvoVg==","signatures":[{"sig":"MEYCIQDDL1u8on+mudQT2qbSGW//Or+QHih/NwUktUb3VUxfEAIhAPSxHe8a5aKmn1P4YC8LzFCc5Yeotde65KjQi+hwcQB7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":211497},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./vite":{"types":"./dist/vite.d.ts","import":"./dist/vite.js"},"./generator":{"types":"./dist/generator.d.ts","import":"./dist/generator.js"}},"scripts":{"dev":"vp pack --watch","test":"vp test","build":"vp pack","typecheck":"tsc --noEmit --skipLibCheck"},"_npmUser":{"name":"honghuangdc","email":"soybeanjs@outlook.com"},"description":"Lean Vue client kernel & page-routing owner for ubean — plugin-first page routing outlet, page cache (keep-alive), transitions, reload signal, definePage macro + file-routing Vite plugin (/vite: multi-dir scan, reuse routes, markdown & page-head opt-in). ","directories":{},"dependencies":{"ufo":"^1.6.4","vue":"^3.5.42","pathe":"^2.0.3","scule":"^1.3.0","tinyglobby":"^0.2.17","vue-router":"^5.3.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"npm:@voidzero-dev/vite-plus-core@0.3.1","vitest":"5.0.0","happy-dom":"^20.14.0","vite-plus":"0.3.1","typescript":"npm:typescript-native-bridge@latest","@types/node":"^26.5.0","@unhead/vue":"^3.4.0","@ubean/markdown":"0.4.10","@vue/server-renderer":"^3.5.42"},"peerDependencies":{"vite":"^5.0.0 || ^6.0.0 || ^7.0.0","@unhead/vue":">=2.0.0","@ubean/markdown":">=0.1.0"},"peerDependenciesMeta":{"vite":{"optional":true},"@unhead/vue":{"optional":true},"@ubean/markdown":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vue_0.4.10_1789027672769_0.1148905931543851","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@ubean/vue","version":"0.5.0","_id":"@ubean/vue@0.5.0","maintainers":[{"name":"honghuangdc","email":"soybeanjs@outlook.com"}],"dist":{"shasum":"238acd27a9452cef7fd39c3ad26202819357e68f","tarball":"https://registry.npmjs.org/@ubean/vue/-/vue-0.5.0.tgz","fileCount":11,"integrity":"sha512-0ekaqlx7GquQyQt+9ndkmGLyRCorYm8zPGiY9UXAUqgdWjdf1TR4+4PfzowLX7P5Uhv+nZLYYMkL6z2hEZsvHQ==","signatures":[{"sig":"MEYCIQDM/wlDSSFTI6nvyWoDtvxcl/JnXNMZSnEXL5s1skrLBQIhAKpg3wrOqlUCPm68Ysl2Y6HfoLraZ195v7wNCHyX1b3O","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":211495},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./vite":{"types":"./dist/vite.d.ts","import":"./dist/vite.js"},"./generator":{"types":"./dist/generator.d.ts","import":"./dist/generator.js"}},"scripts":{"dev":"vp pack --watch","test":"vp test","build":"vp pack","typecheck":"tsc --noEmit --skipLibCheck"},"_npmUser":{"name":"honghuangdc","email":"soybeanjs@outlook.com"},"description":"Lean Vue client kernel & page-routing owner for ubean — plugin-first page routing outlet, page cache (keep-alive), transitions, reload signal, definePage macro + file-routing Vite plugin (/vite: multi-dir scan, reuse routes, markdown & page-head opt-in). ","directories":{},"dependencies":{"ufo":"^1.6.4","vue":"^3.5.42","pathe":"^2.0.3","scule":"^1.3.0","tinyglobby":"^0.2.17","vue-router":"^5.3.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"npm:@voidzero-dev/vite-plus-core@0.3.1","vitest":"5.0.0","happy-dom":"^20.14.5","vite-plus":"0.3.1","typescript":"npm:typescript-native-bridge@latest","@types/node":"^26.5.0","@unhead/vue":"^3.4.0","@ubean/markdown":"0.5.0","@vue/server-renderer":"^3.5.42"},"peerDependencies":{"vite":"^5.0.0 || ^6.0.0 || ^7.0.0","@unhead/vue":">=2.0.0","@ubean/markdown":">=0.1.0"},"peerDependenciesMeta":{"vite":{"optional":true},"@unhead/vue":{"optional":true},"@ubean/markdown":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vue_0.5.0_1789286164796_0.3550615775002983","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@ubean/vue","version":"0.5.1","_id":"@ubean/vue@0.5.1","maintainers":[{"name":"honghuangdc","email":"soybeanjs@outlook.com"}],"dist":{"shasum":"a1561a0b9902c00776cac061736f9ec7300dda9a","tarball":"https://registry.npmjs.org/@ubean/vue/-/vue-0.5.1.tgz","fileCount":11,"integrity":"sha512-PhPK4BfRUIVWFbo2hvsNTtCAwQdXt5Y674Q8BAxY/aV9Q/K4sZTM9vkfoI1/1rKF7t2zacoI/9d4aFoW515vog==","signatures":[{"sig":"MEUCIA8olB6JWYUjh0xzXHpKLKu0BmWyzUgTpf61XbMkSrPIAiEA8OL9YI3f95DYolpVj6u2q3wj0Mllg63sQbeXUUD+x6o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":211495},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./vite":{"types":"./dist/vite.d.ts","import":"./dist/vite.js"},"./generator":{"types":"./dist/generator.d.ts","import":"./dist/generator.js"}},"scripts":{"dev":"vp pack --watch","test":"vp test","build":"vp pack","typecheck":"tsc --noEmit --skipLibCheck"},"_npmUser":{"name":"honghuangdc","email":"soybeanjs@outlook.com"},"description":"Lean Vue client kernel & page-routing owner for ubean — plugin-first page routing outlet, page cache (keep-alive), transitions, reload signal, definePage macro + file-routing Vite plugin (/vite: multi-dir scan, reuse routes, markdown & page-head opt-in). ","directories":{},"dependencies":{"ufo":"^1.6.4","vue":"^3.5.42","pathe":"^2.0.3","scule":"^1.3.0","tinyglobby":"^0.2.17","vue-router":"^5.3.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"npm:@voidzero-dev/vite-plus-core@0.3.1","vitest":"5.0.0","happy-dom":"^20.14.5","vite-plus":"0.3.1","typescript":"npm:typescript-native-bridge@latest","@types/node":"^26.5.0","@unhead/vue":"^3.4.0","@ubean/markdown":"0.5.1","@vue/server-renderer":"^3.5.42"},"peerDependencies":{"vite":"^5.0.0 || ^6.0.0 || ^7.0.0","@unhead/vue":">=2.0.0","@ubean/markdown":">=0.1.0"},"peerDependenciesMeta":{"vite":{"optional":true},"@unhead/vue":{"optional":true},"@ubean/markdown":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vue_0.5.1_1789292717292_0.8935875760990728","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"@ubean/vue","version":"0.5.2","_id":"@ubean/vue@0.5.2","maintainers":[{"name":"honghuangdc","email":"soybeanjs@outlook.com"}],"dist":{"shasum":"3fe5ec49ec96137e6348cc4873b92330775822ce","tarball":"https://registry.npmjs.org/@ubean/vue/-/vue-0.5.2.tgz","fileCount":11,"integrity":"sha512-8uHvblx/GftxVkXPBUwWaZVyd/t/Hu4vWlKBeMl7KFqf1EtqZb1HjuNcCAHaKEB7vZWgTMgwvFuradT3PnxI1A==","signatures":[{"sig":"MEUCIDyQ0jy2EkMJQrXx/W6P1LBkZY7SBhT3cUMo0bC9xUp8AiEAyEyU12cgwjZjIzRF5fBjBhMS92BDi3nib6ryroj0K1s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":211495},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./vite":{"types":"./dist/vite.d.ts","import":"./dist/vite.js"},"./generator":{"types":"./dist/generator.d.ts","import":"./dist/generator.js"}},"scripts":{"dev":"vp pack --watch","test":"vp test","build":"vp pack","typecheck":"tsc --noEmit --skipLibCheck"},"_npmUser":{"name":"honghuangdc","email":"soybeanjs@outlook.com"},"description":"Lean Vue client kernel & page-routing owner for ubean — plugin-first page routing outlet, page cache (keep-alive), transitions, reload signal, definePage macro + file-routing Vite plugin (/vite: multi-dir scan, reuse routes, markdown & page-head opt-in). ","directories":{},"dependencies":{"ufo":"^1.6.4","vue":"^3.5.42","pathe":"^2.0.3","scule":"^1.3.0","tinyglobby":"^0.2.17","vue-router":"^5.3.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"npm:@voidzero-dev/vite-plus-core@0.3.1","vitest":"5.0.0","happy-dom":"^20.14.5","vite-plus":"0.3.1","typescript":"npm:typescript-native-bridge@latest","@types/node":"^26.5.0","@unhead/vue":"^3.4.0","@ubean/markdown":"0.5.2","@vue/server-renderer":"^3.5.42"},"peerDependencies":{"vite":"^5.0.0 || ^6.0.0 || ^7.0.0","@unhead/vue":">=2.0.0","@ubean/markdown":">=0.1.0"},"peerDependenciesMeta":{"vite":{"optional":true},"@unhead/vue":{"optional":true},"@ubean/markdown":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vue_0.5.2_1789308650439_0.2828882105679422","host":"s3://npm-registry-packages-npm-production"}},"0.6.0-beta.1":{"name":"@ubean/vue","version":"0.6.0-beta.1","_id":"@ubean/vue@0.6.0-beta.1","maintainers":[{"name":"honghuangdc","email":"soybeanjs@outlook.com"}],"dist":{"shasum":"1441fe3d275421dabdd22f2d3f96272e4bffe21f","tarball":"https://registry.npmjs.org/@ubean/vue/-/vue-0.6.0-beta.1.tgz","fileCount":11,"integrity":"sha512-39r7zzVnfs4zVhY8c5wyds9OwRdEccxL0coyR5/+D8FszXKMXbxQYKN6jrVcKpVrqjWoB1k6Gi6bkZ4TLeBoEA==","signatures":[{"sig":"MEUCIFtbqtn/3gyuADfu+x6wx7cvBIxmT/dMH8gap3jfLwXbAiEA+354wubD0N5TezSfYkRjZvx53TWDMkGgif9qOHmCHXI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIEZ4sWKg7V09sAl4GxWiw9/ajnXRI9TgLMyO2Au3K5UMAiBMFaC2ISPDmXTEWVdsQzAcIOPq2kX7fYhgMsaSB8s6tw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":212557},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./vite":{"types":"./dist/vite.d.ts","import":"./dist/vite.js"},"./generator":{"types":"./dist/generator.d.ts","import":"./dist/generator.js"}},"scripts":{"dev":"vp pack --watch","test":"vp test","build":"vp pack","typecheck":"tsc --noEmit --skipLibCheck"},"_npmUser":{"name":"honghuangdc","email":"soybeanjs@outlook.com"},"description":"Lean Vue client kernel & page-routing owner for ubean — plugin-first page routing outlet, page cache (keep-alive), transitions, reload signal, definePage macro + file-routing Vite plugin (/vite: multi-dir scan, reuse routes, markdown & page-head opt-in). ","directories":{},"dependencies":{"ufo":"^1.6.4","vue":"^3.5.42","pathe":"^2.0.3","scule":"^1.3.0","tinyglobby":"^0.2.17","vue-router":"^5.3.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"npm:@voidzero-dev/vite-plus-core@0.3.1","vitest":"5.0.0","happy-dom":"^20.14.5","vite-plus":"0.3.1","typescript":"npm:typescript-native-bridge@latest","@types/node":"^26.5.0","@unhead/vue":"^3.4.0","@ubean/markdown":"0.6.0-beta.1","@vue/server-renderer":"^3.5.42"},"peerDependencies":{"vite":"^5.0.0 || ^6.0.0 || ^7.0.0","@unhead/vue":">=2.0.0","@ubean/markdown":">=0.1.0"},"peerDependenciesMeta":{"vite":{"optional":true},"@unhead/vue":{"optional":true},"@ubean/markdown":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vue_0.6.0-beta.1_1789629142073_0.1037744355293726","host":"s3://npm-registry-packages-npm-production"}},"0.6.0-beta.2":{"name":"@ubean/vue","version":"0.6.0-beta.2","_id":"@ubean/vue@0.6.0-beta.2","maintainers":[{"name":"honghuangdc","email":"soybeanjs@outlook.com"}],"dist":{"shasum":"cedb658fe1487ddfeac15c85faf9bc9f45e087fb","tarball":"https://registry.npmjs.org/@ubean/vue/-/vue-0.6.0-beta.2.tgz","fileCount":11,"integrity":"sha512-vot3fjNKI+RQsdu+rUp012O8AgMLMfym4oj4fDCnoJplz4PXJqoJgNXN3nSJnKNOg8b9Cpd8NzAJLHRditvZCw==","signatures":[{"sig":"MEYCIQDfUzc6r4exLK6PcwH1qjSegHjrAPoaAnbYpiSYorRs4wIhALUKdklSNN6H5AX0pL7eNYm1hRUmwmc3kqxes+GrAwQt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIFQ3H5mqqRjxVJJ4YFhHeI8x+a6UyFXcO9f+cCT5iQVCAiEA9s/L1OGSq6OJZkumjuakB7jeTrFXBeGJpGy8TnyoDnc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":212629},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./vite":{"types":"./dist/vite.d.ts","import":"./dist/vite.js"},"./generator":{"types":"./dist/generator.d.ts","import":"./dist/generator.js"}},"scripts":{"dev":"vp pack --watch","test":"vp test","build":"vp pack","typecheck":"tsc --noEmit --skipLibCheck"},"_npmUser":{"name":"honghuangdc","email":"soybeanjs@outlook.com"},"description":"Lean Vue client kernel & page-routing owner for ubean — plugin-first page routing outlet, page cache (keep-alive), transitions, reload signal, definePage macro + file-routing Vite plugin (/vite: multi-dir scan, reuse routes, markdown & page-head opt-in). ","directories":{},"dependencies":{"ufo":"^1.6.4","vue":"^3.5.43","pathe":"^2.0.3","scule":"^1.3.0","tinyglobby":"^0.2.17","vue-router":"^5.3.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"npm:@voidzero-dev/vite-plus-core@0.3.3","vitest":"5.0.1","happy-dom":"^20.14.5","vite-plus":"0.3.3","typescript":"npm:typescript-native-bridge@latest","@types/node":"^26.6.1","@unhead/vue":"^3.4.1","@ubean/markdown":"0.6.0-beta.2","@vue/server-renderer":"^3.5.43"},"peerDependencies":{"vite":"^5.0.0 || ^6.0.0 || ^7.0.0","@unhead/vue":">=2.0.0","@ubean/markdown":">=0.1.0"},"peerDependenciesMeta":{"vite":{"optional":true},"@unhead/vue":{"optional":true},"@ubean/markdown":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vue_0.6.0-beta.2_1789739172375_0.32310603404657146","host":"s3://npm-registry-packages-npm-production"}},"0.6.0-beta.3":{"name":"@ubean/vue","version":"0.6.0-beta.3","_id":"@ubean/vue@0.6.0-beta.3","maintainers":[{"name":"honghuangdc","email":"soybeanjs@outlook.com"}],"dist":{"shasum":"4d36825ed4af9f14ac219436508af4e20498cfad","tarball":"https://registry.npmjs.org/@ubean/vue/-/vue-0.6.0-beta.3.tgz","fileCount":11,"integrity":"sha512-lYZuuIqcm8uPfI3Pd0kL2GU3LveSlfweBbz0/E34Lyr4vDOygen+7nuy3UByWKdwFPAbpb7mg/39Dr9gcotsJw==","signatures":[{"sig":"MEUCIQDqA4MLD1ImnBRUgFpbk/MOH/4q8GE5As6ywdwQiWNqjQIgVIXBpxuaMkSFpB/8HTWdI797YAXvtJuKU1mS6SHxRG4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDK/P1Wch1eJI7FN8wE5HHILo/J54KK8biVgjo3Zb5y+AIhAJV+aBIJEWDCKNq87HLoH+tXMiA98SP146symiGYgsXp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":212631},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./vite":{"types":"./dist/vite.d.ts","import":"./dist/vite.js"},"./generator":{"types":"./dist/generator.d.ts","import":"./dist/generator.js"}},"scripts":{"dev":"vp pack --watch","test":"vp test","build":"vp pack","typecheck":"tsc --noEmit --skipLibCheck"},"_npmUser":{"name":"honghuangdc","email":"soybeanjs@outlook.com"},"description":"Lean Vue client kernel & page-routing owner for ubean — plugin-first page routing outlet, page cache (keep-alive), transitions, reload signal, definePage macro + file-routing Vite plugin (/vite: multi-dir scan, reuse routes, markdown & page-head opt-in). ","directories":{},"dependencies":{"ufo":"^1.6.4","vue":"^3.5.43","pathe":"^2.0.3","scule":"^1.3.0","tinyglobby":"^0.2.17","vue-router":"^5.3.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"npm:@voidzero-dev/vite-plus-core@latest","vitest":"5.0.1","happy-dom":"^20.14.5","vite-plus":"latest","typescript":"npm:typescript-native-bridge@latest","@types/node":"^26.6.2","@unhead/vue":"^3.4.1","@ubean/markdown":"0.6.0-beta.3","@vue/server-renderer":"^3.5.43"},"peerDependencies":{"vite":"^5.0.0 || ^6.0.0 || ^7.0.0","@unhead/vue":">=2.0.0","@ubean/markdown":">=0.1.0"},"peerDependenciesMeta":{"vite":{"optional":true},"@unhead/vue":{"optional":true},"@ubean/markdown":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vue_0.6.0-beta.3_1790300986164_0.7486190253212921","host":"s3://npm-registry-packages-npm-production"}},"0.6.0-beta.4":{"name":"@ubean/vue","version":"0.6.0-beta.4","_id":"@ubean/vue@0.6.0-beta.4","maintainers":[{"name":"honghuangdc","email":"soybeanjs@outlook.com"}],"dist":{"shasum":"f30bf55157d96044036d37dad396499d511a509d","tarball":"https://registry.npmjs.org/@ubean/vue/-/vue-0.6.0-beta.4.tgz","fileCount":11,"integrity":"sha512-DHv0z7TwMUL3+6MBK32yRnFRLNeDVw9Mr1k3h+rUgtlvk+3Wivf1VK+iwtnBzGrb59ZCdkWCRKcJLYOkt3nTVA==","signatures":[{"sig":"MEQCIHvsKK6O8Rld0e91YqyjBX/BkzFr9tuvkF6nfzsaeTeQAiBccCfONPOVUs9nU7HHO/BNz/XVAdsdBWQczKeFA8TzUw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQD8m8PlSEi64Zq1V9lcXs5ZrO3R4/njzM6VMlrNXOq8PgIgLDGr7hfhunA1JxXA5K1HdJJIhPGjgvaO2p4lDegE5ag=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":212631},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./vite":{"types":"./dist/vite.d.ts","import":"./dist/vite.js"},"./generator":{"types":"./dist/generator.d.ts","import":"./dist/generator.js"}},"scripts":{"dev":"vp pack --watch","test":"vp test","build":"vp pack","typecheck":"tsc --noEmit --skipLibCheck"},"_npmUser":{"name":"honghuangdc","email":"soybeanjs@outlook.com"},"description":"Lean Vue client kernel & page-routing owner for ubean — plugin-first page routing outlet, page cache (keep-alive), transitions, reload signal, definePage macro + file-routing Vite plugin (/vite: multi-dir scan, reuse routes, markdown & page-head opt-in). ","directories":{},"dependencies":{"ufo":"^1.6.4","vue":"^3.5.43","pathe":"^2.0.3","scule":"^1.3.0","tinyglobby":"^0.2.17","vue-router":"^5.3.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"npm:@voidzero-dev/vite-plus-core@latest","vitest":"5.0.2","happy-dom":"^20.14.5","vite-plus":"latest","typescript":"npm:typescript-native-bridge@latest","@types/node":"^26.6.3","@unhead/vue":"^3.4.1","@ubean/markdown":"0.6.0-beta.4","@vue/server-renderer":"^3.5.43"},"peerDependencies":{"vite":"^5.0.0 || ^6.0.0 || ^7.0.0","@unhead/vue":">=2.0.0","@ubean/markdown":">=0.1.0"},"peerDependenciesMeta":{"vite":{"optional":true},"@unhead/vue":{"optional":true},"@ubean/markdown":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vue_0.6.0-beta.4_1790498271926_0.9746935671448356","host":"s3://npm-registry-packages-npm-production"}},"0.6.0-beta.5":{"_id":"@ubean/vue@0.6.0-beta.5","dist":{"shasum":"e96bda98688f85ca39080aca69a72e74846ee5fe","tarball":"https://registry.npmjs.org/@ubean/vue/-/vue-0.6.0-beta.5.tgz","fileCount":11,"integrity":"sha512-fhacg8VS6N3eJQmFx6BZ/kTSUUxQe+jUPgO9tc0rBNhvPhLQhquCQTzC/X9ae8xUZ0xrockOe9J1M6bVIIeiPw==","signatures":[{"sig":"MEUCIQDE5EC3rt9spkaqmm4g3s9bHUdsG0SZCCLPGvqq05FhUgIgV+EVeMVX5Uj6eVnDLKxAr//3cOqARSKP4h0/2HvmteI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIHoEzwIMx3BcFAIVGGMh23jLwyxra9So9Gf47Kf+EnKhAiB7ab0GhbnSjsXOAJJE7xdgTqcJyRDVGOY+n0NPRw32YA=="}],"unpackedSize":212639},"main":"./dist/index.js","name":"@ubean/vue","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./vite":{"types":"./dist/vite.d.ts","import":"./dist/vite.js"},"./generator":{"types":"./dist/generator.d.ts","import":"./dist/generator.js"}},"scripts":{"dev":"vp pack --watch","test":"vp test","build":"vp pack","typecheck":"tsc --noEmit --skipLibCheck"},"version":"0.6.0-beta.5","_npmUser":{"name":"honghuangdc","email":"soybeanjs@outlook.com"},"description":"Lean Vue client kernel & page-routing owner for ubean — plugin-first page routing outlet, page cache (keep-alive), transitions, reload signal, definePage macro + file-routing Vite plugin (/vite: multi-dir scan, reuse routes, markdown & page-head opt-in). ","directories":{},"maintainers":[{"name":"honghuangdc","email":"soybeanjs@outlook.com"}],"dependencies":{"ufo":"^1.6.4","vue":"^3.5.43","pathe":"^2.0.3","scule":"^1.3.0","tinyglobby":"^0.2.17","vue-router":"^5.3.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"npm:@voidzero-dev/vite-plus-core@1.0.0-rc.1","vitest":"5.0.2","happy-dom":"^20.14.5","vite-plus":"1.0.0-rc.1","typescript":"npm:typescript-native-bridge@latest","@types/node":"^26.6.3","@unhead/vue":"^3.4.1","@ubean/markdown":"0.6.0-beta.5","@vue/server-renderer":"^3.5.43"},"peerDependencies":{"vite":"^5.0.0 || ^6.0.0 || ^7.0.0","@unhead/vue":">=2.0.0","@ubean/markdown":">=0.1.0"},"peerDependenciesMeta":{"vite":{"optional":true},"@unhead/vue":{"optional":true},"@ubean/markdown":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/vue_0.6.0-beta.5_1790513736680_0.8353259040178214"}}},"time":{"created":"2026-08-20T12:10:45.540Z","modified":"2026-09-27T12:55:36.933Z","0.2.0":"2026-08-20T12:10:45.984Z","0.2.1":"2026-08-20T12:14:20.609Z","0.2.2":"2026-08-21T09:52:23.204Z","0.3.0":"2026-08-22T16:23:12.661Z","0.3.1":"2026-08-31T17:04:04.948Z","0.3.2":"2026-08-31T18:32:53.541Z","0.3.3":"2026-09-01T06:55:40.527Z","0.3.4":"2026-09-01T09:38:57.109Z","0.3.5":"2026-09-01T12:17:40.371Z","0.3.6":"2026-09-02T04:54:47.294Z","0.3.7":"2026-09-02T08:31:04.597Z","0.4.0":"2026-09-07T11:32:26.704Z","0.4.1":"2026-09-07T11:50:27.465Z","0.4.2":"2026-09-08T04:28:38.885Z","0.4.3":"2026-09-08T09:33:00.503Z","0.4.4":"2026-09-08T10:07:06.175Z","0.4.5":"2026-09-08T16:27:20.514Z","0.4.6":"2026-09-09T09:03:27.418Z","0.4.7":"2026-09-10T03:45:46.930Z","0.4.8":"2026-09-10T06:07:07.423Z","0.4.9":"2026-09-10T06:30:26.930Z","0.4.10":"2026-09-10T08:07:52.913Z","0.5.0":"2026-09-13T07:56:04.942Z","0.5.1":"2026-09-13T09:45:17.426Z","0.5.2":"2026-09-13T14:10:50.587Z","0.6.0-beta.1":"2026-09-17T07:12:22.160Z","0.6.0-beta.2":"2026-09-18T13:46:12.459Z","0.6.0-beta.3":"2026-09-25T01:49:46.260Z","0.6.0-beta.4":"2026-09-27T08:37:52.018Z","0.6.0-beta.5":"2026-09-27T12:55:36.754Z"},"description":"Lean Vue client kernel & page-routing owner for ubean — plugin-first page routing outlet, page cache (keep-alive), transitions, reload signal, definePage macro + file-routing Vite plugin (/vite: multi-dir scan, reuse routes, markdown & page-head opt-in). ","maintainers":[{"name":"honghuangdc","email":"soybeanjs@outlook.com"}],"readme":"# @ubean/vue\n\n**English | [中文](./README.zh-CN.md)**\n\nLean Vue client kernel & page-routing owner for ubean.\n\n`@ubean/vue` owns everything about **page routing** in the ubean ecosystem: file-based route scanning, virtual-module generation, physical route file generation, page cache (keep-alive), page transitions, reload signal, and the `definePage` macro. It ships as a Vue **plugin** (no app factory, no router factory) and depends on **`vue` + `vue-router` only** at runtime.\n\n```ts\nimport { createApp } from 'vue';\nimport { createRouter, createWebHistory } from 'vue-router';\nimport { ubeanVue } from '@ubean/vue';\nimport { routes } from 'virtual:ubean-vue-routes'; // generated by @ubean/vue/vite\n\nconst router = createRouter({ history: createWebHistory(), routes });\nconst app = createApp(App);\napp.use(router);\napp.use(ubeanVue, { routes }); // registers Link/PageView/SlotView/ClientOnly + seeds page cache\napp.mount('#app');\n```\n\n## Table of Contents\n\n- [Package Positioning](#package-positioning)\n- [Install](#install)\n- [Quick Start](#quick-start)\n- [File-Based Routing](#file-based-routing)\n  - [Conventions](#conventions)\n  - [`definePage` Macro](#definepage-macro)\n  - [Reuse Routes](#reuse-routes)\n  - [Special Pages](#special-pages)\n  - [Parallel & Intercepting Routes](#parallel--intercepting-routes)\n  - [Dynamic Param Matchers](#dynamic-param-matchers)\n  - [Markdown Pages (opt-in)](#markdown-pages-opt-in)\n- [Route Output Modes](#route-output-modes)\n- [Vite Plugin API](#vite-plugin-api)\n- [Physical Route File Generator](#physical-route-file-generator)\n- [Virtual Module Surface](#virtual-module-surface)\n- [Vue Plugin](#vue-plugin)\n- [Components](#components)\n- [Composables](#composables)\n- [Page Cache (keep-alive)](#page-cache-keep-alive)\n- [Page Transitions & Reload](#page-transitions--reload)\n- [View Transitions Helpers](#view-transitions-helpers)\n- [Route Matchers API](#route-matchers-api)\n- [Page-Level Head (opt-in)](#page-level-head-opt-in)\n- [Route Pure Functions](#route-pure-functions)\n- [Type Safety](#type-safety)\n- [Architecture Notes](#architecture-notes)\n\n## Package Positioning\n\n`@ubean/vue` is the **lean client kernel** and the **single owner of page-routing logic** in ubean:\n\n| Layer                               | Responsibility                                                                                                                                   |\n| ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |\n| `@ubean/vue` (this package)         | Page routing: scanning, virtual modules, physical route file generator, matchers, head guard, page cache, transitions, reload — pure client-side |\n| `@ubean/scan` (aggregator)          | Depends on `@ubean/vue`; layers server routing (rou3), API route scanning, SSR page handling on top                                              |\n| `@ubean/client` (framework runtime) | App factories (`createUbeanClientApp` / `createUbeanSSRApp`), unhead/SEO, i18n, islands, data layer                                              |\n\n**Included:**\n\n- `ubeanVue` Vue plugin (the only wiring entry — plugin-first, no factory)\n- `<PageView>` / `<Link>` / `<SlotView>` / `<LayoutChainRenderer>` / `<ErrorBoundary>` / `<ClientOnly>`\n- Page cache (keep-alive) store with imperative + declarative APIs\n- Page transitions & reload signal (per-page remount with fresh cache)\n- View Transitions helpers (feature detection + wrapper)\n- `definePage` client macro (compile-time extracted, runtime no-op)\n- Dynamic route matchers (`[param=matcher]` syntax + registry + guard)\n- Page-level head (`setupPageHeadGuard` / lazy `createPageHead`)\n- File-routing Vite plugin (`/vite` subpath): multi-dir scan, reuse routes, special pages, parallel/intercepting routes, markdown & head opt-in\n- Physical route file generator (`/generator` subpath): `routes.ts` + `imports.ts` + `typed-router.d.ts` (file mode)\n\n**NOT included** (framework runtime `@ubean/client` concerns):\n\n- App factories (`createUbeanClientApp` / `createUbeanSSRApp`)\n- unhead / `<Head>` / SEO (only the opt-in head _guard_ lives here)\n- i18n (`Link` renders paths verbatim unless a localizer is provided via `LOCALIZE_PATH_KEY`)\n- Islands (`v-client` directive), SSR state helpers, auto-import presets\n\n**Runtime dependency whitelist (main entry): `vue` + `vue-router` only.** No `@ubean/*`, no `node:*`, no `@unhead/vue` static imports.\n\n## Install\n\n```bash\npnpm add @ubean/vue vue vue-router\n# build-time (file routing):\npnpm add -D vite @ubean/vue # the /vite & /generator subpaths are part of this package\n# optional peers (loaded lazily, only when enabled):\npnpm add @ubean/markdown   # markdown pages\npnpm add @unhead/vue       # page-level head (SPA)\n```\n\n## Quick Start\n\n**1. Vite config** — the plugin scans your pages and generates `virtual:ubean-vue-routes`:\n\n```ts\n// vite.config.ts\nimport vue from '@vitejs/plugin-vue';\nimport { ubeanVueVite } from '@ubean/vue/vite';\n\nexport default {\n  plugins: [vue(), ubeanVueVite()]\n};\n```\n\n**2. Bootstrap** — create the router yourself, then install the plugin:\n\n```ts\n// src/main.ts\nimport { createApp } from 'vue';\nimport { createRouter, createWebHistory } from 'vue-router';\nimport { ubeanVue } from '@ubean/vue';\nimport { routes } from 'virtual:ubean-vue-routes';\nimport App from './App.vue';\n\nconst router = createRouter({ history: createWebHistory(), routes });\nconst app = createApp(App);\napp.use(router);\napp.use(ubeanVue, { routes });\napp.mount('#app');\n```\n\n**3. App shell** — `<PageView />` is the page outlet (keep-alive / transition / reload all take effect there):\n\n```vue\n<!-- src/App.vue -->\n<template>\n  <nav>\n    <Link to=\"/\">Home</Link>\n    <Link to=\"/about\">About</Link>\n  </nav>\n  <main><PageView /></main>\n</template>\n```\n\nA complete runnable example lives at [`examples/client-only-spa`](../../examples/client-only-spa).\n\n## File-Based Routing\n\n### Conventions\n\nDefault page extensions are `vue` / `tsx` / `jsx` (override with the `extensions` option). `.ts` is **not** a page extension — script pages must use `.tsx` / `.jsx` or `.vue`. Layouts use `vue` / `ts`.\n\n```\nsrc/pages/\n├── index.vue                 →  /                        Home\n├── about.vue                 →  /about                   About\n├── users/index.vue           →  /users                   Users\n├── users/[id].vue            →  /users/:id               UsersId\n├── users/[id=numeric].vue    →  /users/:id  + matcher    (see matchers)\n├── blog/[...slug].vue        →  /blog/**:slug            BlogAllSlug (catch-all)\n├── docs/[[page]].vue         →  /docs/:page?             DocsPageOptional\n├── (marketing)/about.vue     →  /about                   About (group stripped)\n├── settings.tsx              →  /settings                Settings (JSX page)\n├── 404.vue                   →  catch-all + NotFound     (special page)\n└── guide.md                  →  /guide                   Guide (markdown, opt-in)\n```\n\nMultiple `pagesDir` / `layoutsDir` are supported (first-seen-wins dedup, so folders can be layered).\n\n- Route names are derived from paths in PascalCase (`users/[id]` → `UsersId`).\n- `definePage({ name, path })` can override both.\n- Route groups `(name)` never contribute to the URL or the route name.\n\n### `definePage` Macro\n\nDeclare page metadata at the top of `<script setup>` (or top-level in `.tsx`/`.jsx`/`.reuse.ts`):\n\n```vue\n<script setup lang=\"ts\">\nimport { definePage } from '@ubean/vue';\n\ndefinePage({\n  name: 'UserProfile', // override the file-derived route name\n  path: '/u/:id', // override the file-derived path\n  cache: true, // keep-alive page cache\n  transition: 'fade', // page-level transition name\n  layout: 'admin', // layout marker: name, array (outer→inner), or false\n  requiresAuth: true, // auth marker → route.meta.requiresAuth\n  head: { title: 'Profile' }, // page head (requires plugin `head: true`)\n  meta: { custom: 'any' } // arbitrary RouteMeta extensions\n});\n</script>\n```\n\nDual semantics:\n\n- **Build time (recommended):** the `/vite` plugin extracts the argument object, merges it into the generated route table, and strips the call from the output (zero runtime cost).\n- **Runtime fallback:** without the plugin the function is a no-op — no errors, no side effects; pages register with file-derived paths/names. `cache` can be restored at runtime via `enablePageCache(name)`.\n\n> Use `meta: { middleware: [...] }` and consume it in your own navigation guard.\n\n### Reuse Routes\n\n`.reuse.ts` / `.reuse.js` are **pure metadata files** (they only contain `definePage({ reuse })`) that register a new route reusing another page's component:\n\n```ts\n// src/pages/about2.reuse.ts\ndefinePage({ reuse: 'About' });\n// → route /about2 renders the About page component\n```\n\n- `.reuse.vue` is **NOT** part of the convention — a `.vue` file is a real component and is treated as a regular page (route `/xxx.reuse`).\n- Reuse routes that don't declare `cache` explicitly **inherit** the target's cache setting; declare `cache: false` to opt out.\n- The target must be a regular (non-reuse) page.\n\n### Special Pages\n\nRoot-level files in a pages directory are wired to framework slots:\n\n| File                          | Role                                                             |\n| ----------------------------- | ---------------------------------------------------------------- |\n| `404.vue` (or `.tsx` / `.md`) | Vue Router catch-all `/:pathMatch(.*)*` named `NotFound`         |\n| `loading.vue`                 | `<Suspense>` fallback while async pages load (via `LOADING_KEY`) |\n| `error.vue`                   | `<ErrorBoundary>` error component (via `ERROR_KEY`)              |\n\nOnly root-level files are special — `users/404.vue` remains a regular route at `/users/404`.\n\n### Parallel & Intercepting Routes\n\n- **Parallel routes:** `@slotName/` directories register named views; render them with `<SlotView name=\"slotName\" />`.\n- **Intercepting routes:** `(..)target/`, `(.)target/`, `(...)target/` (one level up / same level / root), Next.js-style.\n\n```\nsrc/pages/dashboard/@analytics/index.vue   → parallel slot \"analytics\"\nsrc/pages/photos/(..)photo/[id].vue        → intercept /photo/:id from /photos/*\n```\n\n### Dynamic Param Matchers\n\n`[param=matcherName]` file syntax attaches a validation matcher to a dynamic segment:\n\n```\nsrc/pages/users/[id=numeric].vue  →  /users/:id + meta.matchers = { id: 'numeric' }\n```\n\nRegister matchers with `defineMatcher` (see [Route Matchers API](#route-matchers-api)) and enforce them with `createMatcherGuard`. Failed validation redirects to the `NotFound` route.\n\n### Markdown Pages (opt-in)\n\nEnable with `markdown: true` (`md` + `mdx`), `'md'`, or `'mdx'`. Requires `@ubean/markdown` (optional peer, loaded lazily only when enabled):\n\n```ts\nubeanVueVite({ markdown: true });\n```\n\nFrontmatter maps onto page metadata (`name` / `path` / `layout` / `cache` / `head`):\n\n```md\n---\nname: Guide\nlayout: docs\ncache: true\nhead:\n  title: Guide\n---\n\n# Guide content\n```\n\n## Route Output Modes\n\nBoth modes are owned by `@ubean/vue`:\n\n| Mode                  | Output                                                            | Consumers                                                    |\n| --------------------- | ----------------------------------------------------------------- | ------------------------------------------------------------ |\n| **Virtual** (default) | `virtual:ubean-vue-routes` in-memory module + `typed-router.d.ts` | Lean SPAs; framework's virtual mode                          |\n| **Physical files**    | `routes.ts` + `imports.ts` + `typed-router.d.ts` written to disk  | File mode — editable `meta`, `import.meta.glob`-free imports |\n\nThe framework wires them via `routing.mode` in `ubean.config.ts` (`'virtual'` | `'file'` | `'both'`, see `@ubean/builder`); lean SPAs use the `/vite` plugin directly and may call the `/generator` subpath manually.\n\n## Vite Plugin API\n\n```ts\nimport { ubeanVueVite } from '@ubean/vue/vite';\n\nubeanVueVite({\n  pagesDir: 'src/pages', // string | string[] (relative to project root or absolute)\n  layoutsDir: 'src/layouts', // string | string[]\n  extensions: undefined, // default ['vue', 'tsx', 'jsx']; markdown exts appended\n  ignore: [], // extra glob ignore patterns\n  generateTypes: true, // write typed-router.d.ts\n  dtsDir: '.ubean', // dts output dir (relative to root or absolute)\n  markdown: false, // true | 'md' | 'mdx'\n  head: false // enable page-level head extraction\n});\n```\n\nThe plugin also exposes standalone helpers: `scanPages`, `scanClientPages`, `extractSlotAndIntercept`, `generatePagesModuleSource`, `generateTypedRouter`, `stripDefinePageCalls`, `filePathToRoute`, `parseMatchers`, `stripRouteGroups`, `generateRouteName`, `generateLayoutName`, `extractDefinePage`, `extractDefinePageFromCode`, `extractCallObject`, `normalizePageHead`.\n\n## Physical Route File Generator\n\nThe `/generator` subpath generates editable route files on disk (`@ubean/vue/generator`):\n\n```ts\nimport { generateRouteFiles } from '@ubean/vue/generator';\n\nconst result = await generateRouteFiles(\n  { pages, layouts },               // GeneratorScanInput — subset of ScanPagesResult\n  {\n    cwd: process.cwd(),\n    srcDir: 'src',                  // base for the default @/ import paths\n    outDir: 'src/router/_generated',\n    // dtsPath: '…',                // default: <outDir>/typed-router.d.ts\n    // generateRoutes / generateImports / generateDts: true,\n    routeLazy: true,                // or (page) => boolean\n    layoutLazy: true,\n    getRouteMeta: page => ({ ... }),   // extra meta (definePage meta wins)\n    getImportPath: page => `@/pages/${page.name}.vue`,\n  }\n);\n// → { routesPath, importsPath, dtsPath, routeCount, layoutCount }\n```\n\nProduces 3 files under `outDir`:\n\n- `routes.ts` — flat `RouteRecord[]` (`name` / `path` / `component`(key into `views`) / `layout` / `meta` / `cache` / `requiresAuth`; reuse routes point `component` at their target)\n- `imports.ts` — `views` / `layouts` lazy-loader maps + categorized key types (`RouteKey` / `RouteFileKey` / `RouteReuseKey` / `LayoutKey`)\n- `typed-router.d.ts` — `@ubean/scan` module augmentation (`RouteKey` / `RoutePathMap` / `RouteLayoutKey` / `ReuseRouteKey`) + `vue-router/auto-routes` `RouteNamedMap` (typed `useRoute<Name>(name)` params inference)\n\nThe `RouteFileGenerator` class is also exported for incremental use (`new RouteFileGenerator(options).generate(scan)`).\n\n> The dts still augments the `@ubean/scan` module — that is the framework's established type contract (framework code imports `RouteKey` etc. from `@ubean/scan`); the generator's physical location does not change the artifact. Lean SPAs use the virtual-mode `typed-router.d.ts` from the `/vite` plugin instead.\n\n## Virtual Module Surface\n\n`virtual:ubean-vue-routes` exports:\n\n| Export                                                        | Description                                                                              |\n| ------------------------------------------------------------- | ---------------------------------------------------------------------------------------- |\n| `routes`                                                      | Vue Router `RouteRecord[]` (with `meta.cache` / `transition` / `matchers` / `head` etc.) |\n| `pages` / `layouts`                                           | `{ [name]: () => Promise<Component> }` lazy loaders                                      |\n| `pageNames` / `layoutNames`                                   | Name arrays (include `NotFound` when present)                                            |\n| `defaultLayout`                                               | Default layout name or `null`                                                            |\n| `resolvePageComponent(name)` / `resolveLayoutComponent(name)` | Component resolvers (reuse routes resolve their target)                                  |\n| `loadingComponent` / `errorComponent`                         | Special-page components or `null`                                                        |\n| `resolveLoadingComponent()` / `resolveErrorComponent()`       | Lazy resolvers                                                                           |\n| `hasNotFoundPage()` / `hasErrorPage()`                        | Presence checks                                                                          |\n\n## Vue Plugin\n\n```ts\napp.use(ubeanVue, { routes });\n```\n\nRegisters `Link` / `PageView` / `SlotView` / `ClientOnly` as global components and seeds the keep-alive include list from `meta.cache: true` declarations (`initCachedViewsFromRoutes`). This is the **only** wiring entry of the package (main subpath — distinct from the same-named Vite plugin in the `/vite` subpath).\n\n## Components\n\n### `<PageView>`\n\nThe page outlet. Wraps the matched component in `<Transition>` + `<KeepAlive>` (+ `<Suspense>` / `<ErrorBoundary>` when loading/error components are provided via injection keys).\n\nProps:\n\n- `transition: string | boolean` — transition name, `false` disables. Priority: prop > `route.meta.transition` > global `usePageTransition()`.\n- `reloadKey: string | number` — reactive key forcing remount; defaults to `route.fullPath` + per-page reload count.\n- `mode: 'default' | 'out-in' | 'in-out'` — defaults to `'default'` (cross-fade). `'out-in'` is degraded to `'default'` with a dev warning due to a vue@3.5.x KeepAlive upstream bug.\n\nOn SSR (via `SSR_KEY`), KeepAlive/Transition/Suspense/ErrorBoundary are skipped.\n\n### `<Link>`\n\nInternal links render via `RouterLink`; external links (`http*`, `//`, `#`) render as native `<a target=\"_blank\" rel=\"noopener noreferrer\">`.\n\nProps: `to` (string or location object), `href`, `replace`, `activeClass`, `exactActiveClass`, `noActiveClass`, optional `locale`. Path localization is opt-in via `LOCALIZE_PATH_KEY` (the framework runtime provides it; lean SPAs render paths verbatim).\n\n### `<SlotView>`\n\n`<SlotView name=\"modal\" />` renders the matched component for a parallel-route slot (nothing when no slot matches).\n\n### `<LayoutChainRenderer>`\n\nRecursively renders a chain of nested layout components (framework factories build the chain; lean SPAs can use it directly via render functions).\n\n### `<ErrorBoundary>`\n\nCatches render/async/setup errors from descendants and renders the configured error component; resets on route change.\n\n### `<ClientOnly>`\n\nRenders its content ONLY on the client, after hydration. Useful for browser-only markup or template fragments (the islands `v-client.*` transform only applies to capitalized component tags).\n\n```vue\n<template>\n  <!-- string fallback prop -->\n  <ClientOnly fallback=\"loading…\">\n    <BrowserChart />\n  </ClientOnly>\n\n  <!-- fallback slot (reserve space to avoid CLS) -->\n  <ClientOnly>\n    <template #fallback>\n      <div class=\"skeleton\" />\n    </template>\n    <BrowserMap />\n  </ClientOnly>\n\n  <!-- plain fragments work too -->\n  <ClientOnly>Window width: {{ width }}px</ClientOnly>\n</template>\n```\n\n**Hydration safety:** the placeholder (fallback / nothing) is rendered during SSR AND during the client's hydration render; the real content is patched in right after mount. There is no `typeof window` branching, so no hydration mismatch warnings.\n\n**When to use what:**\n\n| Scenario                                                             | Use                                                         |\n| -------------------------------------------------------------------- | ----------------------------------------------------------- |\n| Template fragments / plain HTML, same-tree rendering, fallback slots | `<ClientOnly>`                                              |\n| Component-level deferred hydration strategies (idle/visible/media)   | islands `v-client.*`                                        |\n| Programmatic islands / client-only wrappers                          | `defineIsland` / `defineClientComponent` (`@ubean/islands`) |\n| File-level server/client split                                       | `.server.vue` / `.client.vue`                               |\n\n> Notes: default-slot content is absent from the SSR HTML — don't use `<ClientOnly>` for SEO-critical content. `<ClientOnly>` inside an island placeholder's children is wiped when the island hydrates (islands hydrate via a separate app).\n\n## Composables\n\n- **`usePage<T>()`** — lean page-data access: returns the `PAGE_KEY` injected data (`props` / `component` / `errors`) as-is, or a shared empty object when nothing was provided. Route state (`url` / `params` / `query` / `meta`) is NOT included — use vue-router's `useRoute()` directly. The framework runtime (`@ubean/client`) layers its own route-aware `usePage` on top for the full PageObject protocol.\n- **`useRouter()`** — not shipped: import vue-router's `useRouter()` directly so `push` / `replace` keep their `RouteNamedMap` typed overloads. (`@ubean/client` re-exports it purely for auto-import convenience.)\n- **`useCacheViews()`** — see [Page Cache](#page-cache-keep-alive).\n- **`usePageTransition()`** — `{ name, set, clear, enabled }` global transition name.\n- **`useReloadSignal()`** — `{ counter, reloading, reload(routeName?, duration?) }`.\n- **`useViewTransition()`** — `{ enabled, supports, options }` for native View Transitions.\n\n## Page Cache (keep-alive)\n\nDeclarative:\n\n```ts\ndefinePage({ cache: true }); // or route meta: { cache: true }\n```\n\nImperative:\n\n```ts\nimport {\n  enablePageCache, // enablePageCache('DashboardIndex')\n  disablePageCache, // remove from include list (prunes the instance)\n  invalidatePageCache, // clear a page's (or all) cached instance(s)\n  isPageCached,\n  excludePageCache, // temporarily exclude (forces prune on next render)\n  includePageCache,\n  useCacheViews, // reactive store: cachedViews / excludedViews / enable / disable / ...\n  resetRouteCache\n} from '@ubean/vue';\n```\n\nCaching is keyed by the **route name** (`route.meta.pageName`), which the kernel injects as the component `name` at render time so `<keep-alive :include>` matches `<script setup>` SFCs.\n\n## Page Transitions & Reload\n\n```ts\nimport { setPageTransition, useReloadSignal } from '@ubean/vue';\n\nsetPageTransition('fade-slide'); // global default; '' / 'none' disables\n// per-page: definePage({ transition: 'fade' }) or route meta\n\nconst { reload } = useReloadSignal();\nawait reload('DashboardIndex'); // blank → prune stale cache → fresh remount\n```\n\n`reloadPage(name)` only bumps **that page's** key — other pages' keep-alive entries survive an unrelated reload.\n\n## View Transitions Helpers\n\n```ts\nimport { supportsViewTransitions, withViewTransition, useViewTransitionState, getNavigationType } from '@ubean/vue';\n\nif (supportsViewTransitions()) {\n  await withViewTransition(\n    async () => {\n      /* mutate DOM/state */\n    },\n    { types: ['slide-left'] }\n  );\n}\n```\n\n## Route Matchers API\n\n```ts\nimport { defineMatcher, createMatcherGuard } from '@ubean/vue';\n\n// src/matchers/numeric.ts\nexport default defineMatcher('numeric', value => /^\\d+$/.test(value));\n\n// router setup — matcher failure redirects to NotFound\nrouter.beforeEach(createMatcherGuard(/* { notFoundRouteName?, onReject? } */));\n```\n\nRegistry helpers: `getMatcher(name)`, `hasMatcher(name)`, `listMatcherNames()`, `clearMatchers()` (tests only), `validateParams(matchers, params)`.\n\n## Page-Level Head (opt-in)\n\nEnable extraction with `head: true` on the plugin, then:\n\n```ts\nimport { createPageHead, setupPageHeadGuard } from '@ubean/vue';\n\nconst head = await createPageHead(); // lazily loads @unhead/vue (optional peer)\nsetupPageHeadGuard(router, head); // pushes route.meta.head after each navigation\n```\n\nAlready have a unhead instance? Skip `createPageHead()` and pass the instance directly — `PageHeadClient` is a structural type (`{ push }`), so no third-party dependency enters the core.\n\n## Route Pure Functions\n\n```ts\nimport { resolveRoute, isActiveRoute } from '@ubean/vue';\n\nresolveRoute({ name: 'UsersId', params: { id: 7 }, query: { tab: 'info' } }, routeMap);\n// → '/users/7?tab=info'\nisActiveRoute('/users/7', '/users', false); // → true (prefix match)\n```\n\n## Type Safety\n\n- The package augments `vue-router`'s `RouteMeta` with `cache` / `pageName` / `layout` / `requiresAuth` / `transition` / `head` / `matchers` — projects get full type-safety without their own `declare module` block.\n- With `generateTypes: true` (default), the `/vite` plugin writes `ubean-vue-routes.d.ts` + `typed-router.d.ts` into `dtsDir` (default `.ubean`, same convention as the framework's auto-imports dts); the `/generator` subpath writes its own dts for file mode (see above).\n\n## Architecture Notes\n\n- **Plugin-first:** `ubeanVue` (main subpath, Vue plugin for `app.use`) and `ubeanVueVite` (`/vite` subpath, Vite plugin factory) are the two wiring entries — distinctly named, no more overloading. The kernel ships no app factory and no router factory — you create both with stock `vue` / `vue-router` APIs.\n- **Runtime boundary:** the main entry (`@ubean/vue`) must never statically import `node:*`, `@ubean/*`, `@unhead/vue`, `vite`, or `tinyglobby` (enforced by tests). Build-time-only code lives behind the `/vite` and `/generator` subpaths.\n- **Lazy optional peers:** `@ubean/markdown` (markdown pages) and `@unhead/vue` (head) are optional peers, dynamically imported only when their features are enabled.\n- **Global singletons** (cache store, transition name, reload counters) live on `globalThis` so duplicated module instances (dep re-optimization, HMR `?t=` variants) share one state — prevents SSR hydration mismatches and KeepAlive cache misses.\n- **Ownership:** `@ubean/scan` (aggregator) depends on `@ubean/vue` — never the reverse. The aggregator re-exports page-routing types, functions, and the generator.\n","readmeFilename":""}