diff --git a/CHANGELOG.md b/CHANGELOG.md
index 4eae200db..fe351268a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,32 @@
+## [3.4.25](https://github.com/vuejs/core/compare/v3.4.24...v3.4.25) (2024-04-24)
+
+
+### Bug Fixes
+
+* **defineModel:** align prod mode runtime type generation with defineProps ([4253a57](https://github.com/vuejs/core/commit/4253a57f1703a7f1ac701d77e0a235689203461d)), closes [#10769](https://github.com/vuejs/core/issues/10769)
+* **runtime-core:** properly get keepAlive child ([#10772](https://github.com/vuejs/core/issues/10772)) ([3724693](https://github.com/vuejs/core/commit/3724693a25c3f2dd13d70a8a1af760b03a4fb783)), closes [#10771](https://github.com/vuejs/core/issues/10771)
+* **runtime-core:** use normal object as internal prototype for attrs and slots ([064e82f](https://github.com/vuejs/core/commit/064e82f5855f30fe0b77fe9b5e4dd22700fd634d)), closes [/github.com/vuejs/core/commit/6df53d85a207986128159d88565e6e7045db2add#r141304923](https://github.com//github.com/vuejs/core/commit/6df53d85a207986128159d88565e6e7045db2add/issues/r141304923)
+
+
+
+## [3.4.24](https://github.com/vuejs/core/compare/v3.4.23...v3.4.24) (2024-04-22)
+
+
+### Bug Fixes
+
+* **compiler-core:** handle template ref bound via v-bind object on v-for ([#10706](https://github.com/vuejs/core/issues/10706)) ([da7adef](https://github.com/vuejs/core/commit/da7adefa844265eecc9c336abfc727bc05b4f16e)), closes [#10696](https://github.com/vuejs/core/issues/10696)
+* **compiler-core:** properly parse await expressions in edge cases ([b92c25f](https://github.com/vuejs/core/commit/b92c25f53dff0fc1687f57ca4033d0ac25218940)), closes [#10754](https://github.com/vuejs/core/issues/10754)
+* **compiler-sfc:** handle readonly operator and ReadonlyArray/Map/Set types ([5cef52a](https://github.com/vuejs/core/commit/5cef52a5c23ba8ba3239e6def03b8ff008d3cc72)), closes [#10726](https://github.com/vuejs/core/issues/10726)
+* **compiler-ssr:** fix hydration mismatch for conditional slot in transition ([f12c81e](https://github.com/vuejs/core/commit/f12c81efca3fcf9a7ce478af2261ad6ab9b0bfd7)), closes [#10743](https://github.com/vuejs/core/issues/10743)
+* **compiler-ssr:** fix v-html SSR for nullish values ([1ff4076](https://github.com/vuejs/core/commit/1ff407676f9495883b459779a9b0370d7588b51f)), closes [#10725](https://github.com/vuejs/core/issues/10725)
+* **deps:** update compiler ([#10760](https://github.com/vuejs/core/issues/10760)) ([15df5c1](https://github.com/vuejs/core/commit/15df5c1b261b9b471eb811fd47ab7b3cfc41cf83))
+* **runtime-core:** fix edge case of KeepAlive inside Transition with slot children ([#10719](https://github.com/vuejs/core/issues/10719)) ([e51ca61](https://github.com/vuejs/core/commit/e51ca61ca060b2772e967d169548fc2f58fce6d1)), closes [#10708](https://github.com/vuejs/core/issues/10708)
+* **runtime-core:** further fix slots _ctx check ([cde7f05](https://github.com/vuejs/core/commit/cde7f05787d16dbb93d9419ef5331adf992816fd)), closes [#10724](https://github.com/vuejs/core/issues/10724)
+* **runtime-core:** props should be readonly via direct template access ([b93f264](https://github.com/vuejs/core/commit/b93f26464785de227b88c51a88328ae80e80d804)), closes [#8216](https://github.com/vuejs/core/issues/8216) [#10736](https://github.com/vuejs/core/issues/10736)
+* **transition:** transition is breaking/flickering when enter is canceled ([#10688](https://github.com/vuejs/core/issues/10688)) ([65109a7](https://github.com/vuejs/core/commit/65109a70f187473edae8cf4df11af3c33345e6f6))
+
+
+
## [3.4.23](https://github.com/vuejs/core/compare/v3.4.22...v3.4.23) (2024-04-16)
diff --git a/SECURITY.md b/SECURITY.md
index 41a58da29..743dfa17d 100644
--- a/SECURITY.md
+++ b/SECURITY.md
@@ -10,4 +10,5 @@ Please note that we do not consider XSS via template expressions a valid attack
We would like to thank the following security researchers for responsibly disclosing security issues to us.
-- Jeet Pal - [GitHub](https://github.com/jeetpal2007) | [Email](jeetpal2007@gmail.com) | [LinkedIn](https://in.linkedin.com/in/jeet-pal-22601a290 )
+- Jeet Pal - [@jeetpal2007](https://github.com/jeetpal2007) | [Email](jeetpal2007@gmail.com) | [LinkedIn](https://in.linkedin.com/in/jeet-pal-22601a290 )
+- Mix - [@mnixry](https://github.com/mnixry)
diff --git a/package.json b/package.json
index 965fb7865..973d4cccf 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"private": true,
"version": "3.0.0-vapor",
- "packageManager": "pnpm@9.0.1",
+ "packageManager": "pnpm@9.0.5",
"type": "module",
"scripts": {
"dev": "node scripts/dev.js vue vue-vapor",
@@ -59,7 +59,7 @@
"node": ">=18.12.0"
},
"devDependencies": {
- "@babel/parser": "^7.24.1",
+ "@babel/parser": "^7.24.4",
"@babel/types": "^7.24.0",
"@codspeed/vitest-plugin": "^3.1.0",
"@rollup/plugin-alias": "^5.1.0",
@@ -70,10 +70,10 @@
"@rollup/plugin-terser": "^0.4.4",
"@types/hash-sum": "^1.0.2",
"@types/minimist": "^1.2.5",
- "@types/node": "^20.12.5",
+ "@types/node": "^20.12.7",
"@types/semver": "^7.5.8",
- "@vitest/coverage-istanbul": "^1.4.0",
- "@vitest/ui": "^1.4.0",
+ "@vitest/coverage-istanbul": "^1.5.0",
+ "@vitest/ui": "^1.5.0",
"@vue/consolidate": "1.0.0",
"conventional-changelog-cli": "^4.1.0",
"enquirer": "^2.4.1",
@@ -87,32 +87,32 @@
"jsdom": "^24.0.0",
"lint-staged": "^15.2.2",
"lodash": "^4.17.21",
- "magic-string": "^0.30.8",
+ "magic-string": "^0.30.10",
"markdown-table": "^3.0.3",
- "marked": "^12.0.1",
+ "marked": "^12.0.2",
"minimist": "^1.2.8",
"npm-run-all2": "^6.1.2",
"picocolors": "^1.0.0",
"prettier": "^3.2.5",
"pretty-bytes": "^6.1.1",
"pug": "^3.0.2",
- "puppeteer": "~22.6.3",
+ "puppeteer": "~22.6.5",
"rimraf": "^5.0.5",
- "rollup": "^4.13.2",
+ "rollup": "^4.16.1",
"rollup-plugin-dts": "^6.1.0",
"rollup-plugin-esbuild": "^6.1.1",
"rollup-plugin-polyfill-node": "^0.13.0",
"semver": "^7.6.0",
"serve": "^14.2.1",
"simple-git-hooks": "^2.11.1",
- "terser": "^5.30.1",
+ "terser": "^5.30.3",
"todomvc-app-css": "^2.4.3",
"tslib": "^2.6.2",
"tsx": "^4.7.2",
"typescript": "~5.4.5",
"typescript-eslint": "^7.6.0",
- "vite": "^5.2.7",
- "vitest": "^1.4.0"
+ "vite": "^5.2.10",
+ "vitest": "^1.5.0"
},
"pnpm": {
"peerDependencyRules": {
diff --git a/packages/compiler-core/__tests__/transforms/__snapshots__/transformElement.spec.ts.snap b/packages/compiler-core/__tests__/transforms/__snapshots__/transformElement.spec.ts.snap
new file mode 100644
index 000000000..3da778eb6
--- /dev/null
+++ b/packages/compiler-core/__tests__/transforms/__snapshots__/transformElement.spec.ts.snap
@@ -0,0 +1,228 @@
+// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
+
+exports[`compiler: v-for > codegen > basic v-for 1`] = `
+"const _Vue = Vue
+
+return function render(_ctx, _cache) {
+ with (_ctx) {
+ const { renderList: _renderList, Fragment: _Fragment, openBlock: _openBlock, createElementBlock: _createElementBlock } = _Vue
+
+ return (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(items, (item) => {
+ return (_openBlock(), _createElementBlock("span"))
+ }), 256 /* UNKEYED_FRAGMENT */))
+ }
+}"
+`;
+
+exports[`compiler: v-for > codegen > keyed template v-for 1`] = `
+"const _Vue = Vue
+
+return function render(_ctx, _cache) {
+ with (_ctx) {
+ const { renderList: _renderList, Fragment: _Fragment, openBlock: _openBlock, createElementBlock: _createElementBlock, createElementVNode: _createElementVNode } = _Vue
+
+ return (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(items, (item) => {
+ return (_openBlock(), _createElementBlock(_Fragment, { key: item }, [
+ "hello",
+ _createElementVNode("span")
+ ], 64 /* STABLE_FRAGMENT */))
+ }), 128 /* KEYED_FRAGMENT */))
+ }
+}"
+`;
+
+exports[`compiler: v-for > codegen > keyed v-for 1`] = `
+"const _Vue = Vue
+
+return function render(_ctx, _cache) {
+ with (_ctx) {
+ const { renderList: _renderList, Fragment: _Fragment, openBlock: _openBlock, createElementBlock: _createElementBlock } = _Vue
+
+ return (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(items, (item) => {
+ return (_openBlock(), _createElementBlock("span", { key: item }))
+ }), 128 /* KEYED_FRAGMENT */))
+ }
+}"
+`;
+
+exports[`compiler: v-for > codegen > skipped key 1`] = `
+"const _Vue = Vue
+
+return function render(_ctx, _cache) {
+ with (_ctx) {
+ const { renderList: _renderList, Fragment: _Fragment, openBlock: _openBlock, createElementBlock: _createElementBlock } = _Vue
+
+ return (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(items, (item, __, index) => {
+ return (_openBlock(), _createElementBlock("span"))
+ }), 256 /* UNKEYED_FRAGMENT */))
+ }
+}"
+`;
+
+exports[`compiler: v-for > codegen > skipped value & key 1`] = `
+"const _Vue = Vue
+
+return function render(_ctx, _cache) {
+ with (_ctx) {
+ const { renderList: _renderList, Fragment: _Fragment, openBlock: _openBlock, createElementBlock: _createElementBlock } = _Vue
+
+ return (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(items, (_, __, index) => {
+ return (_openBlock(), _createElementBlock("span"))
+ }), 256 /* UNKEYED_FRAGMENT */))
+ }
+}"
+`;
+
+exports[`compiler: v-for > codegen > skipped value 1`] = `
+"const _Vue = Vue
+
+return function render(_ctx, _cache) {
+ with (_ctx) {
+ const { renderList: _renderList, Fragment: _Fragment, openBlock: _openBlock, createElementBlock: _createElementBlock } = _Vue
+
+ return (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(items, (_, key, index) => {
+ return (_openBlock(), _createElementBlock("span"))
+ }), 256 /* UNKEYED_FRAGMENT */))
+ }
+}"
+`;
+
+exports[`compiler: v-for > codegen > template v-for 1`] = `
+"const _Vue = Vue
+
+return function render(_ctx, _cache) {
+ with (_ctx) {
+ const { renderList: _renderList, Fragment: _Fragment, openBlock: _openBlock, createElementBlock: _createElementBlock, createElementVNode: _createElementVNode } = _Vue
+
+ return (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(items, (item) => {
+ return (_openBlock(), _createElementBlock(_Fragment, null, [
+ "hello",
+ _createElementVNode("span")
+ ], 64 /* STABLE_FRAGMENT */))
+ }), 256 /* UNKEYED_FRAGMENT */))
+ }
+}"
+`;
+
+exports[`compiler: v-for > codegen > template v-for key injection with single child 1`] = `
+"const _Vue = Vue
+
+return function render(_ctx, _cache) {
+ with (_ctx) {
+ const { renderList: _renderList, Fragment: _Fragment, openBlock: _openBlock, createElementBlock: _createElementBlock } = _Vue
+
+ return (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(items, (item) => {
+ return (_openBlock(), _createElementBlock("span", {
+ key: item.id,
+ id: item.id
+ }, null, 8 /* PROPS */, ["id"]))
+ }), 128 /* KEYED_FRAGMENT */))
+ }
+}"
+`;
+
+exports[`compiler: v-for > codegen > template v-for w/ 1`] = `
+"const _Vue = Vue
+
+return function render(_ctx, _cache) {
+ with (_ctx) {
+ const { renderList: _renderList, Fragment: _Fragment, openBlock: _openBlock, createElementBlock: _createElementBlock, renderSlot: _renderSlot } = _Vue
+
+ return (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(items, (item) => {
+ return _renderSlot($slots, "default")
+ }), 256 /* UNKEYED_FRAGMENT */))
+ }
+}"
+`;
+
+exports[`compiler: v-for > codegen > v-for on 1`] = `
+"const _Vue = Vue
+
+return function render(_ctx, _cache) {
+ with (_ctx) {
+ const { renderList: _renderList, Fragment: _Fragment, openBlock: _openBlock, createElementBlock: _createElementBlock, renderSlot: _renderSlot } = _Vue
+
+ return (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(items, (item) => {
+ return _renderSlot($slots, "default")
+ }), 256 /* UNKEYED_FRAGMENT */))
+ }
+}"
+`;
+
+exports[`compiler: v-for > codegen > v-for on element with custom directive 1`] = `
+"const _Vue = Vue
+
+return function render(_ctx, _cache) {
+ with (_ctx) {
+ const { renderList: _renderList, Fragment: _Fragment, openBlock: _openBlock, createElementBlock: _createElementBlock, resolveDirective: _resolveDirective, withDirectives: _withDirectives } = _Vue
+
+ const _directive_foo = _resolveDirective("foo")
+
+ return (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(list, (i) => {
+ return _withDirectives((_openBlock(), _createElementBlock("div", null, null, 512 /* NEED_PATCH */)), [
+ [_directive_foo]
+ ])
+ }), 256 /* UNKEYED_FRAGMENT */))
+ }
+}"
+`;
+
+exports[`compiler: v-for > codegen > v-for with constant expression 1`] = `
+"const _Vue = Vue
+
+return function render(_ctx, _cache) {
+ with (_ctx) {
+ const { renderList: _renderList, Fragment: _Fragment, openBlock: _openBlock, createElementBlock: _createElementBlock, toDisplayString: _toDisplayString, createElementVNode: _createElementVNode } = _Vue
+
+ return (_openBlock(), _createElementBlock(_Fragment, null, _renderList(10, (item) => {
+ return _createElementVNode("p", null, _toDisplayString(item), 1 /* TEXT */)
+ }), 64 /* STABLE_FRAGMENT */))
+ }
+}"
+`;
+
+exports[`compiler: v-for > codegen > v-if + v-for 1`] = `
+"const _Vue = Vue
+
+return function render(_ctx, _cache) {
+ with (_ctx) {
+ const { renderList: _renderList, Fragment: _Fragment, openBlock: _openBlock, createElementBlock: _createElementBlock, createCommentVNode: _createCommentVNode } = _Vue
+
+ return ok
+ ? (_openBlock(true), _createElementBlock(_Fragment, { key: 0 }, _renderList(list, (i) => {
+ return (_openBlock(), _createElementBlock("div"))
+ }), 256 /* UNKEYED_FRAGMENT */))
+ : _createCommentVNode("v-if", true)
+ }
+}"
+`;
+
+exports[`compiler: v-for > codegen > v-if + v-for on 1`] = `
+"const _Vue = Vue
+
+return function render(_ctx, _cache) {
+ with (_ctx) {
+ const { renderList: _renderList, Fragment: _Fragment, openBlock: _openBlock, createElementBlock: _createElementBlock, createCommentVNode: _createCommentVNode } = _Vue
+
+ return ok
+ ? (_openBlock(true), _createElementBlock(_Fragment, { key: 0 }, _renderList(list, (i) => {
+ return (_openBlock(), _createElementBlock(_Fragment, null, [], 64 /* STABLE_FRAGMENT */))
+ }), 256 /* UNKEYED_FRAGMENT */))
+ : _createCommentVNode("v-if", true)
+ }
+}"
+`;
+
+exports[`compiler: v-for > codegen > value + key + index 1`] = `
+"const _Vue = Vue
+
+return function render(_ctx, _cache) {
+ with (_ctx) {
+ const { renderList: _renderList, Fragment: _Fragment, openBlock: _openBlock, createElementBlock: _createElementBlock } = _Vue
+
+ return (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(items, (item, key, index) => {
+ return (_openBlock(), _createElementBlock("span"))
+ }), 256 /* UNKEYED_FRAGMENT */))
+ }
+}"
+`;
diff --git a/packages/compiler-core/__tests__/transforms/transformElement.spec.ts b/packages/compiler-core/__tests__/transforms/transformElement.spec.ts
index c30840a21..6c2dab962 100644
--- a/packages/compiler-core/__tests__/transforms/transformElement.spec.ts
+++ b/packages/compiler-core/__tests__/transforms/transformElement.spec.ts
@@ -39,6 +39,7 @@ import { transformBind } from '../../src/transforms/vBind'
import { PatchFlags } from '@vue/shared'
import { createObjectMatcher, genFlagText } from '../testUtils'
import { transformText } from '../../src/transforms/transformText'
+import { parseWithForTransform } from './vFor.spec'
function parseWithElementTransform(
template: string,
@@ -1338,4 +1339,42 @@ describe('compiler: element transform', () => {
isBlock: false,
})
})
+
+ test('ref_for marker on static ref', () => {
+ const { node } = parseWithForTransform(``)
+ expect((node.children[0] as any).codegenNode.props).toMatchObject(
+ createObjectMatcher({
+ ref_for: `[true]`,
+ ref: 'x',
+ }),
+ )
+ })
+
+ test('ref_for marker on dynamic ref', () => {
+ const { node } = parseWithForTransform(``)
+ expect((node.children[0] as any).codegenNode.props).toMatchObject(
+ createObjectMatcher({
+ ref_for: `[true]`,
+ ref: '[x]',
+ }),
+ )
+ })
+
+ test('ref_for marker on v-bind', () => {
+ const { node } = parseWithForTransform(``)
+ expect((node.children[0] as any).codegenNode.props).toMatchObject({
+ type: NodeTypes.JS_CALL_EXPRESSION,
+ callee: MERGE_PROPS,
+ arguments: [
+ createObjectMatcher({
+ ref_for: `[true]`,
+ }),
+ {
+ type: NodeTypes.SIMPLE_EXPRESSION,
+ content: 'x',
+ isStatic: false,
+ },
+ ],
+ })
+ })
})
diff --git a/packages/compiler-core/__tests__/transforms/transformExpressions.spec.ts b/packages/compiler-core/__tests__/transforms/transformExpressions.spec.ts
index b8207e7d4..4f08aeb9b 100644
--- a/packages/compiler-core/__tests__/transforms/transformExpressions.spec.ts
+++ b/packages/compiler-core/__tests__/transforms/transformExpressions.spec.ts
@@ -598,5 +598,33 @@ describe('compiler: expression transform', () => {
`${PatchFlags.TEXT} /* ${PatchFlagNames[PatchFlags.TEXT]} */`,
)
})
+
+ // #10754
+ test('await expression in right hand of assignment, inline mode', () => {
+ const node = parseWithExpressionTransform(
+ `{{ (async () => { x = await bar })() }}`,
+ {
+ inline: true,
+ bindingMetadata: {
+ x: BindingTypes.SETUP_LET,
+ bar: BindingTypes.SETUP_CONST,
+ },
+ },
+ ) as InterpolationNode
+ expect(node.content).toMatchObject({
+ type: NodeTypes.COMPOUND_EXPRESSION,
+ children: [
+ `(async () => { `,
+ {
+ content: `_isRef(x) ? x.value = await bar : x`,
+ },
+ ` = await `,
+ {
+ content: `bar`,
+ },
+ ` })()`,
+ ],
+ })
+ })
})
})
diff --git a/packages/compiler-core/__tests__/transforms/vFor.spec.ts b/packages/compiler-core/__tests__/transforms/vFor.spec.ts
index fb3d7dc7f..7fabcbb57 100644
--- a/packages/compiler-core/__tests__/transforms/vFor.spec.ts
+++ b/packages/compiler-core/__tests__/transforms/vFor.spec.ts
@@ -21,7 +21,7 @@ import { FRAGMENT, RENDER_LIST, RENDER_SLOT } from '../../src/runtimeHelpers'
import { PatchFlags } from '@vue/shared'
import { createObjectMatcher, genFlagText } from '../testUtils'
-function parseWithForTransform(
+export function parseWithForTransform(
template: string,
options: CompilerOptions = {},
) {
diff --git a/packages/compiler-core/package.json b/packages/compiler-core/package.json
index cd90cf68b..9ae397813 100644
--- a/packages/compiler-core/package.json
+++ b/packages/compiler-core/package.json
@@ -1,6 +1,6 @@
{
"name": "@vue/compiler-core",
- "version": "3.4.23",
+ "version": "3.4.25",
"description": "@vue/compiler-core",
"main": "index.js",
"module": "dist/compiler-core.esm-bundler.js",
@@ -46,7 +46,7 @@
},
"homepage": "https://github.com/vuejs/core-vapor/tree/main/packages/compiler-core#readme",
"dependencies": {
- "@babel/parser": "^7.24.1",
+ "@babel/parser": "^7.24.4",
"@vue/shared": "workspace:*",
"entities": "^4.5.0",
"estree-walker": "^2.0.2",
diff --git a/packages/compiler-core/src/transform.ts b/packages/compiler-core/src/transform.ts
index 322d0e176..69821f7f8 100644
--- a/packages/compiler-core/src/transform.ts
+++ b/packages/compiler-core/src/transform.ts
@@ -102,6 +102,9 @@ export interface TransformContext
vOnce: number
}
parent: ParentNode | null
+ // we could use a stack but in practice we've only ever needed two layers up
+ // so this is more efficient
+ grandParent: ParentNode | null
childIndex: number
currentNode: RootNode | TemplateChildNode | null
inVOnce: boolean
@@ -193,6 +196,7 @@ export function createTransformContext(
vOnce: 0,
},
parent: null,
+ grandParent: null,
currentNode: root,
childIndex: 0,
inVOnce: false,
@@ -401,6 +405,7 @@ export function traverseChildren(
for (; i < parent.children.length; i++) {
const child = parent.children[i]
if (isString(child)) continue
+ context.grandParent = context.parent
context.parent = parent
context.childIndex = i
context.onNodeRemoved = nodeRemoved
diff --git a/packages/compiler-core/src/transforms/transformElement.ts b/packages/compiler-core/src/transforms/transformElement.ts
index ca6e59df3..5c431f9d4 100644
--- a/packages/compiler-core/src/transforms/transformElement.ts
+++ b/packages/compiler-core/src/transforms/transformElement.ts
@@ -433,6 +433,18 @@ export function buildProps(
if (arg) mergeArgs.push(arg)
}
+ // mark template ref on v-for
+ const pushRefVForMarker = () => {
+ if (context.scopes.vFor > 0) {
+ properties.push(
+ createObjectProperty(
+ createSimpleExpression('ref_for', true),
+ createSimpleExpression('true'),
+ ),
+ )
+ }
+ }
+
const analyzePatchFlag = ({ key, value }: Property) => {
if (isStaticExp(key)) {
const name = key.content
@@ -502,14 +514,7 @@ export function buildProps(
let isStatic = true
if (name === 'ref') {
hasRef = true
- if (context.scopes.vFor > 0) {
- properties.push(
- createObjectProperty(
- createSimpleExpression('ref_for', true),
- createSimpleExpression('true'),
- ),
- )
- }
+ pushRefVForMarker()
// in inline mode there is no setupState object, so we can't use string
// keys to set the ref. Instead, we need to transform it to pass the
// actual ref instead.
@@ -601,13 +606,8 @@ export function buildProps(
shouldUseBlock = true
}
- if (isVBind && isStaticArgOf(arg, 'ref') && context.scopes.vFor > 0) {
- properties.push(
- createObjectProperty(
- createSimpleExpression('ref_for', true),
- createSimpleExpression('true'),
- ),
- )
+ if (isVBind && isStaticArgOf(arg, 'ref')) {
+ pushRefVForMarker()
}
// special case for v-bind and v-on with no argument
@@ -615,6 +615,8 @@ export function buildProps(
hasDynamicKeys = true
if (exp) {
if (isVBind) {
+ // #10696 in case a v-bind object contains ref
+ pushRefVForMarker()
// have to merge early for compat build check
pushMergeArg()
if (__COMPAT__) {
diff --git a/packages/compiler-core/src/transforms/transformExpression.ts b/packages/compiler-core/src/transforms/transformExpression.ts
index 20ad81619..859f272ec 100644
--- a/packages/compiler-core/src/transforms/transformExpression.ts
+++ b/packages/compiler-core/src/transforms/transformExpression.ts
@@ -40,7 +40,7 @@ import type {
UpdateExpression,
} from '@babel/types'
import { validateBrowserExpression } from '../validateExpression'
-import { parse } from '@babel/parser'
+import { parseExpression } from '@babel/parser'
import { IS_REF, UNREF } from '../runtimeHelpers'
import { BindingTypes } from '../options'
@@ -274,9 +274,10 @@ export function processExpression(
? ` ${rawExp} `
: `(${rawExp})${asParams ? `=>{}` : ``}`
try {
- ast = parse(source, {
+ ast = parseExpression(source, {
+ sourceType: 'module',
plugins: context.expressionPlugins,
- }).program
+ })
} catch (e: any) {
context.onError(
createCompilerError(
diff --git a/packages/compiler-dom/package.json b/packages/compiler-dom/package.json
index 370a74e85..3cc86ddd0 100644
--- a/packages/compiler-dom/package.json
+++ b/packages/compiler-dom/package.json
@@ -1,6 +1,6 @@
{
"name": "@vue/compiler-dom",
- "version": "3.4.23",
+ "version": "3.4.25",
"description": "@vue/compiler-dom",
"main": "index.js",
"module": "dist/compiler-dom.esm-bundler.js",
diff --git a/packages/compiler-sfc/__tests__/compileScript/__snapshots__/defineModel.spec.ts.snap b/packages/compiler-sfc/__tests__/compileScript/__snapshots__/defineModel.spec.ts.snap
index 6e9967fd0..6fe26a639 100644
--- a/packages/compiler-sfc/__tests__/compileScript/__snapshots__/defineModel.spec.ts.snap
+++ b/packages/compiler-sfc/__tests__/compileScript/__snapshots__/defineModel.spec.ts.snap
@@ -226,3 +226,43 @@ return { modelValue, fn, fnWithDefault, str, optional }
})"
`;
+
+exports[`defineModel() > w/ types, production mode, boolean + multiple types 1`] = `
+"import { useModel as _useModel, defineComponent as _defineComponent } from 'vue'
+
+export default /*#__PURE__*/_defineComponent({
+ props: {
+ "modelValue": { type: [Boolean, String, Object] },
+ "modelModifiers": {},
+ },
+ emits: ["update:modelValue"],
+ setup(__props, { expose: __expose }) {
+ __expose();
+
+ const modelValue = _useModel(__props, "modelValue")
+
+return { modelValue }
+}
+
+})"
+`;
+
+exports[`defineModel() > w/ types, production mode, function + runtime opts + multiple types 1`] = `
+"import { useModel as _useModel, defineComponent as _defineComponent } from 'vue'
+
+export default /*#__PURE__*/_defineComponent({
+ props: {
+ "modelValue": { type: [Number, Function], ...{ default: () => 1 } },
+ "modelModifiers": {},
+ },
+ emits: ["update:modelValue"],
+ setup(__props, { expose: __expose }) {
+ __expose();
+
+ const modelValue = _useModel number)>(__props, "modelValue")
+
+return { modelValue }
+}
+
+})"
+`;
diff --git a/packages/compiler-sfc/__tests__/compileScript/defineModel.spec.ts b/packages/compiler-sfc/__tests__/compileScript/defineModel.spec.ts
index bd048a847..4550aa5c4 100644
--- a/packages/compiler-sfc/__tests__/compileScript/defineModel.spec.ts
+++ b/packages/compiler-sfc/__tests__/compileScript/defineModel.spec.ts
@@ -161,6 +161,34 @@ describe('defineModel()', () => {
})
})
+ test('w/ types, production mode, boolean + multiple types', () => {
+ const { content } = compile(
+ `
+
+ `,
+ { isProd: true },
+ )
+ assertCode(content)
+ expect(content).toMatch('"modelValue": { type: [Boolean, String, Object] }')
+ })
+
+ test('w/ types, production mode, function + runtime opts + multiple types', () => {
+ const { content } = compile(
+ `
+
+ `,
+ { isProd: true },
+ )
+ assertCode(content)
+ expect(content).toMatch(
+ '"modelValue": { type: [Number, Function], ...{ default: () => 1 } }',
+ )
+ })
+
test('get / set transformers', () => {
const { content } = compile(
`
diff --git a/packages/compiler-sfc/__tests__/compileScript/resolveType.spec.ts b/packages/compiler-sfc/__tests__/compileScript/resolveType.spec.ts
index f3be58a30..dc95a9dc6 100644
--- a/packages/compiler-sfc/__tests__/compileScript/resolveType.spec.ts
+++ b/packages/compiler-sfc/__tests__/compileScript/resolveType.spec.ts
@@ -265,6 +265,27 @@ describe('resolveType', () => {
})
})
+ test('utility type: ReadonlyArray', () => {
+ expect(
+ resolve(`
+ defineProps<{ foo: ReadonlyArray }>()
+ `).props,
+ ).toStrictEqual({
+ foo: ['Array'],
+ })
+ })
+
+ test('utility type: ReadonlyMap & Readonly Set', () => {
+ expect(
+ resolve(`
+ defineProps<{ foo: ReadonlyMap, bar: ReadonlySet }>()
+ `).props,
+ ).toStrictEqual({
+ foo: ['Map'],
+ bar: ['Set'],
+ })
+ })
+
test('indexed access type (literal)', () => {
expect(
resolve(`
@@ -416,6 +437,16 @@ describe('resolveType', () => {
})
})
+ test('readonly', () => {
+ expect(
+ resolve(`
+ defineProps<{ foo: readonly unknown[] }>()
+ `).props,
+ ).toStrictEqual({
+ foo: ['Array'],
+ })
+ })
+
test('ExtractPropTypes (element-plus)', () => {
const { props, raw } = resolve(
`
diff --git a/packages/compiler-sfc/package.json b/packages/compiler-sfc/package.json
index c91bae22a..273aa3116 100644
--- a/packages/compiler-sfc/package.json
+++ b/packages/compiler-sfc/package.json
@@ -1,6 +1,6 @@
{
"name": "@vue/compiler-sfc",
- "version": "3.4.23",
+ "version": "3.4.25",
"description": "@vue/compiler-sfc",
"main": "dist/compiler-sfc.cjs.js",
"module": "dist/compiler-sfc.esm-browser.js",
@@ -42,14 +42,14 @@
},
"homepage": "https://github.com/vuejs/core-vapor/tree/main/packages/compiler-sfc#readme",
"dependencies": {
- "@babel/parser": "^7.24.1",
+ "@babel/parser": "^7.24.4",
"@vue/compiler-core": "workspace:*",
"@vue/compiler-dom": "workspace:*",
"@vue/compiler-ssr": "workspace:*",
"@vue/compiler-vapor": "workspace:*",
"@vue/shared": "workspace:*",
"estree-walker": "^2.0.2",
- "magic-string": "^0.30.8",
+ "magic-string": "^0.30.10",
"postcss": "^8.4.38",
"source-map-js": "^1.2.0"
},
@@ -63,6 +63,6 @@
"postcss-modules": "^6.0.0",
"postcss-selector-parser": "^6.0.16",
"pug": "^3.0.2",
- "sass": "^1.74.1"
+ "sass": "^1.75.0"
}
}
diff --git a/packages/compiler-sfc/src/script/defineModel.ts b/packages/compiler-sfc/src/script/defineModel.ts
index e5e2ed0e5..050828002 100644
--- a/packages/compiler-sfc/src/script/defineModel.ts
+++ b/packages/compiler-sfc/src/script/defineModel.ts
@@ -1,12 +1,7 @@
import type { LVal, Node, TSType } from '@babel/types'
import type { ScriptCompileContext } from './context'
import { inferRuntimeType } from './resolveType'
-import {
- UNKNOWN_TYPE,
- concatStrings,
- isCallOf,
- toRuntimeTypeString,
-} from './utils'
+import { UNKNOWN_TYPE, isCallOf, toRuntimeTypeString } from './utils'
import { BindingTypes, unwrapTSNode } from '@vue/compiler-dom'
export const DEFINE_MODEL = 'defineModel'
@@ -124,44 +119,50 @@ export function genModelProps(ctx: ScriptCompileContext) {
const isProd = !!ctx.options.isProd
let modelPropsDecl = ''
- for (const [name, { type, options }] of Object.entries(ctx.modelDecls)) {
+ for (const [name, { type, options: runtimeOptions }] of Object.entries(
+ ctx.modelDecls,
+ )) {
let skipCheck = false
-
+ let codegenOptions = ``
let runtimeTypes = type && inferRuntimeType(ctx, type)
if (runtimeTypes) {
const hasBoolean = runtimeTypes.includes('Boolean')
+ const hasFunction = runtimeTypes.includes('Function')
const hasUnknownType = runtimeTypes.includes(UNKNOWN_TYPE)
- if (isProd || hasUnknownType) {
- runtimeTypes = runtimeTypes.filter(
- t =>
- t === 'Boolean' ||
- (hasBoolean && t === 'String') ||
- (t === 'Function' && options),
- )
+ if (hasUnknownType) {
+ if (hasBoolean || hasFunction) {
+ runtimeTypes = runtimeTypes.filter(t => t !== UNKNOWN_TYPE)
+ skipCheck = true
+ } else {
+ runtimeTypes = ['null']
+ }
+ }
- skipCheck = !isProd && hasUnknownType && runtimeTypes.length > 0
+ if (!isProd) {
+ codegenOptions =
+ `type: ${toRuntimeTypeString(runtimeTypes)}` +
+ (skipCheck ? ', skipCheck: true' : '')
+ } else if (hasBoolean || (runtimeOptions && hasFunction)) {
+ // preserve types if contains boolean, or
+ // function w/ runtime options that may contain default
+ codegenOptions = `type: ${toRuntimeTypeString(runtimeTypes)}`
+ } else {
+ // able to drop types in production
}
}
- let runtimeType =
- (runtimeTypes &&
- runtimeTypes.length > 0 &&
- toRuntimeTypeString(runtimeTypes)) ||
- undefined
-
- const codegenOptions = concatStrings([
- runtimeType && `type: ${runtimeType}`,
- skipCheck && 'skipCheck: true',
- ])
-
let decl: string
- if (runtimeType && options) {
+ if (codegenOptions && runtimeOptions) {
decl = ctx.isTS
- ? `{ ${codegenOptions}, ...${options} }`
- : `Object.assign({ ${codegenOptions} }, ${options})`
+ ? `{ ${codegenOptions}, ...${runtimeOptions} }`
+ : `Object.assign({ ${codegenOptions} }, ${runtimeOptions})`
+ } else if (codegenOptions) {
+ decl = `{ ${codegenOptions} }`
+ } else if (runtimeOptions) {
+ decl = runtimeOptions
} else {
- decl = options || (runtimeType ? `{ ${codegenOptions} }` : '{}')
+ decl = `{}`
}
modelPropsDecl += `\n ${JSON.stringify(name)}: ${decl},`
diff --git a/packages/compiler-sfc/src/script/resolveType.ts b/packages/compiler-sfc/src/script/resolveType.ts
index f6e291791..54b207e7e 100644
--- a/packages/compiler-sfc/src/script/resolveType.ts
+++ b/packages/compiler-sfc/src/script/resolveType.ts
@@ -1547,8 +1547,14 @@ export function inferRuntimeType(
case 'Parameters':
case 'ConstructorParameters':
+ case 'ReadonlyArray':
return ['Array']
+ case 'ReadonlyMap':
+ return ['Map']
+ case 'ReadonlySet':
+ return ['Set']
+
case 'NonNullable':
if (node.typeParameters && node.typeParameters.params[0]) {
return inferRuntimeType(
@@ -1633,6 +1639,11 @@ export function inferRuntimeType(
}
break
}
+
+ // e.g. readonly
+ case 'TSTypeOperator': {
+ return inferRuntimeType(ctx, node.typeAnnotation, scope)
+ }
}
} catch (e) {
// always soft fail on failed runtime type inference
diff --git a/packages/compiler-ssr/__tests__/ssrSlotOutlet.spec.ts b/packages/compiler-ssr/__tests__/ssrSlotOutlet.spec.ts
index 655d68efb..86863cfb8 100644
--- a/packages/compiler-ssr/__tests__/ssrSlotOutlet.spec.ts
+++ b/packages/compiler-ssr/__tests__/ssrSlotOutlet.spec.ts
@@ -143,4 +143,20 @@ describe('ssr: ', () => {
}"
`)
})
+
+ test('with v-if inside transition', () => {
+ const { code } = compile(``)
+ expect(code).toMatch(ssrHelpers[SSR_RENDER_SLOT_INNER])
+ expect(code).toMatchInlineSnapshot(`
+ "const { ssrRenderSlotInner: _ssrRenderSlotInner } = require("vue/server-renderer")
+
+ return function ssrRender(_ctx, _push, _parent, _attrs) {
+ if (true) {
+ _ssrRenderSlotInner(_ctx.$slots, "default", {}, null, _push, _parent, null, true)
+ } else {
+ _push(\`\`)
+ }
+ }"
+ `)
+ })
})
diff --git a/packages/compiler-ssr/package.json b/packages/compiler-ssr/package.json
index c1ae8e41f..637af44b6 100644
--- a/packages/compiler-ssr/package.json
+++ b/packages/compiler-ssr/package.json
@@ -1,6 +1,6 @@
{
"name": "@vue/compiler-ssr",
- "version": "3.4.23",
+ "version": "3.4.25",
"description": "@vue/compiler-ssr",
"main": "dist/compiler-ssr.cjs.js",
"types": "dist/compiler-ssr.d.ts",
diff --git a/packages/compiler-ssr/src/transforms/ssrTransformSlotOutlet.ts b/packages/compiler-ssr/src/transforms/ssrTransformSlotOutlet.ts
index ad08a23a4..f4e6dba20 100644
--- a/packages/compiler-ssr/src/transforms/ssrTransformSlotOutlet.ts
+++ b/packages/compiler-ssr/src/transforms/ssrTransformSlotOutlet.ts
@@ -40,24 +40,30 @@ export const ssrTransformSlotOutlet: NodeTransform = (node, context) => {
// #3989, #9933
// check if this is a single slot inside a transition wrapper - since
- // transition/transition-group will unwrap the slot fragment into vnode(s) at runtime,
- // we need to avoid rendering the slot as a fragment.
- const parent = context.parent
- let componentType
- if (
- parent &&
- parent.type === NodeTypes.ELEMENT &&
- parent.tagType === ElementTypes.COMPONENT &&
- ((componentType = resolveComponentType(parent, context, true)) ===
- TRANSITION ||
- componentType === TRANSITION_GROUP) &&
- parent.children.filter(c => c.type === NodeTypes.ELEMENT).length === 1
- ) {
- method = SSR_RENDER_SLOT_INNER
- if (!(context.scopeId && context.slotted !== false)) {
- args.push('null')
+ // transition/transition-group will unwrap the slot fragment into vnode(s)
+ // at runtime, we need to avoid rendering the slot as a fragment.
+ let parent = context.parent!
+ if (parent) {
+ const children = parent.children
+ // #10743 in
+ if (parent.type === NodeTypes.IF_BRANCH) {
+ parent = context.grandParent!
+ }
+ let componentType
+ if (
+ parent.type === NodeTypes.ELEMENT &&
+ parent.tagType === ElementTypes.COMPONENT &&
+ ((componentType = resolveComponentType(parent, context, true)) ===
+ TRANSITION ||
+ componentType === TRANSITION_GROUP) &&
+ children.filter(c => c.type === NodeTypes.ELEMENT).length === 1
+ ) {
+ method = SSR_RENDER_SLOT_INNER
+ if (!(context.scopeId && context.slotted !== false)) {
+ args.push('null')
+ }
+ args.push('true')
}
- args.push('true')
}
node.ssrCodegenNode = createCallExpression(context.helper(method), args)
diff --git a/packages/reactivity/package.json b/packages/reactivity/package.json
index 6ca1a11aa..a2540725b 100644
--- a/packages/reactivity/package.json
+++ b/packages/reactivity/package.json
@@ -1,6 +1,6 @@
{
"name": "@vue/reactivity",
- "version": "3.4.23",
+ "version": "3.4.25",
"description": "@vue/reactivity",
"main": "index.js",
"module": "dist/reactivity.esm-bundler.js",
diff --git a/packages/runtime-core/__tests__/componentProps.spec.ts b/packages/runtime-core/__tests__/componentProps.spec.ts
index f33613ae3..5b76cbb57 100644
--- a/packages/runtime-core/__tests__/componentProps.spec.ts
+++ b/packages/runtime-core/__tests__/componentProps.spec.ts
@@ -11,15 +11,17 @@ import {
getCurrentInstance,
h,
inject,
+ nextTick,
nodeOps,
provide,
ref,
render,
serializeInner,
+ toRaw,
toRefs,
watch,
} from '@vue/runtime-test'
-import { render as domRender, nextTick } from 'vue'
+import { render as domRender } from 'vue'
describe('component props', () => {
test('stateful', () => {
@@ -127,12 +129,12 @@ describe('component props', () => {
render(h(Comp, { foo: 1 }), root)
expect(props).toEqual({ foo: 1 })
expect(attrs).toEqual({ foo: 1 })
- expect(props).toBe(attrs)
+ expect(toRaw(props)).toBe(attrs)
render(h(Comp, { bar: 2 }), root)
expect(props).toEqual({ bar: 2 })
expect(attrs).toEqual({ bar: 2 })
- expect(props).toBe(attrs)
+ expect(toRaw(props)).toBe(attrs)
})
test('boolean casting', () => {
diff --git a/packages/runtime-core/package.json b/packages/runtime-core/package.json
index 222607a18..3dc61d024 100644
--- a/packages/runtime-core/package.json
+++ b/packages/runtime-core/package.json
@@ -1,6 +1,6 @@
{
"name": "@vue/runtime-core",
- "version": "3.4.23",
+ "version": "3.4.25",
"description": "@vue/runtime-core",
"main": "index.js",
"module": "dist/runtime-core.esm-bundler.js",
diff --git a/packages/runtime-core/src/componentRenderUtils.ts b/packages/runtime-core/src/componentRenderUtils.ts
index dcfb2b73c..0a3a0fd9e 100644
--- a/packages/runtime-core/src/componentRenderUtils.ts
+++ b/packages/runtime-core/src/componentRenderUtils.ts
@@ -31,6 +31,7 @@ import {
isCompatEnabled,
warnDeprecation,
} from './compat/compatConfig'
+import { shallowReadonly } from '@vue/reactivity'
/**
* dev only flag to track whether $attrs was used during render.
@@ -53,22 +54,22 @@ export function renderComponentRoot(
vnode,
proxy,
withProxy,
- props,
propsOptions: [propsOptions],
slots,
attrs,
emit,
render,
renderCache,
+ props,
data,
setupState,
ctx,
inheritAttrs,
} = instance
+ const prev = setCurrentRenderingInstance(instance)
let result
let fallthroughAttrs
- const prev = setCurrentRenderingInstance(instance)
if (__DEV__) {
accessedAttrs = false
}
@@ -98,7 +99,7 @@ export function renderComponentRoot(
thisProxy,
proxyToUse!,
renderCache,
- props,
+ __DEV__ ? shallowReadonly(props) : props,
setupState,
data,
ctx,
@@ -115,7 +116,7 @@ export function renderComponentRoot(
result = normalizeVNode(
render.length > 1
? render(
- props,
+ __DEV__ ? shallowReadonly(props) : props,
__DEV__
? {
get attrs() {
@@ -127,7 +128,10 @@ export function renderComponentRoot(
}
: { attrs, slots, emit },
)
- : render(props, null as any /* we know it doesn't need it */),
+ : render(
+ __DEV__ ? shallowReadonly(props) : props,
+ null as any /* we know it doesn't need it */,
+ ),
)
fallthroughAttrs = Component.props
? attrs
diff --git a/packages/runtime-core/src/components/BaseTransition.ts b/packages/runtime-core/src/components/BaseTransition.ts
index 81555e707..86bc0b53a 100644
--- a/packages/runtime-core/src/components/BaseTransition.ts
+++ b/packages/runtime-core/src/components/BaseTransition.ts
@@ -469,15 +469,17 @@ function getKeepAliveChild(vnode: VNode): VNode | undefined {
const { shapeFlag, children } = vnode
- if (shapeFlag & ShapeFlags.ARRAY_CHILDREN) {
- return (children as VNodeArrayChildren)[0] as VNode
- }
+ if (children) {
+ if (shapeFlag & ShapeFlags.ARRAY_CHILDREN) {
+ return (children as VNodeArrayChildren)[0] as VNode
+ }
- if (
- shapeFlag & ShapeFlags.SLOTS_CHILDREN &&
- isFunction((children as any).default)
- ) {
- return (children as any).default()
+ if (
+ shapeFlag & ShapeFlags.SLOTS_CHILDREN &&
+ isFunction((children as any).default)
+ ) {
+ return (children as any).default()
+ }
}
}
diff --git a/packages/runtime-core/src/internalObject.ts b/packages/runtime-core/src/internalObject.ts
index 0c0c39bef..8b6ff1724 100644
--- a/packages/runtime-core/src/internalObject.ts
+++ b/packages/runtime-core/src/internalObject.ts
@@ -4,7 +4,7 @@
* `Object.getPrototypeOf`. This is more performant than defining a
* non-enumerable property. (one of the optimizations done for ssr-benchmark)
*/
-const internalObjectProto = Object.create(null)
+const internalObjectProto = {}
export const createInternalObject = () => Object.create(internalObjectProto)
diff --git a/packages/runtime-dom/package.json b/packages/runtime-dom/package.json
index 2780fc77b..0b9f25d06 100644
--- a/packages/runtime-dom/package.json
+++ b/packages/runtime-dom/package.json
@@ -1,6 +1,6 @@
{
"name": "@vue/runtime-dom",
- "version": "3.4.23",
+ "version": "3.4.25",
"description": "@vue/runtime-dom",
"main": "index.js",
"module": "dist/runtime-dom.esm-bundler.js",
diff --git a/packages/runtime-dom/src/components/Transition.ts b/packages/runtime-dom/src/components/Transition.ts
index cce247fe1..71385926d 100644
--- a/packages/runtime-dom/src/components/Transition.ts
+++ b/packages/runtime-dom/src/components/Transition.ts
@@ -239,9 +239,11 @@ export function resolveTransitionProps(
if (__COMPAT__ && legacyClassEnabled && legacyLeaveFromClass) {
addTransitionClass(el, legacyLeaveFromClass)
}
+ // add *-leave-active class before reflow so in the case of a cancelled enter transition
+ // the css will not get the final state (#10677)
+ addTransitionClass(el, leaveActiveClass)
// force reflow so *-leave-from classes immediately take effect (#2593)
forceReflow()
- addTransitionClass(el, leaveActiveClass)
nextFrame(() => {
if (!el._isLeaving) {
// cancelled
diff --git a/packages/server-renderer/package.json b/packages/server-renderer/package.json
index c1249f8ff..915802dd5 100644
--- a/packages/server-renderer/package.json
+++ b/packages/server-renderer/package.json
@@ -1,6 +1,6 @@
{
"name": "@vue/server-renderer",
- "version": "3.4.23",
+ "version": "3.4.25",
"description": "@vue/server-renderer",
"main": "index.js",
"module": "dist/server-renderer.esm-bundler.js",
diff --git a/packages/sfc-playground/package.json b/packages/sfc-playground/package.json
index 22d6fd4bc..89859e817 100644
--- a/packages/sfc-playground/package.json
+++ b/packages/sfc-playground/package.json
@@ -10,7 +10,7 @@
},
"devDependencies": {
"@vitejs/plugin-vue": "^5.0.4",
- "vite": "^5.2.7"
+ "vite": "^5.2.10"
},
"dependencies": {
"@vue/repl": "^4.1.1",
diff --git a/packages/sfc-playground/src/download/template/package.json b/packages/sfc-playground/src/download/template/package.json
index d3429db9c..84475d460 100644
--- a/packages/sfc-playground/src/download/template/package.json
+++ b/packages/sfc-playground/src/download/template/package.json
@@ -12,6 +12,6 @@
},
"devDependencies": {
"@vitejs/plugin-vue": "^5.0.4",
- "vite": "^5.2.7"
+ "vite": "^5.2.10"
}
}
diff --git a/packages/shared/package.json b/packages/shared/package.json
index f19fcc561..34762b576 100644
--- a/packages/shared/package.json
+++ b/packages/shared/package.json
@@ -1,6 +1,6 @@
{
"name": "@vue/shared",
- "version": "3.4.23",
+ "version": "3.4.25",
"description": "internal utils shared across @vue packages",
"main": "index.js",
"module": "dist/shared.esm-bundler.js",
diff --git a/packages/vue-compat/package.json b/packages/vue-compat/package.json
index f3afe35b0..91126e4b0 100644
--- a/packages/vue-compat/package.json
+++ b/packages/vue-compat/package.json
@@ -1,6 +1,6 @@
{
"name": "@vue/compat",
- "version": "3.4.23",
+ "version": "3.4.25",
"description": "Vue 3 compatibility build for Vue 2",
"main": "index.js",
"module": "dist/vue.runtime.esm-bundler.js",
@@ -52,7 +52,7 @@
},
"homepage": "https://github.com/vuejs/core-vapor/tree/main/packages/vue-compat#readme",
"dependencies": {
- "@babel/parser": "^7.24.1",
+ "@babel/parser": "^7.24.4",
"estree-walker": "^2.0.2",
"source-map-js": "^1.2.0"
},
diff --git a/packages/vue/package.json b/packages/vue/package.json
index ee89a6642..f12cb9a36 100644
--- a/packages/vue/package.json
+++ b/packages/vue/package.json
@@ -1,6 +1,6 @@
{
"name": "vue",
- "version": "3.4.23",
+ "version": "3.4.25",
"description": "The progressive JavaScript framework for building modern web UI.",
"main": "index.js",
"module": "dist/vue.runtime.esm-bundler.js",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 2c3f7da3f..0e2c0396f 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -9,32 +9,32 @@ importers:
.:
devDependencies:
'@babel/parser':
- specifier: ^7.24.1
+ specifier: ^7.24.4
version: 7.24.4
'@babel/types':
specifier: ^7.24.0
version: 7.24.0
'@codspeed/vitest-plugin':
specifier: ^3.1.0
- version: 3.1.0(vite@5.2.9(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.3))(vitest@1.5.0(@types/node@20.12.7)(@vitest/ui@1.5.0)(jsdom@24.0.0)(sass@1.75.0)(terser@5.30.3))
+ version: 3.1.0(vite@5.2.10(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.3))(vitest@1.5.0(@types/node@20.12.7)(@vitest/ui@1.5.0)(jsdom@24.0.0)(sass@1.75.0)(terser@5.30.3))
'@rollup/plugin-alias':
specifier: ^5.1.0
- version: 5.1.0(rollup@4.14.3)
+ version: 5.1.0(rollup@4.16.1)
'@rollup/plugin-commonjs':
specifier: ^25.0.7
- version: 25.0.7(rollup@4.14.3)
+ version: 25.0.7(rollup@4.16.1)
'@rollup/plugin-json':
specifier: ^6.1.0
- version: 6.1.0(rollup@4.14.3)
+ version: 6.1.0(rollup@4.16.1)
'@rollup/plugin-node-resolve':
specifier: ^15.2.3
- version: 15.2.3(rollup@4.14.3)
+ version: 15.2.3(rollup@4.16.1)
'@rollup/plugin-replace':
specifier: 5.0.4
- version: 5.0.4(rollup@4.14.3)
+ version: 5.0.4(rollup@4.16.1)
'@rollup/plugin-terser':
specifier: ^0.4.4
- version: 0.4.4(rollup@4.14.3)
+ version: 0.4.4(rollup@4.16.1)
'@types/hash-sum':
specifier: ^1.0.2
version: 1.0.2
@@ -42,16 +42,16 @@ importers:
specifier: ^1.2.5
version: 1.2.5
'@types/node':
- specifier: ^20.12.5
+ specifier: ^20.12.7
version: 20.12.7
'@types/semver':
specifier: ^7.5.8
version: 7.5.8
'@vitest/coverage-istanbul':
- specifier: ^1.4.0
+ specifier: ^1.5.0
version: 1.5.0(vitest@1.5.0(@types/node@20.12.7)(@vitest/ui@1.5.0)(jsdom@24.0.0)(sass@1.75.0)(terser@5.30.3))
'@vitest/ui':
- specifier: ^1.4.0
+ specifier: ^1.5.0
version: 1.5.0(vitest@1.5.0)
'@vue/consolidate':
specifier: 1.0.0
@@ -93,14 +93,14 @@ importers:
specifier: ^4.17.21
version: 4.17.21
magic-string:
- specifier: ^0.30.8
+ specifier: ^0.30.10
version: 0.30.10
markdown-table:
specifier: ^3.0.3
version: 3.0.3
marked:
- specifier: ^12.0.1
- version: 12.0.1
+ specifier: ^12.0.2
+ version: 12.0.2
minimist:
specifier: ^1.2.8
version: 1.2.8
@@ -120,23 +120,23 @@ importers:
specifier: ^3.0.2
version: 3.0.2
puppeteer:
- specifier: ~22.6.3
+ specifier: ~22.6.5
version: 22.6.5(typescript@5.4.5)
rimraf:
specifier: ^5.0.5
version: 5.0.5
rollup:
- specifier: ^4.13.2
- version: 4.14.3
+ specifier: ^4.16.1
+ version: 4.16.1
rollup-plugin-dts:
specifier: ^6.1.0
- version: 6.1.0(rollup@4.14.3)(typescript@5.4.5)
+ version: 6.1.0(rollup@4.16.1)(typescript@5.4.5)
rollup-plugin-esbuild:
specifier: ^6.1.1
- version: 6.1.1(esbuild@0.20.2)(rollup@4.14.3)
+ version: 6.1.1(esbuild@0.20.2)(rollup@4.16.1)
rollup-plugin-polyfill-node:
specifier: ^0.13.0
- version: 0.13.0(rollup@4.14.3)
+ version: 0.13.0(rollup@4.16.1)
semver:
specifier: ^7.6.0
version: 7.6.0
@@ -147,7 +147,7 @@ importers:
specifier: ^2.11.1
version: 2.11.1
terser:
- specifier: ^5.30.1
+ specifier: ^5.30.3
version: 5.30.3
todomvc-app-css:
specifier: ^2.4.3
@@ -165,16 +165,16 @@ importers:
specifier: ^7.6.0
version: 7.7.0(eslint@9.0.0)(typescript@5.4.5)
vite:
- specifier: ^5.2.7
- version: 5.2.9(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.3)
+ specifier: ^5.2.10
+ version: 5.2.10(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.3)
vitest:
- specifier: ^1.4.0
+ specifier: ^1.5.0
version: 1.5.0(@types/node@20.12.7)(@vitest/ui@1.5.0)(jsdom@24.0.0)(sass@1.75.0)(terser@5.30.3)
packages/compiler-core:
dependencies:
'@babel/parser':
- specifier: ^7.24.1
+ specifier: ^7.24.4
version: 7.24.4
'@vue/shared':
specifier: workspace:*
@@ -205,7 +205,7 @@ importers:
packages/compiler-sfc:
dependencies:
'@babel/parser':
- specifier: ^7.24.1
+ specifier: ^7.24.4
version: 7.24.4
'@vue/compiler-core':
specifier: workspace:*
@@ -226,7 +226,7 @@ importers:
specifier: ^2.0.2
version: 2.0.2
magic-string:
- specifier: ^0.30.8
+ specifier: ^0.30.10
version: 0.30.10
postcss:
specifier: ^8.4.38
@@ -263,7 +263,7 @@ importers:
specifier: ^3.0.2
version: 3.0.2
sass:
- specifier: ^1.74.1
+ specifier: ^1.75.0
version: 1.75.0
packages/compiler-ssr:
@@ -382,10 +382,10 @@ importers:
devDependencies:
'@vitejs/plugin-vue':
specifier: ^5.0.4
- version: 5.0.4(vite@5.2.9(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.3))(vue@packages+vue)
+ version: 5.0.4(vite@5.2.10(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.3))(vue@packages+vue)
vite:
- specifier: ^5.2.7
- version: 5.2.9(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.3)
+ specifier: ^5.2.10
+ version: 5.2.10(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.3)
packages/shared: {}
@@ -428,7 +428,7 @@ importers:
packages/vue-compat:
dependencies:
'@babel/parser':
- specifier: ^7.24.1
+ specifier: ^7.24.4
version: 7.24.4
estree-walker:
specifier: ^2.0.2
@@ -469,7 +469,7 @@ importers:
version: 0.2.1(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.3)(vite@5.2.9(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.3))
vite-plugin-inspect:
specifier: ^0.7.42
- version: 0.7.42(rollup@4.14.3)(vite@5.2.9(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.3))
+ version: 0.7.42(rollup@4.16.1)(vite@5.2.9(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.3))
packages:
@@ -1021,83 +1021,83 @@ packages:
rollup:
optional: true
- '@rollup/rollup-android-arm-eabi@4.14.3':
- resolution: {integrity: sha512-X9alQ3XM6I9IlSlmC8ddAvMSyG1WuHk5oUnXGw+yUBs3BFoTizmG1La/Gr8fVJvDWAq+zlYTZ9DBgrlKRVY06g==}
+ '@rollup/rollup-android-arm-eabi@4.16.1':
+ resolution: {integrity: sha512-92/y0TqNLRYOTXpm6Z7mnpvKAG9P7qmK7yJeRJSdzElNCUnsgbpAsGqerUboYRIQKzgfq4pWu9xVkgpWLfmNsw==}
cpu: [arm]
os: [android]
- '@rollup/rollup-android-arm64@4.14.3':
- resolution: {integrity: sha512-eQK5JIi+POhFpzk+LnjKIy4Ks+pwJ+NXmPxOCSvOKSNRPONzKuUvWE+P9JxGZVxrtzm6BAYMaL50FFuPe0oWMQ==}
+ '@rollup/rollup-android-arm64@4.16.1':
+ resolution: {integrity: sha512-ttWB6ZCfRLuDIUiE0yiu5gcqOsYjA5F7kEV1ggHMj20FwLZ8A1FMeahZJFl/pnOmcnD2QL0z4AcDuo27utGU8A==}
cpu: [arm64]
os: [android]
- '@rollup/rollup-darwin-arm64@4.14.3':
- resolution: {integrity: sha512-Od4vE6f6CTT53yM1jgcLqNfItTsLt5zE46fdPaEmeFHvPs5SjZYlLpHrSiHEKR1+HdRfxuzXHjDOIxQyC3ptBA==}
+ '@rollup/rollup-darwin-arm64@4.16.1':
+ resolution: {integrity: sha512-QLDvPLetbqjHojTGFw9+nuSP3YY/iz2k1cep6crYlr97sS+ZJ0W43b8Z0zC00+lnFZj6JSNxiA4DjboNQMuh1A==}
cpu: [arm64]
os: [darwin]
- '@rollup/rollup-darwin-x64@4.14.3':
- resolution: {integrity: sha512-0IMAO21axJeNIrvS9lSe/PGthc8ZUS+zC53O0VhF5gMxfmcKAP4ESkKOCwEi6u2asUrt4mQv2rjY8QseIEb1aw==}
+ '@rollup/rollup-darwin-x64@4.16.1':
+ resolution: {integrity: sha512-TAUK/D8khRrRIa1KwRzo8JNKk3tcqaeXWdtsiLgA8zmACWwlWLjPCJ4DULGHQrMkeBjp1Cd3Yuwx04lZgFx5Vg==}
cpu: [x64]
os: [darwin]
- '@rollup/rollup-linux-arm-gnueabihf@4.14.3':
- resolution: {integrity: sha512-ge2DC7tHRHa3caVEoSbPRJpq7azhG+xYsd6u2MEnJ6XzPSzQsTKyXvh6iWjXRf7Rt9ykIUWHtl0Uz3T6yXPpKw==}
+ '@rollup/rollup-linux-arm-gnueabihf@4.16.1':
+ resolution: {integrity: sha512-KO+WGZjrh6zyFTD1alIFkfdtxf8B4BC+hqd3kBZHscPLvE5FR/6QKsyuCT0JlERxxYBSUKNUQ/UHyX5uwO1x2A==}
cpu: [arm]
os: [linux]
- '@rollup/rollup-linux-arm-musleabihf@4.14.3':
- resolution: {integrity: sha512-ljcuiDI4V3ySuc7eSk4lQ9wU8J8r8KrOUvB2U+TtK0TiW6OFDmJ+DdIjjwZHIw9CNxzbmXY39wwpzYuFDwNXuw==}
+ '@rollup/rollup-linux-arm-musleabihf@4.16.1':
+ resolution: {integrity: sha512-NqxbllzIB1WoAo4ThUXVtd21iiM5IHMTTXmXySKBLVcZvkU0HIZmatlP7hLzb5yQubcmdIeWmncd2NdsjocEiw==}
cpu: [arm]
os: [linux]
- '@rollup/rollup-linux-arm64-gnu@4.14.3':
- resolution: {integrity: sha512-Eci2us9VTHm1eSyn5/eEpaC7eP/mp5n46gTRB3Aar3BgSvDQGJZuicyq6TsH4HngNBgVqC5sDYxOzTExSU+NjA==}
+ '@rollup/rollup-linux-arm64-gnu@4.16.1':
+ resolution: {integrity: sha512-snma5NvV8y7IECQ5rq0sr0f3UUu+92NVmG/913JXJMcXo84h9ak9TA5UI9Cl2XRM9j3m37QwDBtEYnJzRkSmxA==}
cpu: [arm64]
os: [linux]
- '@rollup/rollup-linux-arm64-musl@4.14.3':
- resolution: {integrity: sha512-UrBoMLCq4E92/LCqlh+blpqMz5h1tJttPIniwUgOFJyjWI1qrtrDhhpHPuFxULlUmjFHfloWdixtDhSxJt5iKw==}
+ '@rollup/rollup-linux-arm64-musl@4.16.1':
+ resolution: {integrity: sha512-KOvqGprlD84ueivhCi2flvcUwDRD20mAsE3vxQNVEI2Di9tnPGAfEu6UcrSPZbM+jG2w1oSr43hrPo0RNg6GGg==}
cpu: [arm64]
os: [linux]
- '@rollup/rollup-linux-powerpc64le-gnu@4.14.3':
- resolution: {integrity: sha512-5aRjvsS8q1nWN8AoRfrq5+9IflC3P1leMoy4r2WjXyFqf3qcqsxRCfxtZIV58tCxd+Yv7WELPcO9mY9aeQyAmw==}
+ '@rollup/rollup-linux-powerpc64le-gnu@4.16.1':
+ resolution: {integrity: sha512-/gsNwtiGLqYwN4vP+EIdUC6Q6LTlpupWqokqIndvZcjn9ig/5P01WyaYCU2wvfL/2Z82jp5kX8c1mDBOvCP3zg==}
cpu: [ppc64]
os: [linux]
- '@rollup/rollup-linux-riscv64-gnu@4.14.3':
- resolution: {integrity: sha512-sk/Qh1j2/RJSX7FhEpJn8n0ndxy/uf0kI/9Zc4b1ELhqULVdTfN6HL31CDaTChiBAOgLcsJ1sgVZjWv8XNEsAQ==}
+ '@rollup/rollup-linux-riscv64-gnu@4.16.1':
+ resolution: {integrity: sha512-uU8zuGkQfGqfD9w6VRJZI4IuG4JIfNxxJgEmLMAmPVHREKGsxFVfgHy5c6CexQF2vOfgjB33OsET3Vdn2lln9A==}
cpu: [riscv64]
os: [linux]
- '@rollup/rollup-linux-s390x-gnu@4.14.3':
- resolution: {integrity: sha512-jOO/PEaDitOmY9TgkxF/TQIjXySQe5KVYB57H/8LRP/ux0ZoO8cSHCX17asMSv3ruwslXW/TLBcxyaUzGRHcqg==}
+ '@rollup/rollup-linux-s390x-gnu@4.16.1':
+ resolution: {integrity: sha512-lsjLtDgtcGFEuBP6yrXwkRN5/wKlvUZtfbKZZu0yaoNpiBL4epgnO21osAALIspVRnl4qZgyLFd8xjCYYWgwfw==}
cpu: [s390x]
os: [linux]
- '@rollup/rollup-linux-x64-gnu@4.14.3':
- resolution: {integrity: sha512-8ybV4Xjy59xLMyWo3GCfEGqtKV5M5gCSrZlxkPGvEPCGDLNla7v48S662HSGwRd6/2cSneMQWiv+QzcttLrrOA==}
+ '@rollup/rollup-linux-x64-gnu@4.16.1':
+ resolution: {integrity: sha512-N2ZizKhUryqqrMfdCnjhJhZRgv61C6gK+hwVtCIKC8ts8J+go+vqENnGexwg21nHIOvLN5mBM8a7DI2vlyIOPg==}
cpu: [x64]
os: [linux]
- '@rollup/rollup-linux-x64-musl@4.14.3':
- resolution: {integrity: sha512-s+xf1I46trOY10OqAtZ5Rm6lzHre/UiLA1J2uOhCFXWkbZrJRkYBPO6FhvGfHmdtQ3Bx793MNa7LvoWFAm93bg==}
+ '@rollup/rollup-linux-x64-musl@4.16.1':
+ resolution: {integrity: sha512-5ICeMxqg66FrOA2AbnBQ2TJVxfvZsKLxmof0ibvPLaYtbsJqnTUtJOofgWb46Gjd4uZcA4rdsp4JCxegzQPqCg==}
cpu: [x64]
os: [linux]
- '@rollup/rollup-win32-arm64-msvc@4.14.3':
- resolution: {integrity: sha512-+4h2WrGOYsOumDQ5S2sYNyhVfrue+9tc9XcLWLh+Kw3UOxAvrfOrSMFon60KspcDdytkNDh7K2Vs6eMaYImAZg==}
+ '@rollup/rollup-win32-arm64-msvc@4.16.1':
+ resolution: {integrity: sha512-1vIP6Ce02L+qWD7uZYRiFiuAJo3m9kARatWmFSnss0gZnVj2Id7OPUU9gm49JPGasgcR3xMqiH3fqBJ8t00yVg==}
cpu: [arm64]
os: [win32]
- '@rollup/rollup-win32-ia32-msvc@4.14.3':
- resolution: {integrity: sha512-T1l7y/bCeL/kUwh9OD4PQT4aM7Bq43vX05htPJJ46RTI4r5KNt6qJRzAfNfM+OYMNEVBWQzR2Gyk+FXLZfogGw==}
+ '@rollup/rollup-win32-ia32-msvc@4.16.1':
+ resolution: {integrity: sha512-Y3M92DcVsT6LoP+wrKpoUWPaazaP1fzbNkp0a0ZSj5Y//+pQVfVe/tQdsYQQy7dwXR30ZfALUIc9PCh9Izir6w==}
cpu: [ia32]
os: [win32]
- '@rollup/rollup-win32-x64-msvc@4.14.3':
- resolution: {integrity: sha512-/BypzV0H1y1HzgYpxqRaXGBRqfodgoBBCcsrujT6QRcakDQdfU+Lq9PENPh5jB4I44YWq+0C2eHsHya+nZY1sA==}
+ '@rollup/rollup-win32-x64-msvc@4.16.1':
+ resolution: {integrity: sha512-x0fvpHMuF7fK5r8oZxSi8VYXkrVmRgubXpO/wcf15Lk3xZ4Jvvh5oG+u7Su1776A7XzVKZhD2eRc4t7H50gL3w==}
cpu: [x64]
os: [win32]
@@ -2533,8 +2533,8 @@ packages:
markdown-table@3.0.3:
resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==}
- marked@12.0.1:
- resolution: {integrity: sha512-Y1/V2yafOcOdWQCX0XpAKXzDakPOpn6U0YLxTJs3cww6VxOzZV1BTOOYWLvH3gX38cq+iLwljHHTnMtlDfg01Q==}
+ marked@12.0.2:
+ resolution: {integrity: sha512-qXUm7e/YKFoqFPYPa3Ukg9xlI5cyAtGmyEIzMfW//m6kXwCy2Ps9DYf5ioijFKQ8qyuscrHoY04iJGctu2Kg0Q==}
engines: {node: '>= 18'}
hasBin: true
@@ -3050,8 +3050,8 @@ packages:
peerDependencies:
rollup: ^1.20.0 || ^2.0.0 || ^3.0.0 || ^4.0.0
- rollup@4.14.3:
- resolution: {integrity: sha512-ag5tTQKYsj1bhrFC9+OEWqb5O6VYgtQDO9hPDBMmIbePwhfSr+ExlcU741t8Dhw5DkPCQf6noz0jb36D6W9/hw==}
+ rollup@4.16.1:
+ resolution: {integrity: sha512-5CaD3MPDlPKfhqzRvWXK96G6ELJfPZNb3LHiZxTHgDdC6jvwfGz2E8nY+9g1ONk4ttHsK1WaFP19Js4PSr1E3g==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
@@ -3472,6 +3472,34 @@ packages:
'@nuxt/kit':
optional: true
+ vite@5.2.10:
+ resolution: {integrity: sha512-PAzgUZbP7msvQvqdSD+ErD5qGnSFiGOoWmV5yAKUEI0kdhjbH6nMWVyZQC/hSc4aXwc0oJ9aEdIiF9Oje0JFCw==}
+ 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
+
vite@5.2.9:
resolution: {integrity: sha512-uOQWfuZBlc6Y3W/DTuQ1Sr+oIXWvqljLvS881SVmAj00d5RdgShLcuXWxseWPd4HXwiYBFW/vXHfKFeqj9uQnw==}
engines: {node: ^18.0.0 || >=20.0.0}
@@ -3797,10 +3825,10 @@ snapshots:
transitivePeerDependencies:
- debug
- '@codspeed/vitest-plugin@3.1.0(vite@5.2.9(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.3))(vitest@1.5.0(@types/node@20.12.7)(@vitest/ui@1.5.0)(jsdom@24.0.0)(sass@1.75.0)(terser@5.30.3))':
+ '@codspeed/vitest-plugin@3.1.0(vite@5.2.10(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.3))(vitest@1.5.0(@types/node@20.12.7)(@vitest/ui@1.5.0)(jsdom@24.0.0)(sass@1.75.0)(terser@5.30.3))':
dependencies:
'@codspeed/core': 3.1.0
- vite: 5.2.9(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.3)
+ vite: 5.2.10(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.3)
vitest: 1.5.0(@types/node@20.12.7)(@vitest/ui@1.5.0)(jsdom@24.0.0)(sass@1.75.0)(terser@5.30.3)
transitivePeerDependencies:
- debug
@@ -4049,117 +4077,117 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@rollup/plugin-alias@5.1.0(rollup@4.14.3)':
+ '@rollup/plugin-alias@5.1.0(rollup@4.16.1)':
dependencies:
slash: 4.0.0
optionalDependencies:
- rollup: 4.14.3
+ rollup: 4.16.1
- '@rollup/plugin-commonjs@25.0.7(rollup@4.14.3)':
+ '@rollup/plugin-commonjs@25.0.7(rollup@4.16.1)':
dependencies:
- '@rollup/pluginutils': 5.1.0(rollup@4.14.3)
+ '@rollup/pluginutils': 5.1.0(rollup@4.16.1)
commondir: 1.0.1
estree-walker: 2.0.2
glob: 8.1.0
is-reference: 1.2.1
magic-string: 0.30.10
optionalDependencies:
- rollup: 4.14.3
+ rollup: 4.16.1
- '@rollup/plugin-inject@5.0.5(rollup@4.14.3)':
+ '@rollup/plugin-inject@5.0.5(rollup@4.16.1)':
dependencies:
- '@rollup/pluginutils': 5.1.0(rollup@4.14.3)
+ '@rollup/pluginutils': 5.1.0(rollup@4.16.1)
estree-walker: 2.0.2
magic-string: 0.30.10
optionalDependencies:
- rollup: 4.14.3
+ rollup: 4.16.1
- '@rollup/plugin-json@6.1.0(rollup@4.14.3)':
+ '@rollup/plugin-json@6.1.0(rollup@4.16.1)':
dependencies:
- '@rollup/pluginutils': 5.1.0(rollup@4.14.3)
+ '@rollup/pluginutils': 5.1.0(rollup@4.16.1)
optionalDependencies:
- rollup: 4.14.3
+ rollup: 4.16.1
- '@rollup/plugin-node-resolve@15.2.3(rollup@4.14.3)':
+ '@rollup/plugin-node-resolve@15.2.3(rollup@4.16.1)':
dependencies:
- '@rollup/pluginutils': 5.1.0(rollup@4.14.3)
+ '@rollup/pluginutils': 5.1.0(rollup@4.16.1)
'@types/resolve': 1.20.2
deepmerge: 4.3.1
is-builtin-module: 3.2.1
is-module: 1.0.0
resolve: 1.22.8
optionalDependencies:
- rollup: 4.14.3
+ rollup: 4.16.1
- '@rollup/plugin-replace@5.0.4(rollup@4.14.3)':
+ '@rollup/plugin-replace@5.0.4(rollup@4.16.1)':
dependencies:
- '@rollup/pluginutils': 5.1.0(rollup@4.14.3)
+ '@rollup/pluginutils': 5.1.0(rollup@4.16.1)
magic-string: 0.30.10
optionalDependencies:
- rollup: 4.14.3
+ rollup: 4.16.1
- '@rollup/plugin-terser@0.4.4(rollup@4.14.3)':
+ '@rollup/plugin-terser@0.4.4(rollup@4.16.1)':
dependencies:
serialize-javascript: 6.0.2
smob: 1.5.0
terser: 5.30.3
optionalDependencies:
- rollup: 4.14.3
+ rollup: 4.16.1
- '@rollup/pluginutils@5.1.0(rollup@4.14.3)':
+ '@rollup/pluginutils@5.1.0(rollup@4.16.1)':
dependencies:
'@types/estree': 1.0.5
estree-walker: 2.0.2
picomatch: 2.3.1
optionalDependencies:
- rollup: 4.14.3
+ rollup: 4.16.1
- '@rollup/rollup-android-arm-eabi@4.14.3':
+ '@rollup/rollup-android-arm-eabi@4.16.1':
optional: true
- '@rollup/rollup-android-arm64@4.14.3':
+ '@rollup/rollup-android-arm64@4.16.1':
optional: true
- '@rollup/rollup-darwin-arm64@4.14.3':
+ '@rollup/rollup-darwin-arm64@4.16.1':
optional: true
- '@rollup/rollup-darwin-x64@4.14.3':
+ '@rollup/rollup-darwin-x64@4.16.1':
optional: true
- '@rollup/rollup-linux-arm-gnueabihf@4.14.3':
+ '@rollup/rollup-linux-arm-gnueabihf@4.16.1':
optional: true
- '@rollup/rollup-linux-arm-musleabihf@4.14.3':
+ '@rollup/rollup-linux-arm-musleabihf@4.16.1':
optional: true
- '@rollup/rollup-linux-arm64-gnu@4.14.3':
+ '@rollup/rollup-linux-arm64-gnu@4.16.1':
optional: true
- '@rollup/rollup-linux-arm64-musl@4.14.3':
+ '@rollup/rollup-linux-arm64-musl@4.16.1':
optional: true
- '@rollup/rollup-linux-powerpc64le-gnu@4.14.3':
+ '@rollup/rollup-linux-powerpc64le-gnu@4.16.1':
optional: true
- '@rollup/rollup-linux-riscv64-gnu@4.14.3':
+ '@rollup/rollup-linux-riscv64-gnu@4.16.1':
optional: true
- '@rollup/rollup-linux-s390x-gnu@4.14.3':
+ '@rollup/rollup-linux-s390x-gnu@4.16.1':
optional: true
- '@rollup/rollup-linux-x64-gnu@4.14.3':
+ '@rollup/rollup-linux-x64-gnu@4.16.1':
optional: true
- '@rollup/rollup-linux-x64-musl@4.14.3':
+ '@rollup/rollup-linux-x64-musl@4.16.1':
optional: true
- '@rollup/rollup-win32-arm64-msvc@4.14.3':
+ '@rollup/rollup-win32-arm64-msvc@4.16.1':
optional: true
- '@rollup/rollup-win32-ia32-msvc@4.14.3':
+ '@rollup/rollup-win32-ia32-msvc@4.16.1':
optional: true
- '@rollup/rollup-win32-x64-msvc@4.14.3':
+ '@rollup/rollup-win32-x64-msvc@4.16.1':
optional: true
'@sinclair/typebox@0.27.8': {}
@@ -4277,9 +4305,9 @@ snapshots:
'@typescript-eslint/types': 7.7.0
eslint-visitor-keys: 3.4.3
- '@vitejs/plugin-vue@5.0.4(vite@5.2.9(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.3))(vue@packages+vue)':
+ '@vitejs/plugin-vue@5.0.4(vite@5.2.10(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.3))(vue@packages+vue)':
dependencies:
- vite: 5.2.9(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.3)
+ vite: 5.2.10(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.3)
vue: link:packages/vue
'@vitest/coverage-istanbul@1.5.0(vitest@1.5.0(@types/node@20.12.7)(@vitest/ui@1.5.0)(jsdom@24.0.0)(sass@1.75.0)(terser@5.30.3))':
@@ -5743,7 +5771,7 @@ snapshots:
markdown-table@3.0.3: {}
- marked@12.0.1: {}
+ marked@12.0.2: {}
memorystream@0.3.1: {}
@@ -6268,50 +6296,50 @@ snapshots:
dependencies:
glob: 10.3.12
- rollup-plugin-dts@6.1.0(rollup@4.14.3)(typescript@5.4.5):
+ rollup-plugin-dts@6.1.0(rollup@4.16.1)(typescript@5.4.5):
dependencies:
magic-string: 0.30.10
- rollup: 4.14.3
+ rollup: 4.16.1
typescript: 5.4.5
optionalDependencies:
'@babel/code-frame': 7.24.2
- rollup-plugin-esbuild@6.1.1(esbuild@0.20.2)(rollup@4.14.3):
+ rollup-plugin-esbuild@6.1.1(esbuild@0.20.2)(rollup@4.16.1):
dependencies:
- '@rollup/pluginutils': 5.1.0(rollup@4.14.3)
+ '@rollup/pluginutils': 5.1.0(rollup@4.16.1)
debug: 4.3.4
es-module-lexer: 1.5.0
esbuild: 0.20.2
get-tsconfig: 4.7.3
- rollup: 4.14.3
+ rollup: 4.16.1
transitivePeerDependencies:
- supports-color
- rollup-plugin-polyfill-node@0.13.0(rollup@4.14.3):
+ rollup-plugin-polyfill-node@0.13.0(rollup@4.16.1):
dependencies:
- '@rollup/plugin-inject': 5.0.5(rollup@4.14.3)
- rollup: 4.14.3
+ '@rollup/plugin-inject': 5.0.5(rollup@4.16.1)
+ rollup: 4.16.1
- rollup@4.14.3:
+ rollup@4.16.1:
dependencies:
'@types/estree': 1.0.5
optionalDependencies:
- '@rollup/rollup-android-arm-eabi': 4.14.3
- '@rollup/rollup-android-arm64': 4.14.3
- '@rollup/rollup-darwin-arm64': 4.14.3
- '@rollup/rollup-darwin-x64': 4.14.3
- '@rollup/rollup-linux-arm-gnueabihf': 4.14.3
- '@rollup/rollup-linux-arm-musleabihf': 4.14.3
- '@rollup/rollup-linux-arm64-gnu': 4.14.3
- '@rollup/rollup-linux-arm64-musl': 4.14.3
- '@rollup/rollup-linux-powerpc64le-gnu': 4.14.3
- '@rollup/rollup-linux-riscv64-gnu': 4.14.3
- '@rollup/rollup-linux-s390x-gnu': 4.14.3
- '@rollup/rollup-linux-x64-gnu': 4.14.3
- '@rollup/rollup-linux-x64-musl': 4.14.3
- '@rollup/rollup-win32-arm64-msvc': 4.14.3
- '@rollup/rollup-win32-ia32-msvc': 4.14.3
- '@rollup/rollup-win32-x64-msvc': 4.14.3
+ '@rollup/rollup-android-arm-eabi': 4.16.1
+ '@rollup/rollup-android-arm64': 4.16.1
+ '@rollup/rollup-darwin-arm64': 4.16.1
+ '@rollup/rollup-darwin-x64': 4.16.1
+ '@rollup/rollup-linux-arm-gnueabihf': 4.16.1
+ '@rollup/rollup-linux-arm-musleabihf': 4.16.1
+ '@rollup/rollup-linux-arm64-gnu': 4.16.1
+ '@rollup/rollup-linux-arm64-musl': 4.16.1
+ '@rollup/rollup-linux-powerpc64le-gnu': 4.16.1
+ '@rollup/rollup-linux-riscv64-gnu': 4.16.1
+ '@rollup/rollup-linux-s390x-gnu': 4.16.1
+ '@rollup/rollup-linux-x64-gnu': 4.16.1
+ '@rollup/rollup-linux-x64-musl': 4.16.1
+ '@rollup/rollup-win32-arm64-msvc': 4.16.1
+ '@rollup/rollup-win32-ia32-msvc': 4.16.1
+ '@rollup/rollup-win32-x64-msvc': 4.16.1
fsevents: 2.3.3
rrweb-cssom@0.6.0: {}
@@ -6716,7 +6744,7 @@ snapshots:
debug: 4.3.4
pathe: 1.1.2
picocolors: 1.0.0
- vite: 5.2.9(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.3)
+ vite: 5.2.10(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.3)
transitivePeerDependencies:
- '@types/node'
- less
@@ -6727,10 +6755,10 @@ snapshots:
- supports-color
- terser
- vite-plugin-inspect@0.7.42(rollup@4.14.3)(vite@5.2.9(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.3)):
+ vite-plugin-inspect@0.7.42(rollup@4.16.1)(vite@5.2.9(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.3)):
dependencies:
'@antfu/utils': 0.7.7
- '@rollup/pluginutils': 5.1.0(rollup@4.14.3)
+ '@rollup/pluginutils': 5.1.0(rollup@4.16.1)
debug: 4.3.4
error-stack-parser-es: 0.1.1
fs-extra: 11.2.0
@@ -6742,11 +6770,22 @@ snapshots:
- rollup
- supports-color
+ vite@5.2.10(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.3):
+ dependencies:
+ esbuild: 0.20.2
+ postcss: 8.4.38
+ rollup: 4.16.1
+ optionalDependencies:
+ '@types/node': 20.12.7
+ fsevents: 2.3.3
+ sass: 1.75.0
+ terser: 5.30.3
+
vite@5.2.9(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.3):
dependencies:
esbuild: 0.20.2
postcss: 8.4.38
- rollup: 4.14.3
+ rollup: 4.16.1
optionalDependencies:
'@types/node': 20.12.7
fsevents: 2.3.3
@@ -6772,7 +6811,7 @@ snapshots:
strip-literal: 2.1.0
tinybench: 2.7.0
tinypool: 0.8.4
- vite: 5.2.9(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.3)
+ vite: 5.2.10(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.3)
vite-node: 1.5.0(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.3)
why-is-node-running: 2.2.2
optionalDependencies:
diff --git a/vitest.e2e.config.ts b/vitest.e2e.config.ts
index ecf1c9d95..90a67d229 100644
--- a/vitest.e2e.config.ts
+++ b/vitest.e2e.config.ts
@@ -3,6 +3,11 @@ import config from './vitest.config'
export default mergeConfig(config, {
test: {
+ poolOptions: {
+ threads: {
+ singleThread: !!process.env.CI,
+ },
+ },
include: ['packages/vue/__tests__/e2e/*.spec.ts'],
},
})