From d5f389c9acc86a27ec9c8c96353c58c77004fa56 Mon Sep 17 00:00:00 2001 From: zhiyuanzmj <260480378@qq.com> Date: Sun, 1 Jun 2025 21:14:13 +0800 Subject: [PATCH 1/5] wip: vapor mode --- packages/router/src/RouterLink.ts | 2 +- packages/router/src/VaporRouterLink.ts | 89 ++++++ packages/router/src/VaporRouterView.ts | 204 ++++++++++++++ packages/router/src/index.ts | 2 + packages/router/src/router.ts | 12 +- pnpm-lock.yaml | 357 ++++++++++++++++++++++--- 6 files changed, 629 insertions(+), 37 deletions(-) create mode 100644 packages/router/src/VaporRouterLink.ts create mode 100644 packages/router/src/VaporRouterView.ts diff --git a/packages/router/src/RouterLink.ts b/packages/router/src/RouterLink.ts index e5b5d9d62..570e3e2bd 100644 --- a/packages/router/src/RouterLink.ts +++ b/packages/router/src/RouterLink.ts @@ -448,7 +448,7 @@ function getOriginalPath(record: RouteRecord | undefined): string { * @param globalClass * @param defaultClass */ -const getLinkClass = ( +export const getLinkClass = ( propClass: string | undefined, globalClass: string | undefined, defaultClass: string diff --git a/packages/router/src/VaporRouterLink.ts b/packages/router/src/VaporRouterLink.ts new file mode 100644 index 000000000..935cd702f --- /dev/null +++ b/packages/router/src/VaporRouterLink.ts @@ -0,0 +1,89 @@ +import { routerKey } from './injectionSymbols' +import { + _RouterLinkI, + getLinkClass, + type RouterLinkProps, + useLink, +} from './RouterLink' +import { RouteLocationRaw } from './typed-routes' +import { + computed, + createComponentWithFallback, + createDynamicComponent, + defineVaporComponent, + inject, + PropType, + reactive, +} from 'vue' + +export const VaporRouterLinkImpl = /*#__PURE__*/ defineVaporComponent({ + name: 'RouterLink', + // @ts-ignore + compatConfig: { MODE: 3 }, + props: { + to: { + type: [String, Object] as PropType, + required: true, + }, + replace: Boolean, + activeClass: String, + // inactiveClass: String, + exactActiveClass: String, + custom: Boolean, + ariaCurrentValue: { + type: String as PropType, + default: 'page', + }, + viewTransition: Boolean, + }, + + useLink, + + setup(props, { slots, attrs }) { + const link = reactive(useLink(props)) + const { options } = inject(routerKey)! + + const elClass = computed(() => ({ + [getLinkClass( + props.activeClass, + options.linkActiveClass, + 'router-link-active' + )]: link.isActive, + // [getLinkClass( + // props.inactiveClass, + // options.linkInactiveClass, + // 'router-link-inactive' + // )]: !link.isExactActive, + [getLinkClass( + props.exactActiveClass, + options.linkExactActiveClass, + 'router-link-exact-active' + )]: link.isExactActive, + })) + + return createDynamicComponent(() => { + const children = slots.default && slots.default(link) + return props.custom + ? () => children + : () => + createComponentWithFallback( + 'a', + { + 'aria-current': () => + link.isExactActive ? props.ariaCurrentValue : null, + href: () => link.href, + // this would override user added attrs but Vue will still add + // the listener, so we end up triggering both + onClick: () => link.navigate, + class: () => elClass.value, + $: [() => attrs], + }, + { + default: () => children, + } + ) + }) + }, +}) + +export const VaporRouterLink: _RouterLinkI = VaporRouterLinkImpl as any diff --git a/packages/router/src/VaporRouterView.ts b/packages/router/src/VaporRouterView.ts new file mode 100644 index 000000000..36ceb6106 --- /dev/null +++ b/packages/router/src/VaporRouterView.ts @@ -0,0 +1,204 @@ +import { + inject, + provide, + PropType, + ref, + unref, + ComponentPublicInstance, + VNodeProps, + computed, + AllowedComponentProps, + ComponentCustomProps, + watch, + VNode, + createTemplateRefSetter, + createComponent, + createDynamicComponent, + defineVaporComponent, + type VaporComponent, + type VaporSlot, +} from 'vue' +import type { RouteLocationNormalizedLoaded } from './typed-routes' +import type { RouteLocationMatched } from './types' +import { + matchedRouteKey, + viewDepthKey, + routerViewLocationKey, +} from './injectionSymbols' +import { assign } from './utils' +import { isSameRouteRecord } from './location' +import type { RouterViewProps, RouterViewDevtoolsContext } from './RouterView' + +export type { RouterViewProps, RouterViewDevtoolsContext } + +export const VaporRouterViewImpl = /*#__PURE__*/ defineVaporComponent({ + name: 'RouterView', + // #674 we manually inherit them + inheritAttrs: false, + props: { + name: { + type: String as PropType, + default: 'default', + }, + route: Object as PropType, + }, + + // Better compat for @vue/compat users + // https://github.com/vuejs/router/issues/1315 + // @ts-ignore + compatConfig: { MODE: 3 }, + + setup(props, { attrs, slots }) { + const injectedRoute = inject(routerViewLocationKey)! + const routeToDisplay = computed( + () => props.route || injectedRoute.value + ) + const injectedDepth = inject(viewDepthKey, 0) + // The depth changes based on empty components option, which allows passthrough routes e.g. routes with children + // that are used to reuse the `path` property + const depth = computed(() => { + let initialDepth = unref(injectedDepth) + const { matched } = routeToDisplay.value + let matchedRoute: RouteLocationMatched | undefined + while ( + (matchedRoute = matched[initialDepth]) && + !matchedRoute.components + ) { + initialDepth++ + } + return initialDepth + }) + const matchedRouteRef = computed( + () => routeToDisplay.value.matched[depth.value] + ) + + provide( + viewDepthKey, + computed(() => depth.value + 1) + ) + provide(matchedRouteKey, matchedRouteRef) + provide(routerViewLocationKey, routeToDisplay) + + const viewRef = ref() + + // watch at the same time the component instance, the route record we are + // rendering, and the name + watch( + () => [viewRef.value, matchedRouteRef.value, props.name] as const, + ([instance, to, name], [oldInstance, from]) => { + // copy reused instances + if (to) { + // this will update the instance for new instances as well as reused + // instances when navigating to a new route + to.instances[name] = instance + // the component instance is reused for a different route or name, so + // we copy any saved update or leave guards. With async setup, the + // mounting component will mount before the matchedRoute changes, + // making instance === oldInstance, so we check if guards have been + // added before. This works because we remove guards when + // unmounting/deactivating components + if (from && from !== to && instance && instance === oldInstance) { + if (!to.leaveGuards.size) { + to.leaveGuards = from.leaveGuards + } + if (!to.updateGuards.size) { + to.updateGuards = from.updateGuards + } + } + } + + // trigger beforeRouteEnter next callbacks + if ( + instance && + to && + // if there is no instance but to and from are the same this might be + // the first visit + (!from || !isSameRouteRecord(to, from) || !oldInstance) + ) { + ;(to.enterCallbacks[name] || []).forEach(callback => + callback(instance) + ) + } + }, + { flush: 'post' } + ) + + const ViewComponent = computed(() => { + const matchedRoute = matchedRouteRef.value + return matchedRoute && matchedRoute.components![props.name] + }) + + // props from route configuration + const routeProps = computed(() => { + const route = routeToDisplay.value + const currentName = props.name + const matchedRoute = matchedRouteRef.value + const routePropsOption = matchedRoute && matchedRoute.props[currentName] + return routePropsOption + ? routePropsOption === true + ? route.params + : typeof routePropsOption === 'function' + ? routePropsOption(route) + : routePropsOption + : null + }) + + return createDynamicComponent(() => { + if (!ViewComponent.value) { + return () => + normalizeSlot(slots.default, { + Component: ViewComponent.value, + route: routeToDisplay.value, + }) + } + + const setRef = createTemplateRefSetter() + + return () => { + const component = createComponent( + ViewComponent.value as VaporComponent, + { + $: [() => assign({}, routeProps.value, attrs)], + } + ) + setRef(component, viewRef) + + return ( + normalizeSlot(slots.default, { + Component: component, + route: routeToDisplay.value, + }) || component + ) + } + }) + }, +}) + +function normalizeSlot(slot: VaporSlot | undefined, data: any) { + if (!slot) return null + return slot(data) +} + +// export the public type for h/tsx inference +// also to avoid inline import() in generated d.ts files +/** + * Component to display the current route the user is at. + */ +export const VaporRouterView = VaporRouterViewImpl as unknown as { + new (): { + $props: AllowedComponentProps & + ComponentCustomProps & + VNodeProps & + RouterViewProps + + $slots: { + default?: ({ + Component, + route, + }: { + Component: VNode + route: RouteLocationNormalizedLoaded + }) => VNode[] + } + } +} diff --git a/packages/router/src/index.ts b/packages/router/src/index.ts index 2b27d8329..7a5c9fc54 100644 --- a/packages/router/src/index.ts +++ b/packages/router/src/index.ts @@ -159,7 +159,9 @@ export type { UseLinkOptions, UseLinkReturn, } from './RouterLink' +export { VaporRouterLink } from './VaporRouterLink' export { RouterView } from './RouterView' +export { VaporRouterView } from './VaporRouterView' export type { RouterViewProps } from './RouterView' export type { TypesConfig } from './config' diff --git a/packages/router/src/router.ts b/packages/router/src/router.ts index 748a06a32..aee3e000c 100644 --- a/packages/router/src/router.ts +++ b/packages/router/src/router.ts @@ -1259,11 +1259,13 @@ export function createRouter(options: RouterOptions): Router { app.component('RouterLink', RouterLink) app.component('RouterView', RouterView) - app.config.globalProperties.$router = router - Object.defineProperty(app.config.globalProperties, '$route', { - enumerable: true, - get: () => unref(currentRoute), - }) + if (!app.vapor) { + app.config.globalProperties.$router = router + Object.defineProperty(app.config.globalProperties, '$route', { + enumerable: true, + get: () => unref(currentRoute), + }) + } // this initial navigation is only necessary on client, on server it doesn't // make sense because it will create an extra unnecessary navigation and could diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cdafc5d60..1dd74b423 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,7 +10,7 @@ importers: devDependencies: '@vitest/coverage-v8': specifier: ^2.1.5 - version: 2.1.5(vitest@2.1.5(@types/node@22.9.3)(@vitest/ui@2.1.5)(happy-dom@15.11.6)(jsdom@19.0.0)(terser@5.32.0)) + version: 2.1.5(vitest@2.1.5(@types/node@22.9.3)(@vitest/ui@2.1.5)(happy-dom@15.11.6)(jsdom@19.0.0)(sass-embedded@1.89.0)(terser@5.32.0)) '@vitest/ui': specifier: ^2.1.5 version: 2.1.5(vitest@2.1.5) @@ -58,7 +58,7 @@ importers: version: 5.6.3 vitest: specifier: ^2.1.5 - version: 2.1.5(@types/node@22.9.3)(@vitest/ui@2.1.5)(happy-dom@15.11.6)(jsdom@19.0.0)(terser@5.32.0) + version: 2.1.5(@types/node@22.9.3)(@vitest/ui@2.1.5)(happy-dom@15.11.6)(jsdom@19.0.0)(sass-embedded@1.89.0)(terser@5.32.0) packages/docs: dependencies: @@ -67,10 +67,10 @@ importers: version: 3.27.0 vitepress: specifier: 1.5.0 - version: 1.5.0(@algolia/client-search@5.15.0)(@types/node@22.9.3)(axios@1.7.7)(postcss@8.4.49)(search-insights@2.17.1)(terser@5.32.0)(typescript@5.6.3) + version: 1.5.0(@algolia/client-search@5.15.0)(@types/node@22.9.3)(axios@1.7.7)(postcss@8.5.3)(sass-embedded@1.89.0)(search-insights@2.17.1)(terser@5.32.0)(typescript@5.6.3) vitepress-translation-helper: specifier: ^0.2.1 - version: 0.2.1(vitepress@1.5.0(@algolia/client-search@5.15.0)(@types/node@22.9.3)(axios@1.7.7)(postcss@8.4.49)(search-insights@2.17.1)(terser@5.32.0)(typescript@5.6.3))(vue@3.5.13(typescript@5.6.3)) + version: 0.2.1(vitepress@1.5.0(@algolia/client-search@5.15.0)(@types/node@22.9.3)(axios@1.7.7)(postcss@8.5.3)(sass-embedded@1.89.0)(search-insights@2.17.1)(terser@5.32.0)(typescript@5.6.3))(vue@3.5.13(typescript@5.6.3)) vue-router: specifier: workspace:* version: link:../router @@ -86,7 +86,7 @@ importers: version: 20.17.7 '@vitejs/plugin-vue': specifier: ^5.2.0 - version: 5.2.0(vite@5.4.11(@types/node@20.17.7)(terser@5.32.0))(vue@3.5.13(typescript@5.6.3)) + version: 5.2.0(vite@5.4.11(@types/node@20.17.7)(sass-embedded@1.89.0)(terser@5.32.0))(vue@3.5.13(typescript@5.6.3)) '@vue/compiler-sfc': specifier: ~3.5.13 version: 3.5.13 @@ -95,7 +95,7 @@ importers: version: 0.6.0(typescript@5.6.3)(vue@3.5.13(typescript@5.6.3)) vite: specifier: ^5.4.11 - version: 5.4.11(@types/node@20.17.7)(terser@5.32.0) + version: 5.4.11(@types/node@20.17.7)(sass-embedded@1.89.0)(terser@5.32.0) vue-router: specifier: workspace:* version: link:../router @@ -135,7 +135,7 @@ importers: version: 2.3.32 '@vitejs/plugin-vue': specifier: ^5.2.0 - version: 5.2.0(vite@5.4.11(@types/node@22.9.3)(terser@5.32.0))(vue@3.5.13(typescript@5.6.3)) + version: 5.2.0(vite@5.4.11(@types/node@22.9.3)(sass-embedded@1.89.0)(terser@5.32.0))(vue@3.5.13(typescript@5.6.3)) '@vue/compiler-sfc': specifier: ~3.5.13 version: 3.5.13 @@ -189,7 +189,7 @@ importers: version: 0.36.0(rollup@3.29.5)(typescript@5.6.3) vite: specifier: ^5.4.11 - version: 5.4.11(@types/node@22.9.3)(terser@5.32.0) + version: 5.4.11(@types/node@22.9.3)(sass-embedded@1.89.0)(terser@5.32.0) vue: specifier: ~3.5.13 version: 3.5.13(typescript@5.6.3) @@ -300,6 +300,9 @@ packages: '@bcoe/v8-coverage@0.2.3': resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + '@bufbuild/protobuf@2.4.0': + resolution: {integrity: sha512-RN9M76x7N11QRihKovEglEjjVCQEA9PRBVnDgk9xw8JHLrcUrp4FpAVSPSH91cNbcTft3u2vpLN4GMbiKY9PJw==} + '@colors/colors@1.5.0': resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} engines: {node: '>=0.1.90'} @@ -1227,6 +1230,9 @@ packages: browserstack-local@1.5.5: resolution: {integrity: sha512-jKne7yosrMcptj3hqxp36TP9k0ZW2sCqhyurX24rUL4G3eT7OLgv+CSQN8iq5dtkv5IK+g+v8fWvsiC/S9KxMg==} + buffer-builder@0.2.0: + resolution: {integrity: sha512-7VPMEPuYznPSoR21NE1zvd2Xna6c/CloiZCfcMXR1Jny6PjX0N4Nsa38zcBFo/FMK+BlA+FLKbJCQ0i2yxp+Xg==} + buffer-crc32@0.2.13: resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} @@ -1347,6 +1353,9 @@ packages: colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + colorjs.io@0.5.2: + resolution: {integrity: sha512-twmVoizEW7ylZSN32OgKdXRmo1qg+wT5/6C3xu5b9QsWzSFAhHLn2xd8ro0diCsKfCj1RdaTP/nrcW+vAoQPIw==} + combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} @@ -2031,6 +2040,9 @@ packages: immediate@3.0.6: resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} + immutable@5.1.2: + resolution: {integrity: sha512-qHKXW1q6liAk1Oys6umoaZbDRqjcjgSrbnrifHsfsttza7zcvRAsL7mMV6xWcyhwQy7Xj5v4hhbr6b+iDYwlmQ==} + import-lazy@4.0.0: resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} engines: {node: '>=8'} @@ -2329,6 +2341,7 @@ packages: lodash.clone@3.0.3: resolution: {integrity: sha512-yVYPpFTdZDCLG2p07gVRTvcwN5X04oj2hu4gG6r0fer58JA08wAVxXzWM+CmmxO2bzOH8u8BkZTZqgX6juVF7A==} + deprecated: This package is deprecated. Use structuredClone instead. lodash.defaultsdeep@4.6.1: resolution: {integrity: sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==} @@ -2353,6 +2366,7 @@ packages: lodash.pick@4.4.0: resolution: {integrity: sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q==} + deprecated: This package is deprecated. Use destructuring assignment syntax instead. lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} @@ -2562,6 +2576,11 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + nanoid@3.3.7: resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -2818,6 +2837,10 @@ packages: resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} engines: {node: ^10 || ^12 || >=14} + postcss@8.5.3: + resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} + engines: {node: ^10 || ^12 || >=14} + preact@10.25.0: resolution: {integrity: sha512-6bYnzlLxXV3OSpUxLdaxBmE7PMOu0aR3pG6lryK/0jmvcDFPlcXGQAt5DpK3RITWiDrfYZRI0druyaK/S9kYLg==} @@ -2997,6 +3020,9 @@ packages: run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + rxjs@7.8.2: + resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} + safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} @@ -3006,6 +3032,131 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + sass-embedded-android-arm64@1.89.0: + resolution: {integrity: sha512-pr4R3p5R+Ul9ZA5nzYbBJQFJXW6dMGzgpNBhmaToYDgDhmNX5kg0mZAUlGLHvisLdTiR6oEfDDr9QI6tnD2nqA==} + engines: {node: '>=14.0.0'} + cpu: [arm64] + os: [android] + + sass-embedded-android-arm@1.89.0: + resolution: {integrity: sha512-s6jxkEZQQrtyIGZX6Sbcu7tEixFG2VkqFgrX11flm/jZex7KaxnZtFace+wnYAgHqzzYpx0kNzJUpT+GXxm8CA==} + engines: {node: '>=14.0.0'} + cpu: [arm] + os: [android] + + sass-embedded-android-ia32@1.89.0: + resolution: {integrity: sha512-GoNnNGYmp1F0ZMHqQbAurlQsjBMZKtDd5H60Ruq86uQFdnuNqQ9wHKJsJABxMnjfAn60IjefytM5PYTMcAmbfA==} + engines: {node: '>=14.0.0'} + cpu: [ia32] + os: [android] + + sass-embedded-android-riscv64@1.89.0: + resolution: {integrity: sha512-di+i4KkKAWTNksaQYTqBEERv46qV/tvv14TPswEfak7vcTQ2pj2mvV4KGjLYfU2LqRkX/NTXix9KFthrzFN51Q==} + engines: {node: '>=14.0.0'} + cpu: [riscv64] + os: [android] + + sass-embedded-android-x64@1.89.0: + resolution: {integrity: sha512-1cRRDAnmAS1wLaxfFf6PCHu9sKW8FNxdM7ZkanwxO9mztrCu/uvfqTmaurY9+RaKvPus7sGYFp46/TNtl/wRjg==} + engines: {node: '>=14.0.0'} + cpu: [x64] + os: [android] + + sass-embedded-darwin-arm64@1.89.0: + resolution: {integrity: sha512-EUNUzI0UkbQ6dASPyf09S3x7fNT54PjyD594ZGTY14Yh4qTuacIj27ckLmreAJNNu5QxlbhyYuOtz+XN5bMMxA==} + engines: {node: '>=14.0.0'} + cpu: [arm64] + os: [darwin] + + sass-embedded-darwin-x64@1.89.0: + resolution: {integrity: sha512-23R8zSuB31Fq/MYpmQ38UR2C26BsYb66VVpJgWmWl/N+sgv/+l9ECuSPMbYNgM3vb9TP9wk9dgL6KkiCS5tAyg==} + engines: {node: '>=14.0.0'} + cpu: [x64] + os: [darwin] + + sass-embedded-linux-arm64@1.89.0: + resolution: {integrity: sha512-g9Lp57qyx51ttKj0AN/edV43Hu1fBObvD7LpYwVfs6u3I95r0Adi90KujzNrUqXxJVmsfUwseY8kA8zvcRjhYA==} + engines: {node: '>=14.0.0'} + cpu: [arm64] + os: [linux] + + sass-embedded-linux-arm@1.89.0: + resolution: {integrity: sha512-KAzA1XD74d8/fiJXxVnLfFwfpmD2XqUJZz+DL6ZAPNLH1sb+yCP7brktaOyClDc/MBu61JERdHaJjIZhfX0Yqw==} + engines: {node: '>=14.0.0'} + cpu: [arm] + os: [linux] + + sass-embedded-linux-ia32@1.89.0: + resolution: {integrity: sha512-5fxBeXyvBr3pb+vyrx9V6yd7QDRXkAPbwmFVVhjqshBABOXelLysEFea7xokh/tM8JAAQ4O8Ls3eW3Eojb477g==} + engines: {node: '>=14.0.0'} + cpu: [ia32] + os: [linux] + + sass-embedded-linux-musl-arm64@1.89.0: + resolution: {integrity: sha512-50oelrOtN64u15vJN9uJryIuT0+UPjyeoq0zdWbY8F7LM9294Wf+Idea+nqDUWDCj1MHndyPFmR1mjeuRouJhw==} + engines: {node: '>=14.0.0'} + cpu: [arm64] + os: [linux] + + sass-embedded-linux-musl-arm@1.89.0: + resolution: {integrity: sha512-0Q1JeEU4/tzH7fwAwarfIh+Swn3aXG/jPhVsZpbR1c1VzkeaPngmXdmLJcVXsdb35tjk84DuYcFtJlE1HYGw4Q==} + engines: {node: '>=14.0.0'} + cpu: [arm] + os: [linux] + + sass-embedded-linux-musl-ia32@1.89.0: + resolution: {integrity: sha512-ILWqpTd+0RdsSw977iVAJf4CLetIbcQgLQf17ycS1N4StZKVRZs1bBfZhg/f/HU/4p5HondPAwepgJepZZdnFA==} + engines: {node: '>=14.0.0'} + cpu: [ia32] + os: [linux] + + sass-embedded-linux-musl-riscv64@1.89.0: + resolution: {integrity: sha512-n2V+Tdjj7SAuiuElJYhWiHjjB1YU0cuFvL1/m5K+ecdNStfHFWIzvBT6/vzQnBOWjI4eZECNVuQ8GwGWCufZew==} + engines: {node: '>=14.0.0'} + cpu: [riscv64] + os: [linux] + + sass-embedded-linux-musl-x64@1.89.0: + resolution: {integrity: sha512-KOHJdouBK3SLJKZLnFYzuxs3dn+6jaeO3p4p1JUYAcVfndcvh13Sg2sLGfOfpg7Og6ws2Nnqnx0CyL26jPJ7ag==} + engines: {node: '>=14.0.0'} + cpu: [x64] + os: [linux] + + sass-embedded-linux-riscv64@1.89.0: + resolution: {integrity: sha512-0A/UWeKX6MYhVLWLkdX3NPKHO+mvIwzaf6TxGCy3vS3TODWaeDUeBhHShAr7YlOKv5xRGxf7Gx7FXCPV0mUyMA==} + engines: {node: '>=14.0.0'} + cpu: [riscv64] + os: [linux] + + sass-embedded-linux-x64@1.89.0: + resolution: {integrity: sha512-dRBoOFPDWctHPYK3hTk3YzyX/icVrXiw7oOjbtpaDr6JooqIWBe16FslkWyvQzdmfOFy80raKVjgoqT7DsznkQ==} + engines: {node: '>=14.0.0'} + cpu: [x64] + os: [linux] + + sass-embedded-win32-arm64@1.89.0: + resolution: {integrity: sha512-RnlVZ14hC/W7ubzvhqnbGfjU5PFNoFP/y5qycgCy+Mezb0IKbWvZ2Lyzux8TbL3OIjOikkNpfXoNQrX706WLAA==} + engines: {node: '>=14.0.0'} + cpu: [arm64] + os: [win32] + + sass-embedded-win32-ia32@1.89.0: + resolution: {integrity: sha512-eFe9VMNG+90nuoE3eXDy+38+uEHGf7xcqalq5+0PVZfR+H9RlaEbvIUNflZV94+LOH8Jb4lrfuekhHgWDJLfSg==} + engines: {node: '>=14.0.0'} + cpu: [ia32] + os: [win32] + + sass-embedded-win32-x64@1.89.0: + resolution: {integrity: sha512-AaGpr5R6MLCuSvkvDdRq49ebifwLcuGPk0/10hbYw9nh3jpy2/CylYubQpIpR4yPcuD1wFwFqufTXC3HJYGb0g==} + engines: {node: '>=14.0.0'} + cpu: [x64] + os: [win32] + + sass-embedded@1.89.0: + resolution: {integrity: sha512-EDrK1el9zdgJFpocCGlxatDWaP18tJBWoM1hxzo2KJBvjdmBichXI6O6KlQrigvQPO3uJ8DfmFmAAx7s7CG6uw==} + engines: {node: '>=16.0.0'} + hasBin: true + saxes@5.0.1: resolution: {integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==} engines: {node: '>=10'} @@ -3245,6 +3396,14 @@ packages: symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + sync-child-process@1.0.2: + resolution: {integrity: sha512-8lD+t2KrrScJ/7KXCSyfhT3/hRq78rC0wBFqNJXv3mZyn6hW2ypM05JmlSvtqRbeq6jqA94oHbxAr2vYsJ8vDA==} + engines: {node: '>=16.0.0'} + + sync-message-port@1.1.3: + resolution: {integrity: sha512-GTt8rSKje5FilG+wEdfCkOcLL7LWqpMlr2c3LRuKt/YXxcJ52aGSbGBAdI4L3aaqfrBt6y711El53ItyH1NWzg==} + engines: {node: '>=16.0.0'} + tabbable@6.2.0: resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} @@ -3464,6 +3623,9 @@ packages: validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + varint@6.0.0: + resolution: {integrity: sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==} + vfile-message@4.0.2: resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} @@ -3864,6 +4026,9 @@ snapshots: '@bcoe/v8-coverage@0.2.3': {} + '@bufbuild/protobuf@2.4.0': + optional: true + '@colors/colors@1.5.0': optional: true @@ -4333,17 +4498,17 @@ snapshots: '@ungap/structured-clone@1.2.0': {} - '@vitejs/plugin-vue@5.2.0(vite@5.4.11(@types/node@20.17.7)(terser@5.32.0))(vue@3.5.13(typescript@5.6.3))': + '@vitejs/plugin-vue@5.2.0(vite@5.4.11(@types/node@20.17.7)(sass-embedded@1.89.0)(terser@5.32.0))(vue@3.5.13(typescript@5.6.3))': dependencies: - vite: 5.4.11(@types/node@20.17.7)(terser@5.32.0) + vite: 5.4.11(@types/node@20.17.7)(sass-embedded@1.89.0)(terser@5.32.0) vue: 3.5.13(typescript@5.6.3) - '@vitejs/plugin-vue@5.2.0(vite@5.4.11(@types/node@22.9.3)(terser@5.32.0))(vue@3.5.13(typescript@5.6.3))': + '@vitejs/plugin-vue@5.2.0(vite@5.4.11(@types/node@22.9.3)(sass-embedded@1.89.0)(terser@5.32.0))(vue@3.5.13(typescript@5.6.3))': dependencies: - vite: 5.4.11(@types/node@22.9.3)(terser@5.32.0) + vite: 5.4.11(@types/node@22.9.3)(sass-embedded@1.89.0)(terser@5.32.0) vue: 3.5.13(typescript@5.6.3) - '@vitest/coverage-v8@2.1.5(vitest@2.1.5(@types/node@22.9.3)(@vitest/ui@2.1.5)(happy-dom@15.11.6)(jsdom@19.0.0)(terser@5.32.0))': + '@vitest/coverage-v8@2.1.5(vitest@2.1.5(@types/node@22.9.3)(@vitest/ui@2.1.5)(happy-dom@15.11.6)(jsdom@19.0.0)(sass-embedded@1.89.0)(terser@5.32.0))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 0.2.3 @@ -4357,7 +4522,7 @@ snapshots: std-env: 3.8.0 test-exclude: 7.0.1 tinyrainbow: 1.2.0 - vitest: 2.1.5(@types/node@22.9.3)(@vitest/ui@2.1.5)(happy-dom@15.11.6)(jsdom@19.0.0)(terser@5.32.0) + vitest: 2.1.5(@types/node@22.9.3)(@vitest/ui@2.1.5)(happy-dom@15.11.6)(jsdom@19.0.0)(sass-embedded@1.89.0)(terser@5.32.0) transitivePeerDependencies: - supports-color @@ -4368,13 +4533,13 @@ snapshots: chai: 5.1.2 tinyrainbow: 1.2.0 - '@vitest/mocker@2.1.5(vite@5.4.11(@types/node@22.9.3)(terser@5.32.0))': + '@vitest/mocker@2.1.5(vite@5.4.11(@types/node@22.9.3)(sass-embedded@1.89.0)(terser@5.32.0))': dependencies: '@vitest/spy': 2.1.5 estree-walker: 3.0.3 magic-string: 0.30.13 optionalDependencies: - vite: 5.4.11(@types/node@22.9.3)(terser@5.32.0) + vite: 5.4.11(@types/node@22.9.3)(sass-embedded@1.89.0)(terser@5.32.0) '@vitest/pretty-format@2.1.5': dependencies: @@ -4404,7 +4569,7 @@ snapshots: sirv: 3.0.0 tinyglobby: 0.2.10 tinyrainbow: 1.2.0 - vitest: 2.1.5(@types/node@22.9.3)(@vitest/ui@2.1.5)(happy-dom@15.11.6)(jsdom@19.0.0)(terser@5.32.0) + vitest: 2.1.5(@types/node@22.9.3)(@vitest/ui@2.1.5)(happy-dom@15.11.6)(jsdom@19.0.0)(sass-embedded@1.89.0)(terser@5.32.0) '@vitest/utils@2.1.5': dependencies: @@ -4791,6 +4956,9 @@ snapshots: transitivePeerDependencies: - supports-color + buffer-builder@0.2.0: + optional: true + buffer-crc32@0.2.13: {} buffer-from@1.1.2: {} @@ -4919,6 +5087,9 @@ snapshots: colorette@2.0.20: {} + colorjs.io@0.5.2: + optional: true + combined-stream@1.0.8: dependencies: delayed-stream: 1.0.0 @@ -5668,6 +5839,9 @@ snapshots: immediate@3.0.6: {} + immutable@5.1.2: + optional: true + import-lazy@4.0.0: {} indent-string@4.0.0: {} @@ -6224,6 +6398,9 @@ snapshots: nanoid@3.3.1: {} + nanoid@3.3.11: + optional: true + nanoid@3.3.7: {} neo-async@2.6.2: {} @@ -6496,6 +6673,13 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + postcss@8.5.3: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + optional: true + preact@10.25.0: {} prettier@3.5.2: {} @@ -6698,12 +6882,110 @@ snapshots: dependencies: queue-microtask: 1.2.3 + rxjs@7.8.2: + dependencies: + tslib: 2.8.1 + optional: true + safe-buffer@5.1.2: {} safe-buffer@5.2.1: {} safer-buffer@2.1.2: {} + sass-embedded-android-arm64@1.89.0: + optional: true + + sass-embedded-android-arm@1.89.0: + optional: true + + sass-embedded-android-ia32@1.89.0: + optional: true + + sass-embedded-android-riscv64@1.89.0: + optional: true + + sass-embedded-android-x64@1.89.0: + optional: true + + sass-embedded-darwin-arm64@1.89.0: + optional: true + + sass-embedded-darwin-x64@1.89.0: + optional: true + + sass-embedded-linux-arm64@1.89.0: + optional: true + + sass-embedded-linux-arm@1.89.0: + optional: true + + sass-embedded-linux-ia32@1.89.0: + optional: true + + sass-embedded-linux-musl-arm64@1.89.0: + optional: true + + sass-embedded-linux-musl-arm@1.89.0: + optional: true + + sass-embedded-linux-musl-ia32@1.89.0: + optional: true + + sass-embedded-linux-musl-riscv64@1.89.0: + optional: true + + sass-embedded-linux-musl-x64@1.89.0: + optional: true + + sass-embedded-linux-riscv64@1.89.0: + optional: true + + sass-embedded-linux-x64@1.89.0: + optional: true + + sass-embedded-win32-arm64@1.89.0: + optional: true + + sass-embedded-win32-ia32@1.89.0: + optional: true + + sass-embedded-win32-x64@1.89.0: + optional: true + + sass-embedded@1.89.0: + dependencies: + '@bufbuild/protobuf': 2.4.0 + buffer-builder: 0.2.0 + colorjs.io: 0.5.2 + immutable: 5.1.2 + rxjs: 7.8.2 + supports-color: 8.1.1 + sync-child-process: 1.0.2 + varint: 6.0.0 + optionalDependencies: + sass-embedded-android-arm: 1.89.0 + sass-embedded-android-arm64: 1.89.0 + sass-embedded-android-ia32: 1.89.0 + sass-embedded-android-riscv64: 1.89.0 + sass-embedded-android-x64: 1.89.0 + sass-embedded-darwin-arm64: 1.89.0 + sass-embedded-darwin-x64: 1.89.0 + sass-embedded-linux-arm: 1.89.0 + sass-embedded-linux-arm64: 1.89.0 + sass-embedded-linux-ia32: 1.89.0 + sass-embedded-linux-musl-arm: 1.89.0 + sass-embedded-linux-musl-arm64: 1.89.0 + sass-embedded-linux-musl-ia32: 1.89.0 + sass-embedded-linux-musl-riscv64: 1.89.0 + sass-embedded-linux-musl-x64: 1.89.0 + sass-embedded-linux-riscv64: 1.89.0 + sass-embedded-linux-x64: 1.89.0 + sass-embedded-win32-arm64: 1.89.0 + sass-embedded-win32-ia32: 1.89.0 + sass-embedded-win32-x64: 1.89.0 + optional: true + saxes@5.0.1: dependencies: xmlchars: 2.2.0 @@ -6945,6 +7227,14 @@ snapshots: symbol-tree@3.2.4: {} + sync-child-process@1.0.2: + dependencies: + sync-message-port: 1.1.3 + optional: true + + sync-message-port@1.1.3: + optional: true + tabbable@6.2.0: {} tar-fs@3.0.6: @@ -7142,6 +7432,9 @@ snapshots: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 + varint@6.0.0: + optional: true + vfile-message@4.0.2: dependencies: '@types/unist': 3.0.3 @@ -7152,13 +7445,13 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - vite-node@2.1.5(@types/node@22.9.3)(terser@5.32.0): + vite-node@2.1.5(@types/node@22.9.3)(sass-embedded@1.89.0)(terser@5.32.0): dependencies: cac: 6.7.14 debug: 4.3.7 es-module-lexer: 1.5.4 pathe: 1.1.2 - vite: 5.4.11(@types/node@22.9.3)(terser@5.32.0) + vite: 5.4.11(@types/node@22.9.3)(sass-embedded@1.89.0)(terser@5.32.0) transitivePeerDependencies: - '@types/node' - less @@ -7170,7 +7463,7 @@ snapshots: - supports-color - terser - vite@5.4.11(@types/node@20.17.7)(terser@5.32.0): + vite@5.4.11(@types/node@20.17.7)(sass-embedded@1.89.0)(terser@5.32.0): dependencies: esbuild: 0.21.5 postcss: 8.4.49 @@ -7178,9 +7471,10 @@ snapshots: optionalDependencies: '@types/node': 20.17.7 fsevents: 2.3.3 + sass-embedded: 1.89.0 terser: 5.32.0 - vite@5.4.11(@types/node@22.9.3)(terser@5.32.0): + vite@5.4.11(@types/node@22.9.3)(sass-embedded@1.89.0)(terser@5.32.0): dependencies: esbuild: 0.21.5 postcss: 8.4.49 @@ -7188,18 +7482,19 @@ snapshots: optionalDependencies: '@types/node': 22.9.3 fsevents: 2.3.3 + sass-embedded: 1.89.0 terser: 5.32.0 - vitepress-translation-helper@0.2.1(vitepress@1.5.0(@algolia/client-search@5.15.0)(@types/node@22.9.3)(axios@1.7.7)(postcss@8.4.49)(search-insights@2.17.1)(terser@5.32.0)(typescript@5.6.3))(vue@3.5.13(typescript@5.6.3)): + vitepress-translation-helper@0.2.1(vitepress@1.5.0(@algolia/client-search@5.15.0)(@types/node@22.9.3)(axios@1.7.7)(postcss@8.5.3)(sass-embedded@1.89.0)(search-insights@2.17.1)(terser@5.32.0)(typescript@5.6.3))(vue@3.5.13(typescript@5.6.3)): dependencies: minimist: 1.2.8 simple-git: 3.27.0 - vitepress: 1.5.0(@algolia/client-search@5.15.0)(@types/node@22.9.3)(axios@1.7.7)(postcss@8.4.49)(search-insights@2.17.1)(terser@5.32.0)(typescript@5.6.3) + vitepress: 1.5.0(@algolia/client-search@5.15.0)(@types/node@22.9.3)(axios@1.7.7)(postcss@8.5.3)(sass-embedded@1.89.0)(search-insights@2.17.1)(terser@5.32.0)(typescript@5.6.3) vue: 3.5.13(typescript@5.6.3) transitivePeerDependencies: - supports-color - vitepress@1.5.0(@algolia/client-search@5.15.0)(@types/node@22.9.3)(axios@1.7.7)(postcss@8.4.49)(search-insights@2.17.1)(terser@5.32.0)(typescript@5.6.3): + vitepress@1.5.0(@algolia/client-search@5.15.0)(@types/node@22.9.3)(axios@1.7.7)(postcss@8.5.3)(sass-embedded@1.89.0)(search-insights@2.17.1)(terser@5.32.0)(typescript@5.6.3): dependencies: '@docsearch/css': 3.8.0 '@docsearch/js': 3.8.0(@algolia/client-search@5.15.0)(search-insights@2.17.1) @@ -7208,7 +7503,7 @@ snapshots: '@shikijs/transformers': 1.23.1 '@shikijs/types': 1.23.1 '@types/markdown-it': 14.1.2 - '@vitejs/plugin-vue': 5.2.0(vite@5.4.11(@types/node@22.9.3)(terser@5.32.0))(vue@3.5.13(typescript@5.6.3)) + '@vitejs/plugin-vue': 5.2.0(vite@5.4.11(@types/node@22.9.3)(sass-embedded@1.89.0)(terser@5.32.0))(vue@3.5.13(typescript@5.6.3)) '@vue/devtools-api': 7.6.4 '@vue/shared': 3.5.13 '@vueuse/core': 11.3.0(vue@3.5.13(typescript@5.6.3)) @@ -7217,10 +7512,10 @@ snapshots: mark.js: 8.11.1 minisearch: 7.1.1 shiki: 1.23.1 - vite: 5.4.11(@types/node@22.9.3)(terser@5.32.0) + vite: 5.4.11(@types/node@22.9.3)(sass-embedded@1.89.0)(terser@5.32.0) vue: 3.5.13(typescript@5.6.3) optionalDependencies: - postcss: 8.4.49 + postcss: 8.5.3 transitivePeerDependencies: - '@algolia/client-search' - '@types/node' @@ -7249,10 +7544,10 @@ snapshots: - typescript - universal-cookie - vitest@2.1.5(@types/node@22.9.3)(@vitest/ui@2.1.5)(happy-dom@15.11.6)(jsdom@19.0.0)(terser@5.32.0): + vitest@2.1.5(@types/node@22.9.3)(@vitest/ui@2.1.5)(happy-dom@15.11.6)(jsdom@19.0.0)(sass-embedded@1.89.0)(terser@5.32.0): dependencies: '@vitest/expect': 2.1.5 - '@vitest/mocker': 2.1.5(vite@5.4.11(@types/node@22.9.3)(terser@5.32.0)) + '@vitest/mocker': 2.1.5(vite@5.4.11(@types/node@22.9.3)(sass-embedded@1.89.0)(terser@5.32.0)) '@vitest/pretty-format': 2.1.5 '@vitest/runner': 2.1.5 '@vitest/snapshot': 2.1.5 @@ -7268,8 +7563,8 @@ snapshots: tinyexec: 0.3.1 tinypool: 1.0.2 tinyrainbow: 1.2.0 - vite: 5.4.11(@types/node@22.9.3)(terser@5.32.0) - vite-node: 2.1.5(@types/node@22.9.3)(terser@5.32.0) + vite: 5.4.11(@types/node@22.9.3)(sass-embedded@1.89.0)(terser@5.32.0) + vite-node: 2.1.5(@types/node@22.9.3)(sass-embedded@1.89.0)(terser@5.32.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 22.9.3 From 4b4d88996a8c7bbecae3cdb976098fa5b04d87a8 Mon Sep 17 00:00:00 2001 From: zhiyuanzmj <260480378@qq.com> Date: Sun, 1 Jun 2025 21:37:17 +0800 Subject: [PATCH 2/5] chore: update vue --- packages/playground/package.json | 2 +- pnpm-lock.yaml | 21 ++++++++++++--------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/packages/playground/package.json b/packages/playground/package.json index 86fb91867..14da55457 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -9,7 +9,7 @@ "preview": "vite preview --port 4173" }, "dependencies": { - "vue": "~3.5.13" + "vue": "https://pkg.pr.new/vue@280bc48" }, "devDependencies": { "@types/node": "^20.17.31", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7cebaeba4..394552f05 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -78,21 +78,21 @@ importers: packages/playground: dependencies: vue: - specifier: ~3.5.13 - version: 3.5.13(typescript@5.6.3) + specifier: https://pkg.pr.new/vue@280bc48 + version: https://pkg.pr.new/vue@280bc48(typescript@5.6.3) devDependencies: '@types/node': specifier: ^20.17.31 version: 20.17.57 '@vitejs/plugin-vue': specifier: ^5.2.3 - version: 5.2.4(vite@5.4.19(@types/node@20.17.57)(sass-embedded@1.89.0)(terser@5.32.0))(vue@3.5.13(typescript@5.6.3)) + version: 5.2.4(vite@5.4.19(@types/node@20.17.57)(sass-embedded@1.89.0)(terser@5.32.0))(vue@https://pkg.pr.new/vue@280bc48(typescript@5.6.3)) '@vue/compiler-sfc': specifier: ~3.5.13 version: 3.5.13 '@vue/tsconfig': specifier: ^0.6.0 - version: 0.6.0(typescript@5.6.3)(vue@3.5.13(typescript@5.6.3)) + version: 0.6.0(typescript@5.6.3)(vue@https://pkg.pr.new/vue@280bc48(typescript@5.6.3)) vite: specifier: ^5.4.18 version: 5.4.19(@types/node@20.17.57)(sass-embedded@1.89.0)(terser@5.32.0) @@ -859,6 +859,7 @@ packages: '@vitejs/plugin-vue@5.2.4': resolution: {integrity: sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA==} + version: 5.2.4 engines: {node: ^18.0.0 || >=20.0.0} peerDependencies: vite: ^5.0.0 || ^6.0.0 @@ -1000,6 +1001,7 @@ packages: '@vue/server-renderer@3.5.13': resolution: {integrity: sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==} + version: 3.5.13 peerDependencies: vue: 3.5.13 @@ -1021,6 +1023,7 @@ packages: '@vue/tsconfig@0.6.0': resolution: {integrity: sha512-MHXNd6lzugsEHvuA6l1GqrF5jROqUon8sP/HInLPnthJiYvB0VvpHMywg7em1dBZfFZNBSkR68qH37zOdRHmCw==} + version: 0.6.0 peerDependencies: typescript: 5.x vue: ^3.3.0 @@ -4645,10 +4648,10 @@ snapshots: vite: 5.4.11(@types/node@22.9.3)(sass-embedded@1.89.0)(terser@5.32.0) vue: 3.5.13(typescript@5.6.3) - '@vitejs/plugin-vue@5.2.4(vite@5.4.19(@types/node@20.17.57)(sass-embedded@1.89.0)(terser@5.32.0))(vue@3.5.13(typescript@5.6.3))': + '@vitejs/plugin-vue@5.2.4(vite@5.4.19(@types/node@20.17.57)(sass-embedded@1.89.0)(terser@5.32.0))(vue@https://pkg.pr.new/vue@280bc48(typescript@5.6.3))': dependencies: vite: 5.4.19(@types/node@20.17.57)(sass-embedded@1.89.0)(terser@5.32.0) - vue: 3.5.13(typescript@5.6.3) + vue: https://pkg.pr.new/vue@280bc48(typescript@5.6.3) '@vitejs/plugin-vue@5.2.4(vite@5.4.19(@types/node@22.9.3)(sass-embedded@1.89.0)(terser@5.32.0))(vue@https://pkg.pr.new/vue@280bc48(typescript@5.6.3))': dependencies: @@ -4906,10 +4909,10 @@ snapshots: js-beautify: 1.15.1 vue-component-type-helpers: 2.0.21 - '@vue/tsconfig@0.6.0(typescript@5.6.3)(vue@3.5.13(typescript@5.6.3))': + '@vue/tsconfig@0.6.0(typescript@5.6.3)(vue@https://pkg.pr.new/vue@280bc48(typescript@5.6.3))': optionalDependencies: typescript: 5.6.3 - vue: 3.5.13(typescript@5.6.3) + vue: https://pkg.pr.new/vue@280bc48(typescript@5.6.3) '@vueuse/core@11.3.0(vue@3.5.13(typescript@5.6.3))': dependencies: @@ -7698,7 +7701,7 @@ snapshots: vite@5.4.11(@types/node@22.9.3)(sass-embedded@1.89.0)(terser@5.32.0): dependencies: esbuild: 0.21.5 - postcss: 8.4.49 + postcss: 8.5.3 rollup: 4.27.4 optionalDependencies: '@types/node': 22.9.3 From c8933a608de10a3a6093a2c15837deaeeda2bcf8 Mon Sep 17 00:00:00 2001 From: zhiyuanzmj <260480378@qq.com> Date: Tue, 3 Jun 2025 14:46:04 +0800 Subject: [PATCH 3/5] chore: update peerDependencies for pkg.pr.new --- packages/router/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/router/package.json b/packages/router/package.json index ec13488f0..fabde69d7 100644 --- a/packages/router/package.json +++ b/packages/router/package.json @@ -107,7 +107,7 @@ "test:e2e:bs-test": "node e2e/runner.mjs --local --env browserstack.local_chrome --tag browserstack" }, "peerDependencies": { - "vue": "^3.2.0" + "vue": "https://pkg.pr.new/vue@280bc48" }, "vetur": { "tags": "vetur/tags.json", From 01a808af8cf0946d28d11aa48889ed07869eb0ea Mon Sep 17 00:00:00 2001 From: zhiyuanzmj <260480378@qq.com> Date: Tue, 3 Jun 2025 15:17:03 +0800 Subject: [PATCH 4/5] chore: revert deps --- packages/router/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/router/package.json b/packages/router/package.json index fabde69d7..ec13488f0 100644 --- a/packages/router/package.json +++ b/packages/router/package.json @@ -107,7 +107,7 @@ "test:e2e:bs-test": "node e2e/runner.mjs --local --env browserstack.local_chrome --tag browserstack" }, "peerDependencies": { - "vue": "https://pkg.pr.new/vue@280bc48" + "vue": "^3.2.0" }, "vetur": { "tags": "vetur/tags.json", From 668f808b2fcbcf6bbd502e17f12e749d89bd979b Mon Sep 17 00:00:00 2001 From: zhiyuanzmj <260480378@qq.com> Date: Tue, 3 Jun 2025 18:14:49 +0800 Subject: [PATCH 5/5] chore: move createTemplateRefSetter to top setup --- packages/router/src/VaporRouterView.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/router/src/VaporRouterView.ts b/packages/router/src/VaporRouterView.ts index 36ceb6106..3a636d6f7 100644 --- a/packages/router/src/VaporRouterView.ts +++ b/packages/router/src/VaporRouterView.ts @@ -143,6 +143,8 @@ export const VaporRouterViewImpl = /*#__PURE__*/ defineVaporComponent({ : null }) + const setRef = createTemplateRefSetter() + return createDynamicComponent(() => { if (!ViewComponent.value) { return () => @@ -152,8 +154,6 @@ export const VaporRouterViewImpl = /*#__PURE__*/ defineVaporComponent({ }) } - const setRef = createTemplateRefSetter() - return () => { const component = createComponent( ViewComponent.value as VaporComponent,