mirror of https://github.com/vuejs/core.git
chore: Merge branch 'vapor' into edison/testVapor
This commit is contained in:
commit
a253aa6935
|
@ -149,7 +149,7 @@ export function render(_ctx, $props, $emit, $attrs, $slots) {
|
|||
`;
|
||||
|
||||
exports[`compile > directives > v-pre > should not affect siblings after it 1`] = `
|
||||
"import { resolveComponent as _resolveComponent, setInsertionState as _setInsertionState, createComponentWithFallback as _createComponentWithFallback, child as _child, toDisplayString as _toDisplayString, setText as _setText, setProp as _setProp, renderEffect as _renderEffect, template as _template } from 'vue';
|
||||
"import { resolveComponent as _resolveComponent, setInsertionState as _setInsertionState, createComponentWithFallback as _createComponentWithFallback, child as _child, setProp as _setProp, toDisplayString as _toDisplayString, setText as _setText, renderEffect as _renderEffect, template as _template } from 'vue';
|
||||
const t0 = _template("<div :id=\\"foo\\"><Comp></Comp>{{ bar }}</div>")
|
||||
const t1 = _template("<div> </div>")
|
||||
|
||||
|
@ -161,8 +161,8 @@ export function render(_ctx, $props, $emit, $attrs, $slots) {
|
|||
_setInsertionState(n3, 0)
|
||||
const n1 = _createComponentWithFallback(_component_Comp)
|
||||
_renderEffect(() => {
|
||||
_setText(n2, _toDisplayString(_ctx.bar))
|
||||
_setProp(n3, "id", _ctx.foo)
|
||||
_setText(n2, _toDisplayString(_ctx.bar))
|
||||
})
|
||||
return [n0, n3]
|
||||
}"
|
||||
|
@ -180,7 +180,7 @@ export function render(_ctx) {
|
|||
`;
|
||||
|
||||
exports[`compile > dynamic root nodes and interpolation 1`] = `
|
||||
"import { child as _child, toDisplayString as _toDisplayString, setText as _setText, setProp as _setProp, renderEffect as _renderEffect, delegateEvents as _delegateEvents, template as _template } from 'vue';
|
||||
"import { child as _child, setProp as _setProp, toDisplayString as _toDisplayString, setText as _setText, renderEffect as _renderEffect, delegateEvents as _delegateEvents, template as _template } from 'vue';
|
||||
const t0 = _template("<button> </button>", true)
|
||||
_delegateEvents("click")
|
||||
|
||||
|
@ -190,13 +190,47 @@ export function render(_ctx) {
|
|||
n0.$evtclick = e => _ctx.handleClick(e)
|
||||
_renderEffect(() => {
|
||||
const _count = _ctx.count
|
||||
_setText(x0, _toDisplayString(_count) + "foo" + _toDisplayString(_count) + "foo" + _toDisplayString(_count))
|
||||
_setProp(n0, "id", _count)
|
||||
_setText(x0, _toDisplayString(_count) + "foo" + _toDisplayString(_count) + "foo" + _toDisplayString(_count))
|
||||
})
|
||||
return n0
|
||||
}"
|
||||
`;
|
||||
|
||||
exports[`compile > execution order > basic 1`] = `
|
||||
"import { child as _child, setProp as _setProp, toDisplayString as _toDisplayString, setText as _setText, renderEffect as _renderEffect, template as _template } from 'vue';
|
||||
const t0 = _template("<div> </div>", true)
|
||||
|
||||
export function render(_ctx) {
|
||||
const n0 = t0()
|
||||
const x0 = _child(n0)
|
||||
_renderEffect(() => {
|
||||
_setProp(n0, "id", _ctx.foo)
|
||||
_setText(x0, _toDisplayString(_ctx.bar))
|
||||
})
|
||||
return n0
|
||||
}"
|
||||
`;
|
||||
|
||||
exports[`compile > execution order > with v-once 1`] = `
|
||||
"import { child as _child, next as _next, nthChild as _nthChild, toDisplayString as _toDisplayString, setText as _setText, renderEffect as _renderEffect, template as _template } from 'vue';
|
||||
const t0 = _template("<div><span> </span> <br> </div>", true)
|
||||
|
||||
export function render(_ctx) {
|
||||
const n3 = t0()
|
||||
const n0 = _child(n3)
|
||||
const n1 = _next(n0)
|
||||
const n2 = _nthChild(n3, 3)
|
||||
const x0 = _child(n0)
|
||||
_setText(x0, _toDisplayString(_ctx.foo))
|
||||
_renderEffect(() => {
|
||||
_setText(n1, " " + _toDisplayString(_ctx.bar))
|
||||
_setText(n2, " " + _toDisplayString(_ctx.baz))
|
||||
})
|
||||
return n3
|
||||
}"
|
||||
`;
|
||||
|
||||
exports[`compile > expression parsing > interpolation 1`] = `
|
||||
"
|
||||
const n0 = t0()
|
||||
|
|
|
@ -237,4 +237,29 @@ describe('compile', () => {
|
|||
expect(code).toMatchSnapshot()
|
||||
})
|
||||
})
|
||||
|
||||
describe('execution order', () => {
|
||||
test('basic', () => {
|
||||
const code = compile(`<div :id="foo">{{ bar }}</div>`)
|
||||
expect(code).matchSnapshot()
|
||||
expect(code).contains(
|
||||
`_setProp(n0, "id", _ctx.foo)
|
||||
_setText(x0, _toDisplayString(_ctx.bar))`,
|
||||
)
|
||||
})
|
||||
test('with v-once', () => {
|
||||
const code = compile(
|
||||
`<div>
|
||||
<span v-once>{{ foo }}</span>
|
||||
{{ bar }}<br>
|
||||
{{ baz }}
|
||||
</div>`,
|
||||
)
|
||||
expect(code).matchSnapshot()
|
||||
expect(code).contains(
|
||||
`_setText(n1, " " + _toDisplayString(_ctx.bar))
|
||||
_setText(n2, " " + _toDisplayString(_ctx.baz))`,
|
||||
)
|
||||
})
|
||||
})
|
||||
})
|
||||
|
|
|
@ -32,3 +32,24 @@ export function render(_ctx, $props, $emit, $attrs, $slots) {
|
|||
return n0
|
||||
}"
|
||||
`;
|
||||
|
||||
exports[`compiler: expression > update expression 1`] = `
|
||||
"import { child as _child, setProp as _setProp, toDisplayString as _toDisplayString, setText as _setText, renderEffect as _renderEffect, template as _template } from 'vue';
|
||||
const t0 = _template("<div> </div>", true)
|
||||
|
||||
export function render(_ctx) {
|
||||
const n1 = t0()
|
||||
const n0 = _child(n1)
|
||||
const x1 = _child(n1)
|
||||
_renderEffect(() => {
|
||||
const _String = String
|
||||
const _foo = _ctx.foo
|
||||
_setProp(n1, "id", _String(_foo.id++))
|
||||
_setProp(n1, "foo", _foo)
|
||||
_setProp(n1, "bar", _ctx.bar++)
|
||||
_setText(n0, _toDisplayString(_String(_foo.id++)) + " " + _toDisplayString(_foo) + " " + _toDisplayString(_ctx.bar))
|
||||
_setText(x1, _toDisplayString(_String(_foo.id++)) + " " + _toDisplayString(_foo) + " " + _toDisplayString(_ctx.bar))
|
||||
})
|
||||
return n1
|
||||
}"
|
||||
`;
|
||||
|
|
|
@ -67,7 +67,6 @@ export function render(_ctx) {
|
|||
const x2 = _child(n2)
|
||||
_renderEffect(() => {
|
||||
const _msg = _ctx.msg
|
||||
|
||||
_setText(x0, _toDisplayString(_msg))
|
||||
_setText(x1, _toDisplayString(_msg))
|
||||
_setText(x2, _toDisplayString(_msg))
|
||||
|
|
|
@ -188,6 +188,18 @@ export function render(_ctx) {
|
|||
}"
|
||||
`;
|
||||
|
||||
exports[`compiler: element transform > component > v-for on component should not mark as single root 1`] = `
|
||||
"import { createComponent as _createComponent, createFor as _createFor } from 'vue';
|
||||
|
||||
export function render(_ctx, $props, $emit, $attrs, $slots) {
|
||||
const n0 = _createFor(() => (_ctx.items), (_for_item0) => {
|
||||
const n2 = _createComponent(_ctx.Comp)
|
||||
return n2
|
||||
}, (item) => (item), 2)
|
||||
return n0
|
||||
}"
|
||||
`;
|
||||
|
||||
exports[`compiler: element transform > component > v-on expression is a function call 1`] = `
|
||||
"import { resolveComponent as _resolveComponent, createComponentWithFallback as _createComponentWithFallback } from 'vue';
|
||||
|
||||
|
|
|
@ -21,7 +21,14 @@ export function render(_ctx) {
|
|||
const _setTemplateRef = _createTemplateRefSetter()
|
||||
const n0 = t0()
|
||||
let r0
|
||||
_renderEffect(() => r0 = _setTemplateRef(n0, bar => _ctx.foo = bar, r0))
|
||||
_renderEffect(() => {
|
||||
const _foo = _ctx.foo
|
||||
r0 = _setTemplateRef(n0, bar => {
|
||||
_foo.value = bar
|
||||
;({ baz: _ctx.baz } = bar)
|
||||
console.log(_foo.value, _ctx.baz)
|
||||
}, r0)
|
||||
})
|
||||
return n0
|
||||
}"
|
||||
`;
|
||||
|
|
|
@ -55,7 +55,6 @@ export function render(_ctx) {
|
|||
const _foo = _ctx.foo
|
||||
const _bar = _ctx.bar
|
||||
const _foo_bar_baz = _foo[_bar(_ctx.baz)]
|
||||
|
||||
_setProp(n0, "id", _foo_bar_baz)
|
||||
_setProp(n1, "id", _foo_bar_baz)
|
||||
_setProp(n2, "id", _bar() + _foo)
|
||||
|
@ -107,7 +106,6 @@ export function render(_ctx) {
|
|||
_renderEffect(() => {
|
||||
const _obj = _ctx.obj
|
||||
const _obj_foo_baz_obj_bar = _obj['foo']['baz'] + _obj.bar
|
||||
|
||||
_setProp(n0, "id", _obj_foo_baz_obj_bar)
|
||||
_setProp(n1, "id", _obj_foo_baz_obj_bar)
|
||||
})
|
||||
|
@ -126,7 +124,6 @@ export function render(_ctx) {
|
|||
_renderEffect(() => {
|
||||
const _foo = _ctx.foo
|
||||
const _foo_bar = _foo + _ctx.bar
|
||||
|
||||
_setProp(n0, "id", _foo_bar)
|
||||
_setProp(n1, "id", _foo_bar)
|
||||
_setProp(n2, "id", _foo + _foo_bar)
|
||||
|
@ -144,7 +141,6 @@ export function render(_ctx) {
|
|||
const n1 = t0()
|
||||
_renderEffect(() => {
|
||||
const _foo_bar = _ctx.foo + _ctx.bar
|
||||
|
||||
_setProp(n0, "id", _foo_bar)
|
||||
_setProp(n1, "id", _foo_bar)
|
||||
})
|
||||
|
@ -177,7 +173,6 @@ export function render(_ctx) {
|
|||
const n1 = t0()
|
||||
_renderEffect(() => {
|
||||
const _foo = _ctx.foo
|
||||
|
||||
_setClass(n0, _foo)
|
||||
_setClass(n1, _foo)
|
||||
})
|
||||
|
@ -498,15 +493,13 @@ export function render(_ctx) {
|
|||
_setAttr(n0, "form", _ctx.form)
|
||||
_setAttr(n1, "list", _ctx.list)
|
||||
_setAttr(n2, "type", _ctx.type)
|
||||
|
||||
_setAttr(n3, "width", _width)
|
||||
_setAttr(n4, "width", _width)
|
||||
_setAttr(n5, "width", _width)
|
||||
_setAttr(n6, "width", _width)
|
||||
|
||||
_setAttr(n3, "height", _height)
|
||||
_setAttr(n4, "width", _width)
|
||||
_setAttr(n4, "height", _height)
|
||||
_setAttr(n5, "width", _width)
|
||||
_setAttr(n5, "height", _height)
|
||||
_setAttr(n6, "width", _width)
|
||||
_setAttr(n6, "height", _height)
|
||||
})
|
||||
return [n0, n1, n2, n3, n4, n5, n6]
|
||||
|
|
|
@ -123,6 +123,18 @@ export function render(_ctx, $props, $emit, $attrs, $slots) {
|
|||
}"
|
||||
`;
|
||||
|
||||
exports[`v-on > expression with type 1`] = `
|
||||
"import { delegateEvents as _delegateEvents, template as _template } from 'vue';
|
||||
const t0 = _template("<div></div>", true)
|
||||
_delegateEvents("click")
|
||||
|
||||
export function render(_ctx, $props, $emit, $attrs, $slots) {
|
||||
const n0 = t0()
|
||||
n0.$evtclick = e => _ctx.handleClick(e)
|
||||
return n0
|
||||
}"
|
||||
`;
|
||||
|
||||
exports[`v-on > function expression w/ prefixIdentifiers: true 1`] = `
|
||||
"import { delegateEvents as _delegateEvents, template as _template } from 'vue';
|
||||
const t0 = _template("<div></div>", true)
|
||||
|
|
|
@ -365,3 +365,68 @@ export function render(_ctx) {
|
|||
return n6
|
||||
}"
|
||||
`;
|
||||
|
||||
exports[`compiler: transform slot > with whitespace: 'preserve' > implicit default slot 1`] = `
|
||||
"import { resolveComponent as _resolveComponent, createComponentWithFallback as _createComponentWithFallback, template as _template } from 'vue';
|
||||
const t0 = _template(" Header ")
|
||||
const t1 = _template(" ")
|
||||
const t2 = _template("<p></p>")
|
||||
|
||||
export function render(_ctx) {
|
||||
const _component_Comp = _resolveComponent("Comp")
|
||||
const n4 = _createComponentWithFallback(_component_Comp, null, {
|
||||
"header": () => {
|
||||
const n0 = t0()
|
||||
return n0
|
||||
},
|
||||
"default": () => {
|
||||
const n2 = t1()
|
||||
const n3 = t2()
|
||||
return [n2, n3]
|
||||
}
|
||||
}, true)
|
||||
return n4
|
||||
}"
|
||||
`;
|
||||
|
||||
exports[`compiler: transform slot > with whitespace: 'preserve' > named default slot + implicit whitespace content 1`] = `
|
||||
"import { resolveComponent as _resolveComponent, createComponentWithFallback as _createComponentWithFallback, template as _template } from 'vue';
|
||||
const t0 = _template(" Header ")
|
||||
const t1 = _template(" Default ")
|
||||
|
||||
export function render(_ctx) {
|
||||
const _component_Comp = _resolveComponent("Comp")
|
||||
const n5 = _createComponentWithFallback(_component_Comp, null, {
|
||||
"header": () => {
|
||||
const n0 = t0()
|
||||
return n0
|
||||
},
|
||||
"default": () => {
|
||||
const n3 = t1()
|
||||
return n3
|
||||
}
|
||||
}, true)
|
||||
return n5
|
||||
}"
|
||||
`;
|
||||
|
||||
exports[`compiler: transform slot > with whitespace: 'preserve' > should not generate whitespace only default slot 1`] = `
|
||||
"import { resolveComponent as _resolveComponent, createComponentWithFallback as _createComponentWithFallback, template as _template } from 'vue';
|
||||
const t0 = _template(" Header ")
|
||||
const t1 = _template(" Footer ")
|
||||
|
||||
export function render(_ctx) {
|
||||
const _component_Comp = _resolveComponent("Comp")
|
||||
const n5 = _createComponentWithFallback(_component_Comp, null, {
|
||||
"header": () => {
|
||||
const n0 = t0()
|
||||
return n0
|
||||
},
|
||||
"footer": () => {
|
||||
const n3 = t1()
|
||||
return n3
|
||||
}
|
||||
}, true)
|
||||
return n5
|
||||
}"
|
||||
`;
|
||||
|
|
|
@ -1,9 +1,15 @@
|
|||
import { BindingTypes } from '@vue/compiler-dom'
|
||||
import { transformChildren, transformText } from '../../src'
|
||||
import {
|
||||
transformChildren,
|
||||
transformElement,
|
||||
transformText,
|
||||
transformVBind,
|
||||
} from '../../src'
|
||||
import { makeCompile } from './_utils'
|
||||
|
||||
const compileWithExpression = makeCompile({
|
||||
nodeTransforms: [transformChildren, transformText],
|
||||
nodeTransforms: [transformElement, transformChildren, transformText],
|
||||
directiveTransforms: { bind: transformVBind },
|
||||
})
|
||||
|
||||
describe('compiler: expression', () => {
|
||||
|
@ -31,4 +37,14 @@ describe('compiler: expression', () => {
|
|||
expect(code).toMatchSnapshot()
|
||||
expect(code).contains(`$props['bar']`)
|
||||
})
|
||||
|
||||
test('update expression', () => {
|
||||
const { code } = compileWithExpression(`
|
||||
<div :id="String(foo.id++)" :foo="foo" :bar="bar++">
|
||||
{{ String(foo.id++) }} {{ foo }} {{ bar }}
|
||||
</div>
|
||||
`)
|
||||
expect(code).toMatchSnapshot()
|
||||
expect(code).contains(`_String(_foo.id++)`)
|
||||
})
|
||||
})
|
||||
|
|
|
@ -6,16 +6,22 @@ import {
|
|||
transformElement,
|
||||
transformText,
|
||||
transformVBind,
|
||||
transformVFor,
|
||||
transformVOn,
|
||||
} from '../../src'
|
||||
import {
|
||||
type BindingMetadata,
|
||||
BindingTypes,
|
||||
NodeTypes,
|
||||
} from '@vue/compiler-core'
|
||||
} from '@vue/compiler-dom'
|
||||
|
||||
const compileWithElementTransform = makeCompile({
|
||||
nodeTransforms: [transformElement, transformChildren, transformText],
|
||||
nodeTransforms: [
|
||||
transformVFor,
|
||||
transformElement,
|
||||
transformChildren,
|
||||
transformText,
|
||||
],
|
||||
directiveTransforms: {
|
||||
bind: transformVBind,
|
||||
on: transformVOn,
|
||||
|
@ -170,6 +176,17 @@ describe('compiler: element transform', () => {
|
|||
expect(code).contains('_createComponent(_ctx.Comp)')
|
||||
})
|
||||
|
||||
test('v-for on component should not mark as single root', () => {
|
||||
const { code } = compileWithElementTransform(
|
||||
`<Comp v-for="item in items" :key="item"/>`,
|
||||
{
|
||||
bindingMetadata: { Comp: BindingTypes.SETUP_CONST },
|
||||
},
|
||||
)
|
||||
expect(code).toMatchSnapshot()
|
||||
expect(code).contains('_createComponent(_ctx.Comp)')
|
||||
})
|
||||
|
||||
test('static props', () => {
|
||||
const { code, ir } = compileWithElementTransform(
|
||||
`<Foo id="foo" class="bar" />`,
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import { ErrorCodes, NodeTypes } from '@vue/compiler-core'
|
||||
import { ErrorCodes, NodeTypes } from '@vue/compiler-dom'
|
||||
import {
|
||||
IRNodeTypes,
|
||||
transformChildren,
|
||||
|
|
|
@ -94,7 +94,11 @@ describe('compiler: template ref transform', () => {
|
|||
|
||||
test('function ref', () => {
|
||||
const { ir, code } = compileWithTransformRef(
|
||||
`<div :ref="bar => foo = bar" />`,
|
||||
`<div :ref="bar => {
|
||||
foo.value = bar
|
||||
;({ baz } = bar)
|
||||
console.log(foo.value, baz)
|
||||
}" />`,
|
||||
)
|
||||
expect(ir.block.dynamic.children[0]).toMatchObject({
|
||||
id: 0,
|
||||
|
@ -114,7 +118,6 @@ describe('compiler: template ref transform', () => {
|
|||
type: IRNodeTypes.SET_TEMPLATE_REF,
|
||||
element: 0,
|
||||
value: {
|
||||
content: 'bar => foo = bar',
|
||||
isStatic: false,
|
||||
},
|
||||
},
|
||||
|
@ -123,7 +126,11 @@ describe('compiler: template ref transform', () => {
|
|||
])
|
||||
expect(code).toMatchSnapshot()
|
||||
expect(code).contains('const _setTemplateRef = _createTemplateRefSetter()')
|
||||
expect(code).contains('_setTemplateRef(n0, bar => _ctx.foo = bar, r0)')
|
||||
expect(code).contains(`_setTemplateRef(n0, bar => {
|
||||
_foo.value = bar
|
||||
;({ baz: _ctx.baz } = bar)
|
||||
console.log(_foo.value, _ctx.baz)
|
||||
}, r0)`)
|
||||
})
|
||||
|
||||
test('ref + v-if', () => {
|
||||
|
|
|
@ -10,7 +10,7 @@ import {
|
|||
transformVOnce,
|
||||
transformVText,
|
||||
} from '../../src'
|
||||
import { NodeTypes } from '@vue/compiler-core'
|
||||
import { NodeTypes } from '@vue/compiler-dom'
|
||||
|
||||
const compileWithVIf = makeCompile({
|
||||
nodeTransforms: [
|
||||
|
|
|
@ -682,4 +682,17 @@ describe('v-on', () => {
|
|||
'_delegate(n0, "click", _withModifiers(e => _ctx.test(e), ["stop"]))',
|
||||
)
|
||||
})
|
||||
|
||||
test('expression with type', () => {
|
||||
const { code } = compileWithVOn(
|
||||
`<div @click="(<number>handleClick as any)"></div>`,
|
||||
{
|
||||
bindingMetadata: {
|
||||
handleClick: BindingTypes.SETUP_CONST,
|
||||
},
|
||||
},
|
||||
)
|
||||
expect(code).matchSnapshot()
|
||||
expect(code).include('n0.$evtclick = e => _ctx.handleClick(e)')
|
||||
})
|
||||
})
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import { ErrorCodes, NodeTypes } from '@vue/compiler-core'
|
||||
import { ErrorCodes, NodeTypes } from '@vue/compiler-dom'
|
||||
import {
|
||||
IRNodeTypes,
|
||||
IRSlotType,
|
||||
|
@ -538,4 +538,60 @@ describe('compiler: transform slot', () => {
|
|||
})
|
||||
})
|
||||
})
|
||||
|
||||
describe(`with whitespace: 'preserve'`, () => {
|
||||
test('named default slot + implicit whitespace content', () => {
|
||||
const source = `
|
||||
<Comp>
|
||||
<template #header> Header </template>
|
||||
<template #default> Default </template>
|
||||
</Comp>
|
||||
`
|
||||
const { code } = compileWithSlots(source, {
|
||||
whitespace: 'preserve',
|
||||
})
|
||||
|
||||
expect(
|
||||
`Extraneous children found when component already has explicitly named default slot.`,
|
||||
).not.toHaveBeenWarned()
|
||||
expect(code).toMatchSnapshot()
|
||||
})
|
||||
|
||||
test('implicit default slot', () => {
|
||||
const source = `
|
||||
<Comp>
|
||||
<template #header> Header </template>
|
||||
<p/>
|
||||
</Comp>
|
||||
`
|
||||
const { code } = compileWithSlots(source, {
|
||||
whitespace: 'preserve',
|
||||
})
|
||||
|
||||
expect(
|
||||
`Extraneous children found when component already has explicitly named default slot.`,
|
||||
).not.toHaveBeenWarned()
|
||||
expect(code).toMatchSnapshot()
|
||||
})
|
||||
|
||||
test('should not generate whitespace only default slot', () => {
|
||||
const source = `
|
||||
<Comp>
|
||||
<template #header> Header </template>
|
||||
<template #footer> Footer </template>
|
||||
</Comp>
|
||||
`
|
||||
const { code, ir } = compileWithSlots(source, {
|
||||
whitespace: 'preserve',
|
||||
})
|
||||
|
||||
const slots = (ir.block.dynamic.children[0].operation as any).slots[0]
|
||||
.slots
|
||||
// should be: header, footer (no default)
|
||||
expect(Object.keys(slots).length).toBe(2)
|
||||
expect(!!slots['default']).toBe(false)
|
||||
|
||||
expect(code).toMatchSnapshot()
|
||||
})
|
||||
})
|
||||
})
|
||||
|
|
|
@ -83,8 +83,8 @@ export function getBaseTransformPreset(): TransformPreset {
|
|||
transformVFor,
|
||||
transformSlotOutlet,
|
||||
transformTemplateRef,
|
||||
transformText,
|
||||
transformElement,
|
||||
transformText,
|
||||
transformVSlot,
|
||||
transformComment,
|
||||
transformChildren,
|
||||
|
|
|
@ -34,7 +34,7 @@ import {
|
|||
isMemberExpression,
|
||||
toValidAssetId,
|
||||
walkIdentifiers,
|
||||
} from '@vue/compiler-core'
|
||||
} from '@vue/compiler-dom'
|
||||
import { genEventHandler } from './event'
|
||||
import { genDirectiveModifiers, genDirectivesForElement } from './directive'
|
||||
import { genBlock } from './block'
|
||||
|
|
|
@ -10,6 +10,7 @@ import {
|
|||
NewlineType,
|
||||
type SimpleExpressionNode,
|
||||
type SourceLocation,
|
||||
TS_NODE_TYPES,
|
||||
advancePositionWithClone,
|
||||
createSimpleExpression,
|
||||
isInDestructureAssignment,
|
||||
|
@ -63,6 +64,7 @@ export function genExpression(
|
|||
let hasMemberExpression = false
|
||||
if (ids.length) {
|
||||
const [frag, push] = buildCodeFragment()
|
||||
const isTSNode = ast && TS_NODE_TYPES.includes(ast.type)
|
||||
ids
|
||||
.sort((a, b) => a.start! - b.start!)
|
||||
.forEach((id, i) => {
|
||||
|
@ -71,8 +73,10 @@ export function genExpression(
|
|||
const end = id.end! - 1
|
||||
const last = ids[i - 1]
|
||||
|
||||
const leadingText = content.slice(last ? last.end! - 1 : 0, start)
|
||||
if (leadingText.length) push([leadingText, NewlineType.Unknown])
|
||||
if (!(isTSNode && i === 0)) {
|
||||
const leadingText = content.slice(last ? last.end! - 1 : 0, start)
|
||||
if (leadingText.length) push([leadingText, NewlineType.Unknown])
|
||||
}
|
||||
|
||||
const source = content.slice(start, end)
|
||||
const parentStack = parentStackMap.get(id)!
|
||||
|
@ -99,7 +103,7 @@ export function genExpression(
|
|||
),
|
||||
)
|
||||
|
||||
if (i === ids.length - 1 && end < content.length) {
|
||||
if (i === ids.length - 1 && end < content.length && !isTSNode) {
|
||||
push([content.slice(end), NewlineType.Unknown])
|
||||
}
|
||||
})
|
||||
|
@ -244,8 +248,13 @@ export function processExpressions(
|
|||
expressions: SimpleExpressionNode[],
|
||||
): DeclarationResult {
|
||||
// analyze variables
|
||||
const { seenVariable, variableToExpMap, expToVariableMap, seenIdentifier } =
|
||||
analyzeExpressions(expressions)
|
||||
const {
|
||||
seenVariable,
|
||||
variableToExpMap,
|
||||
expToVariableMap,
|
||||
seenIdentifier,
|
||||
updatedVariable,
|
||||
} = analyzeExpressions(expressions)
|
||||
|
||||
// process repeated identifiers and member expressions
|
||||
// e.g., `foo[baz]` will be transformed into `foo_baz`
|
||||
|
@ -255,6 +264,7 @@ export function processExpressions(
|
|||
variableToExpMap,
|
||||
expToVariableMap,
|
||||
seenIdentifier,
|
||||
updatedVariable,
|
||||
)
|
||||
|
||||
// process duplicate expressions after identifier and member expression handling.
|
||||
|
@ -263,6 +273,8 @@ export function processExpressions(
|
|||
context,
|
||||
expressions,
|
||||
varDeclarations,
|
||||
updatedVariable,
|
||||
expToVariableMap,
|
||||
)
|
||||
|
||||
return genDeclarations([...varDeclarations, ...expDeclarations], context)
|
||||
|
@ -273,11 +285,13 @@ function analyzeExpressions(expressions: SimpleExpressionNode[]) {
|
|||
const variableToExpMap = new Map<string, Set<SimpleExpressionNode>>()
|
||||
const expToVariableMap = new Map<SimpleExpressionNode, string[]>()
|
||||
const seenIdentifier = new Set<string>()
|
||||
const updatedVariable = new Set<string>()
|
||||
|
||||
const registerVariable = (
|
||||
name: string,
|
||||
exp: SimpleExpressionNode,
|
||||
isIdentifier: boolean,
|
||||
parentStack: Node[] = [],
|
||||
) => {
|
||||
if (isIdentifier) seenIdentifier.add(name)
|
||||
seenVariable[name] = (seenVariable[name] || 0) + 1
|
||||
|
@ -286,6 +300,13 @@ function analyzeExpressions(expressions: SimpleExpressionNode[]) {
|
|||
(variableToExpMap.get(name) || new Set()).add(exp),
|
||||
)
|
||||
expToVariableMap.set(exp, (expToVariableMap.get(exp) || []).concat(name))
|
||||
if (
|
||||
parentStack.some(
|
||||
p => p.type === 'UpdateExpression' || p.type === 'AssignmentExpression',
|
||||
)
|
||||
) {
|
||||
updatedVariable.add(name)
|
||||
}
|
||||
}
|
||||
|
||||
for (const exp of expressions) {
|
||||
|
@ -299,14 +320,20 @@ function analyzeExpressions(expressions: SimpleExpressionNode[]) {
|
|||
const memberExp = extractMemberExpression(parent, name => {
|
||||
registerVariable(name, exp, true)
|
||||
})
|
||||
registerVariable(memberExp, exp, false)
|
||||
registerVariable(memberExp, exp, false, parentStack)
|
||||
} else if (!parentStack.some(isMemberExpression)) {
|
||||
registerVariable(currentNode.name, exp, true)
|
||||
registerVariable(currentNode.name, exp, true, parentStack)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
return { seenVariable, seenIdentifier, variableToExpMap, expToVariableMap }
|
||||
return {
|
||||
seenVariable,
|
||||
seenIdentifier,
|
||||
variableToExpMap,
|
||||
expToVariableMap,
|
||||
updatedVariable,
|
||||
}
|
||||
}
|
||||
|
||||
function processRepeatedVariables(
|
||||
|
@ -315,9 +342,11 @@ function processRepeatedVariables(
|
|||
variableToExpMap: Map<string, Set<SimpleExpressionNode>>,
|
||||
expToVariableMap: Map<SimpleExpressionNode, string[]>,
|
||||
seenIdentifier: Set<string>,
|
||||
updatedVariable: Set<string>,
|
||||
): DeclarationValue[] {
|
||||
const declarations: DeclarationValue[] = []
|
||||
for (const [name, exps] of variableToExpMap) {
|
||||
if (updatedVariable.has(name)) continue
|
||||
if (seenVariable[name] > 1 && exps.size > 0) {
|
||||
const isIdentifier = seenIdentifier.has(name)
|
||||
const varName = isIdentifier ? name : genVarName(name)
|
||||
|
@ -409,12 +438,19 @@ function processRepeatedExpressions(
|
|||
context: CodegenContext,
|
||||
expressions: SimpleExpressionNode[],
|
||||
varDeclarations: DeclarationValue[],
|
||||
updatedVariable: Set<string>,
|
||||
expToVariableMap: Map<SimpleExpressionNode, string[]>,
|
||||
): DeclarationValue[] {
|
||||
const declarations: DeclarationValue[] = []
|
||||
const seenExp = expressions.reduce(
|
||||
(acc, exp) => {
|
||||
const variables = expToVariableMap.get(exp)
|
||||
// only handle expressions that are not identifiers
|
||||
if (exp.ast && exp.ast.type !== 'Identifier') {
|
||||
if (
|
||||
exp.ast &&
|
||||
exp.ast.type !== 'Identifier' &&
|
||||
!(variables && variables.some(v => updatedVariable.has(v)))
|
||||
) {
|
||||
acc[exp.content] = (acc[exp.content] || 0) + 1
|
||||
}
|
||||
return acc
|
||||
|
|
|
@ -99,10 +99,8 @@ export function genEffects(
|
|||
effects: IREffect[],
|
||||
context: CodegenContext,
|
||||
): CodeFragment[] {
|
||||
const {
|
||||
helper,
|
||||
block: { expressions },
|
||||
} = context
|
||||
const { helper } = context
|
||||
const expressions = effects.flatMap(effect => effect.expressions)
|
||||
const [frag, push, unshift] = buildCodeFragment()
|
||||
let operationsCount = 0
|
||||
const { ids, frag: declarationFrags } = processExpressions(
|
||||
|
|
|
@ -2,7 +2,7 @@ import {
|
|||
NewlineType,
|
||||
type SimpleExpressionNode,
|
||||
isSimpleIdentifier,
|
||||
} from '@vue/compiler-core'
|
||||
} from '@vue/compiler-dom'
|
||||
import type { CodegenContext } from '../generate'
|
||||
import {
|
||||
IRDynamicPropsKind,
|
||||
|
|
|
@ -54,7 +54,6 @@ export interface BlockIRNode extends BaseIRNode {
|
|||
tempId: number
|
||||
effect: IREffect[]
|
||||
operation: OperationNode[]
|
||||
expressions: SimpleExpressionNode[]
|
||||
returns: number[]
|
||||
hasDeferredVShow: boolean
|
||||
}
|
||||
|
|
|
@ -141,8 +141,10 @@ export class TransformContext<T extends AllNode = AllNode> {
|
|||
|
||||
registerEffect(
|
||||
expressions: SimpleExpressionNode[],
|
||||
...operations: OperationNode[]
|
||||
operation: OperationNode | OperationNode[],
|
||||
getIndex = (): number => this.block.effect.length,
|
||||
): void {
|
||||
const operations = [operation].flat()
|
||||
expressions = expressions.filter(exp => !isConstantExpression(exp))
|
||||
if (
|
||||
this.inVOnce ||
|
||||
|
@ -154,26 +156,10 @@ export class TransformContext<T extends AllNode = AllNode> {
|
|||
return this.registerOperation(...operations)
|
||||
}
|
||||
|
||||
this.block.expressions.push(...expressions)
|
||||
const existing = this.block.effect.find(e =>
|
||||
isSameExpression(e.expressions, expressions),
|
||||
)
|
||||
if (existing) {
|
||||
existing.operations.push(...operations)
|
||||
} else {
|
||||
this.block.effect.push({
|
||||
expressions,
|
||||
operations,
|
||||
})
|
||||
}
|
||||
|
||||
function isSameExpression(
|
||||
a: SimpleExpressionNode[],
|
||||
b: SimpleExpressionNode[],
|
||||
) {
|
||||
if (a.length !== b.length) return false
|
||||
return a.every((exp, i) => exp.content === b[i].content)
|
||||
}
|
||||
this.block.effect.splice(getIndex(), 0, {
|
||||
expressions,
|
||||
operations,
|
||||
})
|
||||
}
|
||||
|
||||
registerOperation(...node: OperationNode[]): void {
|
||||
|
|
|
@ -44,6 +44,8 @@ export const isReservedProp: (key: string) => boolean = /*#__PURE__*/ makeMap(
|
|||
)
|
||||
|
||||
export const transformElement: NodeTransform = (node, context) => {
|
||||
let effectIndex = context.block.effect.length
|
||||
const getEffectIndex = () => effectIndex++
|
||||
return function postTransformElement() {
|
||||
;({ node } = context)
|
||||
if (
|
||||
|
@ -62,6 +64,7 @@ export const transformElement: NodeTransform = (node, context) => {
|
|||
context as TransformContext<ElementNode>,
|
||||
isComponent,
|
||||
isDynamicComponent,
|
||||
getEffectIndex,
|
||||
)
|
||||
|
||||
let { parent } = context
|
||||
|
@ -78,13 +81,23 @@ export const transformElement: NodeTransform = (node, context) => {
|
|||
parent.node.children.filter(child => child.type !== NodeTypes.COMMENT)
|
||||
.length === 1
|
||||
|
||||
;(isComponent ? transformComponentElement : transformNativeElement)(
|
||||
node as any,
|
||||
propsResult,
|
||||
singleRoot,
|
||||
context as TransformContext<ElementNode>,
|
||||
isDynamicComponent,
|
||||
)
|
||||
if (isComponent) {
|
||||
transformComponentElement(
|
||||
node as ComponentNode,
|
||||
propsResult,
|
||||
singleRoot,
|
||||
context,
|
||||
isDynamicComponent,
|
||||
)
|
||||
} else {
|
||||
transformNativeElement(
|
||||
node as PlainElementNode,
|
||||
propsResult,
|
||||
singleRoot,
|
||||
context,
|
||||
getEffectIndex,
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -143,7 +156,7 @@ function transformComponentElement(
|
|||
tag,
|
||||
props: propsResult[0] ? propsResult[1] : [propsResult[1]],
|
||||
asset,
|
||||
root: singleRoot,
|
||||
root: singleRoot && !context.inVFor,
|
||||
slots: [...context.slots],
|
||||
once: context.inVOnce,
|
||||
dynamic: dynamicComponent,
|
||||
|
@ -189,7 +202,8 @@ function transformNativeElement(
|
|||
node: PlainElementNode,
|
||||
propsResult: PropsResult,
|
||||
singleRoot: boolean,
|
||||
context: TransformContext<ElementNode>,
|
||||
context: TransformContext,
|
||||
getEffectIndex: () => number,
|
||||
) {
|
||||
const { tag } = node
|
||||
const { scopeId } = context.options
|
||||
|
@ -202,12 +216,16 @@ function transformNativeElement(
|
|||
const dynamicProps: string[] = []
|
||||
if (propsResult[0] /* dynamic props */) {
|
||||
const [, dynamicArgs, expressions] = propsResult
|
||||
context.registerEffect(expressions, {
|
||||
type: IRNodeTypes.SET_DYNAMIC_PROPS,
|
||||
element: context.reference(),
|
||||
props: dynamicArgs,
|
||||
root: singleRoot,
|
||||
})
|
||||
context.registerEffect(
|
||||
expressions,
|
||||
{
|
||||
type: IRNodeTypes.SET_DYNAMIC_PROPS,
|
||||
element: context.reference(),
|
||||
props: dynamicArgs,
|
||||
root: singleRoot,
|
||||
},
|
||||
getEffectIndex,
|
||||
)
|
||||
} else {
|
||||
for (const prop of propsResult[1]) {
|
||||
const { key, values } = prop
|
||||
|
@ -216,13 +234,17 @@ function transformNativeElement(
|
|||
if (values[0].content) template += `="${values[0].content}"`
|
||||
} else {
|
||||
dynamicProps.push(key.content)
|
||||
context.registerEffect(values, {
|
||||
type: IRNodeTypes.SET_PROP,
|
||||
element: context.reference(),
|
||||
prop,
|
||||
root: singleRoot,
|
||||
tag,
|
||||
})
|
||||
context.registerEffect(
|
||||
values,
|
||||
{
|
||||
type: IRNodeTypes.SET_PROP,
|
||||
element: context.reference(),
|
||||
prop,
|
||||
root: singleRoot,
|
||||
tag,
|
||||
},
|
||||
getEffectIndex,
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -259,6 +281,7 @@ export function buildProps(
|
|||
context: TransformContext<ElementNode>,
|
||||
isComponent: boolean,
|
||||
isDynamicComponent?: boolean,
|
||||
getEffectIndex?: () => number,
|
||||
): PropsResult {
|
||||
const props = node.props as (VaporDirectiveNode | AttributeNode)[]
|
||||
if (props.length === 0) return [false, []]
|
||||
|
@ -305,12 +328,12 @@ export function buildProps(
|
|||
} else {
|
||||
context.registerEffect(
|
||||
[prop.exp],
|
||||
|
||||
{
|
||||
type: IRNodeTypes.SET_DYNAMIC_EVENTS,
|
||||
element: context.reference(),
|
||||
event: prop.exp,
|
||||
},
|
||||
getEffectIndex,
|
||||
)
|
||||
}
|
||||
} else {
|
||||
|
|
|
@ -9,7 +9,7 @@ import {
|
|||
createSimpleExpression,
|
||||
isStaticArgOf,
|
||||
isStaticExp,
|
||||
} from '@vue/compiler-core'
|
||||
} from '@vue/compiler-dom'
|
||||
import type { NodeTransform, TransformContext } from '../transform'
|
||||
import {
|
||||
type BlockIRNode,
|
||||
|
|
|
@ -23,6 +23,13 @@ const seen = new WeakMap<
|
|||
WeakSet<TemplateChildNode | RootNode>
|
||||
>()
|
||||
|
||||
export function markNonTemplate(
|
||||
node: TemplateChildNode,
|
||||
context: TransformContext,
|
||||
): void {
|
||||
seen.get(context.root)!.add(node)
|
||||
}
|
||||
|
||||
export const transformText: NodeTransform = (node, context) => {
|
||||
if (!seen.has(context.root)) seen.set(context.root, new WeakSet())
|
||||
if (seen.get(context.root)!.has(node)) {
|
||||
|
@ -68,7 +75,7 @@ export const transformText: NodeTransform = (node, context) => {
|
|||
prev.type === NodeTypes.TEXT
|
||||
) {
|
||||
// mark leading text node for skipping
|
||||
seen.get(context.root)!.add(prev)
|
||||
markNonTemplate(prev, context)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -143,7 +150,7 @@ function processTextContainer(
|
|||
}
|
||||
|
||||
function createTextLikeExpression(node: TextLike, context: TransformContext) {
|
||||
seen.get(context.root)!.add(node)
|
||||
markNonTemplate(node, context)
|
||||
if (node.type === NodeTypes.TEXT) {
|
||||
return createSimpleExpression(node.content, true, node.loc)
|
||||
} else {
|
||||
|
|
|
@ -30,7 +30,6 @@ export const newBlock = (node: BlockIRNode['node']): BlockIRNode => ({
|
|||
effect: [],
|
||||
operation: [],
|
||||
returns: [],
|
||||
expressions: [],
|
||||
tempId: 0,
|
||||
hasDeferredVShow: false,
|
||||
})
|
||||
|
|
|
@ -8,7 +8,7 @@ import {
|
|||
createCompilerError,
|
||||
isTemplateNode,
|
||||
isVSlot,
|
||||
} from '@vue/compiler-core'
|
||||
} from '@vue/compiler-dom'
|
||||
import type { NodeTransform, TransformContext } from '../transform'
|
||||
import { newBlock } from './utils'
|
||||
import {
|
||||
|
@ -29,6 +29,7 @@ import {
|
|||
isTransitionNode,
|
||||
resolveExpression,
|
||||
} from '../utils'
|
||||
import { markNonTemplate } from './transformText'
|
||||
|
||||
export const transformVSlot: NodeTransform = (node, context) => {
|
||||
if (node.type !== NodeTypes.ELEMENT) return
|
||||
|
@ -71,14 +72,23 @@ function transformComponentSlot(
|
|||
) {
|
||||
const { children } = node
|
||||
const arg = dir && dir.arg
|
||||
const nonSlotTemplateChildren = children.filter(
|
||||
n =>
|
||||
isNonWhitespaceContent(node) &&
|
||||
!(n.type === NodeTypes.ELEMENT && n.props.some(isVSlot)),
|
||||
)
|
||||
// whitespace: 'preserve'
|
||||
const emptyTextNodes: TemplateChildNode[] = []
|
||||
const nonSlotTemplateChildren = children.filter(n => {
|
||||
if (isNonWhitespaceContent(n)) {
|
||||
return !(n.type === NodeTypes.ELEMENT && n.props.some(isVSlot))
|
||||
} else {
|
||||
emptyTextNodes.push(n)
|
||||
}
|
||||
})
|
||||
if (!nonSlotTemplateChildren.length) {
|
||||
emptyTextNodes.forEach(n => {
|
||||
markNonTemplate(n, context)
|
||||
})
|
||||
}
|
||||
|
||||
let slotKey
|
||||
if (isTransitionNode(node)) {
|
||||
if (isTransitionNode(node) && nonSlotTemplateChildren.length) {
|
||||
const keyProp = findProp(
|
||||
nonSlotTemplateChildren[0] as ElementNode,
|
||||
'key',
|
||||
|
|
|
@ -570,3 +570,7 @@ export { performTransitionEnter, performTransitionLeave } from './renderer'
|
|||
* @internal
|
||||
*/
|
||||
export { ensureVaporSlotFallback } from './helpers/renderSlot'
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
export { createInternalObject } from './internalObject'
|
||||
|
|
|
@ -3,6 +3,7 @@ import { nextTick, resolveDynamicComponent } from '@vue/runtime-dom'
|
|||
import {
|
||||
createComponentWithFallback,
|
||||
createDynamicComponent,
|
||||
defineVaporComponent,
|
||||
renderEffect,
|
||||
setHtml,
|
||||
setInsertionState,
|
||||
|
@ -79,4 +80,52 @@ describe('api: createDynamicComponent', () => {
|
|||
mount()
|
||||
expect(html()).toBe('<div><button>hi</button></div>')
|
||||
})
|
||||
|
||||
test('switch dynamic component children', async () => {
|
||||
const CompA = defineVaporComponent({
|
||||
setup() {
|
||||
return template('<div>A</div>')()
|
||||
},
|
||||
})
|
||||
const CompB = defineVaporComponent({
|
||||
setup() {
|
||||
return template('<div>B</div>')()
|
||||
},
|
||||
})
|
||||
|
||||
const current = shallowRef(CompA)
|
||||
const { html } = define({
|
||||
setup() {
|
||||
const t1 = template('<div></div>')
|
||||
const n2 = t1() as any
|
||||
setInsertionState(n2)
|
||||
createDynamicComponent(() => current.value)
|
||||
return n2
|
||||
},
|
||||
}).render()
|
||||
|
||||
expect(html()).toBe('<div><div>A</div><!--dynamic-component--></div>')
|
||||
|
||||
current.value = CompB
|
||||
await nextTick()
|
||||
expect(html()).toBe('<div><div>B</div><!--dynamic-component--></div>')
|
||||
})
|
||||
|
||||
test('render fallback with insertionState', async () => {
|
||||
const { html, mount } = define({
|
||||
setup() {
|
||||
const html = ref('hi')
|
||||
const n1 = template('<div></div>', true)() as any
|
||||
setInsertionState(n1)
|
||||
const n0 = createComponentWithFallback(
|
||||
resolveDynamicComponent('button') as any,
|
||||
) as any
|
||||
renderEffect(() => setHtml(n0, html.value))
|
||||
return n1
|
||||
},
|
||||
}).create()
|
||||
|
||||
mount()
|
||||
expect(html()).toBe('<div><button>hi</button></div>')
|
||||
})
|
||||
})
|
||||
|
|
|
@ -2,6 +2,7 @@ import {
|
|||
type Ref,
|
||||
inject,
|
||||
nextTick,
|
||||
onMounted,
|
||||
onUpdated,
|
||||
provide,
|
||||
ref,
|
||||
|
@ -13,6 +14,7 @@ import {
|
|||
createIf,
|
||||
createTextNode,
|
||||
renderEffect,
|
||||
setInsertionState,
|
||||
template,
|
||||
} from '../src'
|
||||
import { makeRender } from './_utils'
|
||||
|
@ -266,6 +268,29 @@ describe('component', () => {
|
|||
expect(spy).toHaveBeenCalledTimes(2)
|
||||
})
|
||||
|
||||
it('properly mount child component when using setInsertionState', async () => {
|
||||
const spy = vi.fn()
|
||||
|
||||
const { component: Comp } = define({
|
||||
setup() {
|
||||
onMounted(spy)
|
||||
return template('<h1>hi</h1>')()
|
||||
},
|
||||
})
|
||||
|
||||
const { host } = define({
|
||||
setup() {
|
||||
const n2 = template('<div></div>', true)()
|
||||
setInsertionState(n2 as any)
|
||||
createComponent(Comp)
|
||||
return n2
|
||||
},
|
||||
}).render()
|
||||
|
||||
expect(host.innerHTML).toBe('<div><h1>hi</h1></div>')
|
||||
expect(spy).toHaveBeenCalledTimes(1)
|
||||
})
|
||||
|
||||
it('unmount component', async () => {
|
||||
const { host, app, instance } = define(() => {
|
||||
const count = ref(0)
|
||||
|
|
|
@ -1,4 +1,11 @@
|
|||
import { type Ref, nextTick, ref } from '@vue/runtime-dom'
|
||||
import {
|
||||
type Ref,
|
||||
createApp,
|
||||
defineComponent,
|
||||
h,
|
||||
nextTick,
|
||||
ref,
|
||||
} from '@vue/runtime-dom'
|
||||
import {
|
||||
createComponent,
|
||||
createDynamicComponent,
|
||||
|
@ -10,6 +17,7 @@ import {
|
|||
setProp,
|
||||
setStyle,
|
||||
template,
|
||||
vaporInteropPlugin,
|
||||
} from '../src'
|
||||
import { makeRender } from './_utils'
|
||||
import { stringifyStyle } from '@vue/shared'
|
||||
|
@ -399,4 +407,42 @@ describe('attribute fallthrough', () => {
|
|||
const el = host.children[0]
|
||||
expect(el.classList.length).toBe(0)
|
||||
})
|
||||
|
||||
it('should not fallthrough emit handlers to vdom child', () => {
|
||||
const VDomChild = defineComponent({
|
||||
emits: ['click'],
|
||||
setup(_, { emit }) {
|
||||
return () => h('button', { onClick: () => emit('click') }, 'click me')
|
||||
},
|
||||
})
|
||||
|
||||
const fn = vi.fn()
|
||||
const VaporChild = defineVaporComponent({
|
||||
emits: ['click'],
|
||||
setup() {
|
||||
return createComponent(
|
||||
VDomChild as any,
|
||||
{ onClick: () => fn },
|
||||
null,
|
||||
true,
|
||||
)
|
||||
},
|
||||
})
|
||||
|
||||
const App = {
|
||||
setup() {
|
||||
return () => h(VaporChild as any)
|
||||
},
|
||||
}
|
||||
|
||||
const root = document.createElement('div')
|
||||
createApp(App).use(vaporInteropPlugin).mount(root)
|
||||
|
||||
expect(root.innerHTML).toBe('<button>click me</button>')
|
||||
const button = root.querySelector('button')!
|
||||
button.dispatchEvent(new Event('click'))
|
||||
|
||||
// fn should be called once
|
||||
expect(fn).toHaveBeenCalledTimes(1)
|
||||
})
|
||||
})
|
||||
|
|
|
@ -9,8 +9,8 @@ import {
|
|||
insertionParent,
|
||||
resetInsertionState,
|
||||
} from './insertionState'
|
||||
import { isHydrating } from './dom/hydration'
|
||||
import { DYNAMIC_COMPONENT_ANCHOR_LABEL } from '@vue/shared'
|
||||
import { isHydrating, locateHydrationNode } from './dom/hydration'
|
||||
|
||||
export function createDynamicComponent(
|
||||
getter: () => any,
|
||||
|
@ -20,12 +20,17 @@ export function createDynamicComponent(
|
|||
): VaporFragment {
|
||||
const _insertionParent = insertionParent
|
||||
const _insertionAnchor = insertionAnchor
|
||||
if (!isHydrating) resetInsertionState()
|
||||
if (isHydrating) {
|
||||
locateHydrationNode()
|
||||
} else {
|
||||
resetInsertionState()
|
||||
}
|
||||
|
||||
const frag =
|
||||
isHydrating || __DEV__
|
||||
? new DynamicFragment(DYNAMIC_COMPONENT_ANCHOR_LABEL)
|
||||
: new DynamicFragment()
|
||||
|
||||
renderEffect(() => {
|
||||
const value = getter()
|
||||
const appContext =
|
||||
|
|
|
@ -13,11 +13,13 @@ import {
|
|||
type TransitionHooks,
|
||||
type VNode,
|
||||
type VaporInteropInterface,
|
||||
createInternalObject,
|
||||
createVNode,
|
||||
currentInstance,
|
||||
ensureHydrationRenderer,
|
||||
ensureRenderer,
|
||||
ensureVaporSlotFallback,
|
||||
isEmitListener,
|
||||
isVNode,
|
||||
onScopeDispose,
|
||||
renderSlot,
|
||||
|
@ -238,7 +240,14 @@ function createVDOMComponent(
|
|||
//
|
||||
// Without reactivity, Vue will warn in DEV about non-reactive watch sources
|
||||
instance.props = shallowReactive(wrapper.props)
|
||||
instance.attrs = wrapper.attrs
|
||||
|
||||
const attrs = (instance.attrs = createInternalObject())
|
||||
for (const key in wrapper.attrs) {
|
||||
if (!isEmitListener(instance.emitsOptions, key)) {
|
||||
attrs[key] = wrapper.attrs[key]
|
||||
}
|
||||
}
|
||||
|
||||
instance.slots =
|
||||
wrapper.slots === EMPTY_OBJ
|
||||
? EMPTY_OBJ
|
||||
|
|
341
pnpm-lock.yaml
341
pnpm-lock.yaml
|
@ -40,22 +40,22 @@ importers:
|
|||
version: 7.27.6
|
||||
'@rollup/plugin-alias':
|
||||
specifier: ^5.1.1
|
||||
version: 5.1.1(rollup@4.43.0)
|
||||
version: 5.1.1(rollup@4.44.0)
|
||||
'@rollup/plugin-commonjs':
|
||||
specifier: ^28.0.3
|
||||
version: 28.0.6(rollup@4.43.0)
|
||||
version: 28.0.6(rollup@4.44.0)
|
||||
'@rollup/plugin-json':
|
||||
specifier: ^6.1.0
|
||||
version: 6.1.0(rollup@4.43.0)
|
||||
version: 6.1.0(rollup@4.44.0)
|
||||
'@rollup/plugin-node-resolve':
|
||||
specifier: ^16.0.1
|
||||
version: 16.0.1(rollup@4.43.0)
|
||||
version: 16.0.1(rollup@4.44.0)
|
||||
'@rollup/plugin-replace':
|
||||
specifier: 5.0.4
|
||||
version: 5.0.4(rollup@4.43.0)
|
||||
version: 5.0.4(rollup@4.44.0)
|
||||
'@swc/core':
|
||||
specifier: ^1.11.24
|
||||
version: 1.12.1
|
||||
version: 1.12.3
|
||||
'@types/hash-sum':
|
||||
specifier: ^1.0.2
|
||||
version: 1.0.2
|
||||
|
@ -142,16 +142,16 @@ importers:
|
|||
version: 6.0.1
|
||||
rollup:
|
||||
specifier: ^4.40.2
|
||||
version: 4.43.0
|
||||
version: 4.44.0
|
||||
rollup-plugin-dts:
|
||||
specifier: ^6.2.1
|
||||
version: 6.2.1(rollup@4.43.0)(typescript@5.6.3)
|
||||
version: 6.2.1(rollup@4.44.0)(typescript@5.6.3)
|
||||
rollup-plugin-esbuild:
|
||||
specifier: ^6.2.1
|
||||
version: 6.2.1(esbuild@0.25.5)(rollup@4.43.0)
|
||||
version: 6.2.1(esbuild@0.25.5)(rollup@4.44.0)
|
||||
rollup-plugin-polyfill-node:
|
||||
specifier: ^0.13.0
|
||||
version: 0.13.0(rollup@4.43.0)
|
||||
version: 0.13.0(rollup@4.44.0)
|
||||
semver:
|
||||
specifier: ^7.7.1
|
||||
version: 7.7.2
|
||||
|
@ -246,7 +246,7 @@ importers:
|
|||
version: 0.4.1(@types/node@22.15.32)(sass@1.89.2)(vite@6.3.5(@types/node@22.15.32)(sass@1.89.2)(yaml@2.8.0))
|
||||
vite-plugin-inspect:
|
||||
specifier: ^0.8.7
|
||||
version: 0.8.9(rollup@4.43.0)(vite@6.3.5(@types/node@22.15.32)(sass@1.89.2)(yaml@2.8.0))
|
||||
version: 0.8.9(rollup@4.44.0)(vite@6.3.5(@types/node@22.15.32)(sass@1.89.2)(yaml@2.8.0))
|
||||
|
||||
packages-private/sfc-playground:
|
||||
dependencies:
|
||||
|
@ -1188,168 +1188,168 @@ packages:
|
|||
rollup:
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-android-arm-eabi@4.43.0':
|
||||
resolution: {integrity: sha512-Krjy9awJl6rKbruhQDgivNbD1WuLb8xAclM4IR4cN5pHGAs2oIMMQJEiC3IC/9TZJ+QZkmZhlMO/6MBGxPidpw==}
|
||||
'@rollup/rollup-android-arm-eabi@4.44.0':
|
||||
resolution: {integrity: sha512-xEiEE5oDW6tK4jXCAyliuntGR+amEMO7HLtdSshVuhFnKTYoeYMyXQK7pLouAJJj5KHdwdn87bfHAR2nSdNAUA==}
|
||||
cpu: [arm]
|
||||
os: [android]
|
||||
|
||||
'@rollup/rollup-android-arm64@4.43.0':
|
||||
resolution: {integrity: sha512-ss4YJwRt5I63454Rpj+mXCXicakdFmKnUNxr1dLK+5rv5FJgAxnN7s31a5VchRYxCFWdmnDWKd0wbAdTr0J5EA==}
|
||||
'@rollup/rollup-android-arm64@4.44.0':
|
||||
resolution: {integrity: sha512-uNSk/TgvMbskcHxXYHzqwiyBlJ/lGcv8DaUfcnNwict8ba9GTTNxfn3/FAoFZYgkaXXAdrAA+SLyKplyi349Jw==}
|
||||
cpu: [arm64]
|
||||
os: [android]
|
||||
|
||||
'@rollup/rollup-darwin-arm64@4.43.0':
|
||||
resolution: {integrity: sha512-eKoL8ykZ7zz8MjgBenEF2OoTNFAPFz1/lyJ5UmmFSz5jW+7XbH1+MAgCVHy72aG59rbuQLcJeiMrP8qP5d/N0A==}
|
||||
'@rollup/rollup-darwin-arm64@4.44.0':
|
||||
resolution: {integrity: sha512-VGF3wy0Eq1gcEIkSCr8Ke03CWT+Pm2yveKLaDvq51pPpZza3JX/ClxXOCmTYYq3us5MvEuNRTaeyFThCKRQhOA==}
|
||||
cpu: [arm64]
|
||||
os: [darwin]
|
||||
|
||||
'@rollup/rollup-darwin-x64@4.43.0':
|
||||
resolution: {integrity: sha512-SYwXJgaBYW33Wi/q4ubN+ldWC4DzQY62S4Ll2dgfr/dbPoF50dlQwEaEHSKrQdSjC6oIe1WgzosoaNoHCdNuMg==}
|
||||
'@rollup/rollup-darwin-x64@4.44.0':
|
||||
resolution: {integrity: sha512-fBkyrDhwquRvrTxSGH/qqt3/T0w5Rg0L7ZIDypvBPc1/gzjJle6acCpZ36blwuwcKD/u6oCE/sRWlUAcxLWQbQ==}
|
||||
cpu: [x64]
|
||||
os: [darwin]
|
||||
|
||||
'@rollup/rollup-freebsd-arm64@4.43.0':
|
||||
resolution: {integrity: sha512-SV+U5sSo0yujrjzBF7/YidieK2iF6E7MdF6EbYxNz94lA+R0wKl3SiixGyG/9Klab6uNBIqsN7j4Y/Fya7wAjQ==}
|
||||
'@rollup/rollup-freebsd-arm64@4.44.0':
|
||||
resolution: {integrity: sha512-u5AZzdQJYJXByB8giQ+r4VyfZP+walV+xHWdaFx/1VxsOn6eWJhK2Vl2eElvDJFKQBo/hcYIBg/jaKS8ZmKeNQ==}
|
||||
cpu: [arm64]
|
||||
os: [freebsd]
|
||||
|
||||
'@rollup/rollup-freebsd-x64@4.43.0':
|
||||
resolution: {integrity: sha512-J7uCsiV13L/VOeHJBo5SjasKiGxJ0g+nQTrBkAsmQBIdil3KhPnSE9GnRon4ejX1XDdsmK/l30IYLiAaQEO0Cg==}
|
||||
'@rollup/rollup-freebsd-x64@4.44.0':
|
||||
resolution: {integrity: sha512-qC0kS48c/s3EtdArkimctY7h3nHicQeEUdjJzYVJYR3ct3kWSafmn6jkNCA8InbUdge6PVx6keqjk5lVGJf99g==}
|
||||
cpu: [x64]
|
||||
os: [freebsd]
|
||||
|
||||
'@rollup/rollup-linux-arm-gnueabihf@4.43.0':
|
||||
resolution: {integrity: sha512-gTJ/JnnjCMc15uwB10TTATBEhK9meBIY+gXP4s0sHD1zHOaIh4Dmy1X9wup18IiY9tTNk5gJc4yx9ctj/fjrIw==}
|
||||
'@rollup/rollup-linux-arm-gnueabihf@4.44.0':
|
||||
resolution: {integrity: sha512-x+e/Z9H0RAWckn4V2OZZl6EmV0L2diuX3QB0uM1r6BvhUIv6xBPL5mrAX2E3e8N8rEHVPwFfz/ETUbV4oW9+lQ==}
|
||||
cpu: [arm]
|
||||
os: [linux]
|
||||
|
||||
'@rollup/rollup-linux-arm-musleabihf@4.43.0':
|
||||
resolution: {integrity: sha512-ZJ3gZynL1LDSIvRfz0qXtTNs56n5DI2Mq+WACWZ7yGHFUEirHBRt7fyIk0NsCKhmRhn7WAcjgSkSVVxKlPNFFw==}
|
||||
'@rollup/rollup-linux-arm-musleabihf@4.44.0':
|
||||
resolution: {integrity: sha512-1exwiBFf4PU/8HvI8s80icyCcnAIB86MCBdst51fwFmH5dyeoWVPVgmQPcKrMtBQ0W5pAs7jBCWuRXgEpRzSCg==}
|
||||
cpu: [arm]
|
||||
os: [linux]
|
||||
|
||||
'@rollup/rollup-linux-arm64-gnu@4.43.0':
|
||||
resolution: {integrity: sha512-8FnkipasmOOSSlfucGYEu58U8cxEdhziKjPD2FIa0ONVMxvl/hmONtX/7y4vGjdUhjcTHlKlDhw3H9t98fPvyA==}
|
||||
'@rollup/rollup-linux-arm64-gnu@4.44.0':
|
||||
resolution: {integrity: sha512-ZTR2mxBHb4tK4wGf9b8SYg0Y6KQPjGpR4UWwTFdnmjB4qRtoATZ5dWn3KsDwGa5Z2ZBOE7K52L36J9LueKBdOQ==}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
|
||||
'@rollup/rollup-linux-arm64-musl@4.43.0':
|
||||
resolution: {integrity: sha512-KPPyAdlcIZ6S9C3S2cndXDkV0Bb1OSMsX0Eelr2Bay4EsF9yi9u9uzc9RniK3mcUGCLhWY9oLr6er80P5DE6XA==}
|
||||
'@rollup/rollup-linux-arm64-musl@4.44.0':
|
||||
resolution: {integrity: sha512-GFWfAhVhWGd4r6UxmnKRTBwP1qmModHtd5gkraeW2G490BpFOZkFtem8yuX2NyafIP/mGpRJgTJ2PwohQkUY/Q==}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
|
||||
'@rollup/rollup-linux-loongarch64-gnu@4.43.0':
|
||||
resolution: {integrity: sha512-HPGDIH0/ZzAZjvtlXj6g+KDQ9ZMHfSP553za7o2Odegb/BEfwJcR0Sw0RLNpQ9nC6Gy8s+3mSS9xjZ0n3rhcYg==}
|
||||
'@rollup/rollup-linux-loongarch64-gnu@4.44.0':
|
||||
resolution: {integrity: sha512-xw+FTGcov/ejdusVOqKgMGW3c4+AgqrfvzWEVXcNP6zq2ue+lsYUgJ+5Rtn/OTJf7e2CbgTFvzLW2j0YAtj0Gg==}
|
||||
cpu: [loong64]
|
||||
os: [linux]
|
||||
|
||||
'@rollup/rollup-linux-powerpc64le-gnu@4.43.0':
|
||||
resolution: {integrity: sha512-gEmwbOws4U4GLAJDhhtSPWPXUzDfMRedT3hFMyRAvM9Mrnj+dJIFIeL7otsv2WF3D7GrV0GIewW0y28dOYWkmw==}
|
||||
'@rollup/rollup-linux-powerpc64le-gnu@4.44.0':
|
||||
resolution: {integrity: sha512-bKGibTr9IdF0zr21kMvkZT4K6NV+jjRnBoVMt2uNMG0BYWm3qOVmYnXKzx7UhwrviKnmK46IKMByMgvpdQlyJQ==}
|
||||
cpu: [ppc64]
|
||||
os: [linux]
|
||||
|
||||
'@rollup/rollup-linux-riscv64-gnu@4.43.0':
|
||||
resolution: {integrity: sha512-XXKvo2e+wFtXZF/9xoWohHg+MuRnvO29TI5Hqe9xwN5uN8NKUYy7tXUG3EZAlfchufNCTHNGjEx7uN78KsBo0g==}
|
||||
'@rollup/rollup-linux-riscv64-gnu@4.44.0':
|
||||
resolution: {integrity: sha512-vV3cL48U5kDaKZtXrti12YRa7TyxgKAIDoYdqSIOMOFBXqFj2XbChHAtXquEn2+n78ciFgr4KIqEbydEGPxXgA==}
|
||||
cpu: [riscv64]
|
||||
os: [linux]
|
||||
|
||||
'@rollup/rollup-linux-riscv64-musl@4.43.0':
|
||||
resolution: {integrity: sha512-ruf3hPWhjw6uDFsOAzmbNIvlXFXlBQ4nk57Sec8E8rUxs/AI4HD6xmiiasOOx/3QxS2f5eQMKTAwk7KHwpzr/Q==}
|
||||
'@rollup/rollup-linux-riscv64-musl@4.44.0':
|
||||
resolution: {integrity: sha512-TDKO8KlHJuvTEdfw5YYFBjhFts2TR0VpZsnLLSYmB7AaohJhM8ctDSdDnUGq77hUh4m/djRafw+9zQpkOanE2Q==}
|
||||
cpu: [riscv64]
|
||||
os: [linux]
|
||||
|
||||
'@rollup/rollup-linux-s390x-gnu@4.43.0':
|
||||
resolution: {integrity: sha512-QmNIAqDiEMEvFV15rsSnjoSmO0+eJLoKRD9EAa9rrYNwO/XRCtOGM3A5A0X+wmG+XRrw9Fxdsw+LnyYiZWWcVw==}
|
||||
'@rollup/rollup-linux-s390x-gnu@4.44.0':
|
||||
resolution: {integrity: sha512-8541GEyktXaw4lvnGp9m84KENcxInhAt6vPWJ9RodsB/iGjHoMB2Pp5MVBCiKIRxrxzJhGCxmNzdu+oDQ7kwRA==}
|
||||
cpu: [s390x]
|
||||
os: [linux]
|
||||
|
||||
'@rollup/rollup-linux-x64-gnu@4.43.0':
|
||||
resolution: {integrity: sha512-jAHr/S0iiBtFyzjhOkAics/2SrXE092qyqEg96e90L3t9Op8OTzS6+IX0Fy5wCt2+KqeHAkti+eitV0wvblEoQ==}
|
||||
'@rollup/rollup-linux-x64-gnu@4.44.0':
|
||||
resolution: {integrity: sha512-iUVJc3c0o8l9Sa/qlDL2Z9UP92UZZW1+EmQ4xfjTc1akr0iUFZNfxrXJ/R1T90h/ILm9iXEY6+iPrmYB3pXKjw==}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
|
||||
'@rollup/rollup-linux-x64-musl@4.43.0':
|
||||
resolution: {integrity: sha512-3yATWgdeXyuHtBhrLt98w+5fKurdqvs8B53LaoKD7P7H7FKOONLsBVMNl9ghPQZQuYcceV5CDyPfyfGpMWD9mQ==}
|
||||
'@rollup/rollup-linux-x64-musl@4.44.0':
|
||||
resolution: {integrity: sha512-PQUobbhLTQT5yz/SPg116VJBgz+XOtXt8D1ck+sfJJhuEsMj2jSej5yTdp8CvWBSceu+WW+ibVL6dm0ptG5fcA==}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
|
||||
'@rollup/rollup-win32-arm64-msvc@4.43.0':
|
||||
resolution: {integrity: sha512-wVzXp2qDSCOpcBCT5WRWLmpJRIzv23valvcTwMHEobkjippNf+C3ys/+wf07poPkeNix0paTNemB2XrHr2TnGw==}
|
||||
'@rollup/rollup-win32-arm64-msvc@4.44.0':
|
||||
resolution: {integrity: sha512-M0CpcHf8TWn+4oTxJfh7LQuTuaYeXGbk0eageVjQCKzYLsajWS/lFC94qlRqOlyC2KvRT90ZrfXULYmukeIy7w==}
|
||||
cpu: [arm64]
|
||||
os: [win32]
|
||||
|
||||
'@rollup/rollup-win32-ia32-msvc@4.43.0':
|
||||
resolution: {integrity: sha512-fYCTEyzf8d+7diCw8b+asvWDCLMjsCEA8alvtAutqJOJp/wL5hs1rWSqJ1vkjgW0L2NB4bsYJrpKkiIPRR9dvw==}
|
||||
'@rollup/rollup-win32-ia32-msvc@4.44.0':
|
||||
resolution: {integrity: sha512-3XJ0NQtMAXTWFW8FqZKcw3gOQwBtVWP/u8TpHP3CRPXD7Pd6s8lLdH3sHWh8vqKCyyiI8xW5ltJScQmBU9j7WA==}
|
||||
cpu: [ia32]
|
||||
os: [win32]
|
||||
|
||||
'@rollup/rollup-win32-x64-msvc@4.43.0':
|
||||
resolution: {integrity: sha512-SnGhLiE5rlK0ofq8kzuDkM0g7FN1s5VYY+YSMTibP7CqShxCQvqtNxTARS4xX4PFJfHjG0ZQYX9iGzI3FQh5Aw==}
|
||||
'@rollup/rollup-win32-x64-msvc@4.44.0':
|
||||
resolution: {integrity: sha512-Q2Mgwt+D8hd5FIPUuPDsvPR7Bguza6yTkJxspDGkZj7tBRn2y4KSWYuIXpftFSjBra76TbKerCV7rgFPQrn+wQ==}
|
||||
cpu: [x64]
|
||||
os: [win32]
|
||||
|
||||
'@swc/core-darwin-arm64@1.12.1':
|
||||
resolution: {integrity: sha512-nUjWVcJ3YS2N40ZbKwYO2RJ4+o2tWYRzNOcIQp05FqW0+aoUCVMdAUUzQinPDynfgwVshDAXCKemY8X7nN5MaA==}
|
||||
'@swc/core-darwin-arm64@1.12.3':
|
||||
resolution: {integrity: sha512-QCV9vQ/s27AMxm8j8MTDL/nDoiEMrANiENRrWnb0Fxvz/O39CajPVShp/W7HlOkzt1GYtUXPdQJpSKylugfrWw==}
|
||||
engines: {node: '>=10'}
|
||||
cpu: [arm64]
|
||||
os: [darwin]
|
||||
|
||||
'@swc/core-darwin-x64@1.12.1':
|
||||
resolution: {integrity: sha512-OGm4a4d3OeJn+tRt8H/eiHgTFrJbS6r8mi/Ob65tAEXZGHN900T2kR7c5ALr0V2hBOQ8BfhexwPoQlGQP/B95w==}
|
||||
'@swc/core-darwin-x64@1.12.3':
|
||||
resolution: {integrity: sha512-LylCMfzGhdvl5tyKaTT9ePetHUX7wSsST7hxWiHzS+cUMj7FnhcfdEr6kcNVT7y1RJn3fCvuv7T98ZB+T2q3HA==}
|
||||
engines: {node: '>=10'}
|
||||
cpu: [x64]
|
||||
os: [darwin]
|
||||
|
||||
'@swc/core-linux-arm-gnueabihf@1.12.1':
|
||||
resolution: {integrity: sha512-76YeeQKyK0EtNkQiNBZ0nbVGooPf9IucY0WqVXVpaU4wuG7ZyLEE2ZAIgXafIuzODGQoLfetue7I8boMxh1/MA==}
|
||||
'@swc/core-linux-arm-gnueabihf@1.12.3':
|
||||
resolution: {integrity: sha512-DQODb7S+q+pwQY41Azcavwb2rb4rGxP70niScRDxB9X68hHOM9D0w9fxzC+Nr3AHcPSmVJUYUIiq5h38O5hVgQ==}
|
||||
engines: {node: '>=10'}
|
||||
cpu: [arm]
|
||||
os: [linux]
|
||||
|
||||
'@swc/core-linux-arm64-gnu@1.12.1':
|
||||
resolution: {integrity: sha512-BxJDIJPq1+aCh9UsaSAN6wo3tuln8UhNXruOrzTI8/ElIig/3sAueDM6Eq7GvZSGGSA7ljhNATMJ0elD7lFatQ==}
|
||||
'@swc/core-linux-arm64-gnu@1.12.3':
|
||||
resolution: {integrity: sha512-nTxtJSq78AjeaQBueYImoFBs5j7qXbgOxtirpyt8jE29NQBd0VFzDzRBhkr6I9jq0hNiChgMkqBN4eUkEQjytg==}
|
||||
engines: {node: '>=10'}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
|
||||
'@swc/core-linux-arm64-musl@1.12.1':
|
||||
resolution: {integrity: sha512-NhLdbffSXvY0/FwUSAl4hKBlpe5GHQGXK8DxTo3HHjLsD9sCPYieo3vG0NQoUYAy4ZUY1WeGjyxeq4qZddJzEQ==}
|
||||
'@swc/core-linux-arm64-musl@1.12.3':
|
||||
resolution: {integrity: sha512-lBGvC5UgPSxqLr/y1NZxQhyRQ7nXy3/Ec1Z47YNXtqtpKiG1EcOGPyS0UZgwiYQkXqq8NBFMHnyHmpKnXTvRDA==}
|
||||
engines: {node: '>=10'}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
|
||||
'@swc/core-linux-x64-gnu@1.12.1':
|
||||
resolution: {integrity: sha512-CrYnV8SZIgArQ9LKH0xEF95PKXzX9WkRSc5j55arOSBeDCeDUQk1Bg/iKdnDiuj5HC1hZpvzwMzSBJjv+Z70jA==}
|
||||
'@swc/core-linux-x64-gnu@1.12.3':
|
||||
resolution: {integrity: sha512-61wZ8hwxNYzBY9MCWB50v90ICzdIhOuPk1O1qXswz9AXw5O6iQStEBHQ1rozPkfQ/rmhepk0pOf/6LCwssJOwg==}
|
||||
engines: {node: '>=10'}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
|
||||
'@swc/core-linux-x64-musl@1.12.1':
|
||||
resolution: {integrity: sha512-BQMl3d0HaGB0/h2xcKlGtjk/cGRn2tnbsaChAKcjFdCepblKBCz1pgO/mL7w5iXq3s57wMDUn++71/a5RAkZOA==}
|
||||
'@swc/core-linux-x64-musl@1.12.3':
|
||||
resolution: {integrity: sha512-NNeBiTpCgWt80vumTKVoaj6Fa/ZjUcaNQNM7np3PIgB8EbuXfyztboV7vUxpkmD/lUgsk8GlEFYViHvo6VMefQ==}
|
||||
engines: {node: '>=10'}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
|
||||
'@swc/core-win32-arm64-msvc@1.12.1':
|
||||
resolution: {integrity: sha512-b7NeGnpqTfmIGtUqXBl0KqoSmOnH64nRZoT5l4BAGdvwY7nxitWR94CqZuwyLPty/bLywmyDA9uO12Kvgb3+gg==}
|
||||
'@swc/core-win32-arm64-msvc@1.12.3':
|
||||
resolution: {integrity: sha512-fxraM7exaPb1/W0CoHW45EFNOQUQh0nonBEcNFm2iv095mziBwttyxZyQBoDkQocpkd5NtsZw3xW5FTBPnn+Vw==}
|
||||
engines: {node: '>=10'}
|
||||
cpu: [arm64]
|
||||
os: [win32]
|
||||
|
||||
'@swc/core-win32-ia32-msvc@1.12.1':
|
||||
resolution: {integrity: sha512-iU/29X2D7cHBp1to62cUg/5Xk8K+lyOJiKIGGW5rdzTW/c2zz3d/ehgpzVP/rqC4NVr88MXspqHU4il5gmDajw==}
|
||||
'@swc/core-win32-ia32-msvc@1.12.3':
|
||||
resolution: {integrity: sha512-FFIhMPXIDjRcewomwbYGPvem7Fj76AsuzbRahnAyp+OzJwrrtxVmra/kyUCfj4kix7vdGByY0WvVfiVCf5b7Mg==}
|
||||
engines: {node: '>=10'}
|
||||
cpu: [ia32]
|
||||
os: [win32]
|
||||
|
||||
'@swc/core-win32-x64-msvc@1.12.1':
|
||||
resolution: {integrity: sha512-+Zh+JKDwiFqV5N9yAd2DhYVGPORGh9cfenu1ptr9yge+eHAf7vZJcC3rnj6QMR1QJh0Y5VC9+YBjRFjZVA7XDw==}
|
||||
'@swc/core-win32-x64-msvc@1.12.3':
|
||||
resolution: {integrity: sha512-Sf4iSg+IYT5AzFSDDmii08DfeKcvtkVxIuo+uS8BJMbiLjFNjgMkkVlBthknGyJcSK15ncg9248XjnM4jU8DZA==}
|
||||
engines: {node: '>=10'}
|
||||
cpu: [x64]
|
||||
os: [win32]
|
||||
|
||||
'@swc/core@1.12.1':
|
||||
resolution: {integrity: sha512-aKXdDTqxTVFl/bKQZ3EQUjEMBEoF6JBv29moMZq0kbVO43na6u/u+3Vcbhbrh+A2N0X5OL4RaveuWfAjEgOmeA==}
|
||||
'@swc/core@1.12.3':
|
||||
resolution: {integrity: sha512-c4NeXW8P3gPqcFwtm+4aH+F2Cj5KJLMiLaKhSj3mpv19glq+jmekomdktAw/VHyjsXlsmouOeNWrk8rVlkCRsg==}
|
||||
engines: {node: '>=10'}
|
||||
peerDependencies:
|
||||
'@swc/helpers': '>=0.5.17'
|
||||
|
@ -1378,9 +1378,6 @@ packages:
|
|||
'@types/deep-eql@4.0.2':
|
||||
resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==}
|
||||
|
||||
'@types/estree@1.0.7':
|
||||
resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==}
|
||||
|
||||
'@types/estree@1.0.8':
|
||||
resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
|
||||
|
||||
|
@ -3329,8 +3326,8 @@ packages:
|
|||
peerDependencies:
|
||||
rollup: ^1.20.0 || ^2.0.0 || ^3.0.0 || ^4.0.0
|
||||
|
||||
rollup@4.43.0:
|
||||
resolution: {integrity: sha512-wdN2Kd3Twh8MAEOEJZsuxuLKCsBEo4PVNLK6tQWAn10VhsVewQLzcucMgLolRlhFybGxfclbPeEYBaP6RvUFGg==}
|
||||
rollup@4.44.0:
|
||||
resolution: {integrity: sha512-qHcdEzLCiktQIfwBq420pn2dP+30uzqYxv9ETm91wdt2R9AFcWfjNAmje4NWlnCIQ5RMTzVf0ZyisOKqHR6RwA==}
|
||||
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
|
||||
hasBin: true
|
||||
|
||||
|
@ -4370,13 +4367,13 @@ snapshots:
|
|||
- bare-buffer
|
||||
- supports-color
|
||||
|
||||
'@rollup/plugin-alias@5.1.1(rollup@4.43.0)':
|
||||
'@rollup/plugin-alias@5.1.1(rollup@4.44.0)':
|
||||
optionalDependencies:
|
||||
rollup: 4.43.0
|
||||
rollup: 4.44.0
|
||||
|
||||
'@rollup/plugin-commonjs@28.0.6(rollup@4.43.0)':
|
||||
'@rollup/plugin-commonjs@28.0.6(rollup@4.44.0)':
|
||||
dependencies:
|
||||
'@rollup/pluginutils': 5.2.0(rollup@4.43.0)
|
||||
'@rollup/pluginutils': 5.2.0(rollup@4.44.0)
|
||||
commondir: 1.0.1
|
||||
estree-walker: 2.0.2
|
||||
fdir: 6.4.6(picomatch@4.0.2)
|
||||
|
@ -4384,152 +4381,152 @@ snapshots:
|
|||
magic-string: 0.30.17
|
||||
picomatch: 4.0.2
|
||||
optionalDependencies:
|
||||
rollup: 4.43.0
|
||||
rollup: 4.44.0
|
||||
|
||||
'@rollup/plugin-inject@5.0.5(rollup@4.43.0)':
|
||||
'@rollup/plugin-inject@5.0.5(rollup@4.44.0)':
|
||||
dependencies:
|
||||
'@rollup/pluginutils': 5.2.0(rollup@4.43.0)
|
||||
'@rollup/pluginutils': 5.2.0(rollup@4.44.0)
|
||||
estree-walker: 2.0.2
|
||||
magic-string: 0.30.17
|
||||
optionalDependencies:
|
||||
rollup: 4.43.0
|
||||
rollup: 4.44.0
|
||||
|
||||
'@rollup/plugin-json@6.1.0(rollup@4.43.0)':
|
||||
'@rollup/plugin-json@6.1.0(rollup@4.44.0)':
|
||||
dependencies:
|
||||
'@rollup/pluginutils': 5.2.0(rollup@4.43.0)
|
||||
'@rollup/pluginutils': 5.2.0(rollup@4.44.0)
|
||||
optionalDependencies:
|
||||
rollup: 4.43.0
|
||||
rollup: 4.44.0
|
||||
|
||||
'@rollup/plugin-node-resolve@16.0.1(rollup@4.43.0)':
|
||||
'@rollup/plugin-node-resolve@16.0.1(rollup@4.44.0)':
|
||||
dependencies:
|
||||
'@rollup/pluginutils': 5.2.0(rollup@4.43.0)
|
||||
'@rollup/pluginutils': 5.2.0(rollup@4.44.0)
|
||||
'@types/resolve': 1.20.2
|
||||
deepmerge: 4.3.1
|
||||
is-module: 1.0.0
|
||||
resolve: 1.22.10
|
||||
optionalDependencies:
|
||||
rollup: 4.43.0
|
||||
rollup: 4.44.0
|
||||
|
||||
'@rollup/plugin-replace@5.0.4(rollup@4.43.0)':
|
||||
'@rollup/plugin-replace@5.0.4(rollup@4.44.0)':
|
||||
dependencies:
|
||||
'@rollup/pluginutils': 5.2.0(rollup@4.43.0)
|
||||
'@rollup/pluginutils': 5.2.0(rollup@4.44.0)
|
||||
magic-string: 0.30.17
|
||||
optionalDependencies:
|
||||
rollup: 4.43.0
|
||||
rollup: 4.44.0
|
||||
|
||||
'@rollup/pluginutils@5.2.0(rollup@4.43.0)':
|
||||
'@rollup/pluginutils@5.2.0(rollup@4.44.0)':
|
||||
dependencies:
|
||||
'@types/estree': 1.0.8
|
||||
estree-walker: 2.0.2
|
||||
picomatch: 4.0.2
|
||||
optionalDependencies:
|
||||
rollup: 4.43.0
|
||||
rollup: 4.44.0
|
||||
|
||||
'@rollup/rollup-android-arm-eabi@4.43.0':
|
||||
'@rollup/rollup-android-arm-eabi@4.44.0':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-android-arm64@4.43.0':
|
||||
'@rollup/rollup-android-arm64@4.44.0':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-darwin-arm64@4.43.0':
|
||||
'@rollup/rollup-darwin-arm64@4.44.0':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-darwin-x64@4.43.0':
|
||||
'@rollup/rollup-darwin-x64@4.44.0':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-freebsd-arm64@4.43.0':
|
||||
'@rollup/rollup-freebsd-arm64@4.44.0':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-freebsd-x64@4.43.0':
|
||||
'@rollup/rollup-freebsd-x64@4.44.0':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-linux-arm-gnueabihf@4.43.0':
|
||||
'@rollup/rollup-linux-arm-gnueabihf@4.44.0':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-linux-arm-musleabihf@4.43.0':
|
||||
'@rollup/rollup-linux-arm-musleabihf@4.44.0':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-linux-arm64-gnu@4.43.0':
|
||||
'@rollup/rollup-linux-arm64-gnu@4.44.0':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-linux-arm64-musl@4.43.0':
|
||||
'@rollup/rollup-linux-arm64-musl@4.44.0':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-linux-loongarch64-gnu@4.43.0':
|
||||
'@rollup/rollup-linux-loongarch64-gnu@4.44.0':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-linux-powerpc64le-gnu@4.43.0':
|
||||
'@rollup/rollup-linux-powerpc64le-gnu@4.44.0':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-linux-riscv64-gnu@4.43.0':
|
||||
'@rollup/rollup-linux-riscv64-gnu@4.44.0':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-linux-riscv64-musl@4.43.0':
|
||||
'@rollup/rollup-linux-riscv64-musl@4.44.0':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-linux-s390x-gnu@4.43.0':
|
||||
'@rollup/rollup-linux-s390x-gnu@4.44.0':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-linux-x64-gnu@4.43.0':
|
||||
'@rollup/rollup-linux-x64-gnu@4.44.0':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-linux-x64-musl@4.43.0':
|
||||
'@rollup/rollup-linux-x64-musl@4.44.0':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-win32-arm64-msvc@4.43.0':
|
||||
'@rollup/rollup-win32-arm64-msvc@4.44.0':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-win32-ia32-msvc@4.43.0':
|
||||
'@rollup/rollup-win32-ia32-msvc@4.44.0':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-win32-x64-msvc@4.43.0':
|
||||
'@rollup/rollup-win32-x64-msvc@4.44.0':
|
||||
optional: true
|
||||
|
||||
'@swc/core-darwin-arm64@1.12.1':
|
||||
'@swc/core-darwin-arm64@1.12.3':
|
||||
optional: true
|
||||
|
||||
'@swc/core-darwin-x64@1.12.1':
|
||||
'@swc/core-darwin-x64@1.12.3':
|
||||
optional: true
|
||||
|
||||
'@swc/core-linux-arm-gnueabihf@1.12.1':
|
||||
'@swc/core-linux-arm-gnueabihf@1.12.3':
|
||||
optional: true
|
||||
|
||||
'@swc/core-linux-arm64-gnu@1.12.1':
|
||||
'@swc/core-linux-arm64-gnu@1.12.3':
|
||||
optional: true
|
||||
|
||||
'@swc/core-linux-arm64-musl@1.12.1':
|
||||
'@swc/core-linux-arm64-musl@1.12.3':
|
||||
optional: true
|
||||
|
||||
'@swc/core-linux-x64-gnu@1.12.1':
|
||||
'@swc/core-linux-x64-gnu@1.12.3':
|
||||
optional: true
|
||||
|
||||
'@swc/core-linux-x64-musl@1.12.1':
|
||||
'@swc/core-linux-x64-musl@1.12.3':
|
||||
optional: true
|
||||
|
||||
'@swc/core-win32-arm64-msvc@1.12.1':
|
||||
'@swc/core-win32-arm64-msvc@1.12.3':
|
||||
optional: true
|
||||
|
||||
'@swc/core-win32-ia32-msvc@1.12.1':
|
||||
'@swc/core-win32-ia32-msvc@1.12.3':
|
||||
optional: true
|
||||
|
||||
'@swc/core-win32-x64-msvc@1.12.1':
|
||||
'@swc/core-win32-x64-msvc@1.12.3':
|
||||
optional: true
|
||||
|
||||
'@swc/core@1.12.1':
|
||||
'@swc/core@1.12.3':
|
||||
dependencies:
|
||||
'@swc/counter': 0.1.3
|
||||
'@swc/types': 0.1.23
|
||||
optionalDependencies:
|
||||
'@swc/core-darwin-arm64': 1.12.1
|
||||
'@swc/core-darwin-x64': 1.12.1
|
||||
'@swc/core-linux-arm-gnueabihf': 1.12.1
|
||||
'@swc/core-linux-arm64-gnu': 1.12.1
|
||||
'@swc/core-linux-arm64-musl': 1.12.1
|
||||
'@swc/core-linux-x64-gnu': 1.12.1
|
||||
'@swc/core-linux-x64-musl': 1.12.1
|
||||
'@swc/core-win32-arm64-msvc': 1.12.1
|
||||
'@swc/core-win32-ia32-msvc': 1.12.1
|
||||
'@swc/core-win32-x64-msvc': 1.12.1
|
||||
'@swc/core-darwin-arm64': 1.12.3
|
||||
'@swc/core-darwin-x64': 1.12.3
|
||||
'@swc/core-linux-arm-gnueabihf': 1.12.3
|
||||
'@swc/core-linux-arm64-gnu': 1.12.3
|
||||
'@swc/core-linux-arm64-musl': 1.12.3
|
||||
'@swc/core-linux-x64-gnu': 1.12.3
|
||||
'@swc/core-linux-x64-musl': 1.12.3
|
||||
'@swc/core-win32-arm64-msvc': 1.12.3
|
||||
'@swc/core-win32-ia32-msvc': 1.12.3
|
||||
'@swc/core-win32-x64-msvc': 1.12.3
|
||||
|
||||
'@swc/counter@0.1.3': {}
|
||||
|
||||
|
@ -4554,8 +4551,6 @@ snapshots:
|
|||
|
||||
'@types/deep-eql@4.0.2': {}
|
||||
|
||||
'@types/estree@1.0.7': {}
|
||||
|
||||
'@types/estree@1.0.8': {}
|
||||
|
||||
'@types/hash-sum@1.0.2': {}
|
||||
|
@ -6623,54 +6618,54 @@ snapshots:
|
|||
glob: 11.0.3
|
||||
package-json-from-dist: 1.0.1
|
||||
|
||||
rollup-plugin-dts@6.2.1(rollup@4.43.0)(typescript@5.6.3):
|
||||
rollup-plugin-dts@6.2.1(rollup@4.44.0)(typescript@5.6.3):
|
||||
dependencies:
|
||||
magic-string: 0.30.17
|
||||
rollup: 4.43.0
|
||||
rollup: 4.44.0
|
||||
typescript: 5.6.3
|
||||
optionalDependencies:
|
||||
'@babel/code-frame': 7.27.1
|
||||
|
||||
rollup-plugin-esbuild@6.2.1(esbuild@0.25.5)(rollup@4.43.0):
|
||||
rollup-plugin-esbuild@6.2.1(esbuild@0.25.5)(rollup@4.44.0):
|
||||
dependencies:
|
||||
debug: 4.4.1
|
||||
es-module-lexer: 1.7.0
|
||||
esbuild: 0.25.5
|
||||
get-tsconfig: 4.10.1
|
||||
rollup: 4.43.0
|
||||
rollup: 4.44.0
|
||||
unplugin-utils: 0.2.4
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
rollup-plugin-polyfill-node@0.13.0(rollup@4.43.0):
|
||||
rollup-plugin-polyfill-node@0.13.0(rollup@4.44.0):
|
||||
dependencies:
|
||||
'@rollup/plugin-inject': 5.0.5(rollup@4.43.0)
|
||||
rollup: 4.43.0
|
||||
'@rollup/plugin-inject': 5.0.5(rollup@4.44.0)
|
||||
rollup: 4.44.0
|
||||
|
||||
rollup@4.43.0:
|
||||
rollup@4.44.0:
|
||||
dependencies:
|
||||
'@types/estree': 1.0.7
|
||||
'@types/estree': 1.0.8
|
||||
optionalDependencies:
|
||||
'@rollup/rollup-android-arm-eabi': 4.43.0
|
||||
'@rollup/rollup-android-arm64': 4.43.0
|
||||
'@rollup/rollup-darwin-arm64': 4.43.0
|
||||
'@rollup/rollup-darwin-x64': 4.43.0
|
||||
'@rollup/rollup-freebsd-arm64': 4.43.0
|
||||
'@rollup/rollup-freebsd-x64': 4.43.0
|
||||
'@rollup/rollup-linux-arm-gnueabihf': 4.43.0
|
||||
'@rollup/rollup-linux-arm-musleabihf': 4.43.0
|
||||
'@rollup/rollup-linux-arm64-gnu': 4.43.0
|
||||
'@rollup/rollup-linux-arm64-musl': 4.43.0
|
||||
'@rollup/rollup-linux-loongarch64-gnu': 4.43.0
|
||||
'@rollup/rollup-linux-powerpc64le-gnu': 4.43.0
|
||||
'@rollup/rollup-linux-riscv64-gnu': 4.43.0
|
||||
'@rollup/rollup-linux-riscv64-musl': 4.43.0
|
||||
'@rollup/rollup-linux-s390x-gnu': 4.43.0
|
||||
'@rollup/rollup-linux-x64-gnu': 4.43.0
|
||||
'@rollup/rollup-linux-x64-musl': 4.43.0
|
||||
'@rollup/rollup-win32-arm64-msvc': 4.43.0
|
||||
'@rollup/rollup-win32-ia32-msvc': 4.43.0
|
||||
'@rollup/rollup-win32-x64-msvc': 4.43.0
|
||||
'@rollup/rollup-android-arm-eabi': 4.44.0
|
||||
'@rollup/rollup-android-arm64': 4.44.0
|
||||
'@rollup/rollup-darwin-arm64': 4.44.0
|
||||
'@rollup/rollup-darwin-x64': 4.44.0
|
||||
'@rollup/rollup-freebsd-arm64': 4.44.0
|
||||
'@rollup/rollup-freebsd-x64': 4.44.0
|
||||
'@rollup/rollup-linux-arm-gnueabihf': 4.44.0
|
||||
'@rollup/rollup-linux-arm-musleabihf': 4.44.0
|
||||
'@rollup/rollup-linux-arm64-gnu': 4.44.0
|
||||
'@rollup/rollup-linux-arm64-musl': 4.44.0
|
||||
'@rollup/rollup-linux-loongarch64-gnu': 4.44.0
|
||||
'@rollup/rollup-linux-powerpc64le-gnu': 4.44.0
|
||||
'@rollup/rollup-linux-riscv64-gnu': 4.44.0
|
||||
'@rollup/rollup-linux-riscv64-musl': 4.44.0
|
||||
'@rollup/rollup-linux-s390x-gnu': 4.44.0
|
||||
'@rollup/rollup-linux-x64-gnu': 4.44.0
|
||||
'@rollup/rollup-linux-x64-musl': 4.44.0
|
||||
'@rollup/rollup-win32-arm64-msvc': 4.44.0
|
||||
'@rollup/rollup-win32-ia32-msvc': 4.44.0
|
||||
'@rollup/rollup-win32-x64-msvc': 4.44.0
|
||||
fsevents: 2.3.3
|
||||
|
||||
rrweb-cssom@0.8.0: {}
|
||||
|
@ -7086,10 +7081,10 @@ snapshots:
|
|||
- tsx
|
||||
- yaml
|
||||
|
||||
vite-plugin-inspect@0.8.9(rollup@4.43.0)(vite@6.3.5(@types/node@22.15.32)(sass@1.89.2)(yaml@2.8.0)):
|
||||
vite-plugin-inspect@0.8.9(rollup@4.44.0)(vite@6.3.5(@types/node@22.15.32)(sass@1.89.2)(yaml@2.8.0)):
|
||||
dependencies:
|
||||
'@antfu/utils': 0.7.10
|
||||
'@rollup/pluginutils': 5.2.0(rollup@4.43.0)
|
||||
'@rollup/pluginutils': 5.2.0(rollup@4.44.0)
|
||||
debug: 4.4.1
|
||||
error-stack-parser-es: 0.1.5
|
||||
fs-extra: 11.3.0
|
||||
|
@ -7106,7 +7101,7 @@ snapshots:
|
|||
dependencies:
|
||||
esbuild: 0.21.5
|
||||
postcss: 8.5.6
|
||||
rollup: 4.43.0
|
||||
rollup: 4.44.0
|
||||
optionalDependencies:
|
||||
'@types/node': 22.15.32
|
||||
fsevents: 2.3.3
|
||||
|
@ -7118,7 +7113,7 @@ snapshots:
|
|||
fdir: 6.4.6(picomatch@4.0.2)
|
||||
picomatch: 4.0.2
|
||||
postcss: 8.5.6
|
||||
rollup: 4.43.0
|
||||
rollup: 4.44.0
|
||||
tinyglobby: 0.2.14
|
||||
optionalDependencies:
|
||||
'@types/node': 22.15.32
|
||||
|
|
Loading…
Reference in New Issue