]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
chore: Merge branch 'vapor' into edison/feat/vaporHydration
authordaiwei <daiwei521@126.com>
Fri, 20 Jun 2025 06:00:11 +0000 (14:00 +0800)
committerdaiwei <daiwei521@126.com>
Fri, 20 Jun 2025 06:00:11 +0000 (14:00 +0800)
13 files changed:
1  2 
packages/compiler-vapor/__tests__/transforms/__snapshots__/transformTemplateRef.spec.ts.snap
packages/compiler-vapor/__tests__/transforms/transformTemplateRef.spec.ts
packages/runtime-core/__tests__/hydration.spec.ts
packages/runtime-core/src/apiCreateApp.ts
packages/runtime-core/src/renderer.ts
packages/runtime-vapor/src/apiCreateDynamicComponent.ts
packages/runtime-vapor/src/apiCreateFor.ts
packages/runtime-vapor/src/apiCreateIf.ts
packages/runtime-vapor/src/component.ts
packages/runtime-vapor/src/componentSlots.ts
packages/runtime-vapor/src/vdomInterop.ts
packages/server-renderer/__tests__/ssrSlot.spec.ts
pnpm-lock.yaml

index d823c4ed0af05444d7482e9c98b0facbe444c387,cb520a4b2a0a2951bcff0626db587ca6230f421d..2d64e1ffe5288df6c5e97298468229f60da8af48
@@@ -43,24 -63,6 +63,15 @@@ export function render(_ctx) 
  }"
  `;
  
- exports[`compiler: template ref transform > static ref (PROD) 1`] = `
- "
-   const _setTemplateRef = _createTemplateRefSetter()
-   const n0 = t0()
-   _setTemplateRef(n0, foo)
-   return n0
- "
- `;
 +exports[`compiler: template ref transform > static ref (inline mode) 1`] = `
 +"
 +  const _setTemplateRef = _createTemplateRefSetter()
 +  const n0 = t0()
 +  _setTemplateRef(n0, foo)
 +  return n0
 +"
 +`;
 +
  exports[`compiler: template ref transform > static ref 1`] = `
  "import { createTemplateRefSetter as _createTemplateRefSetter, template as _template } from 'vue';
  const t0 = _template("<div></div>", true)
index 793c11cede3cab6bbe72bba6f72b76b7aad9d754,20519cf997fe0668819d98291972b4e920151a35..d5c418c16e86bcfec88e435c19600d40b454a47a
@@@ -1843,36 -1846,60 +1846,90 @@@ describe('SSR hydration', () => 
      }
    })
  
 +  describe('dynamic anchor', () => {
 +    test('two consecutive components', () => {
 +      const Comp = {
 +        render() {
 +          return createTextVNode('foo')
 +        },
 +      }
 +      const { vnode, container } = mountWithHydration(
 +        `<div><span></span>foo<!--[[-->foo<!--]]--><span></span></div>`,
 +        () => h('div', null, [h('span'), h(Comp), h(Comp), h('span')]),
 +      )
 +      expect(vnode.el).toBe(container.firstChild)
 +      expect(`Hydration children mismatch`).not.toHaveBeenWarned()
 +    })
 +
 +    test('multiple consecutive components', () => {
 +      const Comp = {
 +        render() {
 +          return createTextVNode('foo')
 +        },
 +      }
 +      const { vnode, container } = mountWithHydration(
 +        `<div><span></span>foo<!--[[-->foo<!--]]-->foo<span></span></div>`,
 +        () => h('div', null, [h('span'), h(Comp), h(Comp), h(Comp), h('span')]),
 +      )
 +      expect(vnode.el).toBe(container.firstChild)
 +      expect(`Hydration children mismatch`).not.toHaveBeenWarned()
 +    })
 +  })
 +
+   test('hmr reload child wrapped in KeepAlive', async () => {
+     const id = 'child-reload'
+     const Child = {
+       __hmrId: id,
+       template: `<div>foo</div>`,
+     }
+     createRecord(id, Child)
+     const appId = 'test-app-id'
+     const App = {
+       __hmrId: appId,
+       components: { Child },
+       template: `
+       <div>
+         <KeepAlive>
+           <Child />
+         </KeepAlive>
+       </div>
+       `,
+     }
+     const root = document.createElement('div')
+     root.innerHTML = await renderToString(h(App))
+     createSSRApp(App).mount(root)
+     expect(root.innerHTML).toBe('<div><div>foo</div></div>')
+     reload(id, {
+       __hmrId: id,
+       template: `<div>bar</div>`,
+     })
+     await nextTick()
+     expect(root.innerHTML).toBe('<div><div>bar</div></div>')
+   })
+   test('hmr root reload', async () => {
+     const appId = 'test-app-id'
+     const App = {
+       __hmrId: appId,
+       template: `<div>foo</div>`,
+     }
+     const root = document.createElement('div')
+     root.innerHTML = await renderToString(h(App))
+     createSSRApp(App).mount(root)
+     expect(root.innerHTML).toBe('<div>foo</div>')
+     reload(appId, {
+       __hmrId: appId,
+       template: `<div>bar</div>`,
+     })
+     await nextTick()
+     expect(root.innerHTML).toBe('<div>bar</div>')
+   })
    describe('mismatch handling', () => {
      test('text node', () => {
        const { container } = mountWithHydration(`foo`, () => 'bar')
Simple merge
index 7ae689a0aee74ff920ccd699b58bcaa27639032b,945e0f38d8729b9f97fb2ef42296d8dcf62b453f..01b6778cd7cdef8be47dc218919c4159aef6beaf
@@@ -9,8 -9,7 +9,8 @@@ import 
    insertionParent,
    resetInsertionState,
  } from './insertionState'
- import { isHydrating } from './dom/hydration'
 +import { DYNAMIC_COMPONENT_ANCHOR_LABEL } from '@vue/shared'
+ import { isHydrating, locateHydrationNode } from './dom/hydration'
  
  export function createDynamicComponent(
    getter: () => any,
  ): VaporFragment {
    const _insertionParent = insertionParent
    const _insertionAnchor = insertionAnchor
-   if (!isHydrating) resetInsertionState()
+   if (isHydrating) {
 -    locateHydrationNode()
++    locateHydrationNode(true)
+   } else {
+     resetInsertionState()
+   }
 -
 -  const frag = __DEV__
 -    ? new DynamicFragment('dynamic-component')
 -    : new DynamicFragment()
 +  const frag =
 +    isHydrating || __DEV__
 +      ? new DynamicFragment(DYNAMIC_COMPONENT_ANCHOR_LABEL)
 +      : new DynamicFragment()
    renderEffect(() => {
      const value = getter()
      frag.update(
index 7138d01a6af5e352c226ceb1c760d9ca79494175,62529149ad4ce09256fe2f3d931f1541b86c336e..488fb5b9e85e2db7c769c249bc26704571600685
@@@ -8,14 -9,9 +9,15 @@@ import 
    shallowReadArray,
    shallowRef,
    toReactive,
+   toReadonly,
  } from '@vue/reactivity'
 -import { getSequence, isArray, isObject, isString } from '@vue/shared'
 +import {
 +  FOR_ANCHOR_LABEL,
 +  getSequence,
 +  isArray,
 +  isObject,
 +  isString,
 +} from '@vue/shared'
  import { createComment, createTextNode } from './dom/node'
  import {
    type Block,
index 3e370592b32d118e36736ea7ecee0ec77beaf263,f573a61b16bdf80b475fd251e38f3110916e4b59..ba13df83d70375d3fc0e272ef3cca5f9e988ee27
@@@ -1,6 -1,5 +1,6 @@@
 +import { IF_ANCHOR_LABEL } from '@vue/shared'
  import { type Block, type BlockFn, DynamicFragment, insert } from './block'
- import { isHydrating } from './dom/hydration'
+ import { isHydrating, locateHydrationNode } from './dom/hydration'
  import {
    insertionAnchor,
    insertionParent,
@@@ -16,7 -15,11 +16,11 @@@ export function createIf
  ): Block {
    const _insertionParent = insertionParent
    const _insertionAnchor = insertionAnchor
-   if (!isHydrating) resetInsertionState()
+   if (isHydrating) {
 -    locateHydrationNode()
++    locateHydrationNode(true)
+   } else {
+     resetInsertionState()
+   }
  
    let frag: Block
    if (once) {
index 3ab49867e8d3afdc0b59185231fca9219ce5afbc,100c99cdb8af19f17437e323fbe19806c9769c97..216d284daa0ce198e2829183b87c89c46a68e97a
@@@ -105,7 -98,11 +105,11 @@@ export function createSlot
  ): Block {
    const _insertionParent = insertionParent
    const _insertionAnchor = insertionAnchor
-   if (!isHydrating) resetInsertionState()
+   if (isHydrating) {
 -    locateHydrationNode()
++    locateHydrationNode(true)
+   } else {
+     resetInsertionState()
+   }
  
    const instance = currentInstance as VaporComponentInstance
    const rawSlots = instance.rawSlots
index 4d1f4e6f184544dbebdb89811aad18e4c90bf2ed,b916a2c8ebb0106b1d7542db2a83c17005c2649e..0e3f70dc79ad625e03d8920d35767c40f123c6a2
@@@ -10,10 -9,11 +10,12 @@@ import 
    type Slots,
    type VNode,
    type VaporInteropInterface,
+   createInternalObject,
    createVNode,
    currentInstance,
 +  ensureHydrationRenderer,
    ensureRenderer,
+   isEmitListener,
    onScopeDispose,
    renderSlot,
    shallowRef,
index d17e34bc7c0b54477c855d79cb4a3df7253374d0,4cc7fd97ef2cd51609e85682a7a84535ee486d1a..e8435225481ac12831da2d8084b624481ecf5f81
@@@ -156,6 -154,38 +156,38 @@@ describe('ssr: slot', () => 
      ).toBe(`<div><p>1</p><p>2</p></div>`)
    })
  
 -    ).toBe(`<div><!--[--> new header <!--]--></div>`)
+   // #12438
+   test('async component slot with v-if true', async () => {
+     const Layout = defineAsyncComponent(() =>
+       Promise.resolve({
+         template: `<div><slot name="header">default header</slot></div>`,
+       }),
+     )
+     const LayoutLoader = {
+       setup(_: any, context: any) {
+         return () => h(Layout, {}, context.slots)
+       },
+     }
+     expect(
+       await renderToString(
+         createApp({
+           components: {
+             LayoutLoader,
+           },
+           template: `
+             <Suspense>
+               <LayoutLoader>
+                 <template v-if="true" #header>
+                   new header
+                 </template>
+               </LayoutLoader>
+             </Suspense>
+           `,
+         }),
+       ),
++    ).toBe(`<div><!--[--> new header <!--]--><!--slot--></div>`)
+   })
    // #11326
    test('dynamic component slot', async () => {
      expect(
diff --cc pnpm-lock.yaml
index c72eaa1ab1994564cdca35de0215739974529e3c,a8c6e9bb4262c1780a6bacccbb2b0b97bf476424..52d16261e9e39c1727b1bccaa93ef156a425f2da
@@@ -34,28 -34,28 +34,28 @@@ importers
      devDependencies:
        '@babel/parser':
          specifier: 'catalog:'
-         version: 7.26.10
+         version: 7.27.5
        '@babel/types':
          specifier: 'catalog:'
-         version: 7.26.10
+         version: 7.27.6
        '@rollup/plugin-alias':
          specifier: ^5.1.1
-         version: 5.1.1(rollup@4.37.0)
+         version: 5.1.1(rollup@4.44.0)
        '@rollup/plugin-commonjs':
          specifier: ^28.0.3
-         version: 28.0.3(rollup@4.37.0)
+         version: 28.0.6(rollup@4.44.0)
        '@rollup/plugin-json':
          specifier: ^6.1.0
-         version: 6.1.0(rollup@4.37.0)
+         version: 6.1.0(rollup@4.44.0)
        '@rollup/plugin-node-resolve':
          specifier: ^16.0.1
-         version: 16.0.1(rollup@4.37.0)
+         version: 16.0.1(rollup@4.44.0)
        '@rollup/plugin-replace':
          specifier: 5.0.4
-         version: 5.0.4(rollup@4.37.0)
+         version: 5.0.4(rollup@4.44.0)
        '@swc/core':
-         specifier: ^1.11.12
-         version: 1.11.12
+         specifier: ^1.11.24
 -        version: 1.12.3
++        version: 1.12.4
        '@types/hash-sum':
          specifier: ^1.0.2
          version: 1.0.2
@@@ -1297,75 -1288,71 +1288,71 @@@ packages
      cpu: [x64]
      os: [win32]
  
-   '@swc/core-darwin-arm64@1.11.12':
-     resolution: {integrity: sha512-x+iljeyIaVq7VCAy9pM0rqAb9GKA1cqDkqCxgFDxH3rcH+ykZa12vkDlTwysgkfLV8pr0KhCRHkwY+iAqPbO9g==}
 -  '@swc/core-darwin-arm64@1.12.3':
 -    resolution: {integrity: sha512-QCV9vQ/s27AMxm8j8MTDL/nDoiEMrANiENRrWnb0Fxvz/O39CajPVShp/W7HlOkzt1GYtUXPdQJpSKylugfrWw==}
++  '@swc/core-darwin-arm64@1.12.4':
++    resolution: {integrity: sha512-HihKfeitjZU2ab94Zf893sxzFryLKX0TweGsNXXOLNtkSMLw50auuYfpRM0BOL9/uXXtuCWgRIF6P030SAX5xQ==}
      engines: {node: '>=10'}
      cpu: [arm64]
      os: [darwin]
  
-   '@swc/core-darwin-x64@1.11.12':
-     resolution: {integrity: sha512-DwTXPdhJ/+scUR1iWttu3p0q8b5omF71xWFCw6UC99QBJQ4femmRtZNacgdiBkxZ5IbUlxd8m5UzMBc/+H5rWw==}
 -  '@swc/core-darwin-x64@1.12.3':
 -    resolution: {integrity: sha512-LylCMfzGhdvl5tyKaTT9ePetHUX7wSsST7hxWiHzS+cUMj7FnhcfdEr6kcNVT7y1RJn3fCvuv7T98ZB+T2q3HA==}
++  '@swc/core-darwin-x64@1.12.4':
++    resolution: {integrity: sha512-meYCXHyYb6RDdu2N5PNAf0EelyxPBFhRcVo4kBFLuvuNb0m6EUg///VWy8MUMXq9/s9uzGS9kJVXXdRdr/d6FA==}
      engines: {node: '>=10'}
      cpu: [x64]
      os: [darwin]
  
-   '@swc/core-linux-arm-gnueabihf@1.11.12':
-     resolution: {integrity: sha512-ls9b3lX2x3tnJKGn6zSDFK1ohdmdUkE6nwqrVmdzqAwr/Q5i2ij/dmkOFCloItc2PHNVtRGGsC4+FYSm1EBLjg==}
 -  '@swc/core-linux-arm-gnueabihf@1.12.3':
 -    resolution: {integrity: sha512-DQODb7S+q+pwQY41Azcavwb2rb4rGxP70niScRDxB9X68hHOM9D0w9fxzC+Nr3AHcPSmVJUYUIiq5h38O5hVgQ==}
++  '@swc/core-linux-arm-gnueabihf@1.12.4':
++    resolution: {integrity: sha512-szfDbf7mE8V64of0q/LSqbk+em+T+TD3uqnH40Z7Qu/aL8vi5CHgyLjWG2SLkLLpyjgkAUF6AKrupgnBYcC2NA==}
      engines: {node: '>=10'}
      cpu: [arm]
      os: [linux]
  
-   '@swc/core-linux-arm64-gnu@1.11.12':
-     resolution: {integrity: sha512-F0nMLl5kYbew5GjHq7B21poE5VOPgSsoQ0VEXd4Fji3rR0d0gLoK2r+JP92XmpRxAzdzpdak1DQczWMyf2BQAQ==}
 -  '@swc/core-linux-arm64-gnu@1.12.3':
 -    resolution: {integrity: sha512-nTxtJSq78AjeaQBueYImoFBs5j7qXbgOxtirpyt8jE29NQBd0VFzDzRBhkr6I9jq0hNiChgMkqBN4eUkEQjytg==}
++  '@swc/core-linux-arm64-gnu@1.12.4':
++    resolution: {integrity: sha512-n0IY76w+Scx8m3HIVRvLkoResuwsQgjDfAk9bxn99dq4leQO+mE0fkPl0Yw/1BIsPh+kxGfopIJH9zsZ1Z2YrA==}
      engines: {node: '>=10'}
      cpu: [arm64]
      os: [linux]
-     libc: [glibc]
  
-   '@swc/core-linux-arm64-musl@1.11.12':
-     resolution: {integrity: sha512-3dlHowBgYBgi23ZBSvFHe/tD3PowEhxfVAy08NckWBeaG/e4dyrYMhAiccfuy6jkDYXEF1L2DtpRtxGImxoaPg==}
 -  '@swc/core-linux-arm64-musl@1.12.3':
 -    resolution: {integrity: sha512-lBGvC5UgPSxqLr/y1NZxQhyRQ7nXy3/Ec1Z47YNXtqtpKiG1EcOGPyS0UZgwiYQkXqq8NBFMHnyHmpKnXTvRDA==}
++  '@swc/core-linux-arm64-musl@1.12.4':
++    resolution: {integrity: sha512-wE5jmFi5cEQyLy8WmCWmNwfKETrnzy2D8YNi/xpYWpLPWqPhcelpa6tswkfYlbsMmmOh7hQNoTba1QdGu0jvHQ==}
      engines: {node: '>=10'}
      cpu: [arm64]
      os: [linux]
-     libc: [musl]
  
-   '@swc/core-linux-x64-gnu@1.11.12':
-     resolution: {integrity: sha512-ToEWzLA5lXlYCbGNzMow6+uy4zhpXKQyFb3RHM8AYVb0n4pNPWvwF+8ybWDimeGBBaHJLgRQsUMuJ4NV6urSrA==}
 -  '@swc/core-linux-x64-gnu@1.12.3':
 -    resolution: {integrity: sha512-61wZ8hwxNYzBY9MCWB50v90ICzdIhOuPk1O1qXswz9AXw5O6iQStEBHQ1rozPkfQ/rmhepk0pOf/6LCwssJOwg==}
++  '@swc/core-linux-x64-gnu@1.12.4':
++    resolution: {integrity: sha512-6S50Xd/7ePjEwrXyHMxpKTZ+KBrgUwMA8hQPbArUOwH4S5vHBr51heL0iXbUkppn1bkSr0J0IbOove5hzn+iqQ==}
      engines: {node: '>=10'}
      cpu: [x64]
      os: [linux]
-     libc: [glibc]
  
-   '@swc/core-linux-x64-musl@1.11.12':
-     resolution: {integrity: sha512-N5xF+MDZr79e8gvVXX3YP1bMeaRL16Kst/R7bGUQvvCq1UGD86qMUtSr5KfCl0h5SNKP2YKtkN98HQLnGEikow==}
 -  '@swc/core-linux-x64-musl@1.12.3':
 -    resolution: {integrity: sha512-NNeBiTpCgWt80vumTKVoaj6Fa/ZjUcaNQNM7np3PIgB8EbuXfyztboV7vUxpkmD/lUgsk8GlEFYViHvo6VMefQ==}
++  '@swc/core-linux-x64-musl@1.12.4':
++    resolution: {integrity: sha512-hbYRyaHhC13vYKuGG5BrAG5fjjWEQFfQetuFp/4QKEoXDzdnabJoixxWTQACDL3m0JW32nJ+gUzsYIPtFYkwXg==}
      engines: {node: '>=10'}
      cpu: [x64]
      os: [linux]
-     libc: [musl]
  
-   '@swc/core-win32-arm64-msvc@1.11.12':
-     resolution: {integrity: sha512-/PYiyYWSQRtMoOamMfhAfq0y3RWk9LpUZ49yetJn2XI85TRkL5u2DTLLNkTPvoTiCfo0eZOJF9t5b7Z6ly0iHQ==}
 -  '@swc/core-win32-arm64-msvc@1.12.3':
 -    resolution: {integrity: sha512-fxraM7exaPb1/W0CoHW45EFNOQUQh0nonBEcNFm2iv095mziBwttyxZyQBoDkQocpkd5NtsZw3xW5FTBPnn+Vw==}
++  '@swc/core-win32-arm64-msvc@1.12.4':
++    resolution: {integrity: sha512-e6EbfjPL8GA/bb1lc9Omtxjlz+1ThTsAuBsy4Q3Kpbuh6B3jclg8KzxU/6t91v23wG593mieTyR5f3Pr7X3AWw==}
      engines: {node: '>=10'}
      cpu: [arm64]
      os: [win32]
  
-   '@swc/core-win32-ia32-msvc@1.11.12':
-     resolution: {integrity: sha512-Dxm6W4p0YVNIPnYh/Kf/9zPeaD6sVAGDQN+2c52l4m/4gR5aDgE+xg6k5lAt4ok7LDXInL3n1nwYEG7Tc4JcSQ==}
 -  '@swc/core-win32-ia32-msvc@1.12.3':
 -    resolution: {integrity: sha512-FFIhMPXIDjRcewomwbYGPvem7Fj76AsuzbRahnAyp+OzJwrrtxVmra/kyUCfj4kix7vdGByY0WvVfiVCf5b7Mg==}
++  '@swc/core-win32-ia32-msvc@1.12.4':
++    resolution: {integrity: sha512-RG2FzmllBTUf4EksANlIvLckcBrLZEA0t13LIa6L213UZKQfEuDNHezqESgoVhJMg2S/tWauitATOCFgZNSmjg==}
      engines: {node: '>=10'}
      cpu: [ia32]
      os: [win32]
  
-   '@swc/core-win32-x64-msvc@1.11.12':
-     resolution: {integrity: sha512-PP8RSJTcda5nUHJGkbKeQ20OC+L2LxcbjYpyha1OqIFyu/qWG9zMMYVaTLKJL7zsJ14pIM/mpS3u+CJARQ+Hzw==}
 -  '@swc/core-win32-x64-msvc@1.12.3':
 -    resolution: {integrity: sha512-Sf4iSg+IYT5AzFSDDmii08DfeKcvtkVxIuo+uS8BJMbiLjFNjgMkkVlBthknGyJcSK15ncg9248XjnM4jU8DZA==}
++  '@swc/core-win32-x64-msvc@1.12.4':
++    resolution: {integrity: sha512-oRHKnZlR83zaMeVUCmHENa4j5uNRAWbmEpjYbzRcfC45LPFNWKGWGAGERLx0u87XMUtTGqnVYxnBTHN/rzDHOw==}
      engines: {node: '>=10'}
      cpu: [x64]
      os: [win32]
  
-   '@swc/core@1.11.12':
-     resolution: {integrity: sha512-Jwx9JH1O6Vm7BS9AEPLlquJNSy6Lbt/kiJIlxSslDuBLeDJD13lXQfitvazqgRwGEHx1QmwEq8mc0OSristtRw==}
 -  '@swc/core@1.12.3':
 -    resolution: {integrity: sha512-c4NeXW8P3gPqcFwtm+4aH+F2Cj5KJLMiLaKhSj3mpv19glq+jmekomdktAw/VHyjsXlsmouOeNWrk8rVlkCRsg==}
++  '@swc/core@1.12.4':
++    resolution: {integrity: sha512-hn30ebV4njAn0NAUM+3a0qCF+MJgqTNSrfA/hUAbC6TVjOQy2OYGQwkUvCu/V7S2+rZxrUsTpKOnZ7qqECZV9Q==}
      engines: {node: '>=10'}
      peerDependencies:
-       '@swc/helpers': '*'
+       '@swc/helpers': '>=0.5.17'
      peerDependenciesMeta:
        '@swc/helpers':
          optional: true
@@@ -4426,130 -4403,130 +4403,130 @@@ snapshots
        '@types/resolve': 1.20.2
        deepmerge: 4.3.1
        is-module: 1.0.0
-       resolve: 1.22.8
+       resolve: 1.22.10
      optionalDependencies:
-       rollup: 4.37.0
+       rollup: 4.44.0
  
-   '@rollup/plugin-replace@5.0.4(rollup@4.37.0)':
+   '@rollup/plugin-replace@5.0.4(rollup@4.44.0)':
      dependencies:
-       '@rollup/pluginutils': 5.1.0(rollup@4.37.0)
+       '@rollup/pluginutils': 5.2.0(rollup@4.44.0)
        magic-string: 0.30.17
      optionalDependencies:
-       rollup: 4.37.0
+       rollup: 4.44.0
  
-   '@rollup/pluginutils@5.1.0(rollup@4.37.0)':
+   '@rollup/pluginutils@5.2.0(rollup@4.44.0)':
      dependencies:
-       '@types/estree': 1.0.6
+       '@types/estree': 1.0.8
        estree-walker: 2.0.2
-       picomatch: 2.3.1
+       picomatch: 4.0.2
      optionalDependencies:
-       rollup: 4.37.0
+       rollup: 4.44.0
  
-   '@rollup/rollup-android-arm-eabi@4.37.0':
+   '@rollup/rollup-android-arm-eabi@4.44.0':
      optional: true
  
-   '@rollup/rollup-android-arm64@4.37.0':
+   '@rollup/rollup-android-arm64@4.44.0':
      optional: true
  
-   '@rollup/rollup-darwin-arm64@4.37.0':
+   '@rollup/rollup-darwin-arm64@4.44.0':
      optional: true
  
-   '@rollup/rollup-darwin-x64@4.37.0':
+   '@rollup/rollup-darwin-x64@4.44.0':
      optional: true
  
-   '@rollup/rollup-freebsd-arm64@4.37.0':
+   '@rollup/rollup-freebsd-arm64@4.44.0':
      optional: true
  
-   '@rollup/rollup-freebsd-x64@4.37.0':
+   '@rollup/rollup-freebsd-x64@4.44.0':
      optional: true
  
-   '@rollup/rollup-linux-arm-gnueabihf@4.37.0':
+   '@rollup/rollup-linux-arm-gnueabihf@4.44.0':
      optional: true
  
-   '@rollup/rollup-linux-arm-musleabihf@4.37.0':
+   '@rollup/rollup-linux-arm-musleabihf@4.44.0':
      optional: true
  
-   '@rollup/rollup-linux-arm64-gnu@4.37.0':
+   '@rollup/rollup-linux-arm64-gnu@4.44.0':
      optional: true
  
-   '@rollup/rollup-linux-arm64-musl@4.37.0':
+   '@rollup/rollup-linux-arm64-musl@4.44.0':
      optional: true
  
-   '@rollup/rollup-linux-loongarch64-gnu@4.37.0':
+   '@rollup/rollup-linux-loongarch64-gnu@4.44.0':
      optional: true
  
-   '@rollup/rollup-linux-powerpc64le-gnu@4.37.0':
+   '@rollup/rollup-linux-powerpc64le-gnu@4.44.0':
      optional: true
  
-   '@rollup/rollup-linux-riscv64-gnu@4.37.0':
+   '@rollup/rollup-linux-riscv64-gnu@4.44.0':
      optional: true
  
-   '@rollup/rollup-linux-riscv64-musl@4.37.0':
+   '@rollup/rollup-linux-riscv64-musl@4.44.0':
      optional: true
  
-   '@rollup/rollup-linux-s390x-gnu@4.37.0':
+   '@rollup/rollup-linux-s390x-gnu@4.44.0':
      optional: true
  
-   '@rollup/rollup-linux-x64-gnu@4.37.0':
+   '@rollup/rollup-linux-x64-gnu@4.44.0':
      optional: true
  
-   '@rollup/rollup-linux-x64-musl@4.37.0':
+   '@rollup/rollup-linux-x64-musl@4.44.0':
      optional: true
  
-   '@rollup/rollup-win32-arm64-msvc@4.37.0':
+   '@rollup/rollup-win32-arm64-msvc@4.44.0':
      optional: true
  
-   '@rollup/rollup-win32-ia32-msvc@4.37.0':
+   '@rollup/rollup-win32-ia32-msvc@4.44.0':
      optional: true
  
-   '@rollup/rollup-win32-x64-msvc@4.37.0':
+   '@rollup/rollup-win32-x64-msvc@4.44.0':
      optional: true
  
-   '@swc/core-darwin-arm64@1.11.12':
 -  '@swc/core-darwin-arm64@1.12.3':
++  '@swc/core-darwin-arm64@1.12.4':
      optional: true
  
-   '@swc/core-darwin-x64@1.11.12':
 -  '@swc/core-darwin-x64@1.12.3':
++  '@swc/core-darwin-x64@1.12.4':
      optional: true
  
-   '@swc/core-linux-arm-gnueabihf@1.11.12':
 -  '@swc/core-linux-arm-gnueabihf@1.12.3':
++  '@swc/core-linux-arm-gnueabihf@1.12.4':
      optional: true
  
-   '@swc/core-linux-arm64-gnu@1.11.12':
 -  '@swc/core-linux-arm64-gnu@1.12.3':
++  '@swc/core-linux-arm64-gnu@1.12.4':
      optional: true
  
-   '@swc/core-linux-arm64-musl@1.11.12':
 -  '@swc/core-linux-arm64-musl@1.12.3':
++  '@swc/core-linux-arm64-musl@1.12.4':
      optional: true
  
-   '@swc/core-linux-x64-gnu@1.11.12':
 -  '@swc/core-linux-x64-gnu@1.12.3':
++  '@swc/core-linux-x64-gnu@1.12.4':
      optional: true
  
-   '@swc/core-linux-x64-musl@1.11.12':
 -  '@swc/core-linux-x64-musl@1.12.3':
++  '@swc/core-linux-x64-musl@1.12.4':
      optional: true
  
-   '@swc/core-win32-arm64-msvc@1.11.12':
 -  '@swc/core-win32-arm64-msvc@1.12.3':
++  '@swc/core-win32-arm64-msvc@1.12.4':
      optional: true
  
-   '@swc/core-win32-ia32-msvc@1.11.12':
 -  '@swc/core-win32-ia32-msvc@1.12.3':
++  '@swc/core-win32-ia32-msvc@1.12.4':
      optional: true
  
-   '@swc/core-win32-x64-msvc@1.11.12':
 -  '@swc/core-win32-x64-msvc@1.12.3':
++  '@swc/core-win32-x64-msvc@1.12.4':
      optional: true
  
-   '@swc/core@1.11.12':
 -  '@swc/core@1.12.3':
++  '@swc/core@1.12.4':
      dependencies:
        '@swc/counter': 0.1.3
-       '@swc/types': 0.1.19
+       '@swc/types': 0.1.23
      optionalDependencies:
-       '@swc/core-darwin-arm64': 1.11.12
-       '@swc/core-darwin-x64': 1.11.12
-       '@swc/core-linux-arm-gnueabihf': 1.11.12
-       '@swc/core-linux-arm64-gnu': 1.11.12
-       '@swc/core-linux-arm64-musl': 1.11.12
-       '@swc/core-linux-x64-gnu': 1.11.12
-       '@swc/core-linux-x64-musl': 1.11.12
-       '@swc/core-win32-arm64-msvc': 1.11.12
-       '@swc/core-win32-ia32-msvc': 1.11.12
-       '@swc/core-win32-x64-msvc': 1.11.12
 -      '@swc/core-darwin-arm64': 1.12.3
 -      '@swc/core-darwin-x64': 1.12.3
 -      '@swc/core-linux-arm-gnueabihf': 1.12.3
 -      '@swc/core-linux-arm64-gnu': 1.12.3
 -      '@swc/core-linux-arm64-musl': 1.12.3
 -      '@swc/core-linux-x64-gnu': 1.12.3
 -      '@swc/core-linux-x64-musl': 1.12.3
 -      '@swc/core-win32-arm64-msvc': 1.12.3
 -      '@swc/core-win32-ia32-msvc': 1.12.3
 -      '@swc/core-win32-x64-msvc': 1.12.3
++      '@swc/core-darwin-arm64': 1.12.4
++      '@swc/core-darwin-x64': 1.12.4
++      '@swc/core-linux-arm-gnueabihf': 1.12.4
++      '@swc/core-linux-arm64-gnu': 1.12.4
++      '@swc/core-linux-arm64-musl': 1.12.4
++      '@swc/core-linux-x64-gnu': 1.12.4
++      '@swc/core-linux-x64-musl': 1.12.4
++      '@swc/core-win32-arm64-msvc': 1.12.4
++      '@swc/core-win32-ia32-msvc': 1.12.4
++      '@swc/core-win32-x64-msvc': 1.12.4
  
    '@swc/counter@0.1.3': {}