mirror of
https://github.com/dream-num/univer.git
synced 2026-08-30 17:21:11 +08:00
chore(examples): add interactive entry selection for dev builds (#7012)
This commit is contained in:
@@ -2,3 +2,4 @@ public
|
||||
!public/index.html
|
||||
!public/favicon.svg
|
||||
src/demos.ts
|
||||
entry-selection.json
|
||||
|
||||
+10
-204
@@ -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) {
|
||||
|
||||
@@ -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:*",
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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"',
|
||||
},
|
||||
});
|
||||
}
|
||||
@@ -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]);
|
||||
},
|
||||
};
|
||||
}
|
||||
@@ -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`);
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
|
||||
Generated
+56
-109
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user