chore: Merge branch 'main' into minor

This commit is contained in:
Evan You 2024-04-22 23:32:45 +08:00
commit 9fd1284ca4
No known key found for this signature in database
GPG Key ID: B9D421896CA450FB
30 changed files with 608 additions and 215 deletions

View File

@ -1,3 +1,21 @@
## [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)

View File

@ -1,7 +1,7 @@
{
"private": true,
"version": "3.4.23",
"packageManager": "pnpm@9.0.1",
"version": "3.4.24",
"packageManager": "pnpm@9.0.5",
"type": "module",
"scripts": {
"dev": "node scripts/dev.js",
@ -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,9 +70,9 @@
"@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/coverage-istanbul": "^1.5.0",
"@vue/consolidate": "1.0.0",
"conventional-changelog-cli": "^4.1.0",
"enquirer": "^2.4.1",
@ -86,32 +86,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": {

View File

@ -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/ <slot/> 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 <slot/> 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 <template> 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 */))
}
}"
`;

View File

@ -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(`<div v-for="i in l" ref="x"/>`)
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(`<div v-for="i in l" :ref="x"/>`)
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(`<div v-for="i in l" v-bind="x" />`)
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,
},
],
})
})
})

View File

@ -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`,
},
` })()`,
],
})
})
})
})

View File

@ -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 = {},
) {

View File

@ -1,6 +1,6 @@
{
"name": "@vue/compiler-core",
"version": "3.4.23",
"version": "3.4.24",
"description": "@vue/compiler-core",
"main": "index.js",
"module": "dist/compiler-core.esm-bundler.js",
@ -46,7 +46,7 @@
},
"homepage": "https://github.com/vuejs/core/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",

View File

@ -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

View File

@ -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__) {

View File

@ -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'
@ -272,9 +272,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(

View File

@ -1,6 +1,6 @@
{
"name": "@vue/compiler-dom",
"version": "3.4.23",
"version": "3.4.24",
"description": "@vue/compiler-dom",
"main": "index.js",
"module": "dist/compiler-dom.esm-bundler.js",

View File

@ -265,6 +265,27 @@ describe('resolveType', () => {
})
})
test('utility type: ReadonlyArray', () => {
expect(
resolve(`
defineProps<{ foo: ReadonlyArray<string> }>()
`).props,
).toStrictEqual({
foo: ['Array'],
})
})
test('utility type: ReadonlyMap & Readonly Set', () => {
expect(
resolve(`
defineProps<{ foo: ReadonlyMap<string, unknown>, bar: ReadonlySet<string> }>()
`).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(
`

View File

@ -1,6 +1,6 @@
{
"name": "@vue/compiler-sfc",
"version": "3.4.23",
"version": "3.4.24",
"description": "@vue/compiler-sfc",
"main": "dist/compiler-sfc.cjs.js",
"module": "dist/compiler-sfc.esm-browser.js",
@ -42,13 +42,13 @@
},
"homepage": "https://github.com/vuejs/core/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/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"
},
@ -62,6 +62,6 @@
"postcss-modules": "^6.0.0",
"postcss-selector-parser": "^6.0.16",
"pug": "^3.0.2",
"sass": "^1.74.1"
"sass": "^1.75.0"
}
}

View File

@ -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

View File

@ -143,4 +143,20 @@ describe('ssr: <slot>', () => {
}"
`)
})
test('with v-if inside transition', () => {
const { code } = compile(`<transition><slot v-if="true"/></transition>`)
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(\`<!---->\`)
}
}"
`)
})
})

View File

@ -1,6 +1,6 @@
{
"name": "@vue/compiler-ssr",
"version": "3.4.23",
"version": "3.4.24",
"description": "@vue/compiler-ssr",
"main": "dist/compiler-ssr.cjs.js",
"types": "dist/compiler-ssr.d.ts",

View File

@ -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 <slot v-if> in <Transition>
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)

View File

@ -1,6 +1,6 @@
{
"name": "@vue/reactivity",
"version": "3.4.23",
"version": "3.4.24",
"description": "@vue/reactivity",
"main": "index.js",
"module": "dist/reactivity.esm-bundler.js",

View File

@ -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', () => {

View File

@ -1,6 +1,6 @@
{
"name": "@vue/runtime-core",
"version": "3.4.23",
"version": "3.4.24",
"description": "@vue/runtime-core",
"main": "index.js",
"module": "dist/runtime-core.esm-bundler.js",

View File

@ -26,6 +26,7 @@ import {
isCompatEnabled,
warnDeprecation,
} from './compat/compatConfig'
import { shallowReadonly } from '@vue/reactivity'
/**
* dev only flag to track whether $attrs was used during render.
@ -48,22 +49,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
}
@ -93,7 +94,7 @@ export function renderComponentRoot(
thisProxy,
proxyToUse!,
renderCache,
props,
__DEV__ ? shallowReadonly(props) : props,
setupState,
data,
ctx,
@ -110,7 +111,7 @@ export function renderComponentRoot(
result = normalizeVNode(
render.length > 1
? render(
props,
__DEV__ ? shallowReadonly(props) : props,
__DEV__
? {
get attrs() {
@ -122,7 +123,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

View File

@ -1,6 +1,6 @@
{
"name": "@vue/runtime-dom",
"version": "3.4.23",
"version": "3.4.24",
"description": "@vue/runtime-dom",
"main": "index.js",
"module": "dist/runtime-dom.esm-bundler.js",

View File

@ -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

View File

@ -1,6 +1,6 @@
{
"name": "@vue/server-renderer",
"version": "3.4.23",
"version": "3.4.24",
"description": "@vue/server-renderer",
"main": "index.js",
"module": "dist/server-renderer.esm-bundler.js",

View File

@ -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",

View File

@ -12,6 +12,6 @@
},
"devDependencies": {
"@vitejs/plugin-vue": "^5.0.4",
"vite": "^5.2.7"
"vite": "^5.2.10"
}
}

View File

@ -1,6 +1,6 @@
{
"name": "@vue/shared",
"version": "3.4.23",
"version": "3.4.24",
"description": "internal utils shared across @vue packages",
"main": "index.js",
"module": "dist/shared.esm-bundler.js",

View File

@ -1,6 +1,6 @@
{
"name": "@vue/compat",
"version": "3.4.23",
"version": "3.4.24",
"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/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"
},

View File

@ -1,6 +1,6 @@
{
"name": "vue",
"version": "3.4.23",
"version": "3.4.24",
"description": "The progressive JavaScript framework for building modern web UI.",
"main": "index.js",
"module": "dist/vue.runtime.esm-bundler.js",

View File

@ -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)(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)(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,13 +42,13 @@ 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)(jsdom@24.0.0)(sass@1.75.0)(terser@5.30.3))
'@vue/consolidate':
specifier: 1.0.0
@ -90,14 +90,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
@ -117,23 +117,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
@ -144,7 +144,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
@ -162,16 +162,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)(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:*
@ -202,7 +202,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:*
@ -220,7 +220,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
@ -257,7 +257,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:
@ -355,10 +355,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: {}
@ -395,7 +395,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
@ -951,83 +951,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]
@ -2391,8 +2391,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
@ -2900,8 +2900,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
@ -3286,8 +3286,8 @@ packages:
engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true
vite@5.2.9:
resolution: {integrity: sha512-uOQWfuZBlc6Y3W/DTuQ1Sr+oIXWvqljLvS881SVmAj00d5RdgShLcuXWxseWPd4HXwiYBFW/vXHfKFeqj9uQnw==}
vite@5.2.10:
resolution: {integrity: sha512-PAzgUZbP7msvQvqdSD+ErD5qGnSFiGOoWmV5yAKUEI0kdhjbH6nMWVyZQC/hSc4aXwc0oJ9aEdIiF9Oje0JFCw==}
engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true
peerDependencies:
@ -3598,10 +3598,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)(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)(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)(jsdom@24.0.0)(sass@1.75.0)(terser@5.30.3)
transitivePeerDependencies:
- debug
@ -3848,117 +3848,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': {}
@ -4074,9 +4074,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)(jsdom@24.0.0)(sass@1.75.0)(terser@5.30.3))':
@ -5457,7 +5457,7 @@ snapshots:
markdown-table@3.0.3: {}
marked@12.0.1: {}
marked@12.0.2: {}
memorystream@0.3.1: {}
@ -5973,50 +5973,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: {}
@ -6389,7 +6389,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
@ -6400,11 +6400,11 @@ snapshots:
- supports-color
- terser
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):
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
@ -6430,7 +6430,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: