]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
Merge remote-tracking branch 'upstream/main'
author三咲智子 Kevin Deng <sxzz@sxzz.moe>
Sun, 14 Jan 2024 15:33:08 +0000 (23:33 +0800)
committer三咲智子 Kevin Deng <sxzz@sxzz.moe>
Sun, 14 Jan 2024 15:33:08 +0000 (23:33 +0800)
25 files changed:
1  2 
package.json
packages/compiler-core/package.json
packages/compiler-dom/package.json
packages/compiler-sfc/package.json
packages/compiler-sfc/src/compileScript.ts
packages/compiler-ssr/package.json
packages/reactivity/package.json
packages/runtime-core/package.json
packages/runtime-core/src/apiWatch.ts
packages/runtime-core/src/component.ts
packages/runtime-core/src/componentProps.ts
packages/runtime-core/src/componentRenderUtils.ts
packages/runtime-core/src/directives.ts
packages/runtime-core/src/index.ts
packages/runtime-core/src/renderer.ts
packages/runtime-core/src/scheduler.ts
packages/runtime-dom/package.json
packages/server-renderer/package.json
packages/shared/package.json
packages/vue-compat/package.json
packages/vue/package.json
pnpm-lock.yaml
rollup.config.js
scripts/dev.js
vitest.config.ts

diff --cc package.json
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index b6c0d5f838de2659b207f1402507e7877ad83884,bc10547824e2403c70832d1f63b56e26454a905c..3a05fff2f7ff6bb7172c1aca9fc7f5079929f48c
@@@ -25,11 -30,16 +25,10 @@@ import 
    currentInstance,
    isInSSRComponentSetup,
    setCurrentInstance,
-   unsetCurrentInstance,
  } from './component'
 -import {
 -  ErrorCodes,
 -  callWithAsyncErrorHandling,
 -  callWithErrorHandling,
 -} from './errorHandling'
 -import { queuePostRenderEffect } from './renderer'
 +import { handleError as handleErrorWithInstance } from './errorHandling'
 +import { createPostRenderScheduler } from './renderer'
  import { warn } from './warning'
 -import { DeprecationTypes } from './compat/compatConfig'
 -import { checkCompatEnabled, isCompatEnabled } from './compat/compatConfig'
  import type { ObjectWatchOptionItem } from './componentOptions'
  import { useSSRContext } from './helpers/useSsrContext'
  
index e49bf0dcdbb1d85b684ba0e322cde238498713d5,088f4da3c6ed7394848ecaafcf9639ea213fb4f9..1a460cc3463ce806263994e144a580a9fcf3ba98
@@@ -31,8 -30,8 +31,7 @@@ import 
    type ComponentInternalInstance,
    type ComponentOptions,
    type ConcreteComponent,
 -  type Data,
    setCurrentInstance,
-   unsetCurrentInstance,
  } from './component'
  import { isEmitListener } from './componentEmits'
  import { InternalObjectKey } from './vnode'
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc pnpm-lock.yaml
index b9689e7ef5cd1fb773e24830a8f281d35c185826,bdb75eeb3ca7bcc74e3ee376f7648a206c1fc600..a84db884a01c806e0a3f7e21c89ba92eaa76d723
@@@ -16,7 -16,7 +16,7 @@@ importers
          version: 7.23.6
        '@codspeed/vitest-plugin':
          specifier: ^2.3.1
-         version: 2.3.1(vite@5.0.10)(vitest@1.1.1)
 -        version: 2.3.1(vite@5.0.7)(vitest@1.1.3)
++        version: 2.3.1(vite@5.0.10)(vitest@1.2.0)
        '@rollup/plugin-alias':
          specifier: ^5.0.1
          version: 5.0.1(rollup@4.4.1)
@@@ -42,8 -42,8 +42,8 @@@
          specifier: ^1.2.5
          version: 1.2.5
        '@types/node':
-         specifier: ^20.10.6
-         version: 20.10.6
+         specifier: ^20.10.7
 -        version: 20.10.7
++        version: 20.11.0
        '@types/semver':
          specifier: ^7.5.6
          version: 7.5.6
@@@ -54,8 -54,8 +54,8 @@@
          specifier: ^6.17.0
          version: 6.17.0(eslint@8.56.0)(typescript@5.2.2)
        '@vitest/coverage-istanbul':
-         specifier: ^1.1.1
-         version: 1.1.1(vitest@1.1.1)
+         specifier: ^1.1.3
 -        version: 1.1.3(vitest@1.1.3)
++        version: 1.2.0(vitest@1.2.0)
        '@vue/consolidate':
          specifier: 0.17.3
          version: 0.17.3
          version: 5.2.2
        vite:
          specifier: ^5.0.5
-         version: 5.0.10(@types/node@20.10.6)(terser@5.22.0)
 -        version: 5.0.7(@types/node@20.10.7)(terser@5.22.0)
++        version: 5.0.10(@types/node@20.11.0)(terser@5.22.0)
        vitest:
-         specifier: ^1.1.1
-         version: 1.1.1(@types/node@20.10.6)(jsdom@23.0.1)(terser@5.22.0)
+         specifier: ^1.1.3
 -        version: 1.1.3(@types/node@20.10.7)(jsdom@23.2.0)(terser@5.22.0)
++        version: 1.2.0(@types/node@20.11.0)(jsdom@23.2.0)(terser@5.22.0)
  
    packages/compiler-core:
      dependencies:
      dependencies:
        '@vue/repl':
          specifier: ^3.1.1
-         version: 3.2.0
 -        version: 3.1.1
++        version: 3.3.0
        file-saver:
          specifier: ^2.0.5
          version: 2.0.5
      devDependencies:
        '@vitejs/plugin-vue':
          specifier: ^4.4.0
 -        version: 4.4.0(vite@5.0.7)(vue@packages+vue)
 +        version: 4.4.0(vite@5.0.10)(vue@packages+vue)
        vite:
          specifier: ^5.0.5
-         version: 5.0.10(@types/node@20.10.6)(terser@5.22.0)
 -        version: 5.0.7(@types/node@20.10.7)(terser@5.22.0)
++        version: 5.0.10(@types/node@20.11.0)(terser@5.22.0)
  
    packages/shared: {}
  
          specifier: workspace:*
          version: link:../vue
  
-         version: 5.0.2(@types/node@20.10.6)(terser@5.22.0)
 +  packages/vue-vapor:
 +    dependencies:
 +      '@vue/compiler-vapor':
 +        specifier: workspace:*
 +        version: link:../compiler-vapor
 +      '@vue/runtime-vapor':
 +        specifier: workspace:*
 +        version: link:../runtime-vapor
 +
 +  playground:
 +    dependencies:
 +      vue:
 +        specifier: workspace:*
 +        version: link:../packages/vue
 +    devDependencies:
 +      '@vitejs/plugin-vue':
 +        specifier: ^4.5.0
 +        version: 4.5.0(vite@5.0.2)(vue@packages+vue)
 +      vite:
 +        specifier: ^5.0.2
-         version: 0.2.1(@types/node@20.10.6)(terser@5.22.0)(vite@5.0.2)
++        version: 5.0.2(@types/node@20.11.0)(terser@5.22.0)
 +      vite-hyper-config:
 +        specifier: ^0.2.1
++        version: 0.2.1(@types/node@20.11.0)(terser@5.22.0)(vite@5.0.2)
 +      vite-plugin-inspect:
 +        specifier: ^0.7.42
 +        version: 0.7.42(rollup@4.4.1)(vite@5.0.2)
 +
  packages:
  
    /@aashutoshrathi/word-wrap@1.2.6:
        '@jridgewell/trace-mapping': 0.3.20
      dev: true
  
 -  /@asamuzakjp/dom-selector@2.0.1:
 -    resolution: {integrity: sha512-QJAJffmCiymkv6YyQ7voyQb5caCth6jzZsQncYCpHXrJ7RqdYG5y43+is8mnFcYubdOkr7cn1+na9BdFMxqw7w==}
 +  /@antfu/utils@0.7.6:
 +    resolution: {integrity: sha512-pvFiLP2BeOKA/ZOS6jxx4XhKzdVLHDhGlFEaZ2flWWYf2xOqVniqpk38I04DFRyz+L0ASggl7SkItTc+ZLju4w==}
 +    dev: true
 +
++  /@asamuzakjp/dom-selector@2.0.2:
++    resolution: {integrity: sha512-x1KXOatwofR6ZAYzXRBL5wrdV0vwNxlTCK9NCuLqAzQYARqGcvFwiJA6A1ERuh+dgeA4Dxm3JBYictIes+SqUQ==}
+     dependencies:
+       bidi-js: 1.0.3
+       css-tree: 2.3.1
+       is-potential-custom-element-name: 1.0.1
+     dev: true
    /@babel/code-frame@7.23.5:
      resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==}
      engines: {node: '>=6.9.0'}
        node-gyp-build: 4.7.1
      dev: true
  
-   /@codspeed/vitest-plugin@2.3.1(vite@5.0.10)(vitest@1.1.1):
 -  /@codspeed/vitest-plugin@2.3.1(vite@5.0.7)(vitest@1.1.3):
++  /@codspeed/vitest-plugin@2.3.1(vite@5.0.10)(vitest@1.2.0):
      resolution: {integrity: sha512-/e4G2B/onX/hG/EjUU/NpDxnIryeTDamVRTBeWfgQDoex3g7GDzTwoQktaU5l/Asw3ZjEErQg+oQVToQ6jYZlA==}
      peerDependencies:
        vite: ^4.2.0 || ^5.0.0
        vitest: '>=1.0.0-beta.4 || >=1'
      dependencies:
        '@codspeed/core': 2.3.1
-       vite: 5.0.10(@types/node@20.10.6)(terser@5.22.0)
-       vitest: 1.1.1(@types/node@20.10.6)(jsdom@23.0.1)(terser@5.22.0)
 -      vite: 5.0.7(@types/node@20.10.7)(terser@5.22.0)
 -      vitest: 1.1.3(@types/node@20.10.7)(jsdom@23.2.0)(terser@5.22.0)
++      vite: 5.0.10(@types/node@20.11.0)(terser@5.22.0)
++      vitest: 1.2.0(@types/node@20.11.0)(jsdom@23.2.0)(terser@5.22.0)
      dev: true
  
    /@esbuild/aix-ppc64@0.19.10:
      dev: true
      optional: true
  
-   /@puppeteer/browsers@1.9.0:
-     resolution: {integrity: sha512-QwguOLy44YBGC8vuPP2nmpX4MUN2FzWbsnvZJtiCzecU3lHmVZkaC1tq6rToi9a200m8RzlVtDyxCS0UIDrxUg==}
 +  /@polka/url@1.0.0-next.23:
 +    resolution: {integrity: sha512-C16M+IYz0rgRhWZdCmK+h58JMv8vijAA61gmz2rspCSwKwzBebpdcsiUmwrtJRdphuY30i6BSLEOP8ppbNLyLg==}
 +    dev: true
 +
+   /@puppeteer/browsers@1.9.1:
+     resolution: {integrity: sha512-PuvK6xZzGhKPvlx3fpfdM2kYY3P/hB1URtK8wA7XUJ6prn6pp22zvJHu48th0SGcHL9SutbPHrFuQgfXTFobWA==}
      engines: {node: '>=16.3.0'}
      hasBin: true
      dependencies:
      resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==}
      dev: true
  
-   /@types/node@20.10.6:
-     resolution: {integrity: sha512-Vac8H+NlRNNlAmDfGUP7b5h/KA+AtWIzuXy0E6OyP8f1tCLYAtPvKRRDJjAPqhpCb0t6U2j7/xqAuLEebW2kiw==}
 -  /@types/node@20.10.7:
 -    resolution: {integrity: sha512-fRbIKb8C/Y2lXxB5eVMj4IU7xpdox0Lh8bUPEdtLysaylsml1hOOx1+STloRs/B9nf7C6kPRmmg/V7aQW7usNg==}
++  /@types/node@20.11.0:
++    resolution: {integrity: sha512-o9bjXmDNcF7GbM4CNQpmi+TutCgap/K3w1JyKgxAjqx41zp9qlIAVFi0IhCNsJcXolEqLWhbFbEeL0PvYm4pcQ==}
      dependencies:
        undici-types: 5.26.5
      dev: true
      resolution: {integrity: sha512-Km7XAtUIduROw7QPgvcft0lIupeG8a8rdKL8RiSyKvlE7dYY31fEn41HVuQsRFDuROA8tA4K2UVL+WdfFmErBA==}
      requiresBuild: true
      dependencies:
-       '@types/node': 20.10.6
 -      '@types/node': 20.10.7
++      '@types/node': 20.11.0
      dev: true
      optional: true
  
        vite: ^4.0.0
        vue: ^3.2.25
      dependencies:
-       vite: 5.0.10(@types/node@20.10.6)(terser@5.22.0)
 -      vite: 5.0.7(@types/node@20.10.7)(terser@5.22.0)
++      vite: 5.0.10(@types/node@20.11.0)(terser@5.22.0)
 +      vue: link:packages/vue
 +    dev: true
 +
 +  /@vitejs/plugin-vue@4.5.0(vite@5.0.2)(vue@packages+vue):
 +    resolution: {integrity: sha512-a2WSpP8X8HTEww/U00bU4mX1QpLINNuz/2KMNpLsdu3BzOpak3AGI1CJYBTXcc4SPhaD0eNRUp7IyQK405L5dQ==}
 +    engines: {node: ^14.18.0 || >=16.0.0}
 +    peerDependencies:
 +      vite: ^4.0.0 || ^5.0.0
 +      vue: ^3.2.25
 +    dependencies:
-       vite: 5.0.2(@types/node@20.10.6)(terser@5.22.0)
++      vite: 5.0.2(@types/node@20.11.0)(terser@5.22.0)
        vue: link:packages/vue
      dev: true
  
-   /@vitest/coverage-istanbul@1.1.1(vitest@1.1.1):
-     resolution: {integrity: sha512-Ikq6k2/KJ3MqEnGJCZBctcgxW1JRPzyVetVz1AYqLxrHNiG/epGFPZ74kIc3AK0HGaf0RsqZkc8riCTmxfH/dQ==}
 -  /@vitest/coverage-istanbul@1.1.3(vitest@1.1.3):
 -    resolution: {integrity: sha512-pqx/RaLjJ7oxsbi0Vc/CjyXBXd86yQ0lKq1PPnk9BMNLqMTEWwfcTelcNrl41yK+IVRhHlFtwcjDva3VslbMMQ==}
++  /@vitest/coverage-istanbul@1.2.0(vitest@1.2.0):
++    resolution: {integrity: sha512-hNN/pUR5la6P/L78+YcRl05Lpf6APXlH9ujkmCxxjVWtVG6WuKuqUMhHgYQBYfiOORBwDZ1MBgSUGCMPh4kpmQ==}
      peerDependencies:
        vitest: ^1.0.0
      dependencies:
        magicast: 0.3.2
        picocolors: 1.0.0
        test-exclude: 6.0.0
-       vitest: 1.1.1(@types/node@20.10.6)(jsdom@23.0.1)(terser@5.22.0)
 -      vitest: 1.1.3(@types/node@20.10.7)(jsdom@23.2.0)(terser@5.22.0)
++      vitest: 1.2.0(@types/node@20.11.0)(jsdom@23.2.0)(terser@5.22.0)
      transitivePeerDependencies:
        - supports-color
      dev: true
  
-   /@vitest/expect@1.1.1:
-     resolution: {integrity: sha512-Qpw01C2Hyb3085jBkOJLQ7HRX0Ncnh2qV4p+xWmmhcIUlMykUF69zsnZ1vPmAjZpomw9+5tWEGOQ0GTfR8U+kA==}
 -  /@vitest/expect@1.1.3:
 -    resolution: {integrity: sha512-MnJqsKc1Ko04lksF9XoRJza0bGGwTtqfbyrsYv5on4rcEkdo+QgUdITenBQBUltKzdxW7K3rWh+nXRULwsdaVg==}
++  /@vitest/expect@1.2.0:
++    resolution: {integrity: sha512-H+2bHzhyvgp32o7Pgj2h9RTHN0pgYaoi26Oo3mE+dCi1PAqV31kIIVfTbqMO3Bvshd5mIrJLc73EwSRrbol9Lw==}
      dependencies:
-       '@vitest/spy': 1.1.1
-       '@vitest/utils': 1.1.1
 -      '@vitest/spy': 1.1.3
 -      '@vitest/utils': 1.1.3
++      '@vitest/spy': 1.2.0
++      '@vitest/utils': 1.2.0
        chai: 4.3.10
      dev: true
  
-   /@vitest/runner@1.1.1:
-     resolution: {integrity: sha512-8HokyJo1SnSi3uPFKfWm/Oq1qDwLC4QDcVsqpXIXwsRPAg3gIDh8EbZ1ri8cmQkBxdOu62aOF9B4xcqJhvt4xQ==}
 -  /@vitest/runner@1.1.3:
 -    resolution: {integrity: sha512-Va2XbWMnhSdDEh/OFxyUltgQuuDRxnarK1hW5QNN4URpQrqq6jtt8cfww/pQQ4i0LjoYxh/3bYWvDFlR9tU73g==}
++  /@vitest/runner@1.2.0:
++    resolution: {integrity: sha512-vaJkDoQaNUTroT70OhM0NPznP7H3WyRwt4LvGwCVYs/llLaqhoSLnlIhUClZpbF5RgAee29KRcNz0FEhYcgxqA==}
      dependencies:
-       '@vitest/utils': 1.1.1
 -      '@vitest/utils': 1.1.3
++      '@vitest/utils': 1.2.0
        p-limit: 5.0.0
        pathe: 1.1.1
      dev: true
  
-   /@vitest/snapshot@1.1.1:
-     resolution: {integrity: sha512-WnMHjv4VdHLbFGgCdVVvyRkRPnOKN75JJg+LLTdr6ah7YnL75W+7CTIMdzPEPzaDxA8r5yvSVlc1d8lH3yE28w==}
 -  /@vitest/snapshot@1.1.3:
 -    resolution: {integrity: sha512-U0r8pRXsLAdxSVAyGNcqOU2H3Z4Y2dAAGGelL50O0QRMdi1WWeYHdrH/QWpN1e8juWfVKsb8B+pyJwTC+4Gy9w==}
++  /@vitest/snapshot@1.2.0:
++    resolution: {integrity: sha512-P33EE7TrVgB3HDLllrjK/GG6WSnmUtWohbwcQqmm7TAk9AVHpdgf7M3F3qRHKm6vhr7x3eGIln7VH052Smo6Kw==}
      dependencies:
        magic-string: 0.30.5
        pathe: 1.1.1
        pretty-format: 29.7.0
      dev: true
  
-   /@vitest/spy@1.1.1:
-     resolution: {integrity: sha512-hDU2KkOTfFp4WFFPWwHFauddwcKuGQ7gF6Un/ZZkCogoAiTMN7/7YKvUDbywPZZ754iCQGjdUmXN3t4k0jm1IQ==}
 -  /@vitest/spy@1.1.3:
 -    resolution: {integrity: sha512-Ec0qWyGS5LhATFQtldvChPTAHv08yHIOZfiNcjwRQbFPHpkih0md9KAbs7TfeIfL7OFKoe7B/6ukBTqByubXkQ==}
++  /@vitest/spy@1.2.0:
++    resolution: {integrity: sha512-MNxSAfxUaCeowqyyGwC293yZgk7cECZU9wGb8N1pYQ0yOn/SIr8t0l9XnGRdQZvNV/ZHBYu6GO/W3tj5K3VN1Q==}
      dependencies:
        tinyspy: 2.2.0
      dev: true
  
-   /@vitest/utils@1.1.1:
-     resolution: {integrity: sha512-E9LedH093vST/JuBSyHLFMpxJKW3dLhe/flUSPFedoyj4wKiFX7Jm8gYLtOIiin59dgrssfmFv0BJ1u8P/LC/A==}
 -  /@vitest/utils@1.1.3:
 -    resolution: {integrity: sha512-Dyt3UMcdElTll2H75vhxfpZu03uFpXRCHxWnzcrFjZxT1kTbq8ALUYIeBgGolo1gldVdI0YSlQRacsqxTwNqwg==}
++  /@vitest/utils@1.2.0:
++    resolution: {integrity: sha512-FyD5bpugsXlwVpTcGLDf3wSPYy8g541fQt14qtzo8mJ4LdEpDKZ9mQy2+qdJm2TZRpjY5JLXihXCgIxiRJgi5g==}
      dependencies:
        diff-sequences: 29.6.3
+       estree-walker: 3.0.3
        loupe: 2.3.7
        pretty-format: 29.7.0
      dev: true
      engines: {node: '>= 0.12.0'}
      dev: true
  
-   /@vue/repl@3.2.0:
-     resolution: {integrity: sha512-heKXXwAm4p3wYqVsYqW5i9bAkiGqwbZygfBx8stZ48QqTvaTGiGY3qASJwvhc5FrZDPGoGcFRjab6XDImKxPvA==}
 -  /@vue/repl@3.1.1:
 -    resolution: {integrity: sha512-9nJImsUeywU2MTqvzf4ueqWC49UC3LVXVPk1HmoNnLVumfWXv+w5ytuSA//fxb/N/O5vCqE0UV63/dYvnCZpwQ==}
++  /@vue/repl@3.3.0:
++    resolution: {integrity: sha512-A9tdO7obt/kpFUHdgGoRnan6bZjfz/WAJ5+DpPkvgNEc960W+bJraURv8MUVtH2Id/byWotKbUve2jTakiccSw==}
      dev: false
  
    /@zeit/schemas@2.29.0:
      engines: {node: '>=10.0.0'}
      dev: true
  
+   /bidi-js@1.0.3:
+     resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==}
+     dependencies:
+       require-from-string: 2.0.2
+     dev: true
 +  /big-integer@1.6.51:
 +    resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==}
 +    engines: {node: '>=0.6'}
 +    dev: true
 +
    /binary-extensions@2.2.0:
      resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
      engines: {node: '>=8'}
        canvas:
          optional: true
      dependencies:
-       cssstyle: 3.0.0
 -      '@asamuzakjp/dom-selector': 2.0.1
++      '@asamuzakjp/dom-selector': 2.0.2
+       cssstyle: 4.0.1
        data-urls: 5.0.0
        decimal.js: 10.4.3
        form-data: 4.0.0
      engines: {node: '>= 0.8'}
      dev: true
  
-   /vite-hyper-config@0.2.1(@types/node@20.10.6)(terser@5.22.0)(vite@5.0.2):
 -  /vite-node@1.1.3(@types/node@20.10.7)(terser@5.22.0):
 -    resolution: {integrity: sha512-BLSO72YAkIUuNrOx+8uznYICJfTEbvBAmWClY3hpath5+h1mbPS5OMn42lrTxXuyCazVyZoDkSRnju78GiVCqA==}
++  /vite-hyper-config@0.2.1(@types/node@20.11.0)(terser@5.22.0)(vite@5.0.2):
 +    resolution: {integrity: sha512-ItRIpzWp0XMh/Sn1H0GCWnQIUcBjnSaZy/EbOpJcRr9H/KTBHUSTCEOigE9K0KTN01Z0GDi/8WgVT9+RPL932A==}
 +    engines: {node: '>=18.0.0'}
 +    peerDependencies:
 +      vite: ^4.0.0 || ^5.0.0
 +    dependencies:
 +      cac: 6.7.14
 +      picocolors: 1.0.0
-       vite: 5.0.2(@types/node@20.10.6)(terser@5.22.0)
-       vite-node: 1.1.1(@types/node@20.10.6)(terser@5.22.0)
++      vite: 5.0.2(@types/node@20.11.0)(terser@5.22.0)
++      vite-node: 1.1.1(@types/node@20.11.0)(terser@5.22.0)
 +    transitivePeerDependencies:
 +      - '@types/node'
 +      - less
 +      - lightningcss
 +      - sass
 +      - stylus
 +      - sugarss
 +      - supports-color
 +      - terser
 +    dev: true
 +
-   /vite-node@1.1.1(@types/node@20.10.6)(terser@5.22.0):
++  /vite-node@1.1.1(@types/node@20.11.0)(terser@5.22.0):
 +    resolution: {integrity: sha512-2bGE5w4jvym5v8llF6Gu1oBrmImoNSs4WmRVcavnG2me6+8UQntTqLiAMFyiAobp+ZXhj5ZFhI7SmLiFr/jrow==}
 +    engines: {node: ^18.0.0 || >=20.0.0}
 +    hasBin: true
 +    dependencies:
 +      cac: 6.7.14
 +      debug: 4.3.4
 +      pathe: 1.1.1
 +      picocolors: 1.0.0
-       vite: 5.0.10(@types/node@20.10.6)(terser@5.22.0)
++      vite: 5.0.10(@types/node@20.11.0)(terser@5.22.0)
++    transitivePeerDependencies:
++      - '@types/node'
++      - less
++      - lightningcss
++      - sass
++      - stylus
++      - sugarss
++      - supports-color
++      - terser
++    dev: true
++
++  /vite-node@1.2.0(@types/node@20.11.0)(terser@5.22.0):
++    resolution: {integrity: sha512-ETnQTHeAbbOxl7/pyBck9oAPZZZo+kYnFt1uQDD+hPReOc+wCjXw4r4jHriBRuVDB5isHmPXxrfc1yJnfBERqg==}
+     engines: {node: ^18.0.0 || >=20.0.0}
+     hasBin: true
+     dependencies:
+       cac: 6.7.14
+       debug: 4.3.4
+       pathe: 1.1.1
+       picocolors: 1.0.0
 -      vite: 5.0.7(@types/node@20.10.7)(terser@5.22.0)
++      vite: 5.0.10(@types/node@20.11.0)(terser@5.22.0)
      transitivePeerDependencies:
        - '@types/node'
        - less
        - terser
      dev: true
  
 -  /vite@5.0.7(@types/node@20.10.7)(terser@5.22.0):
 -    resolution: {integrity: sha512-B4T4rJCDPihrQo2B+h1MbeGL/k/GMAHzhQ8S0LjQ142s6/+l3hHTT095ORvsshj4QCkoWu3Xtmob5mazvakaOw==}
 +  /vite-plugin-inspect@0.7.42(rollup@4.4.1)(vite@5.0.2):
 +    resolution: {integrity: sha512-JCyX86wr3siQc+p9Kd0t8VkFHAJag0RaQVIpdFGSv5FEaePEVB6+V/RGtz2dQkkGSXQzRWrPs4cU3dRKg32bXw==}
 +    engines: {node: '>=14'}
 +    peerDependencies:
 +      '@nuxt/kit': '*'
 +      vite: ^3.1.0 || ^4.0.0 || ^5.0.0-0
 +    peerDependenciesMeta:
 +      '@nuxt/kit':
 +        optional: true
 +    dependencies:
 +      '@antfu/utils': 0.7.6
 +      '@rollup/pluginutils': 5.0.5(rollup@4.4.1)
 +      debug: 4.3.4
 +      error-stack-parser-es: 0.1.1
 +      fs-extra: 11.1.1
 +      open: 9.1.0
 +      picocolors: 1.0.0
 +      sirv: 2.0.3
-       vite: 5.0.2(@types/node@20.10.6)(terser@5.22.0)
++      vite: 5.0.2(@types/node@20.11.0)(terser@5.22.0)
 +    transitivePeerDependencies:
 +      - rollup
 +      - supports-color
 +    dev: true
 +
-   /vite@5.0.10(@types/node@20.10.6)(terser@5.22.0):
++  /vite@5.0.10(@types/node@20.11.0)(terser@5.22.0):
 +    resolution: {integrity: sha512-2P8J7WWgmc355HUMlFrwofacvr98DAjoE52BfdbwQtyLH06XKwaL/FMnmKM2crF0iX4MpmMKoDlNCB1ok7zHCw==}
 +    engines: {node: ^18.0.0 || >=20.0.0}
 +    hasBin: true
 +    peerDependencies:
 +      '@types/node': ^18.0.0 || >=20.0.0
 +      less: '*'
 +      lightningcss: ^1.21.0
 +      sass: '*'
 +      stylus: '*'
 +      sugarss: '*'
 +      terser: ^5.4.0
 +    peerDependenciesMeta:
 +      '@types/node':
 +        optional: true
 +      less:
 +        optional: true
 +      lightningcss:
 +        optional: true
 +      sass:
 +        optional: true
 +      stylus:
 +        optional: true
 +      sugarss:
 +        optional: true
 +      terser:
 +        optional: true
 +    dependencies:
-       '@types/node': 20.10.6
++      '@types/node': 20.11.0
 +      esbuild: 0.19.10
 +      postcss: 8.4.32
 +      rollup: 4.4.1
 +      terser: 5.22.0
 +    optionalDependencies:
 +      fsevents: 2.3.3
 +    dev: true
 +
-   /vite@5.0.2(@types/node@20.10.6)(terser@5.22.0):
++  /vite@5.0.2(@types/node@20.11.0)(terser@5.22.0):
 +    resolution: {integrity: sha512-6CCq1CAJCNM1ya2ZZA7+jS2KgnhbzvxakmlIjN24cF/PXhRMzpM/z8QgsVJA/Dm5fWUWnVEsmtBoMhmerPxT0g==}
      engines: {node: ^18.0.0 || >=20.0.0}
      hasBin: true
      peerDependencies:
        terser:
          optional: true
      dependencies:
-       '@types/node': 20.10.6
 -      '@types/node': 20.10.7
++      '@types/node': 20.11.0
        esbuild: 0.19.10
        postcss: 8.4.32
        rollup: 4.4.1
        fsevents: 2.3.3
      dev: true
  
-   /vitest@1.1.1(@types/node@20.10.6)(jsdom@23.0.1)(terser@5.22.0):
-     resolution: {integrity: sha512-Ry2qs4UOu/KjpXVfOCfQkTnwSXYGrqTbBZxw6reIYEFjSy1QUARRg5pxiI5BEXy+kBVntxUYNMlq4Co+2vD3fQ==}
 -  /vitest@1.1.3(@types/node@20.10.7)(jsdom@23.2.0)(terser@5.22.0):
 -    resolution: {integrity: sha512-2l8om1NOkiA90/Y207PsEvJLYygddsOyr81wLQ20Ra8IlLKbyQncWsGZjnbkyG2KwwuTXLQjEPOJuxGMG8qJBQ==}
++  /vitest@1.2.0(@types/node@20.11.0)(jsdom@23.2.0)(terser@5.22.0):
++    resolution: {integrity: sha512-Ixs5m7BjqvLHXcibkzKRQUvD/XLw0E3rvqaCMlrm/0LMsA0309ZqYvTlPzkhh81VlEyVZXFlwWnkhb6/UMtcaQ==}
      engines: {node: ^18.0.0 || >=20.0.0}
      hasBin: true
      peerDependencies:
        jsdom:
          optional: true
      dependencies:
-       '@types/node': 20.10.6
-       '@vitest/expect': 1.1.1
-       '@vitest/runner': 1.1.1
-       '@vitest/snapshot': 1.1.1
-       '@vitest/spy': 1.1.1
-       '@vitest/utils': 1.1.1
 -      '@types/node': 20.10.7
 -      '@vitest/expect': 1.1.3
 -      '@vitest/runner': 1.1.3
 -      '@vitest/snapshot': 1.1.3
 -      '@vitest/spy': 1.1.3
 -      '@vitest/utils': 1.1.3
++      '@types/node': 20.11.0
++      '@vitest/expect': 1.2.0
++      '@vitest/runner': 1.2.0
++      '@vitest/snapshot': 1.2.0
++      '@vitest/spy': 1.2.0
++      '@vitest/utils': 1.2.0
        acorn-walk: 8.3.1
        cac: 6.7.14
        chai: 4.3.10
        strip-literal: 1.3.0
        tinybench: 2.5.1
        tinypool: 0.8.1
-       vite: 5.0.10(@types/node@20.10.6)(terser@5.22.0)
-       vite-node: 1.1.1(@types/node@20.10.6)(terser@5.22.0)
 -      vite: 5.0.7(@types/node@20.10.7)(terser@5.22.0)
 -      vite-node: 1.1.3(@types/node@20.10.7)(terser@5.22.0)
++      vite: 5.0.10(@types/node@20.11.0)(terser@5.22.0)
++      vite-node: 1.2.0(@types/node@20.11.0)(terser@5.22.0)
        why-is-node-running: 2.2.2
      transitivePeerDependencies:
        - less
index 5c898035e2ca07bf7447732376719cebc9844fa3,657b711b1a32e74d5de12956eaa13e0a8e44dd06..83cb83a2f1b0572cefea5e70dee45e53aa193536
@@@ -148,43 -154,9 +154,43 @@@ function createConfig(format, output, p
    // Rollup to complain for non-ESM targets, so we use separate entries for
    // esm vs. non-esm builds.
    if (isCompatPackage && (isBrowserESMBuild || isBundlerESMBuild)) {
 -    entryFile = /runtime$/.test(format)
 -      ? `src/esm-runtime.ts`
 -      : `src/esm-index.ts`
 +    entryFile = `esm-${entryFile}`
 +  }
 +  entryFile = 'src/' + entryFile
 +
 +  return {
 +    input: resolve(entryFile),
 +    // Global and Browser ESM builds inlines everything so that they can be
 +    // used alone.
 +    external: resolveExternal(),
 +    plugins: [
 +      json({
 +        namedExports: false,
 +      }),
 +      alias({
 +        entries,
 +      }),
 +      enumPlugin,
 +      ...resolveReplace(),
 +      esbuild({
 +        tsconfig: path.resolve(__dirname, 'tsconfig.json'),
 +        sourceMap: output.sourcemap,
 +        minify: false,
-         target: isServerRenderer || isNodeBuild ? 'es2019' : 'es2015',
++        target: isServerRenderer || isCJSBuild ? 'es2019' : 'es2015',
 +        define: resolveDefine(),
 +      }),
 +      ...resolveNodePlugins(),
 +      ...plugins,
 +    ],
 +    output,
 +    onwarn(msg, warn) {
 +      if (msg.code !== 'CIRCULAR_DEPENDENCY') {
 +        warn(msg)
 +      }
 +    },
 +    treeshake: {
 +      moduleSideEffects: false,
 +    },
    }
  
    function resolveDefine() {
diff --cc scripts/dev.js
index abc7e048ed5b2193d46b8f4a51654ab96dd67fae,b015835ab4f9b9c429e5ee0105ea5b90c7d8a942..efe9e758996a8cf15e3189ce53d8092d44f58698
@@@ -30,104 -31,101 +30,104 @@@ const postfix = format.endsWith('-runti
    ? `runtime.${format.replace(/-runtime$/, '')}`
    : format
  
 -const outfile = resolve(
 -  __dirname,
 -  `../packages/${target}/dist/${
 -    target === 'vue-compat' ? `vue` : target
 -  }.${postfix}.${prod ? `prod.` : ``}js`,
 -)
 -const relativeOutfile = relative(process.cwd(), outfile)
 +for (const target of targets) {
 +  const pkg = require(`../packages/${target}/package.json`)
 +  const outfile = resolve(
 +    __dirname,
 +    `../packages/${target}/dist/${
 +      target === 'vue-compat' ? `vue` : target
 +    }.${postfix}.${prod ? `prod.` : ``}js`,
 +  )
 +  const relativeOutfile = relative(process.cwd(), outfile)
  
 -// resolve externals
 -// TODO this logic is largely duplicated from rollup.config.js
 -/** @type {string[]} */
 -let external = []
 -if (!inlineDeps) {
 -  // cjs & esm-bundler: external all deps
 -  if (format === 'cjs' || format.includes('esm-bundler')) {
 -    external = [
 -      ...external,
 -      ...Object.keys(pkg.dependencies || {}),
 -      ...Object.keys(pkg.peerDependencies || {}),
 -      // for @vue/compiler-sfc / server-renderer
 -      'path',
 -      'url',
 -      'stream',
 -    ]
 -  }
 +  // resolve externals
 +  // TODO this logic is largely duplicated from rollup.config.js
 +  /** @type {string[]} */
 +  let external = []
 +  if (!inlineDeps) {
 +    // cjs & esm-bundler: external all deps
 +    if (format === 'cjs' || format.includes('esm-bundler')) {
 +      external = [
 +        ...external,
 +        ...Object.keys(pkg.dependencies || {}),
 +        ...Object.keys(pkg.peerDependencies || {}),
 +        // for @vue/compiler-sfc / server-renderer
 +        'path',
 +        'url',
 +        'stream',
 +      ]
 +    }
  
 -  if (target === 'compiler-sfc') {
 -    const consolidatePkgPath = require.resolve(
 -      '@vue/consolidate/package.json',
 -      {
 -        paths: [resolve(__dirname, `../packages/${target}/`)],
 -      },
 -    )
 -    const consolidateDeps = Object.keys(
 -      require(consolidatePkgPath).devDependencies,
 -    )
 -    external = [
 -      ...external,
 -      ...consolidateDeps,
 -      'fs',
 -      'vm',
 -      'crypto',
 -      'react-dom/server',
 -      'teacup/lib/express',
 -      'arc-templates/dist/es5',
 -      'then-pug',
 -      'then-jade',
 -    ]
 +    if (target === 'compiler-sfc') {
 +      const consolidatePkgPath = require.resolve(
 +        '@vue/consolidate/package.json',
 +        {
 +          paths: [resolve(__dirname, `../packages/${target}/`)],
 +        },
 +      )
 +      const consolidateDeps = Object.keys(
 +        require(consolidatePkgPath).devDependencies,
 +      )
 +      external = [
 +        ...external,
 +        ...consolidateDeps,
 +        'fs',
 +        'vm',
 +        'crypto',
 +        'react-dom/server',
 +        'teacup/lib/express',
 +        'arc-templates/dist/es5',
 +        'then-pug',
 +        'then-jade',
 +      ]
 +    }
    }
 -}
 -/** @type {Array<import('esbuild').Plugin>} */
 -const plugins = [
 -  {
 -    name: 'log-rebuild',
 -    setup(build) {
 -      build.onEnd(() => {
 -        console.log(`built: ${relativeOutfile}`)
 -      })
 +  /** @type {Array<import('esbuild').Plugin>} */
 +  const plugins = [
 +    {
 +      name: 'log-rebuild',
 +      setup(build) {
 +        build.onEnd(() => {
 +          console.log(`built: ${relativeOutfile}`)
 +        })
 +      },
      },
 -  },
 -]
 +  ]
  
 -if (format !== 'cjs' && pkg.buildOptions?.enableNonBrowserBranches) {
 -  plugins.push(polyfillNode())
 -}
 +  if (format !== 'cjs' && pkg.buildOptions?.enableNonBrowserBranches) {
 +    plugins.push(polyfillNode())
 +  }
  
 -esbuild
 -  .context({
 -    entryPoints: [resolve(__dirname, `../packages/${target}/src/index.ts`)],
 -    outfile,
 -    bundle: true,
 -    external,
 -    sourcemap: true,
 -    format: outputFormat,
 -    globalName: pkg.buildOptions?.name,
 -    platform: format === 'cjs' ? 'node' : 'browser',
 -    plugins,
 -    define: {
 -      __COMMIT__: `"dev"`,
 -      __VERSION__: `"${pkg.version}"`,
 -      __DEV__: prod ? `false` : `true`,
 -      __TEST__: `false`,
 -      __BROWSER__: String(
 -        format !== 'cjs' && !pkg.buildOptions?.enableNonBrowserBranches,
 -      ),
 -      __GLOBAL__: String(format === 'global'),
 -      __ESM_BUNDLER__: String(format.includes('esm-bundler')),
 -      __ESM_BROWSER__: String(format.includes('esm-browser')),
 -      __CJS__: String(format === 'cjs'),
 -      __SSR__: String(format === 'cjs' || format.includes('esm-bundler')),
 -      __COMPAT__: String(target === 'vue-compat'),
 -      __FEATURE_SUSPENSE__: `true`,
 -      __FEATURE_OPTIONS_API__: `true`,
 -      __FEATURE_PROD_DEVTOOLS__: `false`,
 -      __FEATURE_PROD_HYDRATION_MISMATCH_DETAILS__: `false`,
 -    },
 -  })
 -  .then(ctx => ctx.watch())
 +  esbuild
 +    .context({
 +      entryPoints: [resolve(__dirname, `../packages/${target}/src/index.ts`)],
 +      outfile,
 +      bundle: true,
 +      external,
 +      sourcemap: true,
 +      format: outputFormat,
 +      globalName: pkg.buildOptions?.name,
 +      platform: format === 'cjs' ? 'node' : 'browser',
 +      plugins,
 +      define: {
 +        __COMMIT__: `"dev"`,
 +        __VERSION__: `"${pkg.version}"`,
 +        __DEV__: prod ? `false` : `true`,
 +        __TEST__: `false`,
 +        __BROWSER__: String(
 +          format !== 'cjs' && !pkg.buildOptions?.enableNonBrowserBranches,
 +        ),
 +        __GLOBAL__: String(format === 'global'),
 +        __ESM_BUNDLER__: String(format.includes('esm-bundler')),
 +        __ESM_BROWSER__: String(format.includes('esm-browser')),
-         __NODE_JS__: String(format === 'cjs'),
++        __CJS__: String(format === 'cjs'),
 +        __SSR__: String(format === 'cjs' || format.includes('esm-bundler')),
 +        __COMPAT__: String(target === 'vue-compat'),
 +        __FEATURE_SUSPENSE__: `true`,
 +        __FEATURE_OPTIONS_API__: `true`,
 +        __FEATURE_PROD_DEVTOOLS__: `false`,
 +        __FEATURE_PROD_HYDRATION_MISMATCH_DETAILS__: `false`,
 +      },
 +    })
 +    .then(ctx => ctx.watch())
 +}
Simple merge