chore: Merge branch 'edison/refactor/compiler-vapor-helpers' into edison/refactor/compiler-vapor-codegen

This commit is contained in:
daiwei 2025-09-03 10:35:08 +08:00
commit 40c4f590ec
5 changed files with 188 additions and 146 deletions

View File

@ -98,7 +98,7 @@
"pug": "^3.0.3", "pug": "^3.0.3",
"puppeteer": "~24.16.2", "puppeteer": "~24.16.2",
"rimraf": "^6.0.1", "rimraf": "^6.0.1",
"rollup": "^4.46.4", "rollup": "4.49.0",
"rollup-plugin-dts": "^6.2.3", "rollup-plugin-dts": "^6.2.3",
"rollup-plugin-esbuild": "^6.2.1", "rollup-plugin-esbuild": "^6.2.1",
"rollup-plugin-polyfill-node": "^0.13.0", "rollup-plugin-polyfill-node": "^0.13.0",

View File

@ -280,7 +280,19 @@ export function render(_ctx) {
}" }"
`; `;
exports[`compile > gen unique variables > should avoid binding conflicts for node vars (n*/x*) 1`] = ` exports[`compile > gen unique helper alias > should avoid conflicts with existing variable names 1`] = `
"import { child as _child2, toDisplayString as _toDisplayString, setText as _setText, renderEffect as _renderEffect, template as _template } from 'vue';
const t0 = _template("<div> </div>", true)
export function render(_ctx, $props, $emit, $attrs, $slots) {
const n0 = t0()
const x0 = _child2(n0)
_renderEffect(() => _setText(x0, _toDisplayString(_ctx.foo)))
return n0
}"
`;
exports[`compile > gen unique node variables > should avoid binding conflicts for node vars (n*/x*) 1`] = `
"import { child as _child, toDisplayString as _toDisplayString, setText as _setText, renderEffect as _renderEffect, template as _template } from 'vue'; "import { child as _child, toDisplayString as _toDisplayString, setText as _setText, renderEffect as _renderEffect, template as _template } from 'vue';
const t0 = _template("<div> </div>") const t0 = _template("<div> </div>")
@ -298,7 +310,7 @@ export function render(_ctx, $props, $emit, $attrs, $slots) {
}" }"
`; `;
exports[`compile > gen unique variables > should bump old ref var (r*) on conflict 1`] = ` exports[`compile > gen unique node variables > should bump old ref var (r*) on conflict 1`] = `
"import { createTemplateRefSetter as _createTemplateRefSetter, renderEffect as _renderEffect, template as _template } from 'vue'; "import { createTemplateRefSetter as _createTemplateRefSetter, renderEffect as _renderEffect, template as _template } from 'vue';
const t0 = _template("<div></div>") const t0 = _template("<div></div>")
@ -320,7 +332,7 @@ export function render(_ctx, $props, $emit, $attrs, $slots) {
}" }"
`; `;
exports[`compile > gen unique variables > should bump placeholder var (p*) on conflict 1`] = ` exports[`compile > gen unique node variables > should bump placeholder var (p*) on conflict 1`] = `
"import { child as _child, setProp as _setProp, renderEffect as _renderEffect, template as _template } from 'vue'; "import { child as _child, setProp as _setProp, renderEffect as _renderEffect, template as _template } from 'vue';
const t0 = _template("<div><div><div><span></span></div></div></div>", true) const t0 = _template("<div><div><div><span></span></div></div></div>", true)
@ -334,7 +346,7 @@ export function render(_ctx, $props, $emit, $attrs, $slots) {
}" }"
`; `;
exports[`compile > gen unique variables > should bump template var (t*) on conflict 1`] = ` exports[`compile > gen unique node variables > should bump template var (t*) on conflict 1`] = `
"import { template as _template } from 'vue'; "import { template as _template } from 'vue';
const t1 = _template("<div></div>") const t1 = _template("<div></div>")
const t3 = _template("<span></span>") const t3 = _template("<span></span>")

View File

@ -269,7 +269,21 @@ describe('compile', () => {
}) })
}) })
describe('gen unique variables', () => { describe('gen unique helper alias', () => {
test('should avoid conflicts with existing variable names', () => {
const code = compile(`<div>{{ foo }}</div>`, {
bindingMetadata: {
_child: BindingTypes.LITERAL_CONST,
_child1: BindingTypes.SETUP_REF,
},
})
expect(code).matchSnapshot()
expect(code).contains('child as _child2')
expect(code).contains('const x0 = _child2(n0)')
})
})
describe('gen unique node variables', () => {
test('should avoid binding conflicts for node vars (n*/x*)', () => { test('should avoid binding conflicts for node vars (n*/x*)', () => {
const code = compile(`<div>{{ foo }}</div><div>{{ foo }}</div>`, { const code = compile(`<div>{{ foo }}</div><div>{{ foo }}</div>`, {
bindingMetadata: { bindingMetadata: {

View File

@ -22,18 +22,31 @@ import { buildNextIdMap, getNextId } from './transform'
export type CodegenOptions = Omit<BaseCodegenOptions, 'optimizeImports'> export type CodegenOptions = Omit<BaseCodegenOptions, 'optimizeImports'>
const generatedVarRE = /^([pt])(\d+)$/ const idWithTrailingDigitsRE = /^([A-Za-z_$][\w$]*)(\d+)$/
export class CodegenContext { export class CodegenContext {
options: Required<CodegenOptions> options: Required<CodegenOptions>
helpers: Set<string> = new Set<string>([])
bindingNames: Set<string> = new Set<string>() bindingNames: Set<string> = new Set<string>()
helper = (name: CoreHelper | VaporHelper) => { helpers: Map<string, string> = new Map()
this.helpers.add(name)
return `_${name}` helper = (name: CoreHelper | VaporHelper): string => {
if (this.helpers.has(name)) {
return this.helpers.get(name)!
}
const base = `_${name}`
if (this.bindingNames.size === 0 || !this.bindingNames.has(base)) {
this.helpers.set(name, base)
return base
}
const map = this.nextIdMap.get(base)
// start from 1 because "base" (no suffix) is already taken.
const alias = `${base}${getNextId(map, 1)}`
this.helpers.set(name, alias)
return alias
} }
delegates: Set<string> = new Set<string>() delegates: Set<string> = new Set<string>()
@ -75,16 +88,15 @@ export class CodegenContext {
private templateVars: Map<number, string> = new Map() private templateVars: Map<number, string> = new Map()
private nextIdMap: Map<string, Map<number, number>> = new Map() private nextIdMap: Map<string, Map<number, number>> = new Map()
private lastPId: number = -1 private lastIdMap: Map<string, number> = new Map()
private lastTIndex: number = -1 private lastTIndex: number = -1
private lastTId: number = -1
private initNextIdMap(): void { private initNextIdMap(): void {
if (this.bindingNames.size === 0) return if (this.bindingNames.size === 0) return
// build a map of binding names to their occupied ids // build a map of binding names to their occupied ids
const map = new Map<string, Set<number>>() const map = new Map<string, Set<number>>()
for (const name of this.bindingNames) { for (const name of this.bindingNames) {
const m = generatedVarRE.exec(name) const m = idWithTrailingDigitsRE.exec(name)
if (!m) continue if (!m) continue
const prefix = m[1] const prefix = m[1]
@ -99,24 +111,29 @@ export class CodegenContext {
this.nextIdMap.set(prefix, buildNextIdMap(nums)) this.nextIdMap.set(prefix, buildNextIdMap(nums))
} }
} }
tName(i: number): string { tName(i: number): string {
let name = this.templateVars.get(i) let name = this.templateVars.get(i)
if (name) return name if (name) return name
const map = this.nextIdMap.get('t') const map = this.nextIdMap.get('t')
let lastId = this.lastIdMap.get('t') || -1
for (let j = this.lastTIndex + 1; j <= i; j++) { for (let j = this.lastTIndex + 1; j <= i; j++) {
this.templateVars.set( this.templateVars.set(
j, j,
(name = `t${(this.lastTId = getNextId(map, Math.max(j, this.lastTId + 1)))}`), (name = `t${(lastId = getNextId(map, Math.max(j, lastId + 1)))}`),
) )
} }
this.lastIdMap.set('t', lastId)
this.lastTIndex = i this.lastTIndex = i
return name! return name!
} }
pName(i: number): string { pName(i: number): string {
const map = this.nextIdMap.get('p') const map = this.nextIdMap.get('p')
return `p${(this.lastPId = getNextId(map, Math.max(i, this.lastPId + 1)))}` let lastId = this.lastIdMap.get('p') || -1
this.lastIdMap.set('p', (lastId = getNextId(map, Math.max(i, lastId + 1))))
return `p${lastId}`
} }
constructor( constructor(
@ -162,7 +179,6 @@ export function generate(
): VaporCodegenResult { ): VaporCodegenResult {
const [frag, push] = buildCodeFragment() const [frag, push] = buildCodeFragment()
const context = new CodegenContext(ir, options) const context = new CodegenContext(ir, options)
const { helpers } = context
const { inline, bindingMetadata } = options const { inline, bindingMetadata } = options
const functionName = 'render' const functionName = 'render'
@ -213,7 +229,7 @@ export function generate(
ast: ir, ast: ir,
preamble, preamble,
map: map && map.toJSON(), map: map && map.toJSON(),
helpers, helpers: new Set<string>(Array.from(context.helpers.keys())),
} }
} }
@ -226,11 +242,11 @@ function genDelegates({ delegates, helper }: CodegenContext) {
: '' : ''
} }
function genHelperImports({ helpers, helper, options }: CodegenContext) { function genHelperImports({ helpers, options }: CodegenContext) {
let imports = '' let imports = ''
if (helpers.size) { if (helpers.size) {
imports += `import { ${[...helpers] imports += `import { ${Array.from(helpers)
.map(h => `${h} as _${h}`) .map(([h, alias]) => `${h} as ${alias}`)
.join(', ')} } from '${options.runtimeModuleName}';\n` .join(', ')} } from '${options.runtimeModuleName}';\n`
} }
return imports return imports

View File

@ -40,19 +40,19 @@ importers:
version: 7.28.2 version: 7.28.2
'@rollup/plugin-alias': '@rollup/plugin-alias':
specifier: ^5.1.1 specifier: ^5.1.1
version: 5.1.1(rollup@4.47.0) version: 5.1.1(rollup@4.49.0)
'@rollup/plugin-commonjs': '@rollup/plugin-commonjs':
specifier: ^28.0.6 specifier: ^28.0.6
version: 28.0.6(rollup@4.47.0) version: 28.0.6(rollup@4.49.0)
'@rollup/plugin-json': '@rollup/plugin-json':
specifier: ^6.1.0 specifier: ^6.1.0
version: 6.1.0(rollup@4.47.0) version: 6.1.0(rollup@4.49.0)
'@rollup/plugin-node-resolve': '@rollup/plugin-node-resolve':
specifier: ^16.0.1 specifier: ^16.0.1
version: 16.0.1(rollup@4.47.0) version: 16.0.1(rollup@4.49.0)
'@rollup/plugin-replace': '@rollup/plugin-replace':
specifier: 5.0.4 specifier: 5.0.4
version: 5.0.4(rollup@4.47.0) version: 5.0.4(rollup@4.49.0)
'@swc/core': '@swc/core':
specifier: ^1.13.3 specifier: ^1.13.3
version: 1.13.3 version: 1.13.3
@ -141,17 +141,17 @@ importers:
specifier: ^6.0.1 specifier: ^6.0.1
version: 6.0.1 version: 6.0.1
rollup: rollup:
specifier: ^4.46.4 specifier: 4.49.0
version: 4.47.0 version: 4.49.0
rollup-plugin-dts: rollup-plugin-dts:
specifier: ^6.2.3 specifier: ^6.2.3
version: 6.2.3(rollup@4.47.0)(typescript@5.6.3) version: 6.2.3(rollup@4.49.0)(typescript@5.6.3)
rollup-plugin-esbuild: rollup-plugin-esbuild:
specifier: ^6.2.1 specifier: ^6.2.1
version: 6.2.1(esbuild@0.25.9)(rollup@4.47.0) version: 6.2.1(esbuild@0.25.9)(rollup@4.49.0)
rollup-plugin-polyfill-node: rollup-plugin-polyfill-node:
specifier: ^0.13.0 specifier: ^0.13.0
version: 0.13.0(rollup@4.47.0) version: 0.13.0(rollup@4.49.0)
semver: semver:
specifier: ^7.7.2 specifier: ^7.7.2
version: 7.7.2 version: 7.7.2
@ -246,7 +246,7 @@ importers:
version: 0.4.1(@types/node@22.17.2)(sass@1.90.0)(vite@6.3.5(@types/node@22.17.2)(sass@1.90.0)(yaml@2.8.1)) version: 0.4.1(@types/node@22.17.2)(sass@1.90.0)(vite@6.3.5(@types/node@22.17.2)(sass@1.90.0)(yaml@2.8.1))
vite-plugin-inspect: vite-plugin-inspect:
specifier: ^0.8.7 specifier: ^0.8.7
version: 0.8.9(rollup@4.47.0)(vite@6.3.5(@types/node@22.17.2)(sass@1.90.0)(yaml@2.8.1)) version: 0.8.9(rollup@4.49.0)(vite@6.3.5(@types/node@22.17.2)(sass@1.90.0)(yaml@2.8.1))
packages-private/sfc-playground: packages-private/sfc-playground:
dependencies: dependencies:
@ -1200,114 +1200,114 @@ packages:
rollup: rollup:
optional: true optional: true
'@rollup/rollup-android-arm-eabi@4.47.0': '@rollup/rollup-android-arm-eabi@4.49.0':
resolution: {integrity: sha512-Weap5hVbZs/yIvUZcFpAmIso8rLmwkO1LesddNjeX28tIhQkAKjRuVgAJ2xpj8wXTny7IZro9aBIgGov0qsL4A==} resolution: {integrity: sha512-rlKIeL854Ed0e09QGYFlmDNbka6I3EQFw7iZuugQjMb11KMpJCLPFL4ZPbMfaEhLADEL1yx0oujGkBQ7+qW3eA==}
cpu: [arm] cpu: [arm]
os: [android] os: [android]
'@rollup/rollup-android-arm64@4.47.0': '@rollup/rollup-android-arm64@4.49.0':
resolution: {integrity: sha512-XcnlqvG5riTJByKX7bZ1ehe48GiF+eNkdnzV0ziLp85XyJ6tLPfhkXHv3e0h3cpZESTQa8IB+ZHhV/r02+8qKw==} resolution: {integrity: sha512-cqPpZdKUSQYRtLLr6R4X3sD4jCBO1zUmeo3qrWBCqYIeH8Q3KRL4F3V7XJ2Rm8/RJOQBZuqzQGWPjjvFUcYa/w==}
cpu: [arm64] cpu: [arm64]
os: [android] os: [android]
'@rollup/rollup-darwin-arm64@4.47.0': '@rollup/rollup-darwin-arm64@4.49.0':
resolution: {integrity: sha512-kZzTIzmzAUOKteh688kN88HNaL7wxwTz9XB5dDK94AQdf9nD+lxm/H5uPKQaawUFS+klBEowqPMUPjBRKGbo/g==} resolution: {integrity: sha512-99kMMSMQT7got6iYX3yyIiJfFndpojBmkHfTc1rIje8VbjhmqBXE+nb7ZZP3A5skLyujvT0eIUCUsxAe6NjWbw==}
cpu: [arm64] cpu: [arm64]
os: [darwin] os: [darwin]
'@rollup/rollup-darwin-x64@4.47.0': '@rollup/rollup-darwin-x64@4.49.0':
resolution: {integrity: sha512-WaMrgHRbFspYjvycbsbqheBmlsQBLwfZVWv/KFsT212Yz/RjEQ/9KEp1/p0Ef3ZNwbWsylmgf69St66D9NQNHw==} resolution: {integrity: sha512-y8cXoD3wdWUDpjOLMKLx6l+NFz3NlkWKcBCBfttUn+VGSfgsQ5o/yDUGtzE9HvsodkP0+16N0P4Ty1VuhtRUGg==}
cpu: [x64] cpu: [x64]
os: [darwin] os: [darwin]
'@rollup/rollup-freebsd-arm64@4.47.0': '@rollup/rollup-freebsd-arm64@4.49.0':
resolution: {integrity: sha512-umfYslurvSmAK5MEyOcOGooQ6EBB2pYePQaTVlrOkIfG6uuwu9egYOlxr35lwsp6XG0NzmXW0/5o150LUioMkQ==} resolution: {integrity: sha512-3mY5Pr7qv4GS4ZvWoSP8zha8YoiqrU+e0ViPvB549jvliBbdNLrg2ywPGkgLC3cmvN8ya3za+Q2xVyT6z+vZqA==}
cpu: [arm64] cpu: [arm64]
os: [freebsd] os: [freebsd]
'@rollup/rollup-freebsd-x64@4.47.0': '@rollup/rollup-freebsd-x64@4.49.0':
resolution: {integrity: sha512-EFXhIykAl8//4ihOjGNirF89HEUbOB8ev2aiw8ST8wFGwDdIPARh3enDlbp8aFnScl4CDK4DZLQYXaM6qpxzZw==} resolution: {integrity: sha512-C9KzzOAQU5gU4kG8DTk+tjdKjpWhVWd5uVkinCwwFub2m7cDYLOdtXoMrExfeBmeRy9kBQMkiyJ+HULyF1yj9w==}
cpu: [x64] cpu: [x64]
os: [freebsd] os: [freebsd]
'@rollup/rollup-linux-arm-gnueabihf@4.47.0': '@rollup/rollup-linux-arm-gnueabihf@4.49.0':
resolution: {integrity: sha512-EwkC5N61ptruQ9wNkYfLgUWEGh+F3JZSGHkUWhaK2ISAK0d0xmiMKF0trFhRqPQFov5d9DmFiFIhWB5IC79OUA==} resolution: {integrity: sha512-OVSQgEZDVLnTbMq5NBs6xkmz3AADByCWI4RdKSFNlDsYXdFtlxS59J+w+LippJe8KcmeSSM3ba+GlsM9+WwC1w==}
cpu: [arm] cpu: [arm]
os: [linux] os: [linux]
libc: [glibc] libc: [glibc]
'@rollup/rollup-linux-arm-musleabihf@4.47.0': '@rollup/rollup-linux-arm-musleabihf@4.49.0':
resolution: {integrity: sha512-Iz/g1X94vIjppA4H9hN3VEedw4ObC+u+aua2J/VPJnENEJ0GeCAPBN15nJc5pS5M8JPlUhOd3oqhOWX6Un4RHA==} resolution: {integrity: sha512-ZnfSFA7fDUHNa4P3VwAcfaBLakCbYaxCk0jUnS3dTou9P95kwoOLAMlT3WmEJDBCSrOEFFV0Y1HXiwfLYJuLlA==}
cpu: [arm] cpu: [arm]
os: [linux] os: [linux]
libc: [musl] libc: [musl]
'@rollup/rollup-linux-arm64-gnu@4.47.0': '@rollup/rollup-linux-arm64-gnu@4.49.0':
resolution: {integrity: sha512-eYEYHYjFo/vb6k1l5uq5+Af9yuo9WaST/z+/8T5gkee+A0Sfx1NIPZtKMEQOLjm/oaeHFGpWaAO97gTPhouIfQ==} resolution: {integrity: sha512-Z81u+gfrobVK2iV7GqZCBfEB1y6+I61AH466lNK+xy1jfqFLiQ9Qv716WUM5fxFrYxwC7ziVdZRU9qvGHkYIJg==}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
libc: [glibc] libc: [glibc]
'@rollup/rollup-linux-arm64-musl@4.47.0': '@rollup/rollup-linux-arm64-musl@4.49.0':
resolution: {integrity: sha512-LX2x0/RszFEmDfjzL6kG/vihD5CkpJ+0K6lcbqX0jAopkkXeY2ZjStngdFMFW+BK7pyrqryJgy6Jt3+oyDxrSA==} resolution: {integrity: sha512-zoAwS0KCXSnTp9NH/h9aamBAIve0DXeYpll85shf9NJ0URjSTzzS+Z9evmolN+ICfD3v8skKUPyk2PO0uGdFqg==}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
libc: [musl] libc: [musl]
'@rollup/rollup-linux-loongarch64-gnu@4.47.0': '@rollup/rollup-linux-loongarch64-gnu@4.49.0':
resolution: {integrity: sha512-0U+56rJmJvqBCwlPFz/BcxkvdiRdNPamBfuFHrOGQtGajSMJ2OqzlvOgwj5vReRQnSA6XMKw/JL1DaBhceil+g==} resolution: {integrity: sha512-2QyUyQQ1ZtwZGiq0nvODL+vLJBtciItC3/5cYN8ncDQcv5avrt2MbKt1XU/vFAJlLta5KujqyHdYtdag4YEjYQ==}
cpu: [loong64] cpu: [loong64]
os: [linux] os: [linux]
libc: [glibc] libc: [glibc]
'@rollup/rollup-linux-ppc64-gnu@4.47.0': '@rollup/rollup-linux-ppc64-gnu@4.49.0':
resolution: {integrity: sha512-2VKOsnNyvS05HFPKtmAWtef+nZyKCot/V3Jh/A5sYMhUvtthNjp6CjakYTtc5xZ8J8Fp5FKrUWGxptVtZ2OzEA==} resolution: {integrity: sha512-k9aEmOWt+mrMuD3skjVJSSxHckJp+SiFzFG+v8JLXbc/xi9hv2icSkR3U7uQzqy+/QbbYY7iNB9eDTwrELo14g==}
cpu: [ppc64] cpu: [ppc64]
os: [linux] os: [linux]
libc: [glibc] libc: [glibc]
'@rollup/rollup-linux-riscv64-gnu@4.47.0': '@rollup/rollup-linux-riscv64-gnu@4.49.0':
resolution: {integrity: sha512-uY5UP7YZM4DMQiiP9Fl4/7O3UbT2p3uI0qvqLXZSGWBfyYuqi2DYQ48ExylgBN3T8AJork+b+mLGq6VXsxBfuw==} resolution: {integrity: sha512-rDKRFFIWJ/zJn6uk2IdYLc09Z7zkE5IFIOWqpuU0o6ZpHcdniAyWkwSUWE/Z25N/wNDmFHHMzin84qW7Wzkjsw==}
cpu: [riscv64] cpu: [riscv64]
os: [linux] os: [linux]
libc: [glibc] libc: [glibc]
'@rollup/rollup-linux-riscv64-musl@4.47.0': '@rollup/rollup-linux-riscv64-musl@4.49.0':
resolution: {integrity: sha512-qpcN2+/ivq3TcrXtZoHrS9WZplV3Nieh0gvnGb+SFZg7h/YkWsOXINJnjJRWHp9tEur7T8lMnMeQMPS7s9MjUg==} resolution: {integrity: sha512-FkkhIY/hYFVnOzz1WeV3S9Bd1h0hda/gRqvZCMpHWDHdiIHn6pqsY3b5eSbvGccWHMQ1uUzgZTKS4oGpykf8Tw==}
cpu: [riscv64] cpu: [riscv64]
os: [linux] os: [linux]
libc: [musl] libc: [musl]
'@rollup/rollup-linux-s390x-gnu@4.47.0': '@rollup/rollup-linux-s390x-gnu@4.49.0':
resolution: {integrity: sha512-XfuI+o7a2/KA2tBeP+J1CT3siyIQyjpGEL6fFvtUdoHJK1k5iVI3qeGT2i5y6Bb+xQu08AHKBsUGJ2GsOZzXbQ==} resolution: {integrity: sha512-gRf5c+A7QiOG3UwLyOOtyJMD31JJhMjBvpfhAitPAoqZFcOeK3Kc1Veg1z/trmt+2P6F/biT02fU19GGTS529A==}
cpu: [s390x] cpu: [s390x]
os: [linux] os: [linux]
libc: [glibc] libc: [glibc]
'@rollup/rollup-linux-x64-gnu@4.47.0': '@rollup/rollup-linux-x64-gnu@4.49.0':
resolution: {integrity: sha512-ylkLO6G7oUiN28mork3caDmgXHqRuopAxjYDaOqs4CoU9pkfR0R/pGQb2V1x2Zg3tlFj4b/DvxZroxC3xALX6g==} resolution: {integrity: sha512-BR7+blScdLW1h/2hB/2oXM+dhTmpW3rQt1DeSiCP9mc2NMMkqVgjIN3DDsNpKmezffGC9R8XKVOLmBkRUcK/sA==}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
libc: [glibc] libc: [glibc]
'@rollup/rollup-linux-x64-musl@4.47.0': '@rollup/rollup-linux-x64-musl@4.49.0':
resolution: {integrity: sha512-1L72a+ice8xKqJ2afsAVW9EfECOhNMAOC1jH65TgghLaHSFwNzyEdeye+1vRFDNy52OGKip/vajj0ONtX7VpAg==} resolution: {integrity: sha512-hDMOAe+6nX3V5ei1I7Au3wcr9h3ktKzDvF2ne5ovX8RZiAHEtX1A5SNNk4zt1Qt77CmnbqT+upb/umzoPMWiPg==}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
libc: [musl] libc: [musl]
'@rollup/rollup-win32-arm64-msvc@4.47.0': '@rollup/rollup-win32-arm64-msvc@4.49.0':
resolution: {integrity: sha512-wluhdd1uNLk/S+ex2Yj62WFw3un2cZo2ZKXy9cOuoti5IhaPXSDSvxT3os+SJ1cjNorE1PwAOfiJU7QUH6n3Zw==} resolution: {integrity: sha512-wkNRzfiIGaElC9kXUT+HLx17z7D0jl+9tGYRKwd8r7cUqTL7GYAvgUY++U2hK6Ar7z5Z6IRRoWC8kQxpmM7TDA==}
cpu: [arm64] cpu: [arm64]
os: [win32] os: [win32]
'@rollup/rollup-win32-ia32-msvc@4.47.0': '@rollup/rollup-win32-ia32-msvc@4.49.0':
resolution: {integrity: sha512-0SMTA6AeG7u2rfwdkKSo6aZD/obmA7oyhR+4ePwLzlwxNE8sfSI9zmjZXtchvBAZmtkVQNt/lZ6RxSl9wBj4pw==} resolution: {integrity: sha512-gq5aW/SyNpjp71AAzroH37DtINDcX1Qw2iv9Chyz49ZgdOP3NV8QCyKZUrGsYX9Yyggj5soFiRCgsL3HwD8TdA==}
cpu: [ia32] cpu: [ia32]
os: [win32] os: [win32]
'@rollup/rollup-win32-x64-msvc@4.47.0': '@rollup/rollup-win32-x64-msvc@4.49.0':
resolution: {integrity: sha512-mw1/7kAGxLcfzoG7DIKFHvKr2ZUQasKOPCgT2ubkNZPgIDZOJPymqThtRWEeAlXBoipehP4BUFpBAZIrPhFg8Q==} resolution: {integrity: sha512-gEtqFbzmZLFk2xKh7g0Rlo8xzho8KrEFEkzvHbfUGkrgXOpZ4XagQ6n+wIZFNh1nTb8UD16J4nFSFKXYgnbdBg==}
cpu: [x64] cpu: [x64]
os: [win32] os: [win32]
@ -3339,8 +3339,8 @@ packages:
peerDependencies: peerDependencies:
rollup: ^1.20.0 || ^2.0.0 || ^3.0.0 || ^4.0.0 rollup: ^1.20.0 || ^2.0.0 || ^3.0.0 || ^4.0.0
rollup@4.47.0: rollup@4.49.0:
resolution: {integrity: sha512-jZVxJwlAptA83ftdZK1kjLZfi0f6o+vVX7ub3HaRzkehLO3l4VB4vYpMHyunhBt1sawv9fiRWPA8Qi/sbg9Kcw==} resolution: {integrity: sha512-3IVq0cGJ6H7fKXXEdVt+RcYvRCt8beYY9K1760wGQwSAHZcS9eot1zDG5axUbcp/kWRi5zKIIDX8MoKv/TzvZA==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'} engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true hasBin: true
@ -4375,13 +4375,13 @@ snapshots:
'@rolldown/pluginutils@1.0.0-beta.29': {} '@rolldown/pluginutils@1.0.0-beta.29': {}
'@rollup/plugin-alias@5.1.1(rollup@4.47.0)': '@rollup/plugin-alias@5.1.1(rollup@4.49.0)':
optionalDependencies: optionalDependencies:
rollup: 4.47.0 rollup: 4.49.0
'@rollup/plugin-commonjs@28.0.6(rollup@4.47.0)': '@rollup/plugin-commonjs@28.0.6(rollup@4.49.0)':
dependencies: dependencies:
'@rollup/pluginutils': 5.2.0(rollup@4.47.0) '@rollup/pluginutils': 5.2.0(rollup@4.49.0)
commondir: 1.0.1 commondir: 1.0.1
estree-walker: 2.0.2 estree-walker: 2.0.2
fdir: 6.5.0(picomatch@4.0.3) fdir: 6.5.0(picomatch@4.0.3)
@ -4389,105 +4389,105 @@ snapshots:
magic-string: 0.30.17 magic-string: 0.30.17
picomatch: 4.0.3 picomatch: 4.0.3
optionalDependencies: optionalDependencies:
rollup: 4.47.0 rollup: 4.49.0
'@rollup/plugin-inject@5.0.5(rollup@4.47.0)': '@rollup/plugin-inject@5.0.5(rollup@4.49.0)':
dependencies: dependencies:
'@rollup/pluginutils': 5.2.0(rollup@4.47.0) '@rollup/pluginutils': 5.2.0(rollup@4.49.0)
estree-walker: 2.0.2 estree-walker: 2.0.2
magic-string: 0.30.17 magic-string: 0.30.17
optionalDependencies: optionalDependencies:
rollup: 4.47.0 rollup: 4.49.0
'@rollup/plugin-json@6.1.0(rollup@4.47.0)': '@rollup/plugin-json@6.1.0(rollup@4.49.0)':
dependencies: dependencies:
'@rollup/pluginutils': 5.2.0(rollup@4.47.0) '@rollup/pluginutils': 5.2.0(rollup@4.49.0)
optionalDependencies: optionalDependencies:
rollup: 4.47.0 rollup: 4.49.0
'@rollup/plugin-node-resolve@16.0.1(rollup@4.47.0)': '@rollup/plugin-node-resolve@16.0.1(rollup@4.49.0)':
dependencies: dependencies:
'@rollup/pluginutils': 5.2.0(rollup@4.47.0) '@rollup/pluginutils': 5.2.0(rollup@4.49.0)
'@types/resolve': 1.20.2 '@types/resolve': 1.20.2
deepmerge: 4.3.1 deepmerge: 4.3.1
is-module: 1.0.0 is-module: 1.0.0
resolve: 1.22.10 resolve: 1.22.10
optionalDependencies: optionalDependencies:
rollup: 4.47.0 rollup: 4.49.0
'@rollup/plugin-replace@5.0.4(rollup@4.47.0)': '@rollup/plugin-replace@5.0.4(rollup@4.49.0)':
dependencies: dependencies:
'@rollup/pluginutils': 5.2.0(rollup@4.47.0) '@rollup/pluginutils': 5.2.0(rollup@4.49.0)
magic-string: 0.30.17 magic-string: 0.30.17
optionalDependencies: optionalDependencies:
rollup: 4.47.0 rollup: 4.49.0
'@rollup/pluginutils@5.2.0(rollup@4.47.0)': '@rollup/pluginutils@5.2.0(rollup@4.49.0)':
dependencies: dependencies:
'@types/estree': 1.0.8 '@types/estree': 1.0.8
estree-walker: 2.0.2 estree-walker: 2.0.2
picomatch: 4.0.3 picomatch: 4.0.3
optionalDependencies: optionalDependencies:
rollup: 4.47.0 rollup: 4.49.0
'@rollup/rollup-android-arm-eabi@4.47.0': '@rollup/rollup-android-arm-eabi@4.49.0':
optional: true optional: true
'@rollup/rollup-android-arm64@4.47.0': '@rollup/rollup-android-arm64@4.49.0':
optional: true optional: true
'@rollup/rollup-darwin-arm64@4.47.0': '@rollup/rollup-darwin-arm64@4.49.0':
optional: true optional: true
'@rollup/rollup-darwin-x64@4.47.0': '@rollup/rollup-darwin-x64@4.49.0':
optional: true optional: true
'@rollup/rollup-freebsd-arm64@4.47.0': '@rollup/rollup-freebsd-arm64@4.49.0':
optional: true optional: true
'@rollup/rollup-freebsd-x64@4.47.0': '@rollup/rollup-freebsd-x64@4.49.0':
optional: true optional: true
'@rollup/rollup-linux-arm-gnueabihf@4.47.0': '@rollup/rollup-linux-arm-gnueabihf@4.49.0':
optional: true optional: true
'@rollup/rollup-linux-arm-musleabihf@4.47.0': '@rollup/rollup-linux-arm-musleabihf@4.49.0':
optional: true optional: true
'@rollup/rollup-linux-arm64-gnu@4.47.0': '@rollup/rollup-linux-arm64-gnu@4.49.0':
optional: true optional: true
'@rollup/rollup-linux-arm64-musl@4.47.0': '@rollup/rollup-linux-arm64-musl@4.49.0':
optional: true optional: true
'@rollup/rollup-linux-loongarch64-gnu@4.47.0': '@rollup/rollup-linux-loongarch64-gnu@4.49.0':
optional: true optional: true
'@rollup/rollup-linux-ppc64-gnu@4.47.0': '@rollup/rollup-linux-ppc64-gnu@4.49.0':
optional: true optional: true
'@rollup/rollup-linux-riscv64-gnu@4.47.0': '@rollup/rollup-linux-riscv64-gnu@4.49.0':
optional: true optional: true
'@rollup/rollup-linux-riscv64-musl@4.47.0': '@rollup/rollup-linux-riscv64-musl@4.49.0':
optional: true optional: true
'@rollup/rollup-linux-s390x-gnu@4.47.0': '@rollup/rollup-linux-s390x-gnu@4.49.0':
optional: true optional: true
'@rollup/rollup-linux-x64-gnu@4.47.0': '@rollup/rollup-linux-x64-gnu@4.49.0':
optional: true optional: true
'@rollup/rollup-linux-x64-musl@4.47.0': '@rollup/rollup-linux-x64-musl@4.49.0':
optional: true optional: true
'@rollup/rollup-win32-arm64-msvc@4.47.0': '@rollup/rollup-win32-arm64-msvc@4.49.0':
optional: true optional: true
'@rollup/rollup-win32-ia32-msvc@4.47.0': '@rollup/rollup-win32-ia32-msvc@4.49.0':
optional: true optional: true
'@rollup/rollup-win32-x64-msvc@4.47.0': '@rollup/rollup-win32-x64-msvc@4.49.0':
optional: true optional: true
'@swc/core-darwin-arm64@1.13.3': '@swc/core-darwin-arm64@1.13.3':
@ -6612,54 +6612,54 @@ snapshots:
glob: 11.0.3 glob: 11.0.3
package-json-from-dist: 1.0.1 package-json-from-dist: 1.0.1
rollup-plugin-dts@6.2.3(rollup@4.47.0)(typescript@5.6.3): rollup-plugin-dts@6.2.3(rollup@4.49.0)(typescript@5.6.3):
dependencies: dependencies:
magic-string: 0.30.17 magic-string: 0.30.17
rollup: 4.47.0 rollup: 4.49.0
typescript: 5.6.3 typescript: 5.6.3
optionalDependencies: optionalDependencies:
'@babel/code-frame': 7.27.1 '@babel/code-frame': 7.27.1
rollup-plugin-esbuild@6.2.1(esbuild@0.25.9)(rollup@4.47.0): rollup-plugin-esbuild@6.2.1(esbuild@0.25.9)(rollup@4.49.0):
dependencies: dependencies:
debug: 4.4.1 debug: 4.4.1
es-module-lexer: 1.7.0 es-module-lexer: 1.7.0
esbuild: 0.25.9 esbuild: 0.25.9
get-tsconfig: 4.10.1 get-tsconfig: 4.10.1
rollup: 4.47.0 rollup: 4.49.0
unplugin-utils: 0.2.5 unplugin-utils: 0.2.5
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
rollup-plugin-polyfill-node@0.13.0(rollup@4.47.0): rollup-plugin-polyfill-node@0.13.0(rollup@4.49.0):
dependencies: dependencies:
'@rollup/plugin-inject': 5.0.5(rollup@4.47.0) '@rollup/plugin-inject': 5.0.5(rollup@4.49.0)
rollup: 4.47.0 rollup: 4.49.0
rollup@4.47.0: rollup@4.49.0:
dependencies: dependencies:
'@types/estree': 1.0.8 '@types/estree': 1.0.8
optionalDependencies: optionalDependencies:
'@rollup/rollup-android-arm-eabi': 4.47.0 '@rollup/rollup-android-arm-eabi': 4.49.0
'@rollup/rollup-android-arm64': 4.47.0 '@rollup/rollup-android-arm64': 4.49.0
'@rollup/rollup-darwin-arm64': 4.47.0 '@rollup/rollup-darwin-arm64': 4.49.0
'@rollup/rollup-darwin-x64': 4.47.0 '@rollup/rollup-darwin-x64': 4.49.0
'@rollup/rollup-freebsd-arm64': 4.47.0 '@rollup/rollup-freebsd-arm64': 4.49.0
'@rollup/rollup-freebsd-x64': 4.47.0 '@rollup/rollup-freebsd-x64': 4.49.0
'@rollup/rollup-linux-arm-gnueabihf': 4.47.0 '@rollup/rollup-linux-arm-gnueabihf': 4.49.0
'@rollup/rollup-linux-arm-musleabihf': 4.47.0 '@rollup/rollup-linux-arm-musleabihf': 4.49.0
'@rollup/rollup-linux-arm64-gnu': 4.47.0 '@rollup/rollup-linux-arm64-gnu': 4.49.0
'@rollup/rollup-linux-arm64-musl': 4.47.0 '@rollup/rollup-linux-arm64-musl': 4.49.0
'@rollup/rollup-linux-loongarch64-gnu': 4.47.0 '@rollup/rollup-linux-loongarch64-gnu': 4.49.0
'@rollup/rollup-linux-ppc64-gnu': 4.47.0 '@rollup/rollup-linux-ppc64-gnu': 4.49.0
'@rollup/rollup-linux-riscv64-gnu': 4.47.0 '@rollup/rollup-linux-riscv64-gnu': 4.49.0
'@rollup/rollup-linux-riscv64-musl': 4.47.0 '@rollup/rollup-linux-riscv64-musl': 4.49.0
'@rollup/rollup-linux-s390x-gnu': 4.47.0 '@rollup/rollup-linux-s390x-gnu': 4.49.0
'@rollup/rollup-linux-x64-gnu': 4.47.0 '@rollup/rollup-linux-x64-gnu': 4.49.0
'@rollup/rollup-linux-x64-musl': 4.47.0 '@rollup/rollup-linux-x64-musl': 4.49.0
'@rollup/rollup-win32-arm64-msvc': 4.47.0 '@rollup/rollup-win32-arm64-msvc': 4.49.0
'@rollup/rollup-win32-ia32-msvc': 4.47.0 '@rollup/rollup-win32-ia32-msvc': 4.49.0
'@rollup/rollup-win32-x64-msvc': 4.47.0 '@rollup/rollup-win32-x64-msvc': 4.49.0
fsevents: 2.3.3 fsevents: 2.3.3
rrweb-cssom@0.8.0: {} rrweb-cssom@0.8.0: {}
@ -7072,10 +7072,10 @@ snapshots:
- tsx - tsx
- yaml - yaml
vite-plugin-inspect@0.8.9(rollup@4.47.0)(vite@6.3.5(@types/node@22.17.2)(sass@1.90.0)(yaml@2.8.1)): vite-plugin-inspect@0.8.9(rollup@4.49.0)(vite@6.3.5(@types/node@22.17.2)(sass@1.90.0)(yaml@2.8.1)):
dependencies: dependencies:
'@antfu/utils': 0.7.10 '@antfu/utils': 0.7.10
'@rollup/pluginutils': 5.2.0(rollup@4.47.0) '@rollup/pluginutils': 5.2.0(rollup@4.49.0)
debug: 4.4.1 debug: 4.4.1
error-stack-parser-es: 0.1.5 error-stack-parser-es: 0.1.5
fs-extra: 11.3.1 fs-extra: 11.3.1
@ -7092,7 +7092,7 @@ snapshots:
dependencies: dependencies:
esbuild: 0.21.5 esbuild: 0.21.5
postcss: 8.5.6 postcss: 8.5.6
rollup: 4.47.0 rollup: 4.49.0
optionalDependencies: optionalDependencies:
'@types/node': 22.17.2 '@types/node': 22.17.2
fsevents: 2.3.3 fsevents: 2.3.3
@ -7104,7 +7104,7 @@ snapshots:
fdir: 6.5.0(picomatch@4.0.3) fdir: 6.5.0(picomatch@4.0.3)
picomatch: 4.0.3 picomatch: 4.0.3
postcss: 8.5.6 postcss: 8.5.6
rollup: 4.47.0 rollup: 4.49.0
tinyglobby: 0.2.14 tinyglobby: 0.2.14
optionalDependencies: optionalDependencies:
'@types/node': 22.17.2 '@types/node': 22.17.2