chore: move benchmark and local playground in to packages-private

This commit is contained in:
Evan You 2025-02-08 15:44:13 +08:00
parent 2a0cfc03b8
commit 6a185abbe4
No known key found for this signature in database
GPG Key ID: 00E9AB7A6704CE0A
29 changed files with 328 additions and 154 deletions

View File

@ -1,4 +0,0 @@
import { createVaporApp } from 'vue/vapor'
import App from './App.vue'
createVaporApp(App as any).mount('#app')

View File

@ -126,7 +126,7 @@ export default tseslint.config(
files: [ files: [
'packages-private/template-explorer/**', 'packages-private/template-explorer/**',
'packages-private/sfc-playground/**', 'packages-private/sfc-playground/**',
'playground/**', 'packages-private/local-playground/**',
], ],
rules: { rules: {
'no-restricted-globals': ['error', ...NodeGlobals], 'no-restricted-globals': ['error', ...NodeGlobals],
@ -150,10 +150,10 @@ export default tseslint.config(
'eslint.config.js', 'eslint.config.js',
'rollup*.config.js', 'rollup*.config.js',
'scripts/**', 'scripts/**',
'benchmark/*',
'./*.{js,ts}', './*.{js,ts}',
'packages/*/*.js', 'packages/*/*.js',
'packages/vue/*/*.js', 'packages/vue/*/*.js',
'packages-private/benchmark/*',
], ],
rules: { rules: {
'no-restricted-globals': 'off', 'no-restricted-globals': 'off',

View File

@ -1,10 +1,10 @@
<script setup lang="ts" vapor> <script setup lang="ts">
import { import {
shallowRef, shallowRef,
triggerRef, triggerRef,
type ShallowRef, type ShallowRef,
createSelector, // createSelector,
} from 'vue/vapor' } from 'vue'
import { buildData } from './data' import { buildData } from './data'
import { defer, wrap } from './profiling' import { defer, wrap } from './profiling'
@ -77,7 +77,7 @@ async function bench() {
} }
} }
const isSelected = createSelector(selected) // const isSelected = createSelector(selected)
const globalThis = window const globalThis = window
</script> </script>
@ -122,7 +122,7 @@ const globalThis = window
<tr <tr
v-for="row of rows" v-for="row of rows"
:key="row.id" :key="row.id"
:class="{ danger: isSelected(row.id) }" :class="{ danger: selected === row.id }"
> >
<td>{{ row.id }}</td> <td>{{ row.id }}</td>
<td> <td>

View File

@ -0,0 +1,144 @@
<script setup vapor lang="ts">
import {
shallowRef,
triggerRef,
type ShallowRef,
// createSelector,
} from 'vue'
import { buildData } from './data'
import { defer, wrap } from './profiling'
const isVapor = !!import.meta.env.IS_VAPOR
const selected = shallowRef<number>()
const rows = shallowRef<
{
id: number
label: ShallowRef<string>
}[]
>([])
// Bench Add: https://jsbench.me/45lzxprzmu/1
const add = wrap('add', () => {
rows.value.push(...buildData(1000))
triggerRef(rows)
})
const remove = wrap('remove', (id: number) => {
rows.value.splice(
rows.value.findIndex(d => d.id === id),
1,
)
triggerRef(rows)
})
const select = wrap('select', (id: number) => {
selected.value = id
})
const run = wrap('run', () => {
rows.value = buildData()
selected.value = undefined
})
const update = wrap('update', () => {
const _rows = rows.value
for (let i = 0, len = _rows.length; i < len; i += 10) {
_rows[i].label.value += ' !!!'
}
})
const runLots = wrap('runLots', () => {
rows.value = buildData(10000)
selected.value = undefined
})
const clear = wrap('clear', () => {
rows.value = []
selected.value = undefined
})
const swapRows = wrap('swap', () => {
const _rows = rows.value
if (_rows.length > 998) {
const d1 = _rows[1]
const d998 = _rows[998]
_rows[1] = d998
_rows[998] = d1
triggerRef(rows)
}
})
async function bench() {
for (let i = 0; i < 30; i++) {
rows.value = []
await runLots()
await defer()
}
}
// const isSelected = createSelector(selected)
const globalThis = window
</script>
<template>
<h1>Vue.js ({{ isVapor ? 'Vapor' : 'Virtual DOM' }}) Benchmark</h1>
<div style="display: flex; gap: 4px; margin-bottom: 4px">
<label>
<input
type="checkbox"
:value="globalThis.doProfile"
@change="globalThis.doProfile = $event.target.checked"
/>
Profiling
</label>
<label>
<input
type="checkbox"
:value="globalThis.reactivity"
@change="globalThis.reactivity = $event.target.checked"
/>
Reactivity Cost
</label>
</div>
<div
id="control"
style="display: flex; flex-direction: column; width: fit-content; gap: 6px"
>
<button @click="bench">Benchmark mounting</button>
<button id="run" @click="run">Create 1,000 rows</button>
<button id="runLots" @click="runLots">Create 10,000 rows</button>
<button id="add" @click="add">Append 1,000 rows</button>
<button id="update" @click="update">Update every 10th row</button>
<button id="clear" @click="clear">Clear</button>
<button id="swaprows" @click="swapRows">Swap Rows</button>
</div>
<div id="time"></div>
<table>
<tbody>
<tr
v-for="row of rows"
:key="row.id"
:class="{ danger: selected === row.id }"
>
<td>{{ row.id }}</td>
<td>
<a @click="select(row.id)">{{ row.label.value }}</a>
</td>
<td>
<button @click="remove(row.id)">x</button>
</td>
<td class="col-md-6"></td>
</tr>
</tbody>
</table>
</template>
<style>
.danger {
background-color: red;
}
</style>

View File

@ -1,4 +1,4 @@
import { shallowRef } from 'vue/vapor' import { shallowRef } from 'vue'
let ID = 1 let ID = 1

View File

@ -2,13 +2,13 @@
/* eslint-disable no-restricted-syntax */ /* eslint-disable no-restricted-syntax */
/* eslint-disable no-restricted-globals */ /* eslint-disable no-restricted-globals */
import { nextTick } from 'vue/vapor' import { nextTick } from 'vue'
declare namespace globalThis { declare global {
let doProfile: boolean var doProfile: boolean
let reactivity: boolean var reactivity: boolean
let recordTime: boolean var recordTime: boolean
let times: Record<string, number[]> var times: Record<string, number[]>
} }
globalThis.recordTime = true globalThis.recordTime = true

View File

@ -0,0 +1,4 @@
import { createVaporApp } from 'vue'
import App from './AppVapor.vue'
createVaporApp(App as any).mount('#app')

View File

@ -8,7 +8,7 @@ import connect from 'connect'
import sirv from 'sirv' import sirv from 'sirv'
import { launch } from 'puppeteer' import { launch } from 'puppeteer'
import colors from 'picocolors' import colors from 'picocolors'
import { exec, getSha } from '../scripts/utils.js' import { exec, getSha } from '../../scripts/utils.js'
import process from 'node:process' import process from 'node:process'
import readline from 'node:readline' import readline from 'node:readline'
@ -99,37 +99,34 @@ async function buildLib() {
/** @type {import('node:child_process').SpawnOptions} */ /** @type {import('node:child_process').SpawnOptions} */
const options = { const options = {
cwd: path.resolve(import.meta.dirname, '..'), cwd: path.resolve(import.meta.dirname, '../..'),
stdio: 'inherit', stdio: 'inherit',
env: { ...process.env, BENCHMARK: 'true' }, env: { ...process.env, BENCHMARK: 'true' },
} }
const buildOptions = devBuild ? '-df' : '-pf' const buildOptions = devBuild ? '-df' : '-pf'
const [{ ok }, { ok: ok2 }, { ok: ok3 }, { ok: ok4 }] = await Promise.all([ const [{ ok }, { ok: ok2 }, { ok: ok3 }] = await Promise.all([
exec( exec(
'pnpm', 'pnpm',
`run --silent build shared compiler-core compiler-dom compiler-vapor ${buildOptions} cjs`.split( `run --silent build shared compiler-core compiler-dom ${buildOptions} cjs`.split(
' ', ' ',
), ),
options, options,
), ),
exec( exec(
'pnpm', 'pnpm',
'run --silent build compiler-sfc compiler-ssr -f cjs'.split(' '), 'run --silent build compiler-sfc compiler-ssr compiler-vapor -f cjs'.split(
' ',
),
options, options,
), ),
exec( exec(
'pnpm', 'pnpm',
`run --silent build vue-vapor ${buildOptions} esm-browser`.split(' '), `run --silent build vue ${buildOptions} vapor`.split(' '),
options,
),
exec(
'pnpm',
`run --silent build vue ${buildOptions} esm-browser-runtime`.split(' '),
options, options,
), ),
]) ])
if (!ok || !ok2 || !ok3 || !ok4) { if (!ok || !ok2 || !ok3) {
console.error('Failed to build') console.error('Failed to build')
process.exit(1) process.exit(1)
} }
@ -143,21 +140,15 @@ async function buildApp(isVapor) {
if (!devBuild) process.env.NODE_ENV = 'production' if (!devBuild) process.env.NODE_ENV = 'production'
const CompilerSFC = await import( const CompilerSFC = await import(
'../packages/compiler-sfc/dist/compiler-sfc.cjs.js' '../../packages/compiler-sfc/dist/compiler-sfc.cjs.js'
) )
const prodSuffix = devBuild ? '.js' : '.prod.js' const prodSuffix = devBuild ? '.js' : '.prod.js'
/** @type {any} */
const TemplateCompiler = await import(
(isVapor
? '../packages/compiler-vapor/dist/compiler-vapor.cjs'
: '../packages/compiler-dom/dist/compiler-dom.cjs') + prodSuffix
)
const runtimePath = path.resolve( const runtimePath = path.resolve(
import.meta.dirname, import.meta.dirname,
(isVapor (isVapor
? '../packages/vue-vapor/dist/vue-vapor.esm-browser' ? '../../packages/vue/dist/vue.runtime-with-vapor.esm-browser'
: '../packages/vue/dist/vue.runtime.esm-browser') + prodSuffix, : '../../packages/vue/dist/vue.runtime.esm-browser') + prodSuffix,
) )
const mode = isVapor ? 'vapor' : 'vdom' const mode = isVapor ? 'vapor' : 'vdom'
@ -179,7 +170,6 @@ async function buildApp(isVapor) {
}, },
resolve: { resolve: {
alias: { alias: {
'vue/vapor': runtimePath,
vue: runtimePath, vue: runtimePath,
}, },
}, },
@ -187,7 +177,6 @@ async function buildApp(isVapor) {
plugins: [ plugins: [
Vue({ Vue({
compiler: CompilerSFC, compiler: CompilerSFC,
template: { compiler: TemplateCompiler },
}), }),
], ],
}) })

View File

@ -9,7 +9,7 @@
"start": "node index.js" "start": "node index.js"
}, },
"dependencies": { "dependencies": {
"@vitejs/plugin-vue": "https://pkg.pr.new/@vitejs/plugin-vue@e3c5ce5", "@vitejs/plugin-vue": "https://pkg.pr.new/@vitejs/plugin-vue@c156992",
"connect": "^3.7.0", "connect": "^3.7.0",
"sirv": "^2.0.4", "sirv": "^2.0.4",
"vite": "catalog:" "vite": "catalog:"

View File

@ -17,7 +17,7 @@
"skipLibCheck": true, "skipLibCheck": true,
"noEmit": true, "noEmit": true,
"paths": { "paths": {
"vue": ["../packages/vue/src"], "vue": ["../packages/vue/src/runtime-with-vapor.ts"],
"@vue/*": ["../packages/*/src"] "@vue/*": ["../packages/*/src"]
} }
}, },

View File

@ -2,7 +2,7 @@
import path from 'node:path' import path from 'node:path'
const resolve = (/** @type {string} */ p) => const resolve = (/** @type {string} */ p) =>
path.resolve(import.meta.dirname, '../../packages', p) path.resolve(import.meta.dirname, '../../../packages', p)
/** /**
* @param {Object} [env] * @param {Object} [env]

View File

@ -0,0 +1,20 @@
<script setup lang="ts">
import { ref } from 'vue'
import VaporComp from './VaporComp.vue'
const msg = ref('hello')
const passSlot = ref(true)
</script>
<template>
<input v-model="msg" />
<button @click="passSlot = !passSlot">toggle #test slot</button>
<VaporComp :msg="msg">
<template #default="{ foo }">
<div>slot props: {{ foo }}</div>
<div>component prop: {{ msg }}</div>
</template>
<template #test v-if="passSlot"> A test slot </template>
</VaporComp>
</template>

View File

@ -0,0 +1 @@
import './_entry'

View File

@ -1,8 +0,0 @@
<script setup lang="ts" vapor>
import Comp from './Comp.vue'
</script>
<template>
<h1>Vapor</h1>
<Comp />
</template>

View File

@ -1,2 +0,0 @@
// import './_entry'
import './interop'

View File

@ -13,8 +13,8 @@ catalogs:
specifier: ^7.25.2 specifier: ^7.25.2
version: 7.26.0 version: 7.26.0
'@vitejs/plugin-vue': '@vitejs/plugin-vue':
specifier: ^5.1.2 specifier: ^5.2.1
version: 5.1.5 version: 5.2.1
estree-walker: estree-walker:
specifier: ^2.0.2 specifier: ^2.0.2
version: 2.0.2 version: 2.0.2
@ -25,8 +25,8 @@ catalogs:
specifier: ^1.2.0 specifier: ^1.2.0
version: 1.2.1 version: 1.2.1
vite: vite:
specifier: ^5.4.0 specifier: ^6.1.0
version: 5.4.8 version: 6.1.0
importers: importers:
@ -178,16 +178,16 @@ importers:
version: 8.20.0(eslint@9.18.0)(typescript@5.6.2) version: 8.20.0(eslint@9.18.0)(typescript@5.6.2)
vite: vite:
specifier: 'catalog:' specifier: 'catalog:'
version: 5.4.8(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0) version: 6.1.0(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0)(yaml@2.6.1)
vitest: vitest:
specifier: ^3.0.2 specifier: ^3.0.2
version: 3.0.2(@types/node@22.10.7)(@vitest/ui@3.0.4)(jsdom@26.0.0)(sass@1.83.4)(terser@5.33.0) version: 3.0.2(@types/node@22.10.7)(@vitest/ui@3.0.4)(jsdom@26.0.0)(sass@1.83.4)(terser@5.33.0)(yaml@2.6.1)
benchmark: packages-private/benchmark:
dependencies: dependencies:
'@vitejs/plugin-vue': '@vitejs/plugin-vue':
specifier: https://pkg.pr.new/@vitejs/plugin-vue@e3c5ce5 specifier: https://pkg.pr.new/@vitejs/plugin-vue@c156992
version: https://pkg.pr.new/@vitejs/plugin-vue@e3c5ce5(vite@5.4.8(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0))(vue@3.5.13(typescript@5.6.2)) version: https://pkg.pr.new/@vitejs/plugin-vue@c156992(vite@6.1.0(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0)(yaml@2.6.1))(vue@3.5.13(typescript@5.6.2))
connect: connect:
specifier: ^3.7.0 specifier: ^3.7.0
version: 3.7.0 version: 3.7.0
@ -196,7 +196,7 @@ importers:
version: 2.0.4 version: 2.0.4
vite: vite:
specifier: 'catalog:' specifier: 'catalog:'
version: 5.4.8(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0) version: 6.1.0(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0)(yaml@2.6.1)
devDependencies: devDependencies:
'@types/connect': '@types/connect':
specifier: ^3.4.38 specifier: ^3.4.38
@ -226,6 +226,31 @@ importers:
specifier: workspace:* specifier: workspace:*
version: link:../../packages/vue version: link:../../packages/vue
packages-private/local-playground:
dependencies:
'@vueuse/core':
specifier: ^11.1.0
version: 11.1.0(vue@packages+vue)
vue:
specifier: workspace:*
version: link:../../packages/vue
devDependencies:
'@vitejs/plugin-vue':
specifier: https://pkg.pr.new/@vitejs/plugin-vue@c156992
version: https://pkg.pr.new/@vitejs/plugin-vue@c156992(vite@6.1.0(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0)(yaml@2.6.1))(vue@packages+vue)
'@vue/compiler-sfc':
specifier: workspace:*
version: link:../../packages/compiler-sfc
vite:
specifier: 'catalog:'
version: 6.1.0(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0)(yaml@2.6.1)
vite-hyper-config:
specifier: ^0.4.0
version: 0.4.0(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0)(vite@6.1.0(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0)(yaml@2.6.1))
vite-plugin-inspect:
specifier: ^0.8.7
version: 0.8.7(rollup@4.31.0)(vite@6.1.0(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0)(yaml@2.6.1))
packages-private/sfc-playground: packages-private/sfc-playground:
dependencies: dependencies:
'@vue/repl': '@vue/repl':
@ -243,10 +268,10 @@ importers:
devDependencies: devDependencies:
'@vitejs/plugin-vue': '@vitejs/plugin-vue':
specifier: 'catalog:' specifier: 'catalog:'
version: 5.1.5(vite@5.4.8(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0))(vue@packages+vue) version: 5.2.1(vite@6.1.0(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0)(yaml@2.6.1))(vue@packages+vue)
vite: vite:
specifier: 'catalog:' specifier: 'catalog:'
version: 5.4.8(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0) version: 6.1.0(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0)(yaml@2.6.1)
packages-private/template-explorer: packages-private/template-explorer:
dependencies: dependencies:
@ -264,10 +289,10 @@ importers:
devDependencies: devDependencies:
'@vitejs/plugin-vue': '@vitejs/plugin-vue':
specifier: 'catalog:' specifier: 'catalog:'
version: 5.1.5(vite@5.4.8(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0))(vue@packages+vue) version: 5.2.1(vite@6.1.0(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0)(yaml@2.6.1))(vue@packages+vue)
vite: vite:
specifier: 'catalog:' specifier: 'catalog:'
version: 5.4.8(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0) version: 6.1.0(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0)(yaml@2.6.1)
vue: vue:
specifier: workspace:* specifier: workspace:*
version: link:../../packages/vue version: link:../../packages/vue
@ -496,31 +521,6 @@ importers:
specifier: workspace:* specifier: workspace:*
version: link:../vue version: link:../vue
playground:
dependencies:
'@vueuse/core':
specifier: ^11.1.0
version: 11.1.0(vue@packages+vue)
vue:
specifier: workspace:*
version: link:../packages/vue
devDependencies:
'@vitejs/plugin-vue':
specifier: https://pkg.pr.new/@vitejs/plugin-vue@c156992
version: https://pkg.pr.new/@vitejs/plugin-vue@c156992(vite@5.4.8(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0))(vue@packages+vue)
'@vue/compiler-sfc':
specifier: workspace:*
version: link:../packages/compiler-sfc
vite:
specifier: 'catalog:'
version: 5.4.8(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0)
vite-hyper-config:
specifier: ^0.4.0
version: 0.4.0(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0)(vite@5.4.8(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0))
vite-plugin-inspect:
specifier: ^0.8.7
version: 0.8.7(rollup@4.31.0)(vite@5.4.8(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0))
packages: packages:
'@ampproject/remapping@2.3.0': '@ampproject/remapping@2.3.0':
@ -1427,11 +1427,11 @@ packages:
resolution: {integrity: sha512-v/BpkeeYAsPkKCkR8BDwcno0llhzWVqPOamQrAEMdpZav2Y9OVjd9dwJyBLJWwf335B5DmlifECIkZRJCaGaHA==} resolution: {integrity: sha512-v/BpkeeYAsPkKCkR8BDwcno0llhzWVqPOamQrAEMdpZav2Y9OVjd9dwJyBLJWwf335B5DmlifECIkZRJCaGaHA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@vitejs/plugin-vue@5.1.5': '@vitejs/plugin-vue@5.2.1':
resolution: {integrity: sha512-dlnib73G05CDBAUR/YpuZcQQ47fpjihnnNouAAqN62z+oqSsWJ+kh52GRzIxpkgFG3q11eXK7Di7RMmoCwISZA==} resolution: {integrity: sha512-cxh314tzaWwOLqVes2gnnCtvBDcM1UMdn+iFR+UjAn411dPT3tOmqrJjbMd7koZpMAmBM/GqeV4n9ge7JSiJJQ==}
engines: {node: ^18.0.0 || >=20.0.0} engines: {node: ^18.0.0 || >=20.0.0}
peerDependencies: peerDependencies:
vite: ^5.0.0 vite: ^5.0.0 || ^6.0.0
vue: ^3.2.25 vue: ^3.2.25
'@vitejs/plugin-vue@https://pkg.pr.new/@vitejs/plugin-vue@c156992': '@vitejs/plugin-vue@https://pkg.pr.new/@vitejs/plugin-vue@c156992':
@ -1442,14 +1442,6 @@ packages:
vite: ^5.0.0 || ^6.0.0 vite: ^5.0.0 || ^6.0.0
vue: ^3.2.25 vue: ^3.2.25
'@vitejs/plugin-vue@https://pkg.pr.new/@vitejs/plugin-vue@e3c5ce5':
resolution: {tarball: https://pkg.pr.new/@vitejs/plugin-vue@e3c5ce5}
version: 5.1.4
engines: {node: ^18.0.0 || >=20.0.0}
peerDependencies:
vite: ^5.0.0
vue: ^3.2.25
'@vitest/coverage-v8@3.0.2': '@vitest/coverage-v8@3.0.2':
resolution: {integrity: sha512-U+hZYb0FtgNDb6B3E9piAHzXXIuxuBw2cd6Lvepc9sYYY4KjgiwCBmo3Sird9ZRu3ggLpLBTfw1ZRr77ipiSfw==} resolution: {integrity: sha512-U+hZYb0FtgNDb6B3E9piAHzXXIuxuBw2cd6Lvepc9sYYY4KjgiwCBmo3Sird9ZRu3ggLpLBTfw1ZRr77ipiSfw==}
peerDependencies: peerDependencies:
@ -1983,15 +1975,6 @@ packages:
supports-color: supports-color:
optional: true optional: true
debug@4.3.7:
resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==}
engines: {node: '>=6.0'}
peerDependencies:
supports-color: '*'
peerDependenciesMeta:
supports-color:
optional: true
debug@4.4.0: debug@4.4.0:
resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==}
engines: {node: '>=6.0'} engines: {node: '>=6.0'}
@ -3036,9 +3019,6 @@ packages:
perfect-debounce@1.0.0: perfect-debounce@1.0.0:
resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==}
picocolors@1.1.0:
resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==}
picocolors@1.1.1: picocolors@1.1.1:
resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
@ -3716,6 +3696,46 @@ packages:
terser: terser:
optional: true optional: true
vite@6.1.0:
resolution: {integrity: sha512-RjjMipCKVoR4hVfPY6GQTgveinjNuyLw+qruksLDvA5ktI1150VmcMBKmQaEWJhg/j6Uaf6dNCNA0AfdzUb/hQ==}
engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
hasBin: true
peerDependencies:
'@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0
jiti: '>=1.21.0'
less: '*'
lightningcss: ^1.21.0
sass: '*'
sass-embedded: '*'
stylus: '*'
sugarss: '*'
terser: ^5.16.0
tsx: ^4.8.1
yaml: ^2.4.2
peerDependenciesMeta:
'@types/node':
optional: true
jiti:
optional: true
less:
optional: true
lightningcss:
optional: true
sass:
optional: true
sass-embedded:
optional: true
stylus:
optional: true
sugarss:
optional: true
terser:
optional: true
tsx:
optional: true
yaml:
optional: true
vitest@3.0.2: vitest@3.0.2:
resolution: {integrity: sha512-5bzaHakQ0hmVVKLhfh/jXf6oETDBtgPo8tQCHYB+wftNgFJ+Hah67IsWc8ivx4vFL025Ow8UiuTf4W57z4izvQ==} resolution: {integrity: sha512-5bzaHakQ0hmVVKLhfh/jXf6oETDBtgPo8tQCHYB+wftNgFJ+Hah67IsWc8ivx4vFL025Ow8UiuTf4W57z4izvQ==}
engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
@ -4588,21 +4608,21 @@ snapshots:
'@typescript-eslint/types': 8.20.0 '@typescript-eslint/types': 8.20.0
eslint-visitor-keys: 4.2.0 eslint-visitor-keys: 4.2.0
'@vitejs/plugin-vue@5.1.5(vite@5.4.8(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0))(vue@packages+vue)': '@vitejs/plugin-vue@5.2.1(vite@6.1.0(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0)(yaml@2.6.1))(vue@packages+vue)':
dependencies: dependencies:
vite: 5.4.8(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0) vite: 6.1.0(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0)(yaml@2.6.1)
vue: link:packages/vue vue: link:packages/vue
'@vitejs/plugin-vue@https://pkg.pr.new/@vitejs/plugin-vue@c156992(vite@5.4.8(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0))(vue@packages+vue)': '@vitejs/plugin-vue@https://pkg.pr.new/@vitejs/plugin-vue@c156992(vite@6.1.0(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0)(yaml@2.6.1))(vue@3.5.13(typescript@5.6.2))':
dependencies: dependencies:
vite: 5.4.8(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0) vite: 6.1.0(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0)(yaml@2.6.1)
vue: link:packages/vue
'@vitejs/plugin-vue@https://pkg.pr.new/@vitejs/plugin-vue@e3c5ce5(vite@5.4.8(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0))(vue@3.5.13(typescript@5.6.2))':
dependencies:
vite: 5.4.8(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0)
vue: 3.5.13(typescript@5.6.2) vue: 3.5.13(typescript@5.6.2)
'@vitejs/plugin-vue@https://pkg.pr.new/@vitejs/plugin-vue@c156992(vite@6.1.0(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0)(yaml@2.6.1))(vue@packages+vue)':
dependencies:
vite: 6.1.0(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0)(yaml@2.6.1)
vue: link:packages/vue
'@vitest/coverage-v8@3.0.2(vitest@3.0.2)': '@vitest/coverage-v8@3.0.2(vitest@3.0.2)':
dependencies: dependencies:
'@ampproject/remapping': 2.3.0 '@ampproject/remapping': 2.3.0
@ -4617,7 +4637,7 @@ snapshots:
std-env: 3.8.0 std-env: 3.8.0
test-exclude: 7.0.1 test-exclude: 7.0.1
tinyrainbow: 2.0.0 tinyrainbow: 2.0.0
vitest: 3.0.2(@types/node@22.10.7)(@vitest/ui@3.0.4)(jsdom@26.0.0)(sass@1.83.4)(terser@5.33.0) vitest: 3.0.2(@types/node@22.10.7)(@vitest/ui@3.0.4)(jsdom@26.0.0)(sass@1.83.4)(terser@5.33.0)(yaml@2.6.1)
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
@ -4627,7 +4647,7 @@ snapshots:
eslint: 9.18.0 eslint: 9.18.0
optionalDependencies: optionalDependencies:
typescript: 5.6.2 typescript: 5.6.2
vitest: 3.0.2(@types/node@22.10.7)(@vitest/ui@3.0.4)(jsdom@26.0.0)(sass@1.83.4)(terser@5.33.0) vitest: 3.0.2(@types/node@22.10.7)(@vitest/ui@3.0.4)(jsdom@26.0.0)(sass@1.83.4)(terser@5.33.0)(yaml@2.6.1)
'@vitest/expect@3.0.2': '@vitest/expect@3.0.2':
dependencies: dependencies:
@ -4636,13 +4656,13 @@ snapshots:
chai: 5.1.2 chai: 5.1.2
tinyrainbow: 2.0.0 tinyrainbow: 2.0.0
'@vitest/mocker@3.0.2(vite@5.4.8(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0))': '@vitest/mocker@3.0.2(vite@6.1.0(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0)(yaml@2.6.1))':
dependencies: dependencies:
'@vitest/spy': 3.0.2 '@vitest/spy': 3.0.2
estree-walker: 3.0.3 estree-walker: 3.0.3
magic-string: 0.30.17 magic-string: 0.30.17
optionalDependencies: optionalDependencies:
vite: 5.4.8(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0) vite: 6.1.0(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0)(yaml@2.6.1)
'@vitest/pretty-format@3.0.2': '@vitest/pretty-format@3.0.2':
dependencies: dependencies:
@ -4676,7 +4696,7 @@ snapshots:
sirv: 3.0.0 sirv: 3.0.0
tinyglobby: 0.2.10 tinyglobby: 0.2.10
tinyrainbow: 2.0.0 tinyrainbow: 2.0.0
vitest: 3.0.2(@types/node@22.10.7)(@vitest/ui@3.0.4)(jsdom@26.0.0)(sass@1.83.4)(terser@5.33.0) vitest: 3.0.2(@types/node@22.10.7)(@vitest/ui@3.0.4)(jsdom@26.0.0)(sass@1.83.4)(terser@5.33.0)(yaml@2.6.1)
'@vitest/utils@3.0.2': '@vitest/utils@3.0.2':
dependencies: dependencies:
@ -5194,10 +5214,6 @@ snapshots:
dependencies: dependencies:
ms: 2.1.2 ms: 2.1.2
debug@4.3.7:
dependencies:
ms: 2.1.3
debug@4.4.0: debug@4.4.0:
dependencies: dependencies:
ms: 2.1.3 ms: 2.1.3
@ -6288,8 +6304,6 @@ snapshots:
perfect-debounce@1.0.0: {} perfect-debounce@1.0.0: {}
picocolors@1.1.0: {}
picocolors@1.1.1: {} picocolors@1.1.1: {}
picomatch@2.3.1: {} picomatch@2.3.1: {}
@ -6972,11 +6986,11 @@ snapshots:
vary@1.1.2: {} vary@1.1.2: {}
vite-hyper-config@0.4.0(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0)(vite@5.4.8(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0)): vite-hyper-config@0.4.0(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0)(vite@6.1.0(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0)(yaml@2.6.1)):
dependencies: dependencies:
cac: 6.7.14 cac: 6.7.14
picocolors: 1.1.0 picocolors: 1.1.1
vite: 5.4.8(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0) vite: 6.1.0(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0)(yaml@2.6.1)
vite-node: 2.1.1(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0) vite-node: 2.1.1(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0)
transitivePeerDependencies: transitivePeerDependencies:
- '@types/node' - '@types/node'
@ -6992,7 +7006,7 @@ snapshots:
vite-node@2.1.1(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0): vite-node@2.1.1(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0):
dependencies: dependencies:
cac: 6.7.14 cac: 6.7.14
debug: 4.3.6 debug: 4.4.0
pathe: 1.1.2 pathe: 1.1.2
vite: 5.4.8(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0) vite: 5.4.8(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0)
transitivePeerDependencies: transitivePeerDependencies:
@ -7006,15 +7020,16 @@ snapshots:
- supports-color - supports-color
- terser - terser
vite-node@3.0.2(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0): vite-node@3.0.2(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0)(yaml@2.6.1):
dependencies: dependencies:
cac: 6.7.14 cac: 6.7.14
debug: 4.4.0 debug: 4.4.0
es-module-lexer: 1.6.0 es-module-lexer: 1.6.0
pathe: 2.0.2 pathe: 2.0.2
vite: 5.4.8(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0) vite: 6.1.0(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0)(yaml@2.6.1)
transitivePeerDependencies: transitivePeerDependencies:
- '@types/node' - '@types/node'
- jiti
- less - less
- lightningcss - lightningcss
- sass - sass
@ -7023,19 +7038,21 @@ snapshots:
- sugarss - sugarss
- supports-color - supports-color
- terser - terser
- tsx
- yaml
vite-plugin-inspect@0.8.7(rollup@4.31.0)(vite@5.4.8(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0)): vite-plugin-inspect@0.8.7(rollup@4.31.0)(vite@6.1.0(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0)(yaml@2.6.1)):
dependencies: dependencies:
'@antfu/utils': 0.7.10 '@antfu/utils': 0.7.10
'@rollup/pluginutils': 5.1.0(rollup@4.31.0) '@rollup/pluginutils': 5.1.0(rollup@4.31.0)
debug: 4.3.7 debug: 4.4.0
error-stack-parser-es: 0.1.5 error-stack-parser-es: 0.1.5
fs-extra: 11.2.0 fs-extra: 11.2.0
open: 10.1.0 open: 10.1.0
perfect-debounce: 1.0.0 perfect-debounce: 1.0.0
picocolors: 1.1.0 picocolors: 1.1.1
sirv: 2.0.4 sirv: 2.0.4
vite: 5.4.8(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0) vite: 6.1.0(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0)(yaml@2.6.1)
transitivePeerDependencies: transitivePeerDependencies:
- rollup - rollup
- supports-color - supports-color
@ -7051,10 +7068,22 @@ snapshots:
sass: 1.83.4 sass: 1.83.4
terser: 5.33.0 terser: 5.33.0
vitest@3.0.2(@types/node@22.10.7)(@vitest/ui@3.0.4)(jsdom@26.0.0)(sass@1.83.4)(terser@5.33.0): vite@6.1.0(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0)(yaml@2.6.1):
dependencies:
esbuild: 0.24.2
postcss: 8.5.1
rollup: 4.31.0
optionalDependencies:
'@types/node': 22.10.7
fsevents: 2.3.3
sass: 1.83.4
terser: 5.33.0
yaml: 2.6.1
vitest@3.0.2(@types/node@22.10.7)(@vitest/ui@3.0.4)(jsdom@26.0.0)(sass@1.83.4)(terser@5.33.0)(yaml@2.6.1):
dependencies: dependencies:
'@vitest/expect': 3.0.2 '@vitest/expect': 3.0.2
'@vitest/mocker': 3.0.2(vite@5.4.8(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0)) '@vitest/mocker': 3.0.2(vite@6.1.0(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0)(yaml@2.6.1))
'@vitest/pretty-format': 3.0.2 '@vitest/pretty-format': 3.0.2
'@vitest/runner': 3.0.2 '@vitest/runner': 3.0.2
'@vitest/snapshot': 3.0.2 '@vitest/snapshot': 3.0.2
@ -7070,14 +7099,15 @@ snapshots:
tinyexec: 0.3.2 tinyexec: 0.3.2
tinypool: 1.0.2 tinypool: 1.0.2
tinyrainbow: 2.0.0 tinyrainbow: 2.0.0
vite: 5.4.8(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0) vite: 6.1.0(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0)(yaml@2.6.1)
vite-node: 3.0.2(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0) vite-node: 3.0.2(@types/node@22.10.7)(sass@1.83.4)(terser@5.33.0)(yaml@2.6.1)
why-is-node-running: 2.3.0 why-is-node-running: 2.3.0
optionalDependencies: optionalDependencies:
'@types/node': 22.10.7 '@types/node': 22.10.7
'@vitest/ui': 3.0.4(vitest@3.0.2) '@vitest/ui': 3.0.4(vitest@3.0.2)
jsdom: 26.0.0 jsdom: 26.0.0
transitivePeerDependencies: transitivePeerDependencies:
- jiti
- less - less
- lightningcss - lightningcss
- msw - msw
@ -7087,6 +7117,8 @@ snapshots:
- sugarss - sugarss
- supports-color - supports-color
- terser - terser
- tsx
- yaml
void-elements@3.1.0: {} void-elements@3.1.0: {}

View File

@ -1,8 +1,6 @@
packages: packages:
- 'packages/*' - 'packages/*'
- 'packages-private/*' - 'packages-private/*'
- playground
- benchmark
catalog: catalog:
'@babel/parser': ^7.25.3 '@babel/parser': ^7.25.3
@ -10,5 +8,5 @@ catalog:
'estree-walker': ^2.0.2 'estree-walker': ^2.0.2
'magic-string': ^0.30.11 'magic-string': ^0.30.11
'source-map-js': ^1.2.0 'source-map-js': ^1.2.0
'vite': ^5.4.0 'vite': ^6.1.0
'@vitejs/plugin-vue': ^5.1.2 '@vitejs/plugin-vue': ^5.2.1