From e7b869787fa5d48a2974fdb38b3d9eadbd8c068b Mon Sep 17 00:00:00 2001 From: daiwei Date: Wed, 22 Apr 2026 16:41:12 +0800 Subject: [PATCH 1/4] wip: vapor mode --- .vitepress/config.ts | 12 +- package.json | 6 +- pnpm-lock.yaml | 347 +++++++++++++++++++++------------- src/examples/ExampleRepl.vue | 7 +- src/tutorial/TutorialRepl.vue | 7 +- 5 files changed, 231 insertions(+), 148 deletions(-) diff --git a/.vitepress/config.ts b/.vitepress/config.ts index 4e33fec9fb..0cdf1a9676 100644 --- a/.vitepress/config.ts +++ b/.vitepress/config.ts @@ -761,6 +761,15 @@ export default defineConfigWithTheme({ } }, + vue: { + // enable vapor interop for @vue/repl + vaporInterop: true, + features: { + // enable vapor mode + vapor: true + } + }, + vite: { define: { __VUE_OPTIONS_API__: false @@ -781,7 +790,8 @@ export default defineConfigWithTheme({ } }, build: { - chunkSizeWarningLimit: Infinity + chunkSizeWarningLimit: Infinity, + minify: false }, json: { stringify: true diff --git a/package.json b/package.json index 69c38fbb45..f2abb6de7b 100644 --- a/package.json +++ b/package.json @@ -9,12 +9,12 @@ "type": "vue-tsc --noEmit" }, "dependencies": { - "@vue/repl": "^4.7.1", + "@vue/repl": "^4.7.2", "@vue/theme": "^2.4.0", "dynamics.js": "^1.1.5", "gsap": "^3.14.2", - "vitepress": "^2.0.0-alpha.17", - "vue": "^3.5.32" + "vitepress": "https://pkg.pr.new/vitepress@9428529", + "vue": "https://pkg.pr.new/vue@19a870d" }, "devDependencies": { "@types/body-scroll-lock": "^3.1.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b9bb232099..5fae8662c5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,11 +12,11 @@ importers: .: dependencies: '@vue/repl': - specifier: ^4.7.1 - version: 4.7.1 + specifier: ^4.7.2 + version: 4.7.2 '@vue/theme': specifier: ^2.4.0 - version: 2.4.0(@algolia/client-search@5.50.1)(search-insights@2.17.3)(vitepress@2.0.0-alpha.17(@types/node@25.5.2)(oxc-minify@0.124.0(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1))(postcss@8.5.8)(typescript@5.9.3))(vue@3.5.32(typescript@5.9.3)) + version: 2.4.0(@algolia/client-search@5.50.1)(search-insights@2.17.3)(vitepress@https://pkg.pr.new/vitepress@9428529(@types/node@25.5.2)(oxc-minify@0.124.0(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1))(postcss@8.5.8)(typescript@5.9.3))(vue@https://pkg.pr.new/vue@19a870d(typescript@5.9.3)) dynamics.js: specifier: ^1.1.5 version: 1.1.5 @@ -24,11 +24,11 @@ importers: specifier: ^3.14.2 version: 3.14.2 vitepress: - specifier: ^2.0.0-alpha.17 - version: 2.0.0-alpha.17(@types/node@25.5.2)(oxc-minify@0.124.0(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1))(postcss@8.5.8)(typescript@5.9.3) + specifier: https://pkg.pr.new/vitepress@9428529 + version: https://pkg.pr.new/vitepress@9428529(@types/node@25.5.2)(oxc-minify@0.124.0(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1))(postcss@8.5.8)(typescript@5.9.3) vue: - specifier: ^3.5.32 - version: 3.5.32(typescript@5.9.3) + specifier: https://pkg.pr.new/vue@19a870d + version: https://pkg.pr.new/vue@19a870d(typescript@5.9.3) devDependencies: '@types/body-scroll-lock': specifier: ^3.1.2 @@ -197,8 +197,8 @@ packages: '@iconify-json/logos@1.2.11': resolution: {integrity: sha512-fOo4pGEatuyuCFNL+cwquYMa2Im0oJHRHV7lt/Qqs5Ode/lPImHCQcfTtPzZj7qYMPb/h8YHN3TG54uEowrjNQ==} - '@iconify-json/simple-icons@1.2.77': - resolution: {integrity: sha512-oaENvo6C3BkAEWMlcQA3XemxU9v2SFOTlApSUCODAkIu1haeLCjzrmH3HgmGqjRnJjM+LevO8sA+MgdMHBFBDA==} + '@iconify-json/simple-icons@1.2.79': + resolution: {integrity: sha512-aNyO7Fd1qej9oQfIyohYFRv0lhQLaZ+6UkK1c1qwax0MDPUOZOdq65MlU500kow97pD/W+b2u1And3e25eE24Q==} '@iconify-json/vscode-icons@1.2.45': resolution: {integrity: sha512-ow+ueibMIq79ueM1kv6cOWgHx8jfh1XJQi2RrqMHb4HLbvIBlxpy5PCMvOJXlA68R6fBAHpWQeh6uWx7VKEVsA==} @@ -446,29 +446,37 @@ packages: '@rolldown/pluginutils@1.0.0-rc.13': resolution: {integrity: sha512-3ngTAv6F/Py35BsYbeeLeecvhMKdsKm4AoOETVhAA+Qc8nrA2I0kF7oa93mE9qnIurngOSpMnQ0x2nQY2FPviA==} - '@rolldown/pluginutils@1.0.0-rc.2': - resolution: {integrity: sha512-izyXV/v+cHiRfozX62W9htOAvwMo4/bXKDrQ+vom1L1qRuexPock/7VZDAhnpHCLNejd3NJ6hiab+tO0D44Rgw==} + '@shikijs/core@4.0.2': + resolution: {integrity: sha512-hxT0YF4ExEqB8G/qFdtJvpmHXBYJ2lWW7qTHDarVkIudPFE6iCIrqdgWxGn5s+ppkGXI0aEGlibI0PAyzP3zlw==} + engines: {node: '>=20'} - '@shikijs/core@3.23.0': - resolution: {integrity: sha512-NSWQz0riNb67xthdm5br6lAkvpDJRTgB36fxlo37ZzM2yq0PQFFzbd8psqC2XMPgCzo1fW6cVi18+ArJ44wqgA==} + '@shikijs/engine-javascript@4.0.2': + resolution: {integrity: sha512-7PW0Nm49DcoUIQEXlJhNNBHyoGMjalRETTCcjMqEaMoJRLljy1Bi/EGV3/qLBgLKQejdspiiYuHGQW6dX94Nag==} + engines: {node: '>=20'} - '@shikijs/engine-javascript@3.23.0': - resolution: {integrity: sha512-aHt9eiGFobmWR5uqJUViySI1bHMqrAgamWE1TYSUoftkAeCCAiGawPMwM+VCadylQtF4V3VNOZ5LmfItH5f3yA==} + '@shikijs/engine-oniguruma@4.0.2': + resolution: {integrity: sha512-UpCB9Y2sUKlS9z8juFSKz7ZtysmeXCgnRF0dlhXBkmQnek7lAToPte8DkxmEYGNTMii72zU/lyXiCB6StuZeJg==} + engines: {node: '>=20'} - '@shikijs/engine-oniguruma@3.23.0': - resolution: {integrity: sha512-1nWINwKXxKKLqPibT5f4pAFLej9oZzQTsby8942OTlsJzOBZ0MWKiwzMsd+jhzu8YPCHAswGnnN1YtQfirL35g==} + '@shikijs/langs@4.0.2': + resolution: {integrity: sha512-KaXby5dvoeuZzN0rYQiPMjFoUrz4hgwIE+D6Du9owcHcl6/g16/yT5BQxSW5cGt2MZBz6Hl0YuRqf12omRfUUg==} + engines: {node: '>=20'} - '@shikijs/langs@3.23.0': - resolution: {integrity: sha512-2Ep4W3Re5aB1/62RSYQInK9mM3HsLeB91cHqznAJMuylqjzNVAVCMnNWRHFtcNHXsoNRayP9z1qj4Sq3nMqYXg==} + '@shikijs/primitive@4.0.2': + resolution: {integrity: sha512-M6UMPrSa3fN5ayeJwFVl9qWofl273wtK1VG8ySDZ1mQBfhCpdd8nEx7nPZ/tk7k+TYcpqBZzj/AnwxT9lO+HJw==} + engines: {node: '>=20'} - '@shikijs/themes@3.23.0': - resolution: {integrity: sha512-5qySYa1ZgAT18HR/ypENL9cUSGOeI2x+4IvYJu4JgVJdizn6kG4ia5Q1jDEOi7gTbN4RbuYtmHh0W3eccOrjMA==} + '@shikijs/themes@4.0.2': + resolution: {integrity: sha512-mjCafwt8lJJaVSsQvNVrJumbnnj1RI8jbUKrPKgE6E3OvQKxnuRoBaYC51H4IGHePsGN/QtALglWBU7DoKDFnA==} + engines: {node: '>=20'} - '@shikijs/transformers@3.23.0': - resolution: {integrity: sha512-F9msZVxdF+krQNSdQ4V+Ja5QemeAoTQ2jxt7nJCwhDsdF1JWS3KxIQXA3lQbyKwS3J61oHRUSv4jYWv3CkaKTQ==} + '@shikijs/transformers@4.0.2': + resolution: {integrity: sha512-1+L0gf9v+SdDXs08vjaLb3mBFa8U7u37cwcBQIv/HCocLwX69Tt6LpUCjtB+UUTvQxI7BnjZKhN/wMjhHBcJGg==} + engines: {node: '>=20'} - '@shikijs/types@3.23.0': - resolution: {integrity: sha512-3JZ5HXOZfYjsYSk0yPwBrkupyYSLpAE26Qc0HLghhZNGTZg/SKxXIIgoxOpmmeQP0RRSDJTk1/vPfw9tbw+jSQ==} + '@shikijs/types@4.0.2': + resolution: {integrity: sha512-qzbeRooUTPnLE+sHD/Z8DStmaDgnbbc/pMrU203950aRqjX/6AFHeDYT+j00y2lPdz0ywJKx7o/7qnqTivtlXg==} + engines: {node: '>=20'} '@shikijs/vscode-textmate@10.0.2': resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} @@ -515,8 +523,9 @@ packages: '@ungap/structured-clone@1.3.0': resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} - '@vitejs/plugin-vue@6.0.5': - resolution: {integrity: sha512-bL3AxKuQySfk1iGcBsQnoRVexTPJq0Z/ixFVM8OhVJAP6ZXXXLtM7NFKWhLl30Kg7uTBqIaPXbh+nuQCuBDedg==} + '@vitejs/plugin-vue@https://pkg.pr.new/@vitejs/plugin-vue@df10153': + resolution: {tarball: https://pkg.pr.new/@vitejs/plugin-vue@df10153} + version: 6.0.6 engines: {node: ^20.19.0 || >=22.12.0} peerDependencies: vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -534,14 +543,28 @@ packages: '@vue/compiler-core@3.5.32': resolution: {integrity: sha512-4x74Tbtqnda8s/NSD6e1Dr5p1c8HdMU5RWSjMSUzb8RTcUQqevDCxVAitcLBKT+ie3o0Dl9crc/S/opJM7qBGQ==} + '@vue/compiler-core@https://pkg.pr.new/vuejs/core/@vue/compiler-core@19a870d': + resolution: {tarball: https://pkg.pr.new/vuejs/core/@vue/compiler-core@19a870d} + version: 3.6.0-beta.10 + '@vue/compiler-dom@3.5.32': resolution: {integrity: sha512-ybHAu70NtiEI1fvAUz3oXZqkUYEe5J98GjMDpTGl5iHb0T15wQYLR4wE3h9xfuTNA+Cm2f4czfe8B4s+CCH57Q==} - '@vue/compiler-sfc@3.5.32': - resolution: {integrity: sha512-8UYUYo71cP/0YHMO814TRZlPuUUw3oifHuMR7Wp9SNoRSrxRQnhMLNlCeaODNn6kNTJsjFoQ/kqIj4qGvya4Xg==} + '@vue/compiler-dom@https://pkg.pr.new/vuejs/core/@vue/compiler-dom@19a870d': + resolution: {tarball: https://pkg.pr.new/vuejs/core/@vue/compiler-dom@19a870d} + version: 3.6.0-beta.10 - '@vue/compiler-ssr@3.5.32': - resolution: {integrity: sha512-Gp4gTs22T3DgRotZ8aA/6m2jMR+GMztvBXUBEUOYOcST+giyGWJ4WvFd7QLHBkzTxkfOt8IELKNdpzITLbA2rw==} + '@vue/compiler-sfc@https://pkg.pr.new/vuejs/core/@vue/compiler-sfc@19a870d': + resolution: {tarball: https://pkg.pr.new/vuejs/core/@vue/compiler-sfc@19a870d} + version: 3.6.0-beta.10 + + '@vue/compiler-ssr@https://pkg.pr.new/vuejs/core/@vue/compiler-ssr@19a870d': + resolution: {tarball: https://pkg.pr.new/vuejs/core/@vue/compiler-ssr@19a870d} + version: 3.6.0-beta.10 + + '@vue/compiler-vapor@https://pkg.pr.new/vuejs/core/@vue/compiler-vapor@19a870d': + resolution: {tarball: https://pkg.pr.new/vuejs/core/@vue/compiler-vapor@19a870d} + version: 3.6.0-beta.10 '@vue/devtools-api@8.1.1': resolution: {integrity: sha512-bsDMJ07b3GN1puVwJb/fyFnj/U2imyswK5UQVLZwVl7O05jDrt6BHxeG5XffmOOdasOj/bOmIjxJvGPxU7pcqw==} @@ -555,41 +578,59 @@ packages: '@vue/language-core@3.2.6': resolution: {integrity: sha512-xYYYX3/aVup576tP/23sEUpgiEnujrENaoNRbaozC1/MA9I6EGFQRJb4xrt/MmUCAGlxTKL2RmT8JLTPqagCkg==} - '@vue/reactivity@3.5.32': - resolution: {integrity: sha512-/ORasxSGvZ6MN5gc+uE364SxFdJ0+WqVG0CENXaGW58TOCdrAW76WWaplDtECeS1qphvtBZtR+3/o1g1zL4xPQ==} + '@vue/reactivity@https://pkg.pr.new/vuejs/core/@vue/reactivity@19a870d': + resolution: {tarball: https://pkg.pr.new/vuejs/core/@vue/reactivity@19a870d} + version: 3.6.0-beta.10 + + '@vue/repl@4.7.2': + resolution: {integrity: sha512-6x0hisEd5XRYxhLit3fvPCfeUfXEjB3a8Z2Pl3scVa3kZjck4+ERQF4XCahC7PTabWb3He04u+j8q3MK4WZHrQ==} - '@vue/repl@4.7.1': - resolution: {integrity: sha512-8w5Z3cyqBJ5ufzXO2eut2stzb7aX/ZnSva2d3ee8eEINEB7FG2JYwc14eAHHHGGuoXOGN5v4cyb5ti/YZGcwlg==} + '@vue/runtime-core@https://pkg.pr.new/vuejs/core/@vue/runtime-core@19a870d': + resolution: {tarball: https://pkg.pr.new/vuejs/core/@vue/runtime-core@19a870d} + version: 3.6.0-beta.10 - '@vue/runtime-core@3.5.32': - resolution: {integrity: sha512-pDrXCejn4UpFDFmMd27AcJEbHaLemaE5o4pbb7sLk79SRIhc6/t34BQA7SGNgYtbMnvbF/HHOftYBgFJtUoJUQ==} + '@vue/runtime-dom@https://pkg.pr.new/vuejs/core/@vue/runtime-dom@19a870d': + resolution: {tarball: https://pkg.pr.new/vuejs/core/@vue/runtime-dom@19a870d} + version: 3.6.0-beta.10 - '@vue/runtime-dom@3.5.32': - resolution: {integrity: sha512-1CDVv7tv/IV13V8Nip1k/aaObVbWqRlVCVezTwx3K07p7Vxossp5JU1dcPNhJk3w347gonIUT9jQOGutyJrSVQ==} + '@vue/runtime-vapor@https://pkg.pr.new/vuejs/core/@vue/runtime-vapor@19a870d': + resolution: {tarball: https://pkg.pr.new/vuejs/core/@vue/runtime-vapor@19a870d} + version: 3.6.0-beta.10 + peerDependencies: + '@vue/runtime-dom': 3.6.0-beta.10 - '@vue/server-renderer@3.5.32': - resolution: {integrity: sha512-IOjm2+JQwRFS7W28HNuJeXQle9KdZbODFY7hFGVtnnghF51ta20EWAZJHX+zLGtsHhaU6uC9BGPV52KVpYryMQ==} + '@vue/server-renderer@https://pkg.pr.new/vuejs/core/@vue/server-renderer@19a870d': + resolution: {tarball: https://pkg.pr.new/vuejs/core/@vue/server-renderer@19a870d} + version: 3.6.0-beta.10 peerDependencies: - vue: 3.5.32 + vue: 3.6.0-beta.10 '@vue/shared@3.5.32': resolution: {integrity: sha512-ksNyrmRQzWJJ8n3cRDuSF7zNNontuJg1YHnmWRJd2AMu8Ij2bqwiiri2lH5rHtYPZjj4STkNcgcmiQqlOjiYGg==} + '@vue/shared@https://pkg.pr.new/vuejs/core/@vue/shared@19a870d': + resolution: {tarball: https://pkg.pr.new/vuejs/core/@vue/shared@19a870d} + version: 3.6.0-beta.10 + '@vue/theme@2.4.0': resolution: {integrity: sha512-IzvJ9PJOkW8pMdjM8QETw6A98R0TwCMnxldx6dqn5jel/u82F3flP+raQs3x6Wt8Mfg1jNA+HElZUbDCsmhnLg==} + version: 2.4.0 peerDependencies: vitepress: ^1.2.2 '@vueuse/core@10.11.1': resolution: {integrity: sha512-guoy26JQktXPcz+0n3GukWIy/JDNKti9v6VEMu6kV2sYBsWuGiTU8OWdg+ADfUbHg3/3DlqySDe7JmdHrktiww==} + version: 10.11.1 '@vueuse/core@14.2.1': resolution: {integrity: sha512-3vwDzV+GDUNpdegRY6kzpLm4Igptq+GA0QkJ3W61Iv27YWwW/ufSlOfgQIpN6FZRMG0mkaz4gglJRtq5SeJyIQ==} + version: 14.2.1 peerDependencies: vue: ^3.5.0 '@vueuse/integrations@14.2.1': resolution: {integrity: sha512-2LIUpBi/67PoXJGqSDQUF0pgQWpNHh7beiA+KG2AbybcNm+pTGWT6oPGlBgUoDWmYwfeQqM/uzOHqcILpKL7nA==} + version: 14.2.1 peerDependencies: async-validator: ^4 axios: ^1 @@ -638,9 +679,11 @@ packages: '@vueuse/shared@10.11.1': resolution: {integrity: sha512-LHpC8711VFZlDaYUXEBbFBCQ7GS3dVU9mjOhhMhXP6txTV4EhYQg/KGnQuvt/sPAtoUKq7VVUnL6mVtFoL42sA==} + version: 10.11.1 '@vueuse/shared@14.2.1': resolution: {integrity: sha512-shTJncjV9JTI4oVNyF1FQonetYAiTBd+Qj7cY89SWbXSkx7gyhrgtEdF2ZAVWS1S3SHlaROO6F2IesJxQEkZBw==} + version: 14.2.1 peerDependencies: vue: ^3.5.0 @@ -1145,8 +1188,9 @@ packages: resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} engines: {node: '>=4'} - shiki@3.23.0: - resolution: {integrity: sha512-55Dj73uq9ZXL5zyeRPzHQsK7Nbyt6Y10k5s7OjuFZGMhpp4r/rsLBH0o/0fstIzX1Lep9VxefWljK/SKCzygIA==} + shiki@4.0.2: + resolution: {integrity: sha512-eAVKTMedR5ckPo4xne/PjYQYrU3qx78gtJZ+sHlXEg5IHhhoQhMfZVzetTYuaJS0L2Ef3AcCRzCHV8T0WI6nIQ==} + engines: {node: '>=20'} source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} @@ -1295,8 +1339,9 @@ packages: resolution: {integrity: sha512-zuzL7a8UJuGl46le5cAy/QxKMGlpSylcsLjDDn6BYPc1u+eP3nzoQk9ne9XFBqrE7exoJlIYJELVN8HMgYlFKQ==} engines: {node: '>=18.0.0'} - vitepress@2.0.0-alpha.17: - resolution: {integrity: sha512-Z3VPUpwk/bHYqt1uMVOOK1/4xFiWQov1GNc2FvMdz6kvje4JRXEOngVI9C+bi5jeedMSHiA4dwKkff1NCvbZ9Q==} + vitepress@https://pkg.pr.new/vitepress@9428529: + resolution: {integrity: sha512-PrcMzN4kFpzj6okfHOV1INSZsJgqtaFlINo8Bd6jYmnR+ANPsqalcKZyyFXzQaxWA6MLJZiRRnAfxhn1Ne/eRA==, tarball: https://pkg.pr.new/vitepress@9428529} + version: 2.0.0-alpha.17 hasBin: true peerDependencies: markdown-it-mathjax3: ^4 @@ -1315,6 +1360,7 @@ packages: vue-demi@0.14.10: resolution: {integrity: sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==} + version: 0.14.10 engines: {node: '>=12'} hasBin: true peerDependencies: @@ -1330,8 +1376,9 @@ packages: peerDependencies: typescript: '>=5.0.0' - vue@3.5.32: - resolution: {integrity: sha512-vM4z4Q9tTafVfMAK7IVzmxg34rSzTFMyIe0UUEijUCkn9+23lj0WRfA83dg7eQZIUlgOSGrkViIaCfqSAUXsMw==} + vue@https://pkg.pr.new/vue@19a870d: + resolution: {tarball: https://pkg.pr.new/vue@19a870d} + version: 3.6.0-beta.10 peerDependencies: typescript: '*' peerDependenciesMeta: @@ -1539,7 +1586,7 @@ snapshots: dependencies: '@iconify/types': 2.0.0 - '@iconify-json/simple-icons@1.2.77': + '@iconify-json/simple-icons@1.2.79': dependencies: '@iconify/types': 2.0.0 @@ -1682,40 +1729,45 @@ snapshots: '@rolldown/pluginutils@1.0.0-rc.13': {} - '@rolldown/pluginutils@1.0.0-rc.2': {} - - '@shikijs/core@3.23.0': + '@shikijs/core@4.0.2': dependencies: - '@shikijs/types': 3.23.0 + '@shikijs/primitive': 4.0.2 + '@shikijs/types': 4.0.2 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 hast-util-to-html: 9.0.5 - '@shikijs/engine-javascript@3.23.0': + '@shikijs/engine-javascript@4.0.2': dependencies: - '@shikijs/types': 3.23.0 + '@shikijs/types': 4.0.2 '@shikijs/vscode-textmate': 10.0.2 oniguruma-to-es: 4.3.5 - '@shikijs/engine-oniguruma@3.23.0': + '@shikijs/engine-oniguruma@4.0.2': dependencies: - '@shikijs/types': 3.23.0 + '@shikijs/types': 4.0.2 '@shikijs/vscode-textmate': 10.0.2 - '@shikijs/langs@3.23.0': + '@shikijs/langs@4.0.2': + dependencies: + '@shikijs/types': 4.0.2 + + '@shikijs/primitive@4.0.2': dependencies: - '@shikijs/types': 3.23.0 + '@shikijs/types': 4.0.2 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 - '@shikijs/themes@3.23.0': + '@shikijs/themes@4.0.2': dependencies: - '@shikijs/types': 3.23.0 + '@shikijs/types': 4.0.2 - '@shikijs/transformers@3.23.0': + '@shikijs/transformers@4.0.2': dependencies: - '@shikijs/core': 3.23.0 - '@shikijs/types': 3.23.0 + '@shikijs/core': 4.0.2 + '@shikijs/types': 4.0.2 - '@shikijs/types@3.23.0': + '@shikijs/types@4.0.2': dependencies: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 @@ -1764,11 +1816,11 @@ snapshots: '@ungap/structured-clone@1.3.0': {} - '@vitejs/plugin-vue@6.0.5(vite@8.0.7(@types/node@25.5.2))(vue@3.5.32(typescript@5.9.3))': + '@vitejs/plugin-vue@https://pkg.pr.new/@vitejs/plugin-vue@df10153(vite@8.0.7(@types/node@25.5.2))(vue@https://pkg.pr.new/vue@19a870d(typescript@5.9.3))': dependencies: - '@rolldown/pluginutils': 1.0.0-rc.2 + '@rolldown/pluginutils': 1.0.0-rc.13 vite: 8.0.7(@types/node@25.5.2) - vue: 3.5.32(typescript@5.9.3) + vue: https://pkg.pr.new/vue@19a870d(typescript@5.9.3) '@volar/language-core@2.4.28': dependencies: @@ -1790,27 +1842,49 @@ snapshots: estree-walker: 2.0.2 source-map-js: 1.2.1 + '@vue/compiler-core@https://pkg.pr.new/vuejs/core/@vue/compiler-core@19a870d': + dependencies: + '@babel/parser': 7.29.2 + '@vue/shared': https://pkg.pr.new/vuejs/core/@vue/shared@19a870d + entities: 7.0.1 + estree-walker: 2.0.2 + source-map-js: 1.2.1 + '@vue/compiler-dom@3.5.32': dependencies: '@vue/compiler-core': 3.5.32 '@vue/shared': 3.5.32 - '@vue/compiler-sfc@3.5.32': + '@vue/compiler-dom@https://pkg.pr.new/vuejs/core/@vue/compiler-dom@19a870d': + dependencies: + '@vue/compiler-core': https://pkg.pr.new/vuejs/core/@vue/compiler-core@19a870d + '@vue/shared': https://pkg.pr.new/vuejs/core/@vue/shared@19a870d + + '@vue/compiler-sfc@https://pkg.pr.new/vuejs/core/@vue/compiler-sfc@19a870d': dependencies: '@babel/parser': 7.29.2 - '@vue/compiler-core': 3.5.32 - '@vue/compiler-dom': 3.5.32 - '@vue/compiler-ssr': 3.5.32 - '@vue/shared': 3.5.32 + '@vue/compiler-core': https://pkg.pr.new/vuejs/core/@vue/compiler-core@19a870d + '@vue/compiler-dom': https://pkg.pr.new/vuejs/core/@vue/compiler-dom@19a870d + '@vue/compiler-ssr': https://pkg.pr.new/vuejs/core/@vue/compiler-ssr@19a870d + '@vue/compiler-vapor': https://pkg.pr.new/vuejs/core/@vue/compiler-vapor@19a870d + '@vue/shared': https://pkg.pr.new/vuejs/core/@vue/shared@19a870d estree-walker: 2.0.2 magic-string: 0.30.21 postcss: 8.5.8 source-map-js: 1.2.1 - '@vue/compiler-ssr@3.5.32': + '@vue/compiler-ssr@https://pkg.pr.new/vuejs/core/@vue/compiler-ssr@19a870d': dependencies: - '@vue/compiler-dom': 3.5.32 - '@vue/shared': 3.5.32 + '@vue/compiler-dom': https://pkg.pr.new/vuejs/core/@vue/compiler-dom@19a870d + '@vue/shared': https://pkg.pr.new/vuejs/core/@vue/shared@19a870d + + '@vue/compiler-vapor@https://pkg.pr.new/vuejs/core/@vue/compiler-vapor@19a870d': + dependencies: + '@babel/parser': 7.29.2 + '@vue/compiler-dom': https://pkg.pr.new/vuejs/core/@vue/compiler-dom@19a870d + '@vue/shared': https://pkg.pr.new/vuejs/core/@vue/shared@19a870d + estree-walker: 2.0.2 + source-map-js: 1.2.1 '@vue/devtools-api@8.1.1': dependencies: @@ -1835,41 +1909,49 @@ snapshots: path-browserify: 1.0.1 picomatch: 4.0.4 - '@vue/reactivity@3.5.32': + '@vue/reactivity@https://pkg.pr.new/vuejs/core/@vue/reactivity@19a870d': dependencies: - '@vue/shared': 3.5.32 + '@vue/shared': https://pkg.pr.new/vuejs/core/@vue/shared@19a870d - '@vue/repl@4.7.1': {} + '@vue/repl@4.7.2': {} - '@vue/runtime-core@3.5.32': + '@vue/runtime-core@https://pkg.pr.new/vuejs/core/@vue/runtime-core@19a870d': dependencies: - '@vue/reactivity': 3.5.32 - '@vue/shared': 3.5.32 + '@vue/reactivity': https://pkg.pr.new/vuejs/core/@vue/reactivity@19a870d + '@vue/shared': https://pkg.pr.new/vuejs/core/@vue/shared@19a870d - '@vue/runtime-dom@3.5.32': + '@vue/runtime-dom@https://pkg.pr.new/vuejs/core/@vue/runtime-dom@19a870d': dependencies: - '@vue/reactivity': 3.5.32 - '@vue/runtime-core': 3.5.32 - '@vue/shared': 3.5.32 + '@vue/reactivity': https://pkg.pr.new/vuejs/core/@vue/reactivity@19a870d + '@vue/runtime-core': https://pkg.pr.new/vuejs/core/@vue/runtime-core@19a870d + '@vue/shared': https://pkg.pr.new/vuejs/core/@vue/shared@19a870d csstype: 3.2.3 - '@vue/server-renderer@3.5.32(vue@3.5.32(typescript@5.9.3))': + '@vue/runtime-vapor@https://pkg.pr.new/vuejs/core/@vue/runtime-vapor@19a870d(@vue/runtime-dom@https://pkg.pr.new/vuejs/core/@vue/runtime-dom@19a870d)': dependencies: - '@vue/compiler-ssr': 3.5.32 - '@vue/shared': 3.5.32 - vue: 3.5.32(typescript@5.9.3) + '@vue/reactivity': https://pkg.pr.new/vuejs/core/@vue/reactivity@19a870d + '@vue/runtime-dom': https://pkg.pr.new/vuejs/core/@vue/runtime-dom@19a870d + '@vue/shared': https://pkg.pr.new/vuejs/core/@vue/shared@19a870d + + '@vue/server-renderer@https://pkg.pr.new/vuejs/core/@vue/server-renderer@19a870d(vue@https://pkg.pr.new/vue@19a870d(typescript@5.9.3))': + dependencies: + '@vue/compiler-ssr': https://pkg.pr.new/vuejs/core/@vue/compiler-ssr@19a870d + '@vue/shared': https://pkg.pr.new/vuejs/core/@vue/shared@19a870d + vue: https://pkg.pr.new/vue@19a870d(typescript@5.9.3) '@vue/shared@3.5.32': {} - '@vue/theme@2.4.0(@algolia/client-search@5.50.1)(search-insights@2.17.3)(vitepress@2.0.0-alpha.17(@types/node@25.5.2)(oxc-minify@0.124.0(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1))(postcss@8.5.8)(typescript@5.9.3))(vue@3.5.32(typescript@5.9.3))': + '@vue/shared@https://pkg.pr.new/vuejs/core/@vue/shared@19a870d': {} + + '@vue/theme@2.4.0(@algolia/client-search@5.50.1)(search-insights@2.17.3)(vitepress@https://pkg.pr.new/vitepress@9428529(@types/node@25.5.2)(oxc-minify@0.124.0(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1))(postcss@8.5.8)(typescript@5.9.3))(vue@https://pkg.pr.new/vue@19a870d(typescript@5.9.3))': dependencies: '@docsearch/css': 3.9.0 '@docsearch/js': 3.9.0(@algolia/client-search@5.50.1)(search-insights@2.17.3) - '@vueuse/core': 10.11.1(vue@3.5.32(typescript@5.9.3)) + '@vueuse/core': 10.11.1(vue@https://pkg.pr.new/vue@19a870d(typescript@5.9.3)) body-scroll-lock: 4.0.0-beta.0 normalize.css: 8.0.1 tiny-decode: 0.1.3 - vitepress: 2.0.0-alpha.17(@types/node@25.5.2)(oxc-minify@0.124.0(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1))(postcss@8.5.8)(typescript@5.9.3) + vitepress: https://pkg.pr.new/vitepress@9428529(@types/node@25.5.2)(oxc-minify@0.124.0(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1))(postcss@8.5.8)(typescript@5.9.3) transitivePeerDependencies: - '@algolia/client-search' - '@types/react' @@ -1879,28 +1961,28 @@ snapshots: - search-insights - vue - '@vueuse/core@10.11.1(vue@3.5.32(typescript@5.9.3))': + '@vueuse/core@10.11.1(vue@https://pkg.pr.new/vue@19a870d(typescript@5.9.3))': dependencies: '@types/web-bluetooth': 0.0.20 '@vueuse/metadata': 10.11.1 - '@vueuse/shared': 10.11.1(vue@3.5.32(typescript@5.9.3)) - vue-demi: 0.14.10(vue@3.5.32(typescript@5.9.3)) + '@vueuse/shared': 10.11.1(vue@https://pkg.pr.new/vue@19a870d(typescript@5.9.3)) + vue-demi: 0.14.10(vue@https://pkg.pr.new/vue@19a870d(typescript@5.9.3)) transitivePeerDependencies: - '@vue/composition-api' - vue - '@vueuse/core@14.2.1(vue@3.5.32(typescript@5.9.3))': + '@vueuse/core@14.2.1(vue@https://pkg.pr.new/vue@19a870d(typescript@5.9.3))': dependencies: '@types/web-bluetooth': 0.0.21 '@vueuse/metadata': 14.2.1 - '@vueuse/shared': 14.2.1(vue@3.5.32(typescript@5.9.3)) - vue: 3.5.32(typescript@5.9.3) + '@vueuse/shared': 14.2.1(vue@https://pkg.pr.new/vue@19a870d(typescript@5.9.3)) + vue: https://pkg.pr.new/vue@19a870d(typescript@5.9.3) - '@vueuse/integrations@14.2.1(focus-trap@8.0.1)(vue@3.5.32(typescript@5.9.3))': + '@vueuse/integrations@14.2.1(focus-trap@8.0.1)(vue@https://pkg.pr.new/vue@19a870d(typescript@5.9.3))': dependencies: - '@vueuse/core': 14.2.1(vue@3.5.32(typescript@5.9.3)) - '@vueuse/shared': 14.2.1(vue@3.5.32(typescript@5.9.3)) - vue: 3.5.32(typescript@5.9.3) + '@vueuse/core': 14.2.1(vue@https://pkg.pr.new/vue@19a870d(typescript@5.9.3)) + '@vueuse/shared': 14.2.1(vue@https://pkg.pr.new/vue@19a870d(typescript@5.9.3)) + vue: https://pkg.pr.new/vue@19a870d(typescript@5.9.3) optionalDependencies: focus-trap: 8.0.1 @@ -1908,16 +1990,16 @@ snapshots: '@vueuse/metadata@14.2.1': {} - '@vueuse/shared@10.11.1(vue@3.5.32(typescript@5.9.3))': + '@vueuse/shared@10.11.1(vue@https://pkg.pr.new/vue@19a870d(typescript@5.9.3))': dependencies: - vue-demi: 0.14.10(vue@3.5.32(typescript@5.9.3)) + vue-demi: 0.14.10(vue@https://pkg.pr.new/vue@19a870d(typescript@5.9.3)) transitivePeerDependencies: - '@vue/composition-api' - vue - '@vueuse/shared@14.2.1(vue@3.5.32(typescript@5.9.3))': + '@vueuse/shared@14.2.1(vue@https://pkg.pr.new/vue@19a870d(typescript@5.9.3))': dependencies: - vue: 3.5.32(typescript@5.9.3) + vue: https://pkg.pr.new/vue@19a870d(typescript@5.9.3) acorn@8.16.0: {} @@ -2532,14 +2614,14 @@ snapshots: extend-shallow: 2.0.1 kind-of: 6.0.3 - shiki@3.23.0: + shiki@4.0.2: dependencies: - '@shikijs/core': 3.23.0 - '@shikijs/engine-javascript': 3.23.0 - '@shikijs/engine-oniguruma': 3.23.0 - '@shikijs/langs': 3.23.0 - '@shikijs/themes': 3.23.0 - '@shikijs/types': 3.23.0 + '@shikijs/core': 4.0.2 + '@shikijs/engine-javascript': 4.0.2 + '@shikijs/engine-oniguruma': 4.0.2 + '@shikijs/langs': 4.0.2 + '@shikijs/themes': 4.0.2 + '@shikijs/types': 4.0.2 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 @@ -2683,27 +2765,27 @@ snapshots: transitivePeerDependencies: - supports-color - vitepress@2.0.0-alpha.17(@types/node@25.5.2)(oxc-minify@0.124.0(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1))(postcss@8.5.8)(typescript@5.9.3): + vitepress@https://pkg.pr.new/vitepress@9428529(@types/node@25.5.2)(oxc-minify@0.124.0(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1))(postcss@8.5.8)(typescript@5.9.3): dependencies: '@docsearch/css': 4.6.2 '@docsearch/js': 4.6.2 '@docsearch/sidepanel-js': 4.6.2 - '@iconify-json/simple-icons': 1.2.77 - '@shikijs/core': 3.23.0 - '@shikijs/transformers': 3.23.0 - '@shikijs/types': 3.23.0 + '@iconify-json/simple-icons': 1.2.79 + '@shikijs/core': 4.0.2 + '@shikijs/transformers': 4.0.2 + '@shikijs/types': 4.0.2 '@types/markdown-it': 14.1.2 - '@vitejs/plugin-vue': 6.0.5(vite@8.0.7(@types/node@25.5.2))(vue@3.5.32(typescript@5.9.3)) + '@vitejs/plugin-vue': https://pkg.pr.new/@vitejs/plugin-vue@df10153(vite@8.0.7(@types/node@25.5.2))(vue@https://pkg.pr.new/vue@19a870d(typescript@5.9.3)) '@vue/devtools-api': 8.1.1 '@vue/shared': 3.5.32 - '@vueuse/core': 14.2.1(vue@3.5.32(typescript@5.9.3)) - '@vueuse/integrations': 14.2.1(focus-trap@8.0.1)(vue@3.5.32(typescript@5.9.3)) + '@vueuse/core': 14.2.1(vue@https://pkg.pr.new/vue@19a870d(typescript@5.9.3)) + '@vueuse/integrations': 14.2.1(focus-trap@8.0.1)(vue@https://pkg.pr.new/vue@19a870d(typescript@5.9.3)) focus-trap: 8.0.1 mark.js: 8.11.1 minisearch: 7.2.0 - shiki: 3.23.0 + shiki: 4.0.2 vite: 8.0.7(@types/node@25.5.2) - vue: 3.5.32(typescript@5.9.3) + vue: https://pkg.pr.new/vue@19a870d(typescript@5.9.3) optionalDependencies: oxc-minify: 0.124.0(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1) postcss: 8.5.8 @@ -2735,9 +2817,9 @@ snapshots: vscode-uri@3.1.0: {} - vue-demi@0.14.10(vue@3.5.32(typescript@5.9.3)): + vue-demi@0.14.10(vue@https://pkg.pr.new/vue@19a870d(typescript@5.9.3)): dependencies: - vue: 3.5.32(typescript@5.9.3) + vue: https://pkg.pr.new/vue@19a870d(typescript@5.9.3) vue-tsc@3.2.6(typescript@5.9.3): dependencies: @@ -2745,13 +2827,14 @@ snapshots: '@vue/language-core': 3.2.6 typescript: 5.9.3 - vue@3.5.32(typescript@5.9.3): + vue@https://pkg.pr.new/vue@19a870d(typescript@5.9.3): dependencies: - '@vue/compiler-dom': 3.5.32 - '@vue/compiler-sfc': 3.5.32 - '@vue/runtime-dom': 3.5.32 - '@vue/server-renderer': 3.5.32(vue@3.5.32(typescript@5.9.3)) - '@vue/shared': 3.5.32 + '@vue/compiler-dom': https://pkg.pr.new/vuejs/core/@vue/compiler-dom@19a870d + '@vue/compiler-sfc': https://pkg.pr.new/vuejs/core/@vue/compiler-sfc@19a870d + '@vue/runtime-dom': https://pkg.pr.new/vuejs/core/@vue/runtime-dom@19a870d + '@vue/runtime-vapor': https://pkg.pr.new/vuejs/core/@vue/runtime-vapor@19a870d(@vue/runtime-dom@https://pkg.pr.new/vuejs/core/@vue/runtime-dom@19a870d) + '@vue/server-renderer': https://pkg.pr.new/vuejs/core/@vue/server-renderer@19a870d(vue@https://pkg.pr.new/vue@19a870d(typescript@5.9.3)) + '@vue/shared': https://pkg.pr.new/vuejs/core/@vue/shared@19a870d optionalDependencies: typescript: 5.9.3 diff --git a/src/examples/ExampleRepl.vue b/src/examples/ExampleRepl.vue index 4247fb4b39..b82842e58e 100644 --- a/src/examples/ExampleRepl.vue +++ b/src/examples/ExampleRepl.vue @@ -9,12 +9,7 @@ import { onHashChange } from './utils' -const { vueVersion, defaultVersion, importMap } = useVueImportMap({ - runtimeDev: () => - `https://unpkg.com/vue@${ - vueVersion.value || defaultVersion - }/dist/vue.esm-browser.js` -}) +const { vueVersion, importMap } = useVueImportMap() const store = useStore({ vueVersion, builtinImportMap: importMap diff --git a/src/tutorial/TutorialRepl.vue b/src/tutorial/TutorialRepl.vue index a8ccac7394..fc46e95ee0 100644 --- a/src/tutorial/TutorialRepl.vue +++ b/src/tutorial/TutorialRepl.vue @@ -16,12 +16,7 @@ import { VTLink } from '@vue/theme' -const { vueVersion, defaultVersion, importMap } = useVueImportMap({ - runtimeDev: () => - `https://unpkg.com/vue@${ - vueVersion.value || defaultVersion - }/dist/vue.esm-browser.js` -}) +const { importMap } = useVueImportMap() const store = useStore({ builtinImportMap: importMap }) From 263b11b18063db24861abcbeadf32f6ddf70a747 Mon Sep 17 00:00:00 2001 From: daiwei Date: Wed, 22 Apr 2026 16:43:49 +0800 Subject: [PATCH 2/4] wip: save --- .vitepress/config.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.vitepress/config.ts b/.vitepress/config.ts index 0cdf1a9676..fdd0dc352e 100644 --- a/.vitepress/config.ts +++ b/.vitepress/config.ts @@ -790,8 +790,7 @@ export default defineConfigWithTheme({ } }, build: { - chunkSizeWarningLimit: Infinity, - minify: false + chunkSizeWarningLimit: Infinity }, json: { stringify: true From c45c3f56a4ac6f8c05b7717a3965c9c698a3e764 Mon Sep 17 00:00:00 2001 From: daiwei Date: Fri, 24 Apr 2026 16:37:09 +0800 Subject: [PATCH 3/4] wip: save --- .vitepress/theme/components/ScrimbaLink.vue | 12 +- .vitepress/theme/components/VueSchoolLink.vue | 12 +- package.json | 4 +- pnpm-lock.yaml | 374 ++++++++++++------ src/guide/reusability/custom-directives.md | 6 +- 5 files changed, 273 insertions(+), 135 deletions(-) diff --git a/.vitepress/theme/components/ScrimbaLink.vue b/.vitepress/theme/components/ScrimbaLink.vue index 1fb6021610..90225236a7 100644 --- a/.vitepress/theme/components/ScrimbaLink.vue +++ b/.vitepress/theme/components/ScrimbaLink.vue @@ -10,13 +10,11 @@ -