chore(examples): add interactive entry selection for dev builds (#7012)

This commit is contained in:
白熱
2026-06-03 19:23:13 +08:00
committed by GitHub
parent ff33ab8100
commit 0a453590f3
9 changed files with 472 additions and 317 deletions
+1
View File
@@ -2,3 +2,4 @@ public
!public/index.html
!public/favicon.svg
src/demos.ts
entry-selection.json
+10 -204
View File
@@ -14,120 +14,17 @@
* limitations under the License.
*/
import type { BuildOptions, Plugin, PluginBuild, SameShape } from 'esbuild';
import { execSync } from 'node:child_process';
import path from 'node:path';
import type { Plugin, PluginBuild } from 'esbuild';
import process from 'node:process';
import { fileURLToPath } from 'node:url';
import { ignoreGlobalCssPlugin, removeClassnameNewlinesPlugin } from '@univerjs-infra/shared/esbuild';
import detect from 'detect-port';
import esbuild from 'esbuild';
import aliasPlugin from 'esbuild-plugin-alias';
import cleanPlugin from 'esbuild-plugin-clean';
import copyPlugin from 'esbuild-plugin-copy';
import vue3 from 'esbuild-plugin-vue3';
import stylePlugin from 'esbuild-style-plugin';
import minimist from 'minimist';
import * as React from 'react';
import tailwindcss from 'tailwindcss';
import { syncDemoArtifacts } from './scripts/sync-demos';
const __dirname = path.dirname(fileURLToPath(import.meta.url));
const nodeModules = path.resolve(process.cwd(), './node_modules');
import { createBuildConfig } from './scripts/esbuild/build-config';
import { monacoBuildTask, nodeBuildTask } from './scripts/esbuild/build-tasks';
import { createLogger, formatDuration } from './scripts/esbuild/logger';
const args = minimist(process.argv.slice(2));
const isE2E = !!args.e2e;
const isReact16 = React.version.startsWith('16');
// User should also config their bundler to build monaco editor's resources for web worker.
const monacoEditorEntryPoints = [
'vs/language/json/json.worker.js',
'vs/language/css/css.worker.js',
'vs/language/html/html.worker.js',
'vs/language/typescript/ts.worker.js',
'vs/editor/editor.worker.js',
];
const supportsColor = !!process.stdout.isTTY && process.env.NO_COLOR == null;
const ansi = {
reset: '\x1B[0m',
bold: '\x1B[1m',
dim: '\x1B[2m',
red: '\x1B[31m',
green: '\x1B[32m',
yellow: '\x1B[33m',
blue: '\x1B[34m',
cyan: '\x1B[36m',
gray: '\x1B[90m',
underline: '\x1B[4m',
} as const;
type TLogLevel = 'error' | 'info' | 'ready' | 'recover' | 'watch';
const levelStyleMap: Record<TLogLevel, string[]> = {
error: [ansi.bold, ansi.red],
info: [ansi.bold, ansi.blue],
ready: [ansi.bold, ansi.green],
recover: [ansi.bold, ansi.cyan],
watch: [ansi.bold, ansi.yellow],
};
function colorize(text: string, styles: string[]) {
if (!supportsColor || styles.length === 0) {
return text;
}
return `${styles.join('')}${text}${ansi.reset}`;
}
function formatLabel(level: TLogLevel) {
return colorize(`[${level}]`, levelStyleMap[level]);
}
function formatMuted(text: string) {
return colorize(text, [ansi.dim, ansi.gray]);
}
function formatUrl(url: string) {
return colorize(url, [ansi.bold, ansi.underline, ansi.cyan]);
}
function formatDuration(durationMs: number) {
if (durationMs < 1000) {
return `${durationMs}ms`;
}
return `${(durationMs / 1000).toFixed(durationMs < 10_000 ? 1 : 0)}s`;
}
function createLogger() {
function write(level: TLogLevel, message: string, method: 'error' | 'log' = 'log') {
console[method](`${formatLabel(level)} ${message}`);
}
return {
error(message: string) {
write('error', message, 'error');
},
info(message: string) {
write('info', message);
},
ready(message: string) {
write('ready', message);
},
recover(message: string) {
write('recover', message);
},
watch(message: string) {
write('watch', message);
},
muted(message: string) {
console.log(formatMuted(message));
},
url: formatUrl,
};
}
const logger = createLogger();
@@ -181,103 +78,6 @@ function createWatchStatusPlugin() {
};
}
function nodeBuildTask() {
return esbuild.build({
bundle: true,
color: true,
minify: false,
target: 'chrome70',
entryPoints: [
'./src/node/cases/basic.ts',
'./src/node/sdk/worker.ts',
],
platform: 'node',
outdir: './dist',
define: {
'process.env.NODE_ENV': '"production"',
},
});
}
/**
* Build monaco editor's resources for web worker
*/
function monacoBuildTask() {
return esbuild.build({
entryPoints: monacoEditorEntryPoints.map((entry) => `./node_modules/monaco-editor/esm/${entry}`),
bundle: true,
color: true,
target: 'chrome70',
format: 'iife',
outbase: './node_modules/monaco-editor/esm/',
outdir: './local',
plugins: [
cleanPlugin({
patterns: ['./local'],
}),
],
});
}
const define: Record<string, string> = {
'process.env.NODE_ENV': args.watch ? '"development"' : '"production"',
'process.env.IS_E2E': isE2E ? 'true' : 'false',
};
if (!args.watch) {
const gitCommitHash = isE2E ? 'E2E' : execSync('git rev-parse --short HEAD').toString().trim();
const gitRefName = isE2E ? 'E2E' : execSync('git symbolic-ref -q --short HEAD || git describe --tags --exact-match').toString().trim();
define['process.env.GIT_COMMIT_HASH'] = `"${gitCommitHash}"`;
define['process.env.GIT_REF_NAME'] = `"${gitRefName}"`;
define['process.env.BUILD_TIME'] = `"${new Date().toISOString()}"`;
}
const { entryPoints } = syncDemoArtifacts();
const config: SameShape<BuildOptions, BuildOptions> = {
bundle: true,
format: 'esm',
splitting: true,
color: true,
loader: { '.svg': 'file', '.ttf': 'file' },
sourcemap: args.watch,
minify: false,
target: 'chrome70',
plugins: [
ignoreGlobalCssPlugin(),
removeClassnameNewlinesPlugin(),
copyPlugin({
assets: {
from: ['./public/**/*'],
to: ['./'],
},
}),
stylePlugin({
postcss: {
plugins: [tailwindcss as any],
},
renderOptions: {
lessOptions: {
paths: [nodeModules],
},
},
}),
vue3() as unknown as Plugin,
],
entryPoints,
outdir: './local',
define,
};
if (isReact16) {
config.plugins?.push(
aliasPlugin({
'react-dom/client': path.resolve(__dirname, './src/client.ts'),
})
);
}
/**
* Build the project
*/
@@ -286,6 +86,12 @@ async function main() {
logger.info('Starting examples dev server...');
}
const config = await createBuildConfig({
watch: !!args.watch,
e2e: isE2E,
all: !!args.all,
});
await monacoBuildTask();
if (args.watch) {
+1
View File
@@ -85,6 +85,7 @@
"rxjs": "^7.8.2"
},
"devDependencies": {
"@clack/prompts": "^0.10.0",
"@types/fs-extra": "^11.0.4",
"@types/minimist": "^1.2.5",
"@univerjs-infra/shared": "workspace:*",
+116
View File
@@ -0,0 +1,116 @@
/**
* Copyright 2023-present DreamNum Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import type { BuildOptions, Plugin, SameShape } from 'esbuild';
import { execSync } from 'node:child_process';
import path from 'node:path';
import process from 'node:process';
import { fileURLToPath } from 'node:url';
import { ignoreGlobalCssPlugin, removeClassnameNewlinesPlugin } from '@univerjs-infra/shared/esbuild';
import aliasPlugin from 'esbuild-plugin-alias';
import copyPlugin from 'esbuild-plugin-copy';
import vue3 from 'esbuild-plugin-vue3';
import stylePlugin from 'esbuild-style-plugin';
import * as React from 'react';
import tailwindcss from 'tailwindcss';
import { syncDemoArtifacts } from '../sync-demos';
const __dirname = path.dirname(fileURLToPath(import.meta.url));
const nodeModules = path.resolve(process.cwd(), './node_modules');
const isReact16 = React.version.startsWith('16');
export interface IBuildArgs {
watch: boolean;
e2e: boolean;
all: boolean;
}
export function createEnvDefinitions(args: IBuildArgs): Record<string, string> {
const define: Record<string, string> = {
'process.env.NODE_ENV': args.watch ? '"development"' : '"production"',
'process.env.IS_E2E': args.e2e ? 'true' : 'false',
};
if (!args.watch) {
const gitCommitHash = args.e2e ? 'E2E' : execSync('git rev-parse --short HEAD').toString().trim();
const gitRefName = args.e2e ? 'E2E' : execSync('git symbolic-ref -q --short HEAD || git describe --tags --exact-match').toString().trim();
define['process.env.GIT_COMMIT_HASH'] = `"${gitCommitHash}"`;
define['process.env.GIT_REF_NAME'] = `"${gitRefName}"`;
define['process.env.BUILD_TIME'] = `"${new Date().toISOString()}"`;
}
return define;
}
export async function createBuildConfig(args: IBuildArgs): Promise<SameShape<BuildOptions, BuildOptions>> {
const isAll = !!args.all;
let entryPoints: string[];
if (args.watch && !isAll) {
const { selectEntries } = await import('../select-entries');
const result = await selectEntries();
entryPoints = result.entryPoints;
} else {
const { entryPoints: eps } = syncDemoArtifacts();
entryPoints = eps;
}
const config: SameShape<BuildOptions, BuildOptions> = {
bundle: true,
format: 'esm',
splitting: true,
color: true,
loader: { '.svg': 'file', '.ttf': 'file' },
sourcemap: args.watch,
minify: false,
target: 'chrome70',
plugins: [
ignoreGlobalCssPlugin(),
removeClassnameNewlinesPlugin(),
copyPlugin({
assets: {
from: ['./public/**/*'],
to: ['./'],
},
}),
stylePlugin({
postcss: {
plugins: [tailwindcss as unknown as { postcssPlugin: string }],
},
renderOptions: {
lessOptions: {
paths: [nodeModules],
},
},
}),
vue3() as unknown as Plugin,
],
entryPoints,
outdir: './local',
define: createEnvDefinitions(args),
};
if (isReact16) {
config.plugins?.push(
aliasPlugin({
'react-dom/client': path.resolve(__dirname, '../../src/client.ts'),
})
);
}
return config;
}
+61
View File
@@ -0,0 +1,61 @@
/**
* Copyright 2023-present DreamNum Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import esbuild from 'esbuild';
import cleanPlugin from 'esbuild-plugin-clean';
export function monacoBuildTask() {
const monacoEditorEntryPoints = [
'vs/language/json/json.worker.js',
'vs/language/css/css.worker.js',
'vs/language/html/html.worker.js',
'vs/language/typescript/ts.worker.js',
'vs/editor/editor.worker.js',
];
return esbuild.build({
entryPoints: monacoEditorEntryPoints.map((entry) => `./node_modules/monaco-editor/esm/${entry}`),
bundle: true,
color: true,
target: 'chrome70',
format: 'iife',
outbase: './node_modules/monaco-editor/esm/',
outdir: './local',
plugins: [
cleanPlugin({
patterns: ['./local'],
}),
],
});
}
export function nodeBuildTask() {
return esbuild.build({
bundle: true,
color: true,
minify: false,
target: 'chrome70',
entryPoints: [
'./src/node/cases/basic.ts',
'./src/node/sdk/worker.ts',
],
platform: 'node',
outdir: './dist',
define: {
'process.env.NODE_ENV': '"production"',
},
});
}
+90
View File
@@ -0,0 +1,90 @@
/**
* Copyright 2023-present DreamNum Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import process from 'node:process';
const supportsColor = !!process.stdout.isTTY && process.env.NO_COLOR == null;
const ansi = {
reset: '\x1B[0m',
bold: '\x1B[1m',
dim: '\x1B[2m',
red: '\x1B[31m',
green: '\x1B[32m',
yellow: '\x1B[33m',
blue: '\x1B[34m',
cyan: '\x1B[36m',
gray: '\x1B[90m',
underline: '\x1B[4m',
} as const;
type TLogLevel = 'error' | 'info' | 'ready' | 'recover' | 'watch';
const levelStyleMap: Record<TLogLevel, string[]> = {
error: [ansi.bold, ansi.red],
info: [ansi.bold, ansi.blue],
ready: [ansi.bold, ansi.green],
recover: [ansi.bold, ansi.cyan],
watch: [ansi.bold, ansi.yellow],
};
function colorize(text: string, styles: string[]) {
if (!supportsColor || styles.length === 0) {
return text;
}
return `${styles.join('')}${text}${ansi.reset}`;
}
function formatLabel(level: TLogLevel) {
return colorize(`[${level}]`, levelStyleMap[level]);
}
export function formatDuration(durationMs: number) {
if (durationMs < 1000) {
return `${durationMs}ms`;
}
return `${(durationMs / 1000).toFixed(durationMs < 10_000 ? 1 : 0)}s`;
}
export function createLogger() {
function write(level: TLogLevel, message: string, method: 'error' | 'log' = 'log') {
console[method](`${formatLabel(level)} ${message}`);
}
return {
error(message: string) {
write('error', message, 'error');
},
info(message: string) {
write('info', message);
},
ready(message: string) {
write('ready', message);
},
recover(message: string) {
write('recover', message);
},
watch(message: string) {
write('watch', message);
},
muted(message: string) {
console.log(colorize(message, [ansi.dim, ansi.gray]));
},
url(url: string) {
return colorize(url, [ansi.bold, ansi.underline, ansi.cyan]);
},
};
}
+128
View File
@@ -0,0 +1,128 @@
/**
* Copyright 2023-present DreamNum Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import type { DemoDefinition } from './sync-demos';
import path from 'node:path';
import process from 'node:process';
import { fileURLToPath } from 'node:url';
import * as p from '@clack/prompts';
import fs from 'fs-extra';
import { discoverDemos, syncDemoArtifacts } from './sync-demos';
const __dirname = path.dirname(fileURLToPath(import.meta.url));
const EXAMPLES_ROOT = path.resolve(__dirname, '..');
const SELECTION_FILE = path.resolve(EXAMPLES_ROOT, 'entry-selection.json');
export interface ISelectionFile {
selected: string[];
known: string[];
}
export interface ISelectionResult {
entryPoints: string[];
selectedDirs: string[];
}
export async function selectEntries(): Promise<ISelectionResult> {
const demos = discoverDemos();
if (!process.stdout.isTTY) {
const { entryPoints } = syncDemoArtifacts();
return {
entryPoints,
selectedDirs: demos.map((d) => d.dir),
};
}
const saved = await readSelection();
const merged = mergeSelection(demos, saved);
const selectedDirs = await promptSelection(demos, merged);
await writeSelection(selectedDirs, demos);
const { entryPoints } = syncDemoArtifacts(selectedDirs);
return { entryPoints, selectedDirs };
}
export async function readSelection(filePath = SELECTION_FILE): Promise<ISelectionFile | null> {
try {
if (!await fs.pathExists(filePath)) {
return null;
}
const content = await fs.readFile(filePath, 'utf-8');
const parsed = JSON.parse(content);
// Backward compat: old format was just an array of strings
if (Array.isArray(parsed)) {
return { selected: parsed.filter((item): item is string => typeof item === 'string'), known: [] };
}
if (parsed && typeof parsed === 'object' && Array.isArray(parsed.selected) && Array.isArray(parsed.known)) {
return {
selected: parsed.selected.filter((item: unknown): item is string => typeof item === 'string'),
known: parsed.known.filter((item: unknown): item is string => typeof item === 'string'),
};
}
return null;
} catch {
return null;
}
}
export function mergeSelection(demos: DemoDefinition[], saved: ISelectionFile | null): string[] {
const currentDirs = new Set(demos.map((d) => d.dir));
if (!saved) {
return [...currentDirs].sort();
}
const selectedValid = saved.selected.filter((dir) => currentDirs.has(dir));
const knownSet = new Set(saved.known);
const merged = new Set(selectedValid);
for (const dir of currentDirs) {
if (!knownSet.has(dir)) {
merged.add(dir); // new demo, default select
}
}
return [...merged].sort();
}
async function promptSelection(demos: DemoDefinition[], initial: string[]): Promise<string[]> {
const options = demos.map((demo) => ({
value: demo.dir,
label: demo.title,
}));
const initialSet = new Set(initial);
const result = await p.multiselect({
message: 'Select demo entries to start (a: toggle all, space: select, enter: confirm, esc: cancel)',
options,
initialValues: options.filter((opt) => initialSet.has(opt.value)).map((opt) => opt.value),
});
if (p.isCancel(result)) {
p.cancel('Operation cancelled');
process.exit(0);
}
return result;
}
async function writeSelection(selectedDirs: string[], demos: DemoDefinition[]): Promise<void> {
const file: ISelectionFile = {
selected: selectedDirs,
known: demos.map((d) => d.dir),
};
await fs.writeFile(SELECTION_FILE, `${JSON.stringify(file, null, 4)}\n`);
}
+9 -4
View File
@@ -141,6 +141,10 @@ export function discoverDemos() {
.filter((demo): demo is DemoDefinition => demo !== null);
}
function filterDemos(demos: DemoDefinition[], selectedDirs?: string[]): DemoDefinition[] {
return selectedDirs ? demos.filter((demo) => selectedDirs.includes(demo.dir)) : demos;
}
function syncDemoHtml(demos: DemoDefinition[]) {
fs.ensureDirSync(PUBLIC_DIR);
@@ -189,12 +193,13 @@ function syncDemosModule(demos: DemoDefinition[]) {
fs.writeFileSync(GENERATED_DEMOS_FILE, content);
}
export function getDemoEntryPoints() {
return ['./src/main.tsx', ...discoverDemos().flatMap((demo) => demo.entryPoints)];
export function getDemoEntryPoints(selectedDirs?: string[]) {
const demos = filterDemos(discoverDemos(), selectedDirs);
return ['./src/main.tsx', ...demos.flatMap((demo) => demo.entryPoints)];
}
export function syncDemoArtifacts() {
const demos = discoverDemos();
export function syncDemoArtifacts(selectedDirs?: string[]) {
const demos = filterDemos(discoverDemos(), selectedDirs);
syncDemoHtml(demos);
syncDemosModule(demos);
+56 -109
View File
@@ -110,7 +110,7 @@ importers:
version: 6.0.3
vitest:
specifier: ^4.1.7
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.14))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.15))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
common/debugger:
dependencies:
@@ -683,6 +683,9 @@ importers:
specifier: ^7.8.2
version: 7.8.2
devDependencies:
'@clack/prompts':
specifier: ^0.10.0
version: 0.10.1
'@types/fs-extra':
specifier: ^11.0.4
version: 11.0.4
@@ -773,7 +776,7 @@ importers:
version: 6.0.3
vitest:
specifier: ^4.1.7
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.14))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.15))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
packages/core:
dependencies:
@@ -831,7 +834,7 @@ importers:
version: 6.0.3
vitest:
specifier: ^4.1.7
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.14))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.15))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
packages/data-validation:
dependencies:
@@ -856,7 +859,7 @@ importers:
version: 6.0.3
vitest:
specifier: ^4.1.7
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.14))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.15))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
packages/design:
dependencies:
@@ -954,7 +957,7 @@ importers:
version: 6.0.3
vitest:
specifier: ^4.1.7
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.14))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.15))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
packages/docs-drawing:
dependencies:
@@ -973,7 +976,7 @@ importers:
version: 6.0.3
vitest:
specifier: ^4.1.7
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.14))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.15))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
packages/docs-drawing-ui:
dependencies:
@@ -1041,7 +1044,7 @@ importers:
version: 6.0.3
vitest:
specifier: ^4.1.7
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.14))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.15))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
packages/docs-hyper-link-ui:
dependencies:
@@ -1317,7 +1320,7 @@ importers:
version: 6.0.3
vitest:
specifier: ^4.1.7
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.14))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.15))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
packages/drawing-ui:
dependencies:
@@ -1388,7 +1391,7 @@ importers:
version: 6.0.3
vitest:
specifier: ^4.1.7
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.14))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.15))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
packages/engine-render:
dependencies:
@@ -1493,7 +1496,7 @@ importers:
version: 6.0.3
vitest:
specifier: ^4.1.7
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.14))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.15))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
packages/protocol:
dependencies:
@@ -1512,7 +1515,7 @@ importers:
version: 6.0.3
vitest:
specifier: ^4.1.7
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.14))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.15))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
packages/rpc:
dependencies:
@@ -1531,7 +1534,7 @@ importers:
version: 6.0.3
vitest:
specifier: ^4.1.7
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.14))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.15))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
packages/rpc-node:
dependencies:
@@ -1553,7 +1556,7 @@ importers:
version: 6.0.3
vitest:
specifier: ^4.1.7
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.14))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.15))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
packages/sheets:
dependencies:
@@ -1587,7 +1590,7 @@ importers:
version: 6.0.3
vitest:
specifier: ^4.1.7
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.14))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.15))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
packages/sheets-conditional-formatting:
dependencies:
@@ -1621,7 +1624,7 @@ importers:
version: 6.0.3
vitest:
specifier: ^4.1.7
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.14))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.15))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
packages/sheets-conditional-formatting-ui:
dependencies:
@@ -1759,7 +1762,7 @@ importers:
version: 6.0.3
vitest:
specifier: ^4.1.7
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.14))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.15))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
packages/sheets-data-validation-ui:
dependencies:
@@ -1845,7 +1848,7 @@ importers:
version: 6.0.3
vitest:
specifier: ^4.1.7
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.14))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.15))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
packages/sheets-drawing-ui:
dependencies:
@@ -1934,7 +1937,7 @@ importers:
version: 6.0.3
vitest:
specifier: ^4.1.7
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.14))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.15))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
packages/sheets-filter-ui:
dependencies:
@@ -2020,7 +2023,7 @@ importers:
version: 6.0.3
vitest:
specifier: ^4.1.7
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.14))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.15))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
packages/sheets-formula:
dependencies:
@@ -2054,7 +2057,7 @@ importers:
version: 6.0.3
vitest:
specifier: ^4.1.7
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.14))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.15))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
packages/sheets-formula-ui:
dependencies:
@@ -2134,7 +2137,7 @@ importers:
version: 6.0.3
vitest:
specifier: ^4.1.7
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.14))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.15))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
packages/sheets-hyper-link:
dependencies:
@@ -2162,7 +2165,7 @@ importers:
version: 6.0.3
vitest:
specifier: ^4.1.7
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.14))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.15))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
packages/sheets-hyper-link-ui:
dependencies:
@@ -2257,7 +2260,7 @@ importers:
version: 6.0.3
vitest:
specifier: ^4.1.7
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.14))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.15))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
packages/sheets-note-ui:
dependencies:
@@ -2331,7 +2334,7 @@ importers:
version: 6.0.3
vitest:
specifier: ^4.1.7
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.14))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.15))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
packages/sheets-numfmt-ui:
dependencies:
@@ -2405,7 +2408,7 @@ importers:
version: 6.0.3
vitest:
specifier: ^4.1.7
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.14))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.15))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
packages/sheets-sort-ui:
dependencies:
@@ -2488,7 +2491,7 @@ importers:
version: 6.0.3
vitest:
specifier: ^4.1.7
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.14))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.15))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
packages/sheets-table-ui:
dependencies:
@@ -2574,7 +2577,7 @@ importers:
version: 6.0.3
vitest:
specifier: ^4.1.7
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.14))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.15))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
packages/sheets-thread-comment-ui:
dependencies:
@@ -2764,7 +2767,7 @@ importers:
version: 6.0.3
vitest:
specifier: ^4.1.7
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.14))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.15))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
packages/slides-ui:
dependencies:
@@ -2832,7 +2835,7 @@ importers:
version: 6.0.3
vitest:
specifier: ^4.1.7
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.14))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.15))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
packages/themes:
devDependencies:
@@ -2857,7 +2860,7 @@ importers:
version: 6.0.3
vitest:
specifier: ^4.1.7
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.14))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.15))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
packages/thread-comment-ui:
dependencies:
@@ -2971,7 +2974,7 @@ importers:
version: 6.0.3
vitest:
specifier: ^4.1.7
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.14))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.15))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
vue:
specifier: ^3.5.34
version: 3.5.34(typescript@6.0.3)
@@ -2993,7 +2996,7 @@ importers:
version: 6.0.3
vitest:
specifier: ^4.1.7
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.14))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.15))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
packages/uniscript:
dependencies:
@@ -3058,7 +3061,7 @@ importers:
version: 6.0.3
vitest:
specifier: ^4.1.7
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.14))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.15))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
tests/formula-integration:
dependencies:
@@ -3110,7 +3113,7 @@ importers:
version: 6.0.3
vitest:
specifier: ^4.1.7
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.14))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.15))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
packages:
@@ -3383,9 +3386,15 @@ packages:
peerDependencies:
storybook: ^0.0.0-0 || ^10.1.0 || ^10.1.0-0 || ^10.2.0-0 || ^10.3.0-0 || ^10.4.0-0
'@clack/core@0.4.2':
resolution: {integrity: sha512-NYQfcEy8MWIxrT5Fj8nIVchfRFA26yYKJcvBS7WlUIlw2OmQOY9DhGGXMovyI5J5PpxrCPGkgUi207EBrjpBvg==}
'@clack/core@1.1.0':
resolution: {integrity: sha512-SVcm4Dqm2ukn64/8Gub2wnlA5nS2iWJyCkdNHcvNHPIeBTGojpdJ+9cZKwLfmqy7irD4N5qLteSilJlE0WLAtA==}
'@clack/prompts@0.10.1':
resolution: {integrity: sha512-Q0T02vx8ZM9XSv9/Yde0jTmmBQufZhPJfYAg2XrrrxWWaZgq1rr8nU8Hv710BQ1dhoP8rtY7YUdpGej2Qza/cw==}
'@clack/prompts@1.1.0':
resolution: {integrity: sha512-pkqbPGtohJAvm4Dphs2M8xE29ggupihHdy1x84HNojZuMtFsHiUlRvqD24tM2+XmI+61LlfNceM3Wr7U5QES5g==}
@@ -11864,10 +11873,21 @@ snapshots:
- '@chromatic-com/cypress'
- '@chromatic-com/playwright'
'@clack/core@0.4.2':
dependencies:
picocolors: 1.1.1
sisteransi: 1.0.5
'@clack/core@1.1.0':
dependencies:
sisteransi: 1.0.5
'@clack/prompts@0.10.1':
dependencies:
'@clack/core': 0.4.2
picocolors: 1.1.1
sisteransi: 1.0.5
'@clack/prompts@1.1.0':
dependencies:
'@clack/core': 1.1.0
@@ -12033,11 +12053,6 @@ snapshots:
dependencies:
'@csstools/css-tokenizer': 4.0.0
'@csstools/css-syntax-patches-for-csstree@1.0.14(postcss@8.5.14)':
dependencies:
postcss: 8.5.14
optional: true
'@csstools/css-syntax-patches-for-csstree@1.0.14(postcss@8.5.15)':
dependencies:
postcss: 8.5.15
@@ -14624,7 +14639,7 @@ snapshots:
magicast: 0.5.3
obug: 2.1.1
tinyrainbow: 3.1.0
vitest: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.14))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
vitest: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.15))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
transitivePeerDependencies:
- supports-color
@@ -14636,7 +14651,7 @@ snapshots:
optionalDependencies:
'@typescript-eslint/eslint-plugin': 8.57.2(@typescript-eslint/parser@8.59.2(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3))(eslint@10.4.1(jiti@2.7.0))(typescript@6.0.3)
typescript: 6.0.3
vitest: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.14))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
vitest: 4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.15))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
transitivePeerDependencies:
- supports-color
@@ -15599,15 +15614,6 @@ snapshots:
cssfontparser@1.2.1: {}
cssstyle@5.3.1(postcss@8.5.14):
dependencies:
'@asamuzakjp/css-color': 4.0.5
'@csstools/css-syntax-patches-for-csstree': 1.0.14(postcss@8.5.14)
css-tree: 3.1.0
transitivePeerDependencies:
- postcss
optional: true
cssstyle@5.3.1(postcss@8.5.15):
dependencies:
'@asamuzakjp/css-color': 4.0.5
@@ -17406,35 +17412,6 @@ snapshots:
jsdoc-type-pratt-parser@7.1.1: {}
jsdom@27.0.1(postcss@8.5.14):
dependencies:
'@asamuzakjp/dom-selector': 6.7.3
cssstyle: 5.3.1(postcss@8.5.14)
data-urls: 6.0.0
decimal.js: 10.6.0
html-encoding-sniffer: 4.0.0
http-proxy-agent: 7.0.2
https-proxy-agent: 7.0.6
is-potential-custom-element-name: 1.0.1
parse5: 8.0.0
rrweb-cssom: 0.8.0
saxes: 6.0.0
symbol-tree: 3.2.4
tough-cookie: 6.0.0
w3c-xmlserializer: 5.0.0
webidl-conversions: 8.0.0
whatwg-encoding: 3.1.1
whatwg-mimetype: 4.0.0
whatwg-url: 15.1.0
ws: 8.18.3
xml-name-validator: 5.0.0
transitivePeerDependencies:
- bufferutil
- postcss
- supports-color
- utf-8-validate
optional: true
jsdom@27.0.1(postcss@8.5.15):
dependencies:
'@asamuzakjp/dom-selector': 6.7.3
@@ -20319,36 +20296,6 @@ snapshots:
tsx: 4.22.3
yaml: 2.9.0
vitest@4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.14))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0)):
dependencies:
'@vitest/expect': 4.1.7
'@vitest/mocker': 4.1.7(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0))
'@vitest/pretty-format': 4.1.7
'@vitest/runner': 4.1.7
'@vitest/snapshot': 4.1.7
'@vitest/spy': 4.1.7
'@vitest/utils': 4.1.7
es-module-lexer: 2.1.0
expect-type: 1.3.0
magic-string: 0.30.21
obug: 2.1.1
pathe: 2.0.3
picomatch: 4.0.4
std-env: 4.1.0
tinybench: 2.9.0
tinyexec: 1.2.3
tinyglobby: 0.2.16
tinyrainbow: 3.1.0
vite: 8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0)
why-is-node-running: 2.3.0
optionalDependencies:
'@types/node': 25.9.1
'@vitest/coverage-istanbul': 4.1.7(vitest@4.1.7)
happy-dom: 20.9.0
jsdom: 27.0.1(postcss@8.5.14)
transitivePeerDependencies:
- msw
vitest@4.1.7(@types/node@25.9.1)(@vitest/coverage-istanbul@4.1.7)(happy-dom@20.9.0)(jsdom@27.0.1(postcss@8.5.15))(vite@8.0.11(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(sass@1.87.0)(terser@5.47.1)(tsx@4.22.3)(yaml@2.9.0)):
dependencies:
'@vitest/expect': 4.1.7