vize 0.78.0 → 0.81.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.mjs CHANGED
@@ -7,6 +7,16 @@ import { pathToFileURL } from "node:url";
7
7
  //#region src/cli.ts
8
8
  const require = createRequire(import.meta.url);
9
9
  const WORKSPACE_BINDING_PATH = "../../vize-native";
10
+ const BUILD_BATCH_SIZE = 128;
11
+ const SKIPPED_VUE_FILE_DIRECTORIES = new Set([
12
+ "node_modules",
13
+ "dist",
14
+ ".git",
15
+ ".nuxt",
16
+ ".output",
17
+ ".nitro",
18
+ "coverage"
19
+ ]);
10
20
  function isMusl() {
11
21
  const report = process.report?.getReport();
12
22
  if (typeof report === "object" && report !== null && "header" in report) return !report.header.glibcVersionRuntime;
@@ -267,26 +277,35 @@ async function runBuild(args) {
267
277
  process.stderr.write(`No Vue files found matching inputs: ${JSON.stringify(patterns)}\n`);
268
278
  process.exit(1);
269
279
  }
270
- const inputs = files.map((file) => ({
271
- path: file,
272
- source: readFileSync(file, "utf8")
273
- }));
274
280
  const native = loadNative("build");
275
281
  const startedAt = performance.now();
276
- const result = native.compileSfcBatchWithResults(inputs, toNativeBuildOptions(options));
277
- const timeMs = result.timeMs ?? result.time_ms ?? performance.now() - startedAt;
278
- const results = [...result.results].sort((left, right) => left.path.localeCompare(right.path));
279
282
  if (options.format !== "stats") mkdirSync(options.output, { recursive: true });
280
- for (const fileResult of results) {
281
- const source = inputs.find((input) => input.path === fileResult.path)?.source ?? "";
282
- for (const warning of fileResult.warnings) process.stderr.write(`warning: ${displayPath(fileResult.path)} ${warning}\n`);
283
- for (const error of fileResult.errors) process.stderr.write(`error: ${displayPath(fileResult.path)} ${error}\n`);
284
- if (fileResult.errors.length > 0 || options.format === "stats") continue;
285
- const extension = options.format === "json" ? "json" : getOutputExtension(source, options.scriptExt);
286
- writeFileSync(path.join(options.output, outputFileName(fileResult.path, extension)), options.format === "json" ? JSON.stringify(fileResult, null, 2) : fileResult.code);
287
- }
288
- const failed = result.failedCount ?? result.failed_count ?? results.filter((r) => r.errors.length).length;
289
- const success = result.successCount ?? result.success_count ?? results.length - failed;
283
+ let nativeTimeMs = 0;
284
+ let failed = 0;
285
+ let success = 0;
286
+ for (let start = 0; start < files.length; start += BUILD_BATCH_SIZE) {
287
+ const inputs = files.slice(start, start + BUILD_BATCH_SIZE).map((file) => ({
288
+ path: file,
289
+ source: readFileSync(file, "utf8")
290
+ }));
291
+ const sourceByPath = new Map(inputs.map((input) => [input.path, input.source]));
292
+ const chunkStartedAt = performance.now();
293
+ const result = native.compileSfcBatchWithResults(inputs, toNativeBuildOptions(options));
294
+ nativeTimeMs += result.timeMs ?? result.time_ms ?? performance.now() - chunkStartedAt;
295
+ const results = [...result.results].sort((left, right) => left.path.localeCompare(right.path));
296
+ for (const fileResult of results) {
297
+ const source = sourceByPath.get(fileResult.path) ?? "";
298
+ for (const warning of fileResult.warnings) process.stderr.write(`warning: ${displayPath(fileResult.path)} ${warning}\n`);
299
+ for (const error of fileResult.errors) process.stderr.write(`error: ${displayPath(fileResult.path)} ${error}\n`);
300
+ if (fileResult.errors.length > 0 || options.format === "stats") continue;
301
+ const extension = options.format === "json" ? "json" : getOutputExtension(source, options.scriptExt);
302
+ writeFileSync(path.join(options.output, outputFileName(fileResult.path, extension)), options.format === "json" ? JSON.stringify(fileResult, null, 2) : fileResult.code);
303
+ }
304
+ const chunkFailed = result.failedCount ?? result.failed_count ?? results.filter((r) => r.errors.length).length;
305
+ failed += chunkFailed;
306
+ success += result.successCount ?? result.success_count ?? results.length - chunkFailed;
307
+ }
308
+ const timeMs = nativeTimeMs || performance.now() - startedAt;
290
309
  process.stderr.write(`\x1b[32mOK\x1b[0m Built ${success} Vue file(s) in ${timeMs.toFixed(2)}ms\n`);
291
310
  if (failed > 0) {
292
311
  process.stderr.write(`\x1b[31mERR\x1b[0m ${failed} file(s) failed\n`);
@@ -452,7 +471,7 @@ function collectVueFilesFromDirectory(directory, recursive) {
452
471
  for (const entry of entries) {
453
472
  const entryPath = path.join(directory, entry.name);
454
473
  if (entry.isDirectory()) {
455
- if (entry.name === "node_modules" || entry.name === ".git") continue;
474
+ if (SKIPPED_VUE_FILE_DIRECTORIES.has(entry.name)) continue;
456
475
  if (recursive) files.push(...collectVueFilesFromDirectory(entryPath, true));
457
476
  } else if (entry.isFile() && isVueFile(entryPath)) files.push(entryPath);
458
477
  }
package/dist/cli.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.mjs","names":[],"sources":["../src/cli.ts"],"sourcesContent":["import { existsSync, mkdirSync, readFileSync, readdirSync, statSync, writeFileSync } from \"node:fs\";\nimport { spawnSync } from \"node:child_process\";\nimport * as path from \"node:path\";\nimport { createRequire } from \"node:module\";\nimport { pathToFileURL } from \"node:url\";\nimport { loadConfig } from \"./config.js\";\n\nconst require = createRequire(import.meta.url);\nconst WORKSPACE_BINDING_PATH = \"../../vize-native\";\n\n// ============================================================================\n// Native binding loader (oxlint pattern)\n// ============================================================================\n\nfunction isMusl(): boolean {\n const report = process.report?.getReport();\n if (typeof report === \"object\" && report !== null && \"header\" in report) {\n const header = (report as { header: { glibcVersionRuntime?: string } }).header;\n return !header.glibcVersionRuntime;\n }\n try {\n const lddPath = require(\"child_process\").execSync(\"which ldd\").toString().trim();\n return readFileSync(lddPath, \"utf8\").includes(\"musl\");\n } catch {\n return true;\n }\n}\n\nfunction getBindingPackageName(): string {\n const { platform, arch } = process;\n\n switch (platform) {\n case \"darwin\":\n switch (arch) {\n case \"x64\":\n return \"@vizejs/native-darwin-x64\";\n case \"arm64\":\n return \"@vizejs/native-darwin-arm64\";\n default:\n throw new Error(`Unsupported architecture on macOS: ${arch}`);\n }\n case \"win32\":\n switch (arch) {\n case \"x64\":\n return \"@vizejs/native-win32-x64-msvc\";\n case \"arm64\":\n return \"@vizejs/native-win32-arm64-msvc\";\n default:\n throw new Error(`Unsupported architecture on Windows: ${arch}`);\n }\n case \"linux\":\n switch (arch) {\n case \"x64\":\n return isMusl() ? \"@vizejs/native-linux-x64-musl\" : \"@vizejs/native-linux-x64-gnu\";\n case \"arm64\":\n return isMusl() ? \"@vizejs/native-linux-arm64-musl\" : \"@vizejs/native-linux-arm64-gnu\";\n default:\n throw new Error(`Unsupported architecture on Linux: ${arch}`);\n }\n default:\n throw new Error(`Unsupported OS: ${platform}, architecture: ${arch}`);\n }\n}\n\ninterface NativeBinding {\n compileSfcBatchWithResults: (\n files: BatchFileInput[],\n options?: NativeBuildOptions,\n ) => BatchCompileResult;\n formatSfc: (source: string, options?: NativeFormatOptions) => FormatResult;\n typeCheck: (source: string, options?: NativeTypeCheckOptions) => TypeCheckResult;\n generateDeclaration?: (source: string, options?: NativeDeclarationOptions) => DeclarationResult;\n lint: (\n patterns: string[],\n options?: {\n format?: string;\n max_warnings?: number;\n quiet?: boolean;\n fix?: boolean;\n help_level?: string;\n preset?: string;\n },\n ) => LintResult;\n}\n\ntype NativeCommand = \"build\" | \"check\" | \"fmt\" | \"lint\";\n\nconst REQUIRED_BINDINGS: Record<NativeCommand, keyof NativeBinding> = {\n build: \"compileSfcBatchWithResults\",\n check: \"typeCheck\",\n fmt: \"formatSfc\",\n lint: \"lint\",\n};\n\nfunction loadNative(command: NativeCommand): NativeBinding {\n const attemptedPackages = getAttemptedPackages();\n let lastError: unknown = null;\n const requiredBinding = REQUIRED_BINDINGS[command];\n\n for (const packageName of attemptedPackages) {\n try {\n const binding = require(packageName) as Partial<NativeBinding>;\n if (typeof binding[requiredBinding] !== \"function\") {\n throw new Error(`${packageName} does not expose the ${command} binding.`);\n }\n return binding as NativeBinding;\n } catch (error) {\n lastError = error;\n }\n }\n\n console.error(`Failed to load native binding. Tried: ${attemptedPackages.join(\", \")}`);\n console.error(\"Try reinstalling: npm install vize\");\n throw lastError instanceof Error ? lastError : new Error(\"Failed to load native binding\");\n}\n\nfunction getAttemptedPackages(): readonly string[] {\n const platformBindingPackage = getBindingPackageName();\n return shouldPreferWorkspaceBinding(resolveWorkspaceBindingPath())\n ? [WORKSPACE_BINDING_PATH, platformBindingPackage]\n : [platformBindingPackage, WORKSPACE_BINDING_PATH];\n}\n\nfunction resolveWorkspaceBindingPath(): string | null {\n try {\n return require.resolve(WORKSPACE_BINDING_PATH);\n } catch {\n return null;\n }\n}\n\nfunction shouldPreferWorkspaceBinding(resolvedPath: string | null): boolean {\n const override = process.env.VIZE_PREFER_WORKSPACE_BINDING;\n if (override === \"1\" || override === \"true\") {\n return true;\n }\n if (override === \"0\" || override === \"false\") {\n return false;\n }\n if (resolvedPath == null) {\n return false;\n }\n\n return resolvedPath.includes(`${path.sep}npm${path.sep}vize-native${path.sep}`);\n}\n\n// ============================================================================\n// Lint command\n// ============================================================================\n\ninterface LintOptions {\n format?: string;\n maxWarnings?: number;\n quiet?: boolean;\n fix?: boolean;\n helpLevel?: string;\n preset?: string;\n}\n\ninterface LintResult {\n output: string;\n errorCount: number;\n warningCount: number;\n fileCount: number;\n timeMs: number;\n}\n\ninterface SharedConfigOptions {\n configFile?: string;\n configMode: \"root\" | \"none\";\n}\n\ninterface ParsedLintCommand {\n patterns: string[];\n options: LintOptions;\n sharedConfig: SharedConfigOptions;\n}\n\nfunction printUsage(): void {\n console.error(\"Usage: vize <command> [options]\");\n console.error(\"Commands: build, fmt, check, lint, upgrade, ready, musea\");\n}\n\nfunction printBuildUsage(): void {\n console.error(\"Usage: vize build [options] [files-or-directories]\");\n console.error(\"Options:\");\n console.error(\" -o, --output <dir> Output directory\");\n console.error(\" -f, --format <js|json|stats> Output format\");\n console.error(\" --ssr Enable SSR compilation\");\n console.error(\" --script-ext <mode> preserve or downcompile\");\n console.error(\" -j, --threads <number> Worker thread count\");\n}\n\nfunction printFmtUsage(): void {\n console.error(\"Usage: vize fmt [options] [files-or-directories]\");\n console.error(\"Options:\");\n console.error(\" --check Exit with an error if files need formatting\");\n console.error(\" -w, --write Write formatted output\");\n console.error(\" --single-quote Use single quotes\");\n console.error(\" --print-width <number> Maximum line width\");\n console.error(\" --tab-width <number> Indentation width\");\n console.error(\" --use-tabs Indent with tabs\");\n console.error(\" --no-semi Omit semicolons\");\n}\n\nfunction printCheckUsage(): void {\n console.error(\"Usage: vize check [options] [files-or-directories]\");\n console.error(\"Options:\");\n console.error(\" -f, --format <text|json> Output format\");\n console.error(\" -q, --quiet Show summary only\");\n console.error(\" --strict Enable strict checks\");\n console.error(\" --show-virtual-ts Print generated Virtual TS\");\n console.error(\" --declaration Emit Vue component .d.ts files\");\n console.error(\" --declaration-dir <dir> Output directory for declarations\");\n console.error(\" --max-warnings <number> Fail when warnings exceed the limit\");\n console.error(\" -c, --config <path> Use a specific vize config file\");\n console.error(\" --no-config Disable config discovery\");\n console.error(\"\");\n console.error(\n \"Note: npm `vize check` uses the packaged NAPI checker. Install the Rust CLI for project-backed Corsa diagnostics.\",\n );\n}\n\nfunction printUpgradeUsage(): void {\n console.error(\"Usage: vize upgrade [options]\");\n console.error(\"Options:\");\n console.error(\" --package-manager <name> npm, pnpm, yarn, bun, or vp\");\n console.error(\" -g, --global Upgrade the global installation\");\n console.error(\" --dry-run Print the command without running it\");\n}\n\nfunction printReadyUsage(): void {\n console.error(\"Usage: vize ready [options] [files-or-directories]\");\n console.error(\"Runs: fmt --write -> lint -> check -> build\");\n console.error(\"Options:\");\n console.error(\" -o, --output <dir> Output directory for build\");\n console.error(\" --ssr Enable SSR compilation for build\");\n console.error(\" --script-ext <mode> preserve or downcompile\");\n}\n\nfunction resolvePackageBinaryFromCwd(packageName: string, binName: string = packageName): string {\n const cwdRequire = createRequire(pathToFileURL(path.join(process.cwd(), \"package.json\")).href);\n const packageJsonPath = cwdRequire.resolve(`${packageName}/package.json`);\n const packageJson = JSON.parse(readFileSync(packageJsonPath, \"utf8\")) as {\n bin?: string | Record<string, string>;\n };\n\n const bin = typeof packageJson.bin === \"string\" ? packageJson.bin : packageJson.bin?.[binName];\n\n if (!bin) {\n throw new Error(`Could not resolve binary '${binName}' from package '${packageName}'`);\n }\n\n return path.resolve(path.dirname(packageJsonPath), bin);\n}\n\nfunction runMusea(args: string[]): void {\n const isHelp = args.includes(\"--help\") || args.includes(\"-h\");\n if (isHelp) {\n console.error(\"Usage: vize musea [--build] [...vite options]\");\n console.error(\" --build Run `vite build` instead of `vite dev`\");\n return;\n }\n\n const isBuild = args.includes(\"--build\");\n const viteArgs = args.filter((arg) => arg !== \"--build\");\n const viteCommand = isBuild ? \"build\" : \"dev\";\n const viteBin = resolvePackageBinaryFromCwd(\"vite\");\n const result = spawnSync(process.execPath, [viteBin, viteCommand, ...viteArgs], {\n stdio: \"inherit\",\n cwd: process.cwd(),\n env: process.env,\n });\n\n if (result.error) {\n throw result.error;\n }\n\n process.exit(result.status ?? 1);\n}\n\nfunction parseLintCommand(args: string[]): ParsedLintCommand {\n const patterns: string[] = [];\n const options: LintOptions = {};\n const sharedConfig: SharedConfigOptions = {\n configMode: \"root\",\n };\n\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n if (arg === \"--format\" || arg === \"-f\") {\n options.format = args[++i];\n } else if (arg === \"--max-warnings\") {\n options.maxWarnings = Number.parseInt(args[++i], 10);\n } else if (arg === \"--quiet\" || arg === \"-q\") {\n options.quiet = true;\n } else if (arg === \"--fix\") {\n options.fix = true;\n } else if (arg === \"--help-level\") {\n options.helpLevel = args[++i];\n } else if (arg === \"--preset\") {\n options.preset = args[++i];\n } else if (arg === \"--config\" || arg === \"-c\") {\n const configFile = args[++i];\n if (!configFile) {\n throw new Error(\"Missing path after --config\");\n }\n sharedConfig.configFile = configFile;\n } else if (arg === \"--no-config\") {\n sharedConfig.configMode = \"none\";\n } else if (!arg.startsWith(\"-\")) {\n patterns.push(arg);\n }\n }\n\n return { patterns, options, sharedConfig };\n}\n\n// ============================================================================\n// Build command\n// ============================================================================\n\ninterface NativeBuildOptions {\n ssr?: boolean;\n vapor?: boolean;\n customRenderer?: boolean;\n custom_renderer?: boolean;\n isTs?: boolean;\n is_ts?: boolean;\n threads?: number;\n}\n\ninterface BatchFileInput {\n path: string;\n source: string;\n}\n\ninterface MacroArtifact {\n kind: string;\n name: string;\n source: string;\n content: string;\n moduleCode?: string;\n start: number;\n end: number;\n}\n\ninterface BatchFileResult {\n path: string;\n code: string;\n css?: string;\n errors: string[];\n warnings: string[];\n scopeId?: string;\n scope_id?: string;\n hasScoped?: boolean;\n has_scoped?: boolean;\n macroArtifacts?: MacroArtifact[];\n macro_artifacts?: MacroArtifact[];\n}\n\ninterface BatchCompileResult {\n results: BatchFileResult[];\n successCount?: number;\n success_count?: number;\n failedCount?: number;\n failed_count?: number;\n timeMs?: number;\n time_ms?: number;\n}\n\ninterface BuildOptions {\n output: string;\n format: \"js\" | \"json\" | \"stats\";\n ssr?: boolean;\n vapor?: boolean;\n customRenderer?: boolean;\n scriptExt: \"preserve\" | \"downcompile\";\n threads?: number;\n help?: boolean;\n}\n\ninterface ParsedBuildCommand {\n patterns: string[];\n options: BuildOptions;\n sharedConfig: SharedConfigOptions;\n}\n\nfunction parseBuildCommand(args: string[]): ParsedBuildCommand {\n const patterns: string[] = [];\n const options: BuildOptions = {\n output: \"./dist\",\n format: \"js\",\n scriptExt: \"downcompile\",\n };\n const sharedConfig: SharedConfigOptions = {\n configMode: \"root\",\n };\n\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n if (arg === \"--output\" || arg === \"-o\") {\n options.output = args[++i] ?? options.output;\n } else if (arg === \"--format\" || arg === \"-f\") {\n const format = args[++i];\n if (format === \"js\" || format === \"json\" || format === \"stats\") {\n options.format = format;\n }\n } else if (arg === \"--ssr\") {\n options.ssr = true;\n } else if (arg === \"--vapor\") {\n options.vapor = true;\n } else if (arg === \"--custom-renderer\") {\n options.customRenderer = true;\n } else if (arg === \"--script-ext\") {\n const scriptExt = args[++i];\n if (scriptExt === \"preserve\" || scriptExt === \"downcompile\") {\n options.scriptExt = scriptExt;\n }\n } else if (arg === \"--threads\" || arg === \"-j\") {\n options.threads = Number.parseInt(args[++i], 10);\n } else if (arg === \"--config\" || arg === \"-c\") {\n const configFile = args[++i];\n if (!configFile) {\n throw new Error(\"Missing path after --config\");\n }\n sharedConfig.configFile = configFile;\n } else if (arg === \"--no-config\") {\n sharedConfig.configMode = \"none\";\n } else if (arg === \"--profile\" || arg === \"--continue-on-error\") {\n // Accepted for command compatibility. The npm build path prints a compact summary.\n } else if (arg === \"--help\" || arg === \"-h\") {\n options.help = true;\n } else if (!arg.startsWith(\"-\")) {\n patterns.push(arg);\n }\n }\n\n return { patterns, options, sharedConfig };\n}\n\nfunction getScriptLang(source: string): string {\n const match = source.match(/<script\\b[^>]*\\blang=[\"']([^\"']+)[\"']/i);\n return match?.[1] ?? \"js\";\n}\n\nfunction getOutputExtension(source: string, scriptExt: BuildOptions[\"scriptExt\"]): string {\n if (scriptExt === \"downcompile\") {\n return \"js\";\n }\n const lang = getScriptLang(source);\n return lang === \"ts\" || lang === \"tsx\" || lang === \"jsx\" ? lang : \"js\";\n}\n\nfunction outputFileName(file: string, extension: string): string {\n return path.basename(file).replace(/\\.vue$/i, `.${extension}`);\n}\n\nfunction toNativeBuildOptions(options: BuildOptions): NativeBuildOptions {\n const isTs = options.scriptExt === \"preserve\";\n return {\n ssr: options.ssr,\n vapor: options.vapor,\n customRenderer: options.customRenderer,\n custom_renderer: options.customRenderer,\n isTs,\n is_ts: isTs,\n threads: options.threads,\n };\n}\n\nasync function runBuild(args: string[]): Promise<void> {\n const { patterns, options, sharedConfig } = parseBuildCommand(args);\n if (options.help) {\n printBuildUsage();\n return;\n }\n\n const config = await loadConfig(process.cwd(), {\n mode: sharedConfig.configMode,\n configFile: sharedConfig.configFile,\n env: {\n mode: process.env.NODE_ENV ?? \"development\",\n command: \"build\",\n },\n });\n\n if (sharedConfig.configFile && !config) {\n throw new Error(`Could not find config file: ${sharedConfig.configFile}`);\n }\n\n options.ssr ??= config?.compiler?.ssr;\n options.vapor ??= config?.compiler?.vapor;\n options.customRenderer ??= config?.compiler?.customRenderer;\n if (config?.compiler?.scriptExt === \"ts\") {\n options.scriptExt = \"preserve\";\n } else if (config?.compiler?.scriptExt === \"js\") {\n options.scriptExt = \"downcompile\";\n }\n\n const files = collectVueFiles(patterns);\n if (files.length === 0) {\n process.stderr.write(`No Vue files found matching inputs: ${JSON.stringify(patterns)}\\n`);\n process.exit(1);\n }\n\n const inputs = files.map((file) => ({\n path: file,\n source: readFileSync(file, \"utf8\"),\n }));\n const native = loadNative(\"build\");\n const startedAt = performance.now();\n const result = native.compileSfcBatchWithResults(inputs, toNativeBuildOptions(options));\n const timeMs = result.timeMs ?? result.time_ms ?? performance.now() - startedAt;\n const results = [...result.results].sort((left, right) => left.path.localeCompare(right.path));\n\n if (options.format !== \"stats\") {\n mkdirSync(options.output, { recursive: true });\n }\n\n for (const fileResult of results) {\n const source = inputs.find((input) => input.path === fileResult.path)?.source ?? \"\";\n for (const warning of fileResult.warnings) {\n process.stderr.write(`warning: ${displayPath(fileResult.path)} ${warning}\\n`);\n }\n for (const error of fileResult.errors) {\n process.stderr.write(`error: ${displayPath(fileResult.path)} ${error}\\n`);\n }\n\n if (fileResult.errors.length > 0 || options.format === \"stats\") {\n continue;\n }\n\n const extension =\n options.format === \"json\" ? \"json\" : getOutputExtension(source, options.scriptExt);\n const outputPath = path.join(options.output, outputFileName(fileResult.path, extension));\n const content =\n options.format === \"json\" ? JSON.stringify(fileResult, null, 2) : fileResult.code;\n writeFileSync(outputPath, content);\n }\n\n const failed =\n result.failedCount ?? result.failed_count ?? results.filter((r) => r.errors.length).length;\n const success = result.successCount ?? result.success_count ?? results.length - failed;\n process.stderr.write(\n `\\x1b[32mOK\\x1b[0m Built ${success} Vue file(s) in ${timeMs.toFixed(2)}ms\\n`,\n );\n\n if (failed > 0) {\n process.stderr.write(`\\x1b[31mERR\\x1b[0m ${failed} file(s) failed\\n`);\n process.exit(1);\n }\n}\n\n// ============================================================================\n// Format command\n// ============================================================================\n\ninterface NativeFormatOptions {\n printWidth?: number;\n print_width?: number;\n tabWidth?: number;\n tab_width?: number;\n useTabs?: boolean;\n use_tabs?: boolean;\n semi?: boolean;\n singleQuote?: boolean;\n single_quote?: boolean;\n sortAttributes?: boolean;\n sort_attributes?: boolean;\n singleAttributePerLine?: boolean;\n single_attribute_per_line?: boolean;\n maxAttributesPerLine?: number;\n max_attributes_per_line?: number;\n normalizeDirectiveShorthands?: boolean;\n normalize_directive_shorthands?: boolean;\n}\n\ninterface FormatResult {\n code: string;\n changed: boolean;\n}\n\ninterface FmtOptions extends NativeFormatOptions {\n check?: boolean;\n write?: boolean;\n help?: boolean;\n}\n\ninterface ParsedFmtCommand {\n patterns: string[];\n options: FmtOptions;\n sharedConfig: SharedConfigOptions;\n}\n\nfunction parseFmtCommand(args: string[]): ParsedFmtCommand {\n const patterns: string[] = [];\n const options: FmtOptions = {};\n const sharedConfig: SharedConfigOptions = {\n configMode: \"root\",\n };\n\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n if (arg === \"--check\") {\n options.check = true;\n } else if (arg === \"--write\" || arg === \"-w\") {\n options.write = true;\n } else if (arg === \"--single-quote\") {\n options.singleQuote = true;\n } else if (arg === \"--print-width\") {\n options.printWidth = Number.parseInt(args[++i], 10);\n } else if (arg === \"--tab-width\") {\n options.tabWidth = Number.parseInt(args[++i], 10);\n } else if (arg === \"--use-tabs\") {\n options.useTabs = true;\n } else if (arg === \"--no-semi\") {\n options.semi = false;\n } else if (arg === \"--sort-attributes\") {\n options.sortAttributes = true;\n } else if (arg === \"--single-attribute-per-line\") {\n options.singleAttributePerLine = true;\n } else if (arg === \"--max-attributes-per-line\") {\n options.maxAttributesPerLine = Number.parseInt(args[++i], 10);\n } else if (arg === \"--normalize-directive-shorthands\") {\n options.normalizeDirectiveShorthands = true;\n } else if (arg === \"--config\" || arg === \"-c\") {\n const configFile = args[++i];\n if (!configFile) {\n throw new Error(\"Missing path after --config\");\n }\n sharedConfig.configFile = configFile;\n } else if (arg === \"--no-config\") {\n sharedConfig.configMode = \"none\";\n } else if (arg === \"--profile\") {\n // Accepted for command compatibility. The npm fmt path prints a compact summary.\n } else if (arg === \"--help\" || arg === \"-h\") {\n options.help = true;\n } else if (!arg.startsWith(\"-\")) {\n patterns.push(arg);\n }\n }\n\n return { patterns, options, sharedConfig };\n}\n\nfunction toNativeFormatOptions(options: FmtOptions): NativeFormatOptions {\n return {\n printWidth: options.printWidth,\n print_width: options.printWidth,\n tabWidth: options.tabWidth,\n tab_width: options.tabWidth,\n useTabs: options.useTabs,\n use_tabs: options.useTabs,\n semi: options.semi,\n singleQuote: options.singleQuote,\n single_quote: options.singleQuote,\n sortAttributes: options.sortAttributes,\n sort_attributes: options.sortAttributes,\n singleAttributePerLine: options.singleAttributePerLine,\n single_attribute_per_line: options.singleAttributePerLine,\n maxAttributesPerLine: options.maxAttributesPerLine,\n max_attributes_per_line: options.maxAttributesPerLine,\n normalizeDirectiveShorthands: options.normalizeDirectiveShorthands,\n normalize_directive_shorthands: options.normalizeDirectiveShorthands,\n };\n}\n\nasync function runFmt(args: string[]): Promise<void> {\n const { patterns, options, sharedConfig } = parseFmtCommand(args);\n if (options.help) {\n printFmtUsage();\n return;\n }\n\n const config = await loadConfig(process.cwd(), {\n mode: sharedConfig.configMode,\n configFile: sharedConfig.configFile,\n env: {\n mode: process.env.NODE_ENV ?? \"development\",\n command: \"fmt\",\n },\n });\n\n if (sharedConfig.configFile && !config) {\n throw new Error(`Could not find config file: ${sharedConfig.configFile}`);\n }\n\n options.printWidth ??= config?.formatter?.printWidth;\n options.tabWidth ??= config?.formatter?.tabWidth;\n options.useTabs ??= config?.formatter?.useTabs;\n options.semi ??= config?.formatter?.semi;\n options.singleQuote ??= config?.formatter?.singleQuote;\n\n const files = collectVueFiles(patterns);\n if (files.length === 0) {\n process.stderr.write(`No Vue files found matching inputs: ${JSON.stringify(patterns)}\\n`);\n return;\n }\n\n const native = loadNative(\"fmt\");\n let changed = 0;\n let errored = 0;\n\n for (const file of files) {\n const source = readFileSync(file, \"utf8\");\n try {\n const result = native.formatSfc(source, toNativeFormatOptions(options));\n if (!result.changed) {\n continue;\n }\n changed++;\n if (options.check) {\n process.stderr.write(`Would reformat: ${displayPath(file)}\\n`);\n } else if (options.write) {\n writeFileSync(file, result.code);\n process.stderr.write(`Reformatted: ${displayPath(file)}\\n`);\n } else {\n process.stderr.write(`Would reformat: ${displayPath(file)}\\n`);\n }\n } catch (error) {\n errored++;\n process.stderr.write(\n `Error formatting ${displayPath(file)}: ${error instanceof Error ? error.message : String(error)}\\n`,\n );\n }\n }\n\n process.stderr.write(\n `\\x1b[32mOK\\x1b[0m Formatted ${files.length} Vue file(s), ${changed} changed\\n`,\n );\n\n if (errored > 0 || (options.check && changed > 0)) {\n process.exit(1);\n }\n}\n\n// ============================================================================\n// Check command\n// ============================================================================\n\ninterface NativeTypeCheckOptions {\n filename?: string;\n strict?: boolean;\n includeVirtualTs?: boolean;\n include_virtual_ts?: boolean;\n checkProps?: boolean;\n check_props?: boolean;\n checkEmits?: boolean;\n check_emits?: boolean;\n checkTemplateBindings?: boolean;\n check_template_bindings?: boolean;\n checkReactivity?: boolean;\n check_reactivity?: boolean;\n checkSetupContext?: boolean;\n check_setup_context?: boolean;\n checkInvalidExports?: boolean;\n check_invalid_exports?: boolean;\n checkFallthroughAttrs?: boolean;\n check_fallthrough_attrs?: boolean;\n}\n\ninterface NativeDeclarationOptions {\n filename?: string;\n}\n\ninterface DeclarationResult {\n code: string;\n}\n\ninterface TypeDiagnostic {\n severity: string;\n message: string;\n start: number;\n end: number;\n code?: string;\n help?: string;\n related?: Array<{\n message: string;\n start: number;\n end: number;\n filename?: string;\n }>;\n}\n\ninterface TypeCheckResult {\n diagnostics: TypeDiagnostic[];\n virtualTs?: string;\n errorCount: number;\n warningCount: number;\n analysisTimeMs?: number;\n}\n\ninterface CheckOptions {\n format?: string;\n quiet?: boolean;\n strict?: boolean;\n includeVirtualTs?: boolean;\n maxWarnings?: number;\n checkProps?: boolean;\n checkEmits?: boolean;\n checkTemplateBindings?: boolean;\n checkReactivity?: boolean;\n checkSetupContext?: boolean;\n checkInvalidExports?: boolean;\n checkFallthroughAttrs?: boolean;\n declaration?: boolean;\n declarationDir?: string;\n help?: boolean;\n}\n\ninterface ParsedCheckCommand {\n patterns: string[];\n options: CheckOptions;\n sharedConfig: SharedConfigOptions;\n}\n\ninterface CheckedFileResult {\n file: string;\n source: string;\n result: TypeCheckResult;\n}\n\ninterface EmittedDeclaration {\n file: string;\n path: string;\n}\n\nfunction parseCheckCommand(args: string[]): ParsedCheckCommand {\n const patterns: string[] = [];\n const options: CheckOptions = {};\n const sharedConfig: SharedConfigOptions = {\n configMode: \"root\",\n };\n\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n if (arg === \"--format\" || arg === \"-f\") {\n options.format = args[++i];\n } else if (arg === \"--quiet\" || arg === \"-q\") {\n options.quiet = true;\n } else if (arg === \"--strict\") {\n options.strict = true;\n } else if (arg === \"--no-strict\") {\n options.strict = false;\n } else if (arg === \"--show-virtual-ts\" || arg === \"--include-virtual-ts\") {\n options.includeVirtualTs = true;\n } else if (arg === \"--max-warnings\") {\n options.maxWarnings = Number.parseInt(args[++i], 10);\n } else if (arg === \"--no-check-props\") {\n options.checkProps = false;\n } else if (arg === \"--no-check-emits\") {\n options.checkEmits = false;\n } else if (arg === \"--no-check-template-bindings\") {\n options.checkTemplateBindings = false;\n } else if (arg === \"--no-check-reactivity\") {\n options.checkReactivity = false;\n } else if (arg === \"--no-check-setup-context\") {\n options.checkSetupContext = false;\n } else if (arg === \"--no-check-invalid-exports\") {\n options.checkInvalidExports = false;\n } else if (arg === \"--no-check-fallthrough-attrs\") {\n options.checkFallthroughAttrs = false;\n } else if (arg === \"--declaration\") {\n options.declaration = true;\n } else if (arg === \"--declaration-dir\") {\n const declarationDir = args[++i];\n if (!declarationDir) {\n throw new Error(\"Missing path after --declaration-dir\");\n }\n options.declarationDir = declarationDir;\n } else if (arg === \"--config\" || arg === \"-c\") {\n const configFile = args[++i];\n if (!configFile) {\n throw new Error(\"Missing path after --config\");\n }\n sharedConfig.configFile = configFile;\n } else if (arg === \"--no-config\") {\n sharedConfig.configMode = \"none\";\n } else if (arg === \"--help\" || arg === \"-h\") {\n options.help = true;\n } else if (arg === \"--tsconfig\" || arg === \"--corsa-path\" || arg === \"--servers\") {\n i++;\n } else if (arg === \"--socket\" || arg === \"-s\") {\n i++;\n } else if (arg === \"--profile\") {\n // Accepted for package-script compatibility with the Rust CLI.\n } else if (!arg.startsWith(\"-\")) {\n patterns.push(arg);\n }\n }\n\n return { patterns, options, sharedConfig };\n}\n\nfunction hasGlobSyntax(pattern: string): boolean {\n return pattern.includes(\"*\") || pattern.includes(\"?\") || pattern.includes(\"[\");\n}\n\nfunction normalizePath(filePath: string): string {\n return filePath.split(path.sep).join(\"/\");\n}\n\nfunction displayPath(filePath: string): string {\n const relative = path.relative(process.cwd(), filePath);\n if (relative && !relative.startsWith(\"..\") && !path.isAbsolute(relative)) {\n return normalizePath(relative);\n }\n return normalizePath(filePath);\n}\n\nfunction isVueFile(filePath: string): boolean {\n return path.extname(filePath) === \".vue\";\n}\n\nfunction collectVueFilesFromDirectory(directory: string, recursive: boolean): string[] {\n const files: string[] = [];\n const entries = readdirSync(directory, { withFileTypes: true });\n\n for (const entry of entries) {\n const entryPath = path.join(directory, entry.name);\n if (entry.isDirectory()) {\n if (entry.name === \"node_modules\" || entry.name === \".git\") {\n continue;\n }\n if (recursive) {\n files.push(...collectVueFilesFromDirectory(entryPath, true));\n }\n } else if (entry.isFile() && isVueFile(entryPath)) {\n files.push(entryPath);\n }\n }\n\n return files;\n}\n\nfunction globBase(pattern: string): string {\n const normalized = normalizePath(pattern);\n const globIndex = normalized.search(/[*?[]/);\n if (globIndex === -1) {\n return normalized;\n }\n\n const beforeGlob = normalized.slice(0, globIndex);\n const slashIndex = beforeGlob.lastIndexOf(\"/\");\n if (slashIndex === -1) {\n return \".\";\n }\n return beforeGlob.slice(0, slashIndex) || \"/\";\n}\n\nfunction globToRegExp(pattern: string): RegExp {\n const normalized = normalizePath(pattern);\n let source = \"\";\n\n for (let i = 0; i < normalized.length; i++) {\n const char = normalized[i];\n const next = normalized[i + 1];\n const afterNext = normalized[i + 2];\n\n if (char === \"*\" && next === \"*\" && afterNext === \"/\") {\n source += \"(?:.*/)?\";\n i += 2;\n } else if (char === \"*\" && next === \"*\") {\n source += \".*\";\n i++;\n } else if (char === \"*\") {\n source += \"[^/]*\";\n } else if (char === \"?\") {\n source += \"[^/]\";\n } else if (\"\\\\^$+?.()|{}[]\".includes(char)) {\n source += `\\\\${char}`;\n } else {\n source += char;\n }\n }\n\n return new RegExp(`^${source}$`);\n}\n\nfunction shouldRecurseGlob(pattern: string, base: string): boolean {\n const normalizedPattern = normalizePath(pattern);\n const normalizedBase = normalizePath(base);\n const rest =\n normalizedBase === \".\"\n ? normalizedPattern\n : normalizedPattern.slice(normalizedBase.length).replace(/^\\/+/, \"\");\n return rest.includes(\"/\");\n}\n\nfunction collectVueFilesFromGlob(pattern: string): string[] {\n const basePattern = globBase(pattern);\n const base = path.resolve(process.cwd(), basePattern);\n if (!existsSync(base)) {\n return [];\n }\n\n const isAbsolutePattern = path.isAbsolute(pattern);\n const normalizedPattern = normalizePath(isAbsolutePattern ? path.resolve(pattern) : pattern);\n const regex = globToRegExp(normalizedPattern);\n const candidates = collectVueFilesFromDirectory(base, shouldRecurseGlob(pattern, basePattern));\n\n return candidates.filter((file) => {\n const comparable = isAbsolutePattern\n ? normalizePath(file)\n : normalizePath(path.relative(process.cwd(), file));\n return regex.test(comparable);\n });\n}\n\nfunction collectVueFiles(patterns: string[]): string[] {\n const files = new Set<string>();\n const inputs = patterns.length === 0 ? [\".\"] : patterns;\n\n for (const input of inputs) {\n if (hasGlobSyntax(input)) {\n for (const file of collectVueFilesFromGlob(input)) {\n files.add(path.resolve(file));\n }\n continue;\n }\n\n const resolved = path.resolve(process.cwd(), input);\n if (!existsSync(resolved)) {\n continue;\n }\n\n const stats = statSync(resolved);\n if (stats.isDirectory()) {\n for (const file of collectVueFilesFromDirectory(resolved, true)) {\n files.add(path.resolve(file));\n }\n } else if (stats.isFile() && isVueFile(resolved)) {\n files.add(resolved);\n }\n }\n\n return Array.from(files).sort();\n}\n\nfunction commonSourceDirectory(results: CheckedFileResult[]): string {\n let common = path.dirname(results[0]?.file ?? process.cwd());\n\n for (let i = 1; i < results.length; i++) {\n const directory = path.dirname(results[i].file);\n while (common !== path.dirname(common)) {\n const relative = path.relative(common, directory);\n if (relative !== \"..\" && !relative.startsWith(`..${path.sep}`)) {\n break;\n }\n common = path.dirname(common);\n }\n }\n\n return common;\n}\n\nfunction emitCheckDeclarations(\n results: CheckedFileResult[],\n native: NativeBinding,\n options: CheckOptions,\n): EmittedDeclaration[] {\n if (!options.declaration) {\n return [];\n }\n\n if (typeof native.generateDeclaration !== \"function\") {\n throw new Error(\"The loaded native binding does not support declaration generation.\");\n }\n\n const outDir = path.resolve(process.cwd(), options.declarationDir ?? \"dist/types\");\n const sourceRoot = commonSourceDirectory(results);\n const declarations: EmittedDeclaration[] = [];\n\n for (const { file, source } of results) {\n const relative = normalizePath(path.relative(sourceRoot, file));\n const outputPath = path.join(outDir, `${relative}.d.ts`);\n mkdirSync(path.dirname(outputPath), { recursive: true });\n\n const declaration = native.generateDeclaration(source, { filename: file });\n writeFileSync(outputPath, declaration.code);\n declarations.push({\n file: displayPath(outputPath),\n path: outputPath,\n });\n }\n\n return declarations;\n}\n\nfunction lineStarts(source: string): number[] {\n const starts = [0];\n for (let i = 0; i < source.length; i++) {\n if (source.charCodeAt(i) === 10) {\n starts.push(i + 1);\n }\n }\n return starts;\n}\n\nfunction offsetToLineColumn(starts: number[], offset: number): { line: number; column: number } {\n let low = 0;\n let high = starts.length - 1;\n while (low <= high) {\n const mid = Math.floor((low + high) / 2);\n if (starts[mid] <= offset) {\n low = mid + 1;\n } else {\n high = mid - 1;\n }\n }\n\n const lineIndex = Math.max(0, high);\n return {\n line: lineIndex + 1,\n column: offset - starts[lineIndex] + 1,\n };\n}\n\nfunction toNativeTypeCheckOptions(file: string, options: CheckOptions): NativeTypeCheckOptions {\n return {\n filename: file,\n strict: options.strict,\n includeVirtualTs: options.includeVirtualTs,\n include_virtual_ts: options.includeVirtualTs,\n checkProps: options.checkProps,\n check_props: options.checkProps,\n checkEmits: options.checkEmits,\n check_emits: options.checkEmits,\n checkTemplateBindings: options.checkTemplateBindings,\n check_template_bindings: options.checkTemplateBindings,\n checkReactivity: options.checkReactivity,\n check_reactivity: options.checkReactivity,\n checkSetupContext: options.checkSetupContext,\n check_setup_context: options.checkSetupContext,\n checkInvalidExports: options.checkInvalidExports,\n check_invalid_exports: options.checkInvalidExports,\n checkFallthroughAttrs: options.checkFallthroughAttrs,\n check_fallthrough_attrs: options.checkFallthroughAttrs,\n };\n}\n\nfunction renderCheckText(\n results: CheckedFileResult[],\n options: CheckOptions,\n timeMs: number,\n declarations: EmittedDeclaration[] = [],\n): void {\n let totalErrors = 0;\n let totalWarnings = 0;\n\n for (const { file, source, result } of results) {\n totalErrors += result.errorCount;\n totalWarnings += result.warningCount;\n\n if (options.includeVirtualTs && result.virtualTs) {\n process.stderr.write(`\\n=== ${displayPath(file)} ===\\n${result.virtualTs}\\n`);\n }\n\n if (options.quiet || result.diagnostics.length === 0) {\n continue;\n }\n\n const starts = lineStarts(source);\n process.stdout.write(`\\n\\x1b[4m${displayPath(file)}\\x1b[0m\\n`);\n for (const diagnostic of result.diagnostics) {\n const color = diagnostic.severity === \"error\" ? \"\\x1b[31m\" : \"\\x1b[33m\";\n const location = offsetToLineColumn(starts, diagnostic.start);\n const code = diagnostic.code ? ` [${diagnostic.code}]` : \"\";\n process.stdout.write(\n ` ${color}${diagnostic.severity}:${location.line}:${location.column}\\x1b[0m${code} ${diagnostic.message}\\n`,\n );\n if (diagnostic.help) {\n process.stdout.write(` help: ${diagnostic.help}\\n`);\n }\n }\n }\n\n const status = totalErrors > 0 ? \"\\x1b[31mERR\\x1b[0m\" : \"\\x1b[32mOK\\x1b[0m\";\n process.stdout.write(\n `\\n${status} Type checked ${results.length} Vue files in ${timeMs.toFixed(2)}ms\\n`,\n );\n if (totalErrors > 0) {\n process.stdout.write(` \\x1b[31m${totalErrors} error(s)\\x1b[0m\\n`);\n } else {\n process.stdout.write(\" \\x1b[32mNo type errors found!\\x1b[0m\\n\");\n }\n if (totalWarnings > 0) {\n process.stdout.write(` \\x1b[33m${totalWarnings} warning(s)\\x1b[0m\\n`);\n }\n if (declarations.length > 0) {\n process.stdout.write(` \\x1b[32mEmitted ${declarations.length} declaration file(s)\\x1b[0m\\n`);\n }\n}\n\nasync function runCheck(args: string[]): Promise<void> {\n const { patterns, options, sharedConfig } = parseCheckCommand(args);\n if (options.help) {\n printCheckUsage();\n return;\n }\n\n const config = await loadConfig(process.cwd(), {\n mode: sharedConfig.configMode,\n configFile: sharedConfig.configFile,\n env: {\n mode: process.env.NODE_ENV ?? \"development\",\n command: \"check\",\n },\n });\n\n if (sharedConfig.configFile && !config) {\n throw new Error(`Could not find config file: ${sharedConfig.configFile}`);\n }\n\n if (config?.typeChecker?.enabled === false) {\n process.stderr.write(\n \"[vize] Skipping check because typeChecker.enabled is false in vize.config.\\n\",\n );\n return;\n }\n\n options.strict ??= config?.typeChecker?.strict;\n options.checkProps ??= config?.typeChecker?.checkProps;\n options.checkEmits ??= config?.typeChecker?.checkEmits;\n options.checkTemplateBindings ??= config?.typeChecker?.checkTemplateBindings;\n\n const files = collectVueFiles(patterns);\n if (files.length === 0) {\n process.stderr.write(`No Vue files found matching inputs: ${JSON.stringify(patterns)}\\n`);\n return;\n }\n\n const native = loadNative(\"check\");\n const start = performance.now();\n const results = files.map((file) => {\n const source = readFileSync(file, \"utf8\");\n return {\n file,\n source,\n result: native.typeCheck(source, toNativeTypeCheckOptions(file, options)),\n };\n });\n const timeMs = performance.now() - start;\n const declarations = emitCheckDeclarations(results, native, options);\n const totalErrors = results.reduce((sum, { result }) => sum + result.errorCount, 0);\n const totalWarnings = results.reduce((sum, { result }) => sum + result.warningCount, 0);\n\n if (options.format === \"json\") {\n process.stdout.write(\n `${JSON.stringify(\n {\n files: results.map(({ file, result }) => ({\n file: displayPath(file),\n diagnostics: result.diagnostics,\n virtualTs: result.virtualTs,\n })),\n errorCount: totalErrors,\n warningCount: totalWarnings,\n fileCount: results.length,\n declarations: declarations.map(({ file }) => file),\n },\n null,\n 2,\n )}\\n`,\n );\n } else {\n renderCheckText(results, options, timeMs, declarations);\n }\n\n if (totalErrors > 0) {\n process.exit(1);\n }\n\n if (options.maxWarnings !== undefined && totalWarnings > options.maxWarnings) {\n process.stderr.write(`\\nToo many warnings (${totalWarnings} > max ${options.maxWarnings})\\n`);\n process.exit(1);\n }\n}\n\nasync function runLint(args: string[]): Promise<void> {\n const { patterns, options, sharedConfig } = parseLintCommand(args);\n const config = await loadConfig(process.cwd(), {\n mode: sharedConfig.configMode,\n configFile: sharedConfig.configFile,\n env: {\n mode: process.env.NODE_ENV ?? \"development\",\n command: \"lint\",\n },\n });\n\n if (sharedConfig.configFile && !config) {\n throw new Error(`Could not find config file: ${sharedConfig.configFile}`);\n }\n\n if (config?.linter?.enabled === false) {\n process.stderr.write(\"[vize] Skipping lint because linter.enabled is false in vize.config.\\n\");\n return;\n }\n\n options.preset ??= config?.linter?.preset;\n\n if (patterns.length === 0) {\n patterns.push(\".\");\n }\n\n const native = loadNative(\"lint\");\n const result = native.lint(patterns, {\n format: options.format,\n max_warnings: options.maxWarnings,\n quiet: options.quiet,\n fix: options.fix,\n help_level: options.helpLevel,\n preset: options.preset,\n });\n\n if (result.output) {\n process.stdout.write(result.output);\n if (!result.output.endsWith(\"\\n\")) {\n process.stdout.write(\"\\n\");\n }\n }\n\n if (options.fix) {\n process.stderr.write(\"\\nNote: --fix is not yet implemented\\n\");\n }\n\n if (result.errorCount > 0) {\n process.exit(1);\n }\n\n if (options.maxWarnings !== undefined && result.warningCount > options.maxWarnings) {\n process.stderr.write(\n `\\nToo many warnings (${result.warningCount} > max ${options.maxWarnings})\\n`,\n );\n process.exit(1);\n }\n}\n\n// ============================================================================\n// Upgrade command\n// ============================================================================\n\ntype PackageManager = \"bun\" | \"npm\" | \"pnpm\" | \"vp\" | \"yarn\";\n\ninterface UpgradeOptions {\n packageManager?: PackageManager;\n global?: boolean;\n dryRun?: boolean;\n help?: boolean;\n}\n\nfunction parseUpgradeCommand(args: string[]): UpgradeOptions {\n const options: UpgradeOptions = {};\n\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n if (arg === \"--package-manager\") {\n const packageManager = args[++i];\n if (\n packageManager === \"bun\" ||\n packageManager === \"npm\" ||\n packageManager === \"pnpm\" ||\n packageManager === \"vp\" ||\n packageManager === \"yarn\"\n ) {\n options.packageManager = packageManager;\n }\n } else if (arg === \"--global\" || arg === \"-g\") {\n options.global = true;\n } else if (arg === \"--dry-run\") {\n options.dryRun = true;\n } else if (arg === \"--help\" || arg === \"-h\") {\n options.help = true;\n }\n }\n\n return options;\n}\n\nfunction readCwdPackageJson(): {\n packageManager?: string;\n dependencies?: Record<string, string>;\n devDependencies?: Record<string, string>;\n} | null {\n const packageJsonPath = path.join(process.cwd(), \"package.json\");\n if (!existsSync(packageJsonPath)) {\n return null;\n }\n return JSON.parse(readFileSync(packageJsonPath, \"utf8\"));\n}\n\nfunction detectPackageManager(explicit?: PackageManager): PackageManager {\n if (explicit) {\n return explicit;\n }\n\n const userAgent = process.env.npm_config_user_agent ?? \"\";\n if (userAgent.startsWith(\"pnpm\")) {\n return \"pnpm\";\n }\n if (userAgent.startsWith(\"yarn\")) {\n return \"yarn\";\n }\n if (userAgent.startsWith(\"bun\")) {\n return \"bun\";\n }\n if (userAgent.startsWith(\"npm\")) {\n return \"npm\";\n }\n\n const packageManager = readCwdPackageJson()?.packageManager;\n if (packageManager?.startsWith(\"pnpm\")) {\n return \"pnpm\";\n }\n if (packageManager?.startsWith(\"yarn\")) {\n return \"yarn\";\n }\n if (packageManager?.startsWith(\"bun\")) {\n return \"bun\";\n }\n return \"npm\";\n}\n\nfunction buildUpgradeCommand(\n packageManager: PackageManager,\n options: UpgradeOptions,\n): { command: string; args: string[] } {\n const packageJson = readCwdPackageJson();\n const saveDev = !packageJson?.dependencies?.vize;\n const packageSpec = \"vize@latest\";\n\n if (packageManager === \"vp\") {\n return {\n command: \"vp\",\n args: [\"install\", ...(options.global ? [\"-g\"] : saveDev ? [\"-D\"] : []), packageSpec],\n };\n }\n if (packageManager === \"pnpm\") {\n return {\n command: \"pnpm\",\n args: [\"add\", ...(options.global ? [\"-g\"] : saveDev ? [\"-D\"] : []), packageSpec],\n };\n }\n if (packageManager === \"yarn\") {\n return {\n command: \"yarn\",\n args: options.global\n ? [\"global\", \"add\", packageSpec]\n : [\"add\", ...(saveDev ? [\"-D\"] : []), packageSpec],\n };\n }\n if (packageManager === \"bun\") {\n return {\n command: \"bun\",\n args: [\"add\", ...(options.global ? [\"-g\"] : saveDev ? [\"-d\"] : []), packageSpec],\n };\n }\n return {\n command: \"npm\",\n args: [\"install\", ...(options.global ? [\"-g\"] : saveDev ? [\"-D\"] : []), packageSpec],\n };\n}\n\nfunction runUpgrade(args: string[]): void {\n const options = parseUpgradeCommand(args);\n if (options.help) {\n printUpgradeUsage();\n return;\n }\n\n const packageManager = detectPackageManager(options.packageManager);\n const command = buildUpgradeCommand(packageManager, options);\n\n if (options.dryRun) {\n process.stdout.write(`${command.command} ${command.args.join(\" \")}\\n`);\n return;\n }\n\n const result = spawnSync(command.command, command.args, {\n stdio: \"inherit\",\n cwd: process.cwd(),\n env: process.env,\n });\n\n if (result.error) {\n throw result.error;\n }\n\n process.exit(result.status ?? 1);\n}\n\n// ============================================================================\n// Ready command\n// ============================================================================\n\ninterface ReadyOptions {\n output: string;\n ssr?: boolean;\n scriptExt: \"preserve\" | \"downcompile\";\n help?: boolean;\n}\n\ninterface ParsedReadyCommand {\n patterns: string[];\n options: ReadyOptions;\n}\n\nfunction parseReadyCommand(args: string[]): ParsedReadyCommand {\n const patterns: string[] = [];\n const options: ReadyOptions = {\n output: \"./dist\",\n scriptExt: \"downcompile\",\n };\n\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n if (arg === \"--output\" || arg === \"-o\") {\n options.output = args[++i] ?? options.output;\n } else if (arg === \"--ssr\") {\n options.ssr = true;\n } else if (arg === \"--script-ext\") {\n const scriptExt = args[++i];\n if (scriptExt === \"preserve\" || scriptExt === \"downcompile\") {\n options.scriptExt = scriptExt;\n }\n } else if (arg === \"--help\" || arg === \"-h\") {\n options.help = true;\n } else if (!arg.startsWith(\"-\")) {\n patterns.push(arg);\n }\n }\n\n return { patterns, options };\n}\n\nasync function runReady(args: string[]): Promise<void> {\n const { patterns, options } = parseReadyCommand(args);\n if (options.help) {\n printReadyUsage();\n return;\n }\n\n process.stderr.write(\"vize ready: fmt\\n\");\n await runFmt([\"--write\", ...patterns]);\n\n process.stderr.write(\"vize ready: lint\\n\");\n await runLint(patterns);\n\n process.stderr.write(\"vize ready: check\\n\");\n await runCheck(patterns);\n\n process.stderr.write(\"vize ready: build\\n\");\n await runBuild([\n \"--output\",\n options.output,\n \"--script-ext\",\n options.scriptExt,\n ...(options.ssr ? [\"--ssr\"] : []),\n ...patterns,\n ]);\n}\n\n// ============================================================================\n// Command router\n// ============================================================================\n\nconst NAPI_COMMANDS = new Set([\"build\", \"check\", \"fmt\", \"lint\"]);\nconst JS_COMMANDS = new Set([\"musea\", \"ready\", \"upgrade\"]);\n\nasync function main(): Promise<void> {\n const args = process.argv.slice(2);\n const command = args[0];\n\n if (!command || command === \"--help\" || command === \"-h\") {\n printUsage();\n process.exit(1);\n }\n\n if (NAPI_COMMANDS.has(command)) {\n const commandArgs = args.slice(1);\n switch (command) {\n case \"build\":\n await runBuild(commandArgs);\n break;\n case \"check\":\n await runCheck(commandArgs);\n break;\n case \"fmt\":\n await runFmt(commandArgs);\n break;\n case \"lint\":\n await runLint(commandArgs);\n break;\n }\n } else if (JS_COMMANDS.has(command)) {\n const commandArgs = args.slice(1);\n switch (command) {\n case \"musea\":\n runMusea(commandArgs);\n break;\n case \"ready\":\n await runReady(commandArgs);\n break;\n case \"upgrade\":\n runUpgrade(commandArgs);\n break;\n }\n } else {\n printUsage();\n console.error(`Unknown command: ${command}`);\n console.error(\n \"For commands not yet available via NAPI, install from source: cargo install vize\",\n );\n process.exit(1);\n }\n}\n\nif (!import.meta.vitest) {\n void main().catch((error) => {\n console.error(error instanceof Error ? error.message : String(error));\n process.exit(1);\n });\n}\n\nif (import.meta.vitest) {\n const { describe, expect, it } = import.meta.vitest;\n\n describe(\"shouldPreferWorkspaceBinding\", () => {\n it(\"detects the local workspace native package\", () => {\n expect(\n shouldPreferWorkspaceBinding(\n `${path.sep}Users${path.sep}example${path.sep}repo${path.sep}npm${path.sep}vize-native${path.sep}index.js`,\n ),\n ).toBe(true);\n });\n\n it(\"ignores published platform packages\", () => {\n expect(\n shouldPreferWorkspaceBinding(\n `${path.sep}repo${path.sep}node_modules${path.sep}.pnpm${path.sep}@vizejs+native-darwin-arm64${path.sep}node_modules${path.sep}@vizejs${path.sep}native-darwin-arm64${path.sep}index.js`,\n ),\n ).toBe(false);\n });\n\n it(\"returns false when the fallback package cannot be resolved\", () => {\n expect(shouldPreferWorkspaceBinding(null)).toBe(false);\n });\n });\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"cli.mjs","names":[],"sources":["../src/cli.ts"],"sourcesContent":["import { existsSync, mkdirSync, readFileSync, readdirSync, statSync, writeFileSync } from \"node:fs\";\nimport { spawnSync } from \"node:child_process\";\nimport * as path from \"node:path\";\nimport { createRequire } from \"node:module\";\nimport { pathToFileURL } from \"node:url\";\nimport { loadConfig } from \"./config.js\";\n\nconst require = createRequire(import.meta.url);\nconst WORKSPACE_BINDING_PATH = \"../../vize-native\";\nconst BUILD_BATCH_SIZE = 128;\nconst SKIPPED_VUE_FILE_DIRECTORIES = new Set([\n \"node_modules\",\n \"dist\",\n \".git\",\n \".nuxt\",\n \".output\",\n \".nitro\",\n \"coverage\",\n]);\n\n// ============================================================================\n// Native binding loader (oxlint pattern)\n// ============================================================================\n\nfunction isMusl(): boolean {\n const report = process.report?.getReport();\n if (typeof report === \"object\" && report !== null && \"header\" in report) {\n const header = (report as { header: { glibcVersionRuntime?: string } }).header;\n return !header.glibcVersionRuntime;\n }\n try {\n const lddPath = require(\"child_process\").execSync(\"which ldd\").toString().trim();\n return readFileSync(lddPath, \"utf8\").includes(\"musl\");\n } catch {\n return true;\n }\n}\n\nfunction getBindingPackageName(): string {\n const { platform, arch } = process;\n\n switch (platform) {\n case \"darwin\":\n switch (arch) {\n case \"x64\":\n return \"@vizejs/native-darwin-x64\";\n case \"arm64\":\n return \"@vizejs/native-darwin-arm64\";\n default:\n throw new Error(`Unsupported architecture on macOS: ${arch}`);\n }\n case \"win32\":\n switch (arch) {\n case \"x64\":\n return \"@vizejs/native-win32-x64-msvc\";\n case \"arm64\":\n return \"@vizejs/native-win32-arm64-msvc\";\n default:\n throw new Error(`Unsupported architecture on Windows: ${arch}`);\n }\n case \"linux\":\n switch (arch) {\n case \"x64\":\n return isMusl() ? \"@vizejs/native-linux-x64-musl\" : \"@vizejs/native-linux-x64-gnu\";\n case \"arm64\":\n return isMusl() ? \"@vizejs/native-linux-arm64-musl\" : \"@vizejs/native-linux-arm64-gnu\";\n default:\n throw new Error(`Unsupported architecture on Linux: ${arch}`);\n }\n default:\n throw new Error(`Unsupported OS: ${platform}, architecture: ${arch}`);\n }\n}\n\ninterface NativeBinding {\n compileSfcBatchWithResults: (\n files: BatchFileInput[],\n options?: NativeBuildOptions,\n ) => BatchCompileResult;\n formatSfc: (source: string, options?: NativeFormatOptions) => FormatResult;\n typeCheck: (source: string, options?: NativeTypeCheckOptions) => TypeCheckResult;\n generateDeclaration?: (source: string, options?: NativeDeclarationOptions) => DeclarationResult;\n lint: (\n patterns: string[],\n options?: {\n format?: string;\n max_warnings?: number;\n quiet?: boolean;\n fix?: boolean;\n help_level?: string;\n preset?: string;\n },\n ) => LintResult;\n}\n\ntype NativeCommand = \"build\" | \"check\" | \"fmt\" | \"lint\";\n\nconst REQUIRED_BINDINGS: Record<NativeCommand, keyof NativeBinding> = {\n build: \"compileSfcBatchWithResults\",\n check: \"typeCheck\",\n fmt: \"formatSfc\",\n lint: \"lint\",\n};\n\nfunction loadNative(command: NativeCommand): NativeBinding {\n const attemptedPackages = getAttemptedPackages();\n let lastError: unknown = null;\n const requiredBinding = REQUIRED_BINDINGS[command];\n\n for (const packageName of attemptedPackages) {\n try {\n const binding = require(packageName) as Partial<NativeBinding>;\n if (typeof binding[requiredBinding] !== \"function\") {\n throw new Error(`${packageName} does not expose the ${command} binding.`);\n }\n return binding as NativeBinding;\n } catch (error) {\n lastError = error;\n }\n }\n\n console.error(`Failed to load native binding. Tried: ${attemptedPackages.join(\", \")}`);\n console.error(\"Try reinstalling: npm install vize\");\n throw lastError instanceof Error ? lastError : new Error(\"Failed to load native binding\");\n}\n\nfunction getAttemptedPackages(): readonly string[] {\n const platformBindingPackage = getBindingPackageName();\n return shouldPreferWorkspaceBinding(resolveWorkspaceBindingPath())\n ? [WORKSPACE_BINDING_PATH, platformBindingPackage]\n : [platformBindingPackage, WORKSPACE_BINDING_PATH];\n}\n\nfunction resolveWorkspaceBindingPath(): string | null {\n try {\n return require.resolve(WORKSPACE_BINDING_PATH);\n } catch {\n return null;\n }\n}\n\nfunction shouldPreferWorkspaceBinding(resolvedPath: string | null): boolean {\n const override = process.env.VIZE_PREFER_WORKSPACE_BINDING;\n if (override === \"1\" || override === \"true\") {\n return true;\n }\n if (override === \"0\" || override === \"false\") {\n return false;\n }\n if (resolvedPath == null) {\n return false;\n }\n\n return resolvedPath.includes(`${path.sep}npm${path.sep}vize-native${path.sep}`);\n}\n\n// ============================================================================\n// Lint command\n// ============================================================================\n\ninterface LintOptions {\n format?: string;\n maxWarnings?: number;\n quiet?: boolean;\n fix?: boolean;\n helpLevel?: string;\n preset?: string;\n}\n\ninterface LintResult {\n output: string;\n errorCount: number;\n warningCount: number;\n fileCount: number;\n timeMs: number;\n}\n\ninterface SharedConfigOptions {\n configFile?: string;\n configMode: \"root\" | \"none\";\n}\n\ninterface ParsedLintCommand {\n patterns: string[];\n options: LintOptions;\n sharedConfig: SharedConfigOptions;\n}\n\nfunction printUsage(): void {\n console.error(\"Usage: vize <command> [options]\");\n console.error(\"Commands: build, fmt, check, lint, upgrade, ready, musea\");\n}\n\nfunction printBuildUsage(): void {\n console.error(\"Usage: vize build [options] [files-or-directories]\");\n console.error(\"Options:\");\n console.error(\" -o, --output <dir> Output directory\");\n console.error(\" -f, --format <js|json|stats> Output format\");\n console.error(\" --ssr Enable SSR compilation\");\n console.error(\" --script-ext <mode> preserve or downcompile\");\n console.error(\" -j, --threads <number> Worker thread count\");\n}\n\nfunction printFmtUsage(): void {\n console.error(\"Usage: vize fmt [options] [files-or-directories]\");\n console.error(\"Options:\");\n console.error(\" --check Exit with an error if files need formatting\");\n console.error(\" -w, --write Write formatted output\");\n console.error(\" --single-quote Use single quotes\");\n console.error(\" --print-width <number> Maximum line width\");\n console.error(\" --tab-width <number> Indentation width\");\n console.error(\" --use-tabs Indent with tabs\");\n console.error(\" --no-semi Omit semicolons\");\n}\n\nfunction printCheckUsage(): void {\n console.error(\"Usage: vize check [options] [files-or-directories]\");\n console.error(\"Options:\");\n console.error(\" -f, --format <text|json> Output format\");\n console.error(\" -q, --quiet Show summary only\");\n console.error(\" --strict Enable strict checks\");\n console.error(\" --show-virtual-ts Print generated Virtual TS\");\n console.error(\" --declaration Emit Vue component .d.ts files\");\n console.error(\" --declaration-dir <dir> Output directory for declarations\");\n console.error(\" --max-warnings <number> Fail when warnings exceed the limit\");\n console.error(\" -c, --config <path> Use a specific vize config file\");\n console.error(\" --no-config Disable config discovery\");\n console.error(\"\");\n console.error(\n \"Note: npm `vize check` uses the packaged NAPI checker. Install the Rust CLI for project-backed Corsa diagnostics.\",\n );\n}\n\nfunction printUpgradeUsage(): void {\n console.error(\"Usage: vize upgrade [options]\");\n console.error(\"Options:\");\n console.error(\" --package-manager <name> npm, pnpm, yarn, bun, or vp\");\n console.error(\" -g, --global Upgrade the global installation\");\n console.error(\" --dry-run Print the command without running it\");\n}\n\nfunction printReadyUsage(): void {\n console.error(\"Usage: vize ready [options] [files-or-directories]\");\n console.error(\"Runs: fmt --write -> lint -> check -> build\");\n console.error(\"Options:\");\n console.error(\" -o, --output <dir> Output directory for build\");\n console.error(\" --ssr Enable SSR compilation for build\");\n console.error(\" --script-ext <mode> preserve or downcompile\");\n}\n\nfunction resolvePackageBinaryFromCwd(packageName: string, binName: string = packageName): string {\n const cwdRequire = createRequire(pathToFileURL(path.join(process.cwd(), \"package.json\")).href);\n const packageJsonPath = cwdRequire.resolve(`${packageName}/package.json`);\n const packageJson = JSON.parse(readFileSync(packageJsonPath, \"utf8\")) as {\n bin?: string | Record<string, string>;\n };\n\n const bin = typeof packageJson.bin === \"string\" ? packageJson.bin : packageJson.bin?.[binName];\n\n if (!bin) {\n throw new Error(`Could not resolve binary '${binName}' from package '${packageName}'`);\n }\n\n return path.resolve(path.dirname(packageJsonPath), bin);\n}\n\nfunction runMusea(args: string[]): void {\n const isHelp = args.includes(\"--help\") || args.includes(\"-h\");\n if (isHelp) {\n console.error(\"Usage: vize musea [--build] [...vite options]\");\n console.error(\" --build Run `vite build` instead of `vite dev`\");\n return;\n }\n\n const isBuild = args.includes(\"--build\");\n const viteArgs = args.filter((arg) => arg !== \"--build\");\n const viteCommand = isBuild ? \"build\" : \"dev\";\n const viteBin = resolvePackageBinaryFromCwd(\"vite\");\n const result = spawnSync(process.execPath, [viteBin, viteCommand, ...viteArgs], {\n stdio: \"inherit\",\n cwd: process.cwd(),\n env: process.env,\n });\n\n if (result.error) {\n throw result.error;\n }\n\n process.exit(result.status ?? 1);\n}\n\nfunction parseLintCommand(args: string[]): ParsedLintCommand {\n const patterns: string[] = [];\n const options: LintOptions = {};\n const sharedConfig: SharedConfigOptions = {\n configMode: \"root\",\n };\n\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n if (arg === \"--format\" || arg === \"-f\") {\n options.format = args[++i];\n } else if (arg === \"--max-warnings\") {\n options.maxWarnings = Number.parseInt(args[++i], 10);\n } else if (arg === \"--quiet\" || arg === \"-q\") {\n options.quiet = true;\n } else if (arg === \"--fix\") {\n options.fix = true;\n } else if (arg === \"--help-level\") {\n options.helpLevel = args[++i];\n } else if (arg === \"--preset\") {\n options.preset = args[++i];\n } else if (arg === \"--config\" || arg === \"-c\") {\n const configFile = args[++i];\n if (!configFile) {\n throw new Error(\"Missing path after --config\");\n }\n sharedConfig.configFile = configFile;\n } else if (arg === \"--no-config\") {\n sharedConfig.configMode = \"none\";\n } else if (!arg.startsWith(\"-\")) {\n patterns.push(arg);\n }\n }\n\n return { patterns, options, sharedConfig };\n}\n\n// ============================================================================\n// Build command\n// ============================================================================\n\ninterface NativeBuildOptions {\n ssr?: boolean;\n vapor?: boolean;\n customRenderer?: boolean;\n custom_renderer?: boolean;\n isTs?: boolean;\n is_ts?: boolean;\n threads?: number;\n}\n\ninterface BatchFileInput {\n path: string;\n source: string;\n}\n\ninterface MacroArtifact {\n kind: string;\n name: string;\n source: string;\n content: string;\n moduleCode?: string;\n start: number;\n end: number;\n}\n\ninterface BatchFileResult {\n path: string;\n code: string;\n css?: string;\n errors: string[];\n warnings: string[];\n scopeId?: string;\n scope_id?: string;\n hasScoped?: boolean;\n has_scoped?: boolean;\n macroArtifacts?: MacroArtifact[];\n macro_artifacts?: MacroArtifact[];\n}\n\ninterface BatchCompileResult {\n results: BatchFileResult[];\n successCount?: number;\n success_count?: number;\n failedCount?: number;\n failed_count?: number;\n timeMs?: number;\n time_ms?: number;\n}\n\ninterface BuildOptions {\n output: string;\n format: \"js\" | \"json\" | \"stats\";\n ssr?: boolean;\n vapor?: boolean;\n customRenderer?: boolean;\n scriptExt: \"preserve\" | \"downcompile\";\n threads?: number;\n help?: boolean;\n}\n\ninterface ParsedBuildCommand {\n patterns: string[];\n options: BuildOptions;\n sharedConfig: SharedConfigOptions;\n}\n\nfunction parseBuildCommand(args: string[]): ParsedBuildCommand {\n const patterns: string[] = [];\n const options: BuildOptions = {\n output: \"./dist\",\n format: \"js\",\n scriptExt: \"downcompile\",\n };\n const sharedConfig: SharedConfigOptions = {\n configMode: \"root\",\n };\n\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n if (arg === \"--output\" || arg === \"-o\") {\n options.output = args[++i] ?? options.output;\n } else if (arg === \"--format\" || arg === \"-f\") {\n const format = args[++i];\n if (format === \"js\" || format === \"json\" || format === \"stats\") {\n options.format = format;\n }\n } else if (arg === \"--ssr\") {\n options.ssr = true;\n } else if (arg === \"--vapor\") {\n options.vapor = true;\n } else if (arg === \"--custom-renderer\") {\n options.customRenderer = true;\n } else if (arg === \"--script-ext\") {\n const scriptExt = args[++i];\n if (scriptExt === \"preserve\" || scriptExt === \"downcompile\") {\n options.scriptExt = scriptExt;\n }\n } else if (arg === \"--threads\" || arg === \"-j\") {\n options.threads = Number.parseInt(args[++i], 10);\n } else if (arg === \"--config\" || arg === \"-c\") {\n const configFile = args[++i];\n if (!configFile) {\n throw new Error(\"Missing path after --config\");\n }\n sharedConfig.configFile = configFile;\n } else if (arg === \"--no-config\") {\n sharedConfig.configMode = \"none\";\n } else if (arg === \"--profile\" || arg === \"--continue-on-error\") {\n // Accepted for command compatibility. The npm build path prints a compact summary.\n } else if (arg === \"--help\" || arg === \"-h\") {\n options.help = true;\n } else if (!arg.startsWith(\"-\")) {\n patterns.push(arg);\n }\n }\n\n return { patterns, options, sharedConfig };\n}\n\nfunction getScriptLang(source: string): string {\n const match = source.match(/<script\\b[^>]*\\blang=[\"']([^\"']+)[\"']/i);\n return match?.[1] ?? \"js\";\n}\n\nfunction getOutputExtension(source: string, scriptExt: BuildOptions[\"scriptExt\"]): string {\n if (scriptExt === \"downcompile\") {\n return \"js\";\n }\n const lang = getScriptLang(source);\n return lang === \"ts\" || lang === \"tsx\" || lang === \"jsx\" ? lang : \"js\";\n}\n\nfunction outputFileName(file: string, extension: string): string {\n return path.basename(file).replace(/\\.vue$/i, `.${extension}`);\n}\n\nfunction toNativeBuildOptions(options: BuildOptions): NativeBuildOptions {\n const isTs = options.scriptExt === \"preserve\";\n return {\n ssr: options.ssr,\n vapor: options.vapor,\n customRenderer: options.customRenderer,\n custom_renderer: options.customRenderer,\n isTs,\n is_ts: isTs,\n threads: options.threads,\n };\n}\n\nasync function runBuild(args: string[]): Promise<void> {\n const { patterns, options, sharedConfig } = parseBuildCommand(args);\n if (options.help) {\n printBuildUsage();\n return;\n }\n\n const config = await loadConfig(process.cwd(), {\n mode: sharedConfig.configMode,\n configFile: sharedConfig.configFile,\n env: {\n mode: process.env.NODE_ENV ?? \"development\",\n command: \"build\",\n },\n });\n\n if (sharedConfig.configFile && !config) {\n throw new Error(`Could not find config file: ${sharedConfig.configFile}`);\n }\n\n options.ssr ??= config?.compiler?.ssr;\n options.vapor ??= config?.compiler?.vapor;\n options.customRenderer ??= config?.compiler?.customRenderer;\n if (config?.compiler?.scriptExt === \"ts\") {\n options.scriptExt = \"preserve\";\n } else if (config?.compiler?.scriptExt === \"js\") {\n options.scriptExt = \"downcompile\";\n }\n\n const files = collectVueFiles(patterns);\n if (files.length === 0) {\n process.stderr.write(`No Vue files found matching inputs: ${JSON.stringify(patterns)}\\n`);\n process.exit(1);\n }\n\n const native = loadNative(\"build\");\n const startedAt = performance.now();\n\n if (options.format !== \"stats\") {\n mkdirSync(options.output, { recursive: true });\n }\n\n let nativeTimeMs = 0;\n let failed = 0;\n let success = 0;\n\n for (let start = 0; start < files.length; start += BUILD_BATCH_SIZE) {\n const inputs = files.slice(start, start + BUILD_BATCH_SIZE).map((file) => ({\n path: file,\n source: readFileSync(file, \"utf8\"),\n }));\n const sourceByPath = new Map(inputs.map((input) => [input.path, input.source]));\n const chunkStartedAt = performance.now();\n const result = native.compileSfcBatchWithResults(inputs, toNativeBuildOptions(options));\n nativeTimeMs += result.timeMs ?? result.time_ms ?? performance.now() - chunkStartedAt;\n const results = [...result.results].sort((left, right) => left.path.localeCompare(right.path));\n\n for (const fileResult of results) {\n const source = sourceByPath.get(fileResult.path) ?? \"\";\n for (const warning of fileResult.warnings) {\n process.stderr.write(`warning: ${displayPath(fileResult.path)} ${warning}\\n`);\n }\n for (const error of fileResult.errors) {\n process.stderr.write(`error: ${displayPath(fileResult.path)} ${error}\\n`);\n }\n\n if (fileResult.errors.length > 0 || options.format === \"stats\") {\n continue;\n }\n\n const extension =\n options.format === \"json\" ? \"json\" : getOutputExtension(source, options.scriptExt);\n const outputPath = path.join(options.output, outputFileName(fileResult.path, extension));\n const content =\n options.format === \"json\" ? JSON.stringify(fileResult, null, 2) : fileResult.code;\n writeFileSync(outputPath, content);\n }\n\n const chunkFailed =\n result.failedCount ?? result.failed_count ?? results.filter((r) => r.errors.length).length;\n failed += chunkFailed;\n success += result.successCount ?? result.success_count ?? results.length - chunkFailed;\n }\n\n const timeMs = nativeTimeMs || performance.now() - startedAt;\n process.stderr.write(\n `\\x1b[32mOK\\x1b[0m Built ${success} Vue file(s) in ${timeMs.toFixed(2)}ms\\n`,\n );\n\n if (failed > 0) {\n process.stderr.write(`\\x1b[31mERR\\x1b[0m ${failed} file(s) failed\\n`);\n process.exit(1);\n }\n}\n\n// ============================================================================\n// Format command\n// ============================================================================\n\ninterface NativeFormatOptions {\n printWidth?: number;\n print_width?: number;\n tabWidth?: number;\n tab_width?: number;\n useTabs?: boolean;\n use_tabs?: boolean;\n semi?: boolean;\n singleQuote?: boolean;\n single_quote?: boolean;\n sortAttributes?: boolean;\n sort_attributes?: boolean;\n singleAttributePerLine?: boolean;\n single_attribute_per_line?: boolean;\n maxAttributesPerLine?: number;\n max_attributes_per_line?: number;\n normalizeDirectiveShorthands?: boolean;\n normalize_directive_shorthands?: boolean;\n}\n\ninterface FormatResult {\n code: string;\n changed: boolean;\n}\n\ninterface FmtOptions extends NativeFormatOptions {\n check?: boolean;\n write?: boolean;\n help?: boolean;\n}\n\ninterface ParsedFmtCommand {\n patterns: string[];\n options: FmtOptions;\n sharedConfig: SharedConfigOptions;\n}\n\nfunction parseFmtCommand(args: string[]): ParsedFmtCommand {\n const patterns: string[] = [];\n const options: FmtOptions = {};\n const sharedConfig: SharedConfigOptions = {\n configMode: \"root\",\n };\n\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n if (arg === \"--check\") {\n options.check = true;\n } else if (arg === \"--write\" || arg === \"-w\") {\n options.write = true;\n } else if (arg === \"--single-quote\") {\n options.singleQuote = true;\n } else if (arg === \"--print-width\") {\n options.printWidth = Number.parseInt(args[++i], 10);\n } else if (arg === \"--tab-width\") {\n options.tabWidth = Number.parseInt(args[++i], 10);\n } else if (arg === \"--use-tabs\") {\n options.useTabs = true;\n } else if (arg === \"--no-semi\") {\n options.semi = false;\n } else if (arg === \"--sort-attributes\") {\n options.sortAttributes = true;\n } else if (arg === \"--single-attribute-per-line\") {\n options.singleAttributePerLine = true;\n } else if (arg === \"--max-attributes-per-line\") {\n options.maxAttributesPerLine = Number.parseInt(args[++i], 10);\n } else if (arg === \"--normalize-directive-shorthands\") {\n options.normalizeDirectiveShorthands = true;\n } else if (arg === \"--config\" || arg === \"-c\") {\n const configFile = args[++i];\n if (!configFile) {\n throw new Error(\"Missing path after --config\");\n }\n sharedConfig.configFile = configFile;\n } else if (arg === \"--no-config\") {\n sharedConfig.configMode = \"none\";\n } else if (arg === \"--profile\") {\n // Accepted for command compatibility. The npm fmt path prints a compact summary.\n } else if (arg === \"--help\" || arg === \"-h\") {\n options.help = true;\n } else if (!arg.startsWith(\"-\")) {\n patterns.push(arg);\n }\n }\n\n return { patterns, options, sharedConfig };\n}\n\nfunction toNativeFormatOptions(options: FmtOptions): NativeFormatOptions {\n return {\n printWidth: options.printWidth,\n print_width: options.printWidth,\n tabWidth: options.tabWidth,\n tab_width: options.tabWidth,\n useTabs: options.useTabs,\n use_tabs: options.useTabs,\n semi: options.semi,\n singleQuote: options.singleQuote,\n single_quote: options.singleQuote,\n sortAttributes: options.sortAttributes,\n sort_attributes: options.sortAttributes,\n singleAttributePerLine: options.singleAttributePerLine,\n single_attribute_per_line: options.singleAttributePerLine,\n maxAttributesPerLine: options.maxAttributesPerLine,\n max_attributes_per_line: options.maxAttributesPerLine,\n normalizeDirectiveShorthands: options.normalizeDirectiveShorthands,\n normalize_directive_shorthands: options.normalizeDirectiveShorthands,\n };\n}\n\nasync function runFmt(args: string[]): Promise<void> {\n const { patterns, options, sharedConfig } = parseFmtCommand(args);\n if (options.help) {\n printFmtUsage();\n return;\n }\n\n const config = await loadConfig(process.cwd(), {\n mode: sharedConfig.configMode,\n configFile: sharedConfig.configFile,\n env: {\n mode: process.env.NODE_ENV ?? \"development\",\n command: \"fmt\",\n },\n });\n\n if (sharedConfig.configFile && !config) {\n throw new Error(`Could not find config file: ${sharedConfig.configFile}`);\n }\n\n options.printWidth ??= config?.formatter?.printWidth;\n options.tabWidth ??= config?.formatter?.tabWidth;\n options.useTabs ??= config?.formatter?.useTabs;\n options.semi ??= config?.formatter?.semi;\n options.singleQuote ??= config?.formatter?.singleQuote;\n\n const files = collectVueFiles(patterns);\n if (files.length === 0) {\n process.stderr.write(`No Vue files found matching inputs: ${JSON.stringify(patterns)}\\n`);\n return;\n }\n\n const native = loadNative(\"fmt\");\n let changed = 0;\n let errored = 0;\n\n for (const file of files) {\n const source = readFileSync(file, \"utf8\");\n try {\n const result = native.formatSfc(source, toNativeFormatOptions(options));\n if (!result.changed) {\n continue;\n }\n changed++;\n if (options.check) {\n process.stderr.write(`Would reformat: ${displayPath(file)}\\n`);\n } else if (options.write) {\n writeFileSync(file, result.code);\n process.stderr.write(`Reformatted: ${displayPath(file)}\\n`);\n } else {\n process.stderr.write(`Would reformat: ${displayPath(file)}\\n`);\n }\n } catch (error) {\n errored++;\n process.stderr.write(\n `Error formatting ${displayPath(file)}: ${error instanceof Error ? error.message : String(error)}\\n`,\n );\n }\n }\n\n process.stderr.write(\n `\\x1b[32mOK\\x1b[0m Formatted ${files.length} Vue file(s), ${changed} changed\\n`,\n );\n\n if (errored > 0 || (options.check && changed > 0)) {\n process.exit(1);\n }\n}\n\n// ============================================================================\n// Check command\n// ============================================================================\n\ninterface NativeTypeCheckOptions {\n filename?: string;\n strict?: boolean;\n includeVirtualTs?: boolean;\n include_virtual_ts?: boolean;\n checkProps?: boolean;\n check_props?: boolean;\n checkEmits?: boolean;\n check_emits?: boolean;\n checkTemplateBindings?: boolean;\n check_template_bindings?: boolean;\n checkReactivity?: boolean;\n check_reactivity?: boolean;\n checkSetupContext?: boolean;\n check_setup_context?: boolean;\n checkInvalidExports?: boolean;\n check_invalid_exports?: boolean;\n checkFallthroughAttrs?: boolean;\n check_fallthrough_attrs?: boolean;\n}\n\ninterface NativeDeclarationOptions {\n filename?: string;\n}\n\ninterface DeclarationResult {\n code: string;\n}\n\ninterface TypeDiagnostic {\n severity: string;\n message: string;\n start: number;\n end: number;\n code?: string;\n help?: string;\n related?: Array<{\n message: string;\n start: number;\n end: number;\n filename?: string;\n }>;\n}\n\ninterface TypeCheckResult {\n diagnostics: TypeDiagnostic[];\n virtualTs?: string;\n errorCount: number;\n warningCount: number;\n analysisTimeMs?: number;\n}\n\ninterface CheckOptions {\n format?: string;\n quiet?: boolean;\n strict?: boolean;\n includeVirtualTs?: boolean;\n maxWarnings?: number;\n checkProps?: boolean;\n checkEmits?: boolean;\n checkTemplateBindings?: boolean;\n checkReactivity?: boolean;\n checkSetupContext?: boolean;\n checkInvalidExports?: boolean;\n checkFallthroughAttrs?: boolean;\n declaration?: boolean;\n declarationDir?: string;\n help?: boolean;\n}\n\ninterface ParsedCheckCommand {\n patterns: string[];\n options: CheckOptions;\n sharedConfig: SharedConfigOptions;\n}\n\ninterface CheckedFileResult {\n file: string;\n source: string;\n result: TypeCheckResult;\n}\n\ninterface EmittedDeclaration {\n file: string;\n path: string;\n}\n\nfunction parseCheckCommand(args: string[]): ParsedCheckCommand {\n const patterns: string[] = [];\n const options: CheckOptions = {};\n const sharedConfig: SharedConfigOptions = {\n configMode: \"root\",\n };\n\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n if (arg === \"--format\" || arg === \"-f\") {\n options.format = args[++i];\n } else if (arg === \"--quiet\" || arg === \"-q\") {\n options.quiet = true;\n } else if (arg === \"--strict\") {\n options.strict = true;\n } else if (arg === \"--no-strict\") {\n options.strict = false;\n } else if (arg === \"--show-virtual-ts\" || arg === \"--include-virtual-ts\") {\n options.includeVirtualTs = true;\n } else if (arg === \"--max-warnings\") {\n options.maxWarnings = Number.parseInt(args[++i], 10);\n } else if (arg === \"--no-check-props\") {\n options.checkProps = false;\n } else if (arg === \"--no-check-emits\") {\n options.checkEmits = false;\n } else if (arg === \"--no-check-template-bindings\") {\n options.checkTemplateBindings = false;\n } else if (arg === \"--no-check-reactivity\") {\n options.checkReactivity = false;\n } else if (arg === \"--no-check-setup-context\") {\n options.checkSetupContext = false;\n } else if (arg === \"--no-check-invalid-exports\") {\n options.checkInvalidExports = false;\n } else if (arg === \"--no-check-fallthrough-attrs\") {\n options.checkFallthroughAttrs = false;\n } else if (arg === \"--declaration\") {\n options.declaration = true;\n } else if (arg === \"--declaration-dir\") {\n const declarationDir = args[++i];\n if (!declarationDir) {\n throw new Error(\"Missing path after --declaration-dir\");\n }\n options.declarationDir = declarationDir;\n } else if (arg === \"--config\" || arg === \"-c\") {\n const configFile = args[++i];\n if (!configFile) {\n throw new Error(\"Missing path after --config\");\n }\n sharedConfig.configFile = configFile;\n } else if (arg === \"--no-config\") {\n sharedConfig.configMode = \"none\";\n } else if (arg === \"--help\" || arg === \"-h\") {\n options.help = true;\n } else if (arg === \"--tsconfig\" || arg === \"--corsa-path\" || arg === \"--servers\") {\n i++;\n } else if (arg === \"--socket\" || arg === \"-s\") {\n i++;\n } else if (arg === \"--profile\") {\n // Accepted for package-script compatibility with the Rust CLI.\n } else if (!arg.startsWith(\"-\")) {\n patterns.push(arg);\n }\n }\n\n return { patterns, options, sharedConfig };\n}\n\nfunction hasGlobSyntax(pattern: string): boolean {\n return pattern.includes(\"*\") || pattern.includes(\"?\") || pattern.includes(\"[\");\n}\n\nfunction normalizePath(filePath: string): string {\n return filePath.split(path.sep).join(\"/\");\n}\n\nfunction displayPath(filePath: string): string {\n const relative = path.relative(process.cwd(), filePath);\n if (relative && !relative.startsWith(\"..\") && !path.isAbsolute(relative)) {\n return normalizePath(relative);\n }\n return normalizePath(filePath);\n}\n\nfunction isVueFile(filePath: string): boolean {\n return path.extname(filePath) === \".vue\";\n}\n\nfunction collectVueFilesFromDirectory(directory: string, recursive: boolean): string[] {\n const files: string[] = [];\n const entries = readdirSync(directory, { withFileTypes: true });\n\n for (const entry of entries) {\n const entryPath = path.join(directory, entry.name);\n if (entry.isDirectory()) {\n if (SKIPPED_VUE_FILE_DIRECTORIES.has(entry.name)) {\n continue;\n }\n if (recursive) {\n files.push(...collectVueFilesFromDirectory(entryPath, true));\n }\n } else if (entry.isFile() && isVueFile(entryPath)) {\n files.push(entryPath);\n }\n }\n\n return files;\n}\n\nfunction globBase(pattern: string): string {\n const normalized = normalizePath(pattern);\n const globIndex = normalized.search(/[*?[]/);\n if (globIndex === -1) {\n return normalized;\n }\n\n const beforeGlob = normalized.slice(0, globIndex);\n const slashIndex = beforeGlob.lastIndexOf(\"/\");\n if (slashIndex === -1) {\n return \".\";\n }\n return beforeGlob.slice(0, slashIndex) || \"/\";\n}\n\nfunction globToRegExp(pattern: string): RegExp {\n const normalized = normalizePath(pattern);\n let source = \"\";\n\n for (let i = 0; i < normalized.length; i++) {\n const char = normalized[i];\n const next = normalized[i + 1];\n const afterNext = normalized[i + 2];\n\n if (char === \"*\" && next === \"*\" && afterNext === \"/\") {\n source += \"(?:.*/)?\";\n i += 2;\n } else if (char === \"*\" && next === \"*\") {\n source += \".*\";\n i++;\n } else if (char === \"*\") {\n source += \"[^/]*\";\n } else if (char === \"?\") {\n source += \"[^/]\";\n } else if (\"\\\\^$+?.()|{}[]\".includes(char)) {\n source += `\\\\${char}`;\n } else {\n source += char;\n }\n }\n\n return new RegExp(`^${source}$`);\n}\n\nfunction shouldRecurseGlob(pattern: string, base: string): boolean {\n const normalizedPattern = normalizePath(pattern);\n const normalizedBase = normalizePath(base);\n const rest =\n normalizedBase === \".\"\n ? normalizedPattern\n : normalizedPattern.slice(normalizedBase.length).replace(/^\\/+/, \"\");\n return rest.includes(\"/\");\n}\n\nfunction collectVueFilesFromGlob(pattern: string): string[] {\n const basePattern = globBase(pattern);\n const base = path.resolve(process.cwd(), basePattern);\n if (!existsSync(base)) {\n return [];\n }\n\n const isAbsolutePattern = path.isAbsolute(pattern);\n const normalizedPattern = normalizePath(isAbsolutePattern ? path.resolve(pattern) : pattern);\n const regex = globToRegExp(normalizedPattern);\n const candidates = collectVueFilesFromDirectory(base, shouldRecurseGlob(pattern, basePattern));\n\n return candidates.filter((file) => {\n const comparable = isAbsolutePattern\n ? normalizePath(file)\n : normalizePath(path.relative(process.cwd(), file));\n return regex.test(comparable);\n });\n}\n\nfunction collectVueFiles(patterns: string[]): string[] {\n const files = new Set<string>();\n const inputs = patterns.length === 0 ? [\".\"] : patterns;\n\n for (const input of inputs) {\n if (hasGlobSyntax(input)) {\n for (const file of collectVueFilesFromGlob(input)) {\n files.add(path.resolve(file));\n }\n continue;\n }\n\n const resolved = path.resolve(process.cwd(), input);\n if (!existsSync(resolved)) {\n continue;\n }\n\n const stats = statSync(resolved);\n if (stats.isDirectory()) {\n for (const file of collectVueFilesFromDirectory(resolved, true)) {\n files.add(path.resolve(file));\n }\n } else if (stats.isFile() && isVueFile(resolved)) {\n files.add(resolved);\n }\n }\n\n return Array.from(files).sort();\n}\n\nfunction commonSourceDirectory(results: CheckedFileResult[]): string {\n let common = path.dirname(results[0]?.file ?? process.cwd());\n\n for (let i = 1; i < results.length; i++) {\n const directory = path.dirname(results[i].file);\n while (common !== path.dirname(common)) {\n const relative = path.relative(common, directory);\n if (relative !== \"..\" && !relative.startsWith(`..${path.sep}`)) {\n break;\n }\n common = path.dirname(common);\n }\n }\n\n return common;\n}\n\nfunction emitCheckDeclarations(\n results: CheckedFileResult[],\n native: NativeBinding,\n options: CheckOptions,\n): EmittedDeclaration[] {\n if (!options.declaration) {\n return [];\n }\n\n if (typeof native.generateDeclaration !== \"function\") {\n throw new Error(\"The loaded native binding does not support declaration generation.\");\n }\n\n const outDir = path.resolve(process.cwd(), options.declarationDir ?? \"dist/types\");\n const sourceRoot = commonSourceDirectory(results);\n const declarations: EmittedDeclaration[] = [];\n\n for (const { file, source } of results) {\n const relative = normalizePath(path.relative(sourceRoot, file));\n const outputPath = path.join(outDir, `${relative}.d.ts`);\n mkdirSync(path.dirname(outputPath), { recursive: true });\n\n const declaration = native.generateDeclaration(source, { filename: file });\n writeFileSync(outputPath, declaration.code);\n declarations.push({\n file: displayPath(outputPath),\n path: outputPath,\n });\n }\n\n return declarations;\n}\n\nfunction lineStarts(source: string): number[] {\n const starts = [0];\n for (let i = 0; i < source.length; i++) {\n if (source.charCodeAt(i) === 10) {\n starts.push(i + 1);\n }\n }\n return starts;\n}\n\nfunction offsetToLineColumn(starts: number[], offset: number): { line: number; column: number } {\n let low = 0;\n let high = starts.length - 1;\n while (low <= high) {\n const mid = Math.floor((low + high) / 2);\n if (starts[mid] <= offset) {\n low = mid + 1;\n } else {\n high = mid - 1;\n }\n }\n\n const lineIndex = Math.max(0, high);\n return {\n line: lineIndex + 1,\n column: offset - starts[lineIndex] + 1,\n };\n}\n\nfunction toNativeTypeCheckOptions(file: string, options: CheckOptions): NativeTypeCheckOptions {\n return {\n filename: file,\n strict: options.strict,\n includeVirtualTs: options.includeVirtualTs,\n include_virtual_ts: options.includeVirtualTs,\n checkProps: options.checkProps,\n check_props: options.checkProps,\n checkEmits: options.checkEmits,\n check_emits: options.checkEmits,\n checkTemplateBindings: options.checkTemplateBindings,\n check_template_bindings: options.checkTemplateBindings,\n checkReactivity: options.checkReactivity,\n check_reactivity: options.checkReactivity,\n checkSetupContext: options.checkSetupContext,\n check_setup_context: options.checkSetupContext,\n checkInvalidExports: options.checkInvalidExports,\n check_invalid_exports: options.checkInvalidExports,\n checkFallthroughAttrs: options.checkFallthroughAttrs,\n check_fallthrough_attrs: options.checkFallthroughAttrs,\n };\n}\n\nfunction renderCheckText(\n results: CheckedFileResult[],\n options: CheckOptions,\n timeMs: number,\n declarations: EmittedDeclaration[] = [],\n): void {\n let totalErrors = 0;\n let totalWarnings = 0;\n\n for (const { file, source, result } of results) {\n totalErrors += result.errorCount;\n totalWarnings += result.warningCount;\n\n if (options.includeVirtualTs && result.virtualTs) {\n process.stderr.write(`\\n=== ${displayPath(file)} ===\\n${result.virtualTs}\\n`);\n }\n\n if (options.quiet || result.diagnostics.length === 0) {\n continue;\n }\n\n const starts = lineStarts(source);\n process.stdout.write(`\\n\\x1b[4m${displayPath(file)}\\x1b[0m\\n`);\n for (const diagnostic of result.diagnostics) {\n const color = diagnostic.severity === \"error\" ? \"\\x1b[31m\" : \"\\x1b[33m\";\n const location = offsetToLineColumn(starts, diagnostic.start);\n const code = diagnostic.code ? ` [${diagnostic.code}]` : \"\";\n process.stdout.write(\n ` ${color}${diagnostic.severity}:${location.line}:${location.column}\\x1b[0m${code} ${diagnostic.message}\\n`,\n );\n if (diagnostic.help) {\n process.stdout.write(` help: ${diagnostic.help}\\n`);\n }\n }\n }\n\n const status = totalErrors > 0 ? \"\\x1b[31mERR\\x1b[0m\" : \"\\x1b[32mOK\\x1b[0m\";\n process.stdout.write(\n `\\n${status} Type checked ${results.length} Vue files in ${timeMs.toFixed(2)}ms\\n`,\n );\n if (totalErrors > 0) {\n process.stdout.write(` \\x1b[31m${totalErrors} error(s)\\x1b[0m\\n`);\n } else {\n process.stdout.write(\" \\x1b[32mNo type errors found!\\x1b[0m\\n\");\n }\n if (totalWarnings > 0) {\n process.stdout.write(` \\x1b[33m${totalWarnings} warning(s)\\x1b[0m\\n`);\n }\n if (declarations.length > 0) {\n process.stdout.write(` \\x1b[32mEmitted ${declarations.length} declaration file(s)\\x1b[0m\\n`);\n }\n}\n\nasync function runCheck(args: string[]): Promise<void> {\n const { patterns, options, sharedConfig } = parseCheckCommand(args);\n if (options.help) {\n printCheckUsage();\n return;\n }\n\n const config = await loadConfig(process.cwd(), {\n mode: sharedConfig.configMode,\n configFile: sharedConfig.configFile,\n env: {\n mode: process.env.NODE_ENV ?? \"development\",\n command: \"check\",\n },\n });\n\n if (sharedConfig.configFile && !config) {\n throw new Error(`Could not find config file: ${sharedConfig.configFile}`);\n }\n\n if (config?.typeChecker?.enabled === false) {\n process.stderr.write(\n \"[vize] Skipping check because typeChecker.enabled is false in vize.config.\\n\",\n );\n return;\n }\n\n options.strict ??= config?.typeChecker?.strict;\n options.checkProps ??= config?.typeChecker?.checkProps;\n options.checkEmits ??= config?.typeChecker?.checkEmits;\n options.checkTemplateBindings ??= config?.typeChecker?.checkTemplateBindings;\n\n const files = collectVueFiles(patterns);\n if (files.length === 0) {\n process.stderr.write(`No Vue files found matching inputs: ${JSON.stringify(patterns)}\\n`);\n return;\n }\n\n const native = loadNative(\"check\");\n const start = performance.now();\n const results = files.map((file) => {\n const source = readFileSync(file, \"utf8\");\n return {\n file,\n source,\n result: native.typeCheck(source, toNativeTypeCheckOptions(file, options)),\n };\n });\n const timeMs = performance.now() - start;\n const declarations = emitCheckDeclarations(results, native, options);\n const totalErrors = results.reduce((sum, { result }) => sum + result.errorCount, 0);\n const totalWarnings = results.reduce((sum, { result }) => sum + result.warningCount, 0);\n\n if (options.format === \"json\") {\n process.stdout.write(\n `${JSON.stringify(\n {\n files: results.map(({ file, result }) => ({\n file: displayPath(file),\n diagnostics: result.diagnostics,\n virtualTs: result.virtualTs,\n })),\n errorCount: totalErrors,\n warningCount: totalWarnings,\n fileCount: results.length,\n declarations: declarations.map(({ file }) => file),\n },\n null,\n 2,\n )}\\n`,\n );\n } else {\n renderCheckText(results, options, timeMs, declarations);\n }\n\n if (totalErrors > 0) {\n process.exit(1);\n }\n\n if (options.maxWarnings !== undefined && totalWarnings > options.maxWarnings) {\n process.stderr.write(`\\nToo many warnings (${totalWarnings} > max ${options.maxWarnings})\\n`);\n process.exit(1);\n }\n}\n\nasync function runLint(args: string[]): Promise<void> {\n const { patterns, options, sharedConfig } = parseLintCommand(args);\n const config = await loadConfig(process.cwd(), {\n mode: sharedConfig.configMode,\n configFile: sharedConfig.configFile,\n env: {\n mode: process.env.NODE_ENV ?? \"development\",\n command: \"lint\",\n },\n });\n\n if (sharedConfig.configFile && !config) {\n throw new Error(`Could not find config file: ${sharedConfig.configFile}`);\n }\n\n if (config?.linter?.enabled === false) {\n process.stderr.write(\"[vize] Skipping lint because linter.enabled is false in vize.config.\\n\");\n return;\n }\n\n options.preset ??= config?.linter?.preset;\n\n if (patterns.length === 0) {\n patterns.push(\".\");\n }\n\n const native = loadNative(\"lint\");\n const result = native.lint(patterns, {\n format: options.format,\n max_warnings: options.maxWarnings,\n quiet: options.quiet,\n fix: options.fix,\n help_level: options.helpLevel,\n preset: options.preset,\n });\n\n if (result.output) {\n process.stdout.write(result.output);\n if (!result.output.endsWith(\"\\n\")) {\n process.stdout.write(\"\\n\");\n }\n }\n\n if (options.fix) {\n process.stderr.write(\"\\nNote: --fix is not yet implemented\\n\");\n }\n\n if (result.errorCount > 0) {\n process.exit(1);\n }\n\n if (options.maxWarnings !== undefined && result.warningCount > options.maxWarnings) {\n process.stderr.write(\n `\\nToo many warnings (${result.warningCount} > max ${options.maxWarnings})\\n`,\n );\n process.exit(1);\n }\n}\n\n// ============================================================================\n// Upgrade command\n// ============================================================================\n\ntype PackageManager = \"bun\" | \"npm\" | \"pnpm\" | \"vp\" | \"yarn\";\n\ninterface UpgradeOptions {\n packageManager?: PackageManager;\n global?: boolean;\n dryRun?: boolean;\n help?: boolean;\n}\n\nfunction parseUpgradeCommand(args: string[]): UpgradeOptions {\n const options: UpgradeOptions = {};\n\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n if (arg === \"--package-manager\") {\n const packageManager = args[++i];\n if (\n packageManager === \"bun\" ||\n packageManager === \"npm\" ||\n packageManager === \"pnpm\" ||\n packageManager === \"vp\" ||\n packageManager === \"yarn\"\n ) {\n options.packageManager = packageManager;\n }\n } else if (arg === \"--global\" || arg === \"-g\") {\n options.global = true;\n } else if (arg === \"--dry-run\") {\n options.dryRun = true;\n } else if (arg === \"--help\" || arg === \"-h\") {\n options.help = true;\n }\n }\n\n return options;\n}\n\nfunction readCwdPackageJson(): {\n packageManager?: string;\n dependencies?: Record<string, string>;\n devDependencies?: Record<string, string>;\n} | null {\n const packageJsonPath = path.join(process.cwd(), \"package.json\");\n if (!existsSync(packageJsonPath)) {\n return null;\n }\n return JSON.parse(readFileSync(packageJsonPath, \"utf8\"));\n}\n\nfunction detectPackageManager(explicit?: PackageManager): PackageManager {\n if (explicit) {\n return explicit;\n }\n\n const userAgent = process.env.npm_config_user_agent ?? \"\";\n if (userAgent.startsWith(\"pnpm\")) {\n return \"pnpm\";\n }\n if (userAgent.startsWith(\"yarn\")) {\n return \"yarn\";\n }\n if (userAgent.startsWith(\"bun\")) {\n return \"bun\";\n }\n if (userAgent.startsWith(\"npm\")) {\n return \"npm\";\n }\n\n const packageManager = readCwdPackageJson()?.packageManager;\n if (packageManager?.startsWith(\"pnpm\")) {\n return \"pnpm\";\n }\n if (packageManager?.startsWith(\"yarn\")) {\n return \"yarn\";\n }\n if (packageManager?.startsWith(\"bun\")) {\n return \"bun\";\n }\n return \"npm\";\n}\n\nfunction buildUpgradeCommand(\n packageManager: PackageManager,\n options: UpgradeOptions,\n): { command: string; args: string[] } {\n const packageJson = readCwdPackageJson();\n const saveDev = !packageJson?.dependencies?.vize;\n const packageSpec = \"vize@latest\";\n\n if (packageManager === \"vp\") {\n return {\n command: \"vp\",\n args: [\"install\", ...(options.global ? [\"-g\"] : saveDev ? [\"-D\"] : []), packageSpec],\n };\n }\n if (packageManager === \"pnpm\") {\n return {\n command: \"pnpm\",\n args: [\"add\", ...(options.global ? [\"-g\"] : saveDev ? [\"-D\"] : []), packageSpec],\n };\n }\n if (packageManager === \"yarn\") {\n return {\n command: \"yarn\",\n args: options.global\n ? [\"global\", \"add\", packageSpec]\n : [\"add\", ...(saveDev ? [\"-D\"] : []), packageSpec],\n };\n }\n if (packageManager === \"bun\") {\n return {\n command: \"bun\",\n args: [\"add\", ...(options.global ? [\"-g\"] : saveDev ? [\"-d\"] : []), packageSpec],\n };\n }\n return {\n command: \"npm\",\n args: [\"install\", ...(options.global ? [\"-g\"] : saveDev ? [\"-D\"] : []), packageSpec],\n };\n}\n\nfunction runUpgrade(args: string[]): void {\n const options = parseUpgradeCommand(args);\n if (options.help) {\n printUpgradeUsage();\n return;\n }\n\n const packageManager = detectPackageManager(options.packageManager);\n const command = buildUpgradeCommand(packageManager, options);\n\n if (options.dryRun) {\n process.stdout.write(`${command.command} ${command.args.join(\" \")}\\n`);\n return;\n }\n\n const result = spawnSync(command.command, command.args, {\n stdio: \"inherit\",\n cwd: process.cwd(),\n env: process.env,\n });\n\n if (result.error) {\n throw result.error;\n }\n\n process.exit(result.status ?? 1);\n}\n\n// ============================================================================\n// Ready command\n// ============================================================================\n\ninterface ReadyOptions {\n output: string;\n ssr?: boolean;\n scriptExt: \"preserve\" | \"downcompile\";\n help?: boolean;\n}\n\ninterface ParsedReadyCommand {\n patterns: string[];\n options: ReadyOptions;\n}\n\nfunction parseReadyCommand(args: string[]): ParsedReadyCommand {\n const patterns: string[] = [];\n const options: ReadyOptions = {\n output: \"./dist\",\n scriptExt: \"downcompile\",\n };\n\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n if (arg === \"--output\" || arg === \"-o\") {\n options.output = args[++i] ?? options.output;\n } else if (arg === \"--ssr\") {\n options.ssr = true;\n } else if (arg === \"--script-ext\") {\n const scriptExt = args[++i];\n if (scriptExt === \"preserve\" || scriptExt === \"downcompile\") {\n options.scriptExt = scriptExt;\n }\n } else if (arg === \"--help\" || arg === \"-h\") {\n options.help = true;\n } else if (!arg.startsWith(\"-\")) {\n patterns.push(arg);\n }\n }\n\n return { patterns, options };\n}\n\nasync function runReady(args: string[]): Promise<void> {\n const { patterns, options } = parseReadyCommand(args);\n if (options.help) {\n printReadyUsage();\n return;\n }\n\n process.stderr.write(\"vize ready: fmt\\n\");\n await runFmt([\"--write\", ...patterns]);\n\n process.stderr.write(\"vize ready: lint\\n\");\n await runLint(patterns);\n\n process.stderr.write(\"vize ready: check\\n\");\n await runCheck(patterns);\n\n process.stderr.write(\"vize ready: build\\n\");\n await runBuild([\n \"--output\",\n options.output,\n \"--script-ext\",\n options.scriptExt,\n ...(options.ssr ? [\"--ssr\"] : []),\n ...patterns,\n ]);\n}\n\n// ============================================================================\n// Command router\n// ============================================================================\n\nconst NAPI_COMMANDS = new Set([\"build\", \"check\", \"fmt\", \"lint\"]);\nconst JS_COMMANDS = new Set([\"musea\", \"ready\", \"upgrade\"]);\n\nasync function main(): Promise<void> {\n const args = process.argv.slice(2);\n const command = args[0];\n\n if (!command || command === \"--help\" || command === \"-h\") {\n printUsage();\n process.exit(1);\n }\n\n if (NAPI_COMMANDS.has(command)) {\n const commandArgs = args.slice(1);\n switch (command) {\n case \"build\":\n await runBuild(commandArgs);\n break;\n case \"check\":\n await runCheck(commandArgs);\n break;\n case \"fmt\":\n await runFmt(commandArgs);\n break;\n case \"lint\":\n await runLint(commandArgs);\n break;\n }\n } else if (JS_COMMANDS.has(command)) {\n const commandArgs = args.slice(1);\n switch (command) {\n case \"musea\":\n runMusea(commandArgs);\n break;\n case \"ready\":\n await runReady(commandArgs);\n break;\n case \"upgrade\":\n runUpgrade(commandArgs);\n break;\n }\n } else {\n printUsage();\n console.error(`Unknown command: ${command}`);\n console.error(\n \"For commands not yet available via NAPI, install from source: cargo install vize\",\n );\n process.exit(1);\n }\n}\n\nif (!import.meta.vitest) {\n void main().catch((error) => {\n console.error(error instanceof Error ? error.message : String(error));\n process.exit(1);\n });\n}\n\nif (import.meta.vitest) {\n const { describe, expect, it } = import.meta.vitest;\n\n describe(\"shouldPreferWorkspaceBinding\", () => {\n it(\"detects the local workspace native package\", () => {\n expect(\n shouldPreferWorkspaceBinding(\n `${path.sep}Users${path.sep}example${path.sep}repo${path.sep}npm${path.sep}vize-native${path.sep}index.js`,\n ),\n ).toBe(true);\n });\n\n it(\"ignores published platform packages\", () => {\n expect(\n shouldPreferWorkspaceBinding(\n `${path.sep}repo${path.sep}node_modules${path.sep}.pnpm${path.sep}@vizejs+native-darwin-arm64${path.sep}node_modules${path.sep}@vizejs${path.sep}native-darwin-arm64${path.sep}index.js`,\n ),\n ).toBe(false);\n });\n\n it(\"returns false when the fallback package cannot be resolved\", () => {\n expect(shouldPreferWorkspaceBinding(null)).toBe(false);\n });\n });\n}\n"],"mappings":"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"}
@@ -84,9 +84,15 @@ interface VitePluginConfig {
84
84
  * @default ['**\/*.vue']
85
85
  */
86
86
  scanPatterns?: string[];
87
+ /**
88
+ * Maximum number of Vue files to compile in a single native batch during
89
+ * pre-compilation. Lower values reduce peak V8 heap usage in large apps.
90
+ * @default 128
91
+ */
92
+ precompileBatchSize?: number;
87
93
  /**
88
94
  * Glob patterns to ignore during pre-compilation
89
- * @default ['node_modules/**', 'dist/**', '.git/**']
95
+ * @default ['node_modules/**', 'dist/**', '.git/**', '.nuxt/**', '.output/**', '.nitro/**', 'coverage/**']
90
96
  */
91
97
  ignorePatterns?: string[];
92
98
  }
@@ -516,4 +522,4 @@ declare function loadConfig(root: string, options?: LoadConfigOptions): Promise<
516
522
  declare function normalizeGlobalTypes(config: GlobalTypesConfig): Record<string, GlobalTypeDeclaration>;
517
523
  //#endregion
518
524
  export { LspConfig as C, CompilerConfig as D, LintRulesConfig as E, VitePluginConfig as O, LinterConfig as S, LintRuleName as T, MuseaA11yConfig as _, loadConfig as a, MuseaVrtConfig as b, LintPreset as c, RuleSeverity as d, UserConfigExport as f, LoadConfigOptions as g, GlobalTypesConfig as h, defineConfig as i, MaybePromise as l, GlobalTypeDeclaration as m, VIZE_CONFIG_JSON_SCHEMA_PATH as n, normalizeGlobalTypes as o, VizeConfig as p, VIZE_CONFIG_PKL_SCHEMA_PATH as r, ConfigEnv as s, CONFIG_FILE_NAMES as t, RuleCategory as u, MuseaAutogenConfig as v, TypeCheckerConfig as w, FormatterConfig as x, MuseaConfig as y };
519
- //# sourceMappingURL=config-Dt42z0M4.d.mts.map
525
+ //# sourceMappingURL=config-CTXni-Py.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-CTXni-Py.d.mts","names":[],"sources":["../src/types/compiler.ts","../src/types/rules.ts","../src/types/tools.ts","../src/types/musea.ts","../src/types/loader.ts","../src/types/core.ts","../src/config.ts"],"mappings":"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"}
package/dist/config.d.mts CHANGED
@@ -1,2 +1,2 @@
1
- import { a as loadConfig, i as defineConfig, n as VIZE_CONFIG_JSON_SCHEMA_PATH, o as normalizeGlobalTypes, r as VIZE_CONFIG_PKL_SCHEMA_PATH, t as CONFIG_FILE_NAMES } from "./config-Dt42z0M4.mjs";
1
+ import { a as loadConfig, i as defineConfig, n as VIZE_CONFIG_JSON_SCHEMA_PATH, o as normalizeGlobalTypes, r as VIZE_CONFIG_PKL_SCHEMA_PATH, t as CONFIG_FILE_NAMES } from "./config-CTXni-Py.mjs";
2
2
  export { CONFIG_FILE_NAMES, VIZE_CONFIG_JSON_SCHEMA_PATH, VIZE_CONFIG_PKL_SCHEMA_PATH, defineConfig, loadConfig, normalizeGlobalTypes };
@@ -1 +1 @@
1
- {"version":3,"file":"config.mjs","names":[],"sources":["../src/config.ts"],"sourcesContent":["import * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport { execFileSync } from \"node:child_process\";\nimport { fileURLToPath, pathToFileURL } from \"node:url\";\nimport { transform } from \"oxc-transform\";\nimport type {\n VizeConfig,\n LoadConfigOptions,\n UserConfigExport,\n ConfigEnv,\n GlobalTypesConfig,\n GlobalTypeDeclaration,\n} from \"./types/index.js\";\n\nexport const CONFIG_FILE_NAMES = [\n \"vize.config.ts\",\n \"vize.config.js\",\n \"vize.config.mjs\",\n \"vize.config.pkl\",\n \"vize.config.json\",\n] as const;\n\nconst DEFAULT_CONFIG_ENV: ConfigEnv = {\n mode: \"development\",\n command: \"serve\",\n};\n\nconst PACKAGE_ROOT = path.resolve(fileURLToPath(new URL(\".\", import.meta.url)), \"..\");\n\nexport const VIZE_CONFIG_JSON_SCHEMA_PATH = path.join(\n PACKAGE_ROOT,\n \"schemas\",\n \"vize.config.schema.json\",\n);\n\nexport const VIZE_CONFIG_PKL_SCHEMA_PATH = path.join(PACKAGE_ROOT, \"pkl\", \"vize.pkl\");\n\n/**\n * Define a Vize configuration with type checking.\n * Accepts a plain object or a function that receives ConfigEnv.\n */\nexport function defineConfig(config: UserConfigExport): UserConfigExport {\n return config;\n}\n\n/**\n * Load `vize.config.*` from the specified directory.\n */\nexport async function loadConfig(\n root: string,\n options: LoadConfigOptions = {},\n): Promise<VizeConfig | null> {\n const { mode = \"root\", configFile, env } = options;\n\n if (mode === \"none\") {\n return null;\n }\n\n if (configFile) {\n const absolutePath = path.isAbsolute(configFile) ? configFile : path.resolve(root, configFile);\n if (fs.existsSync(absolutePath)) {\n return loadConfigFile(absolutePath, env);\n }\n return null;\n }\n\n if (mode === \"auto\") {\n const configPath = findConfigFileAuto(root);\n if (!configPath) {\n return null;\n }\n return loadConfigFile(configPath, env);\n }\n\n const configPath = findConfigFileInDir(root);\n if (!configPath) {\n return null;\n }\n\n return loadConfigFile(configPath, env);\n}\n\nfunction findConfigFileInDir(dir: string): string | null {\n for (const name of CONFIG_FILE_NAMES) {\n const filePath = path.join(dir, name);\n if (fs.existsSync(filePath)) {\n return filePath;\n }\n }\n return null;\n}\n\nfunction findConfigFileAuto(startDir: string): string | null {\n let currentDir = path.resolve(startDir);\n\n while (true) {\n const configPath = findConfigFileInDir(currentDir);\n if (configPath) {\n return configPath;\n }\n\n const parentDir = path.dirname(currentDir);\n if (parentDir === currentDir) {\n return null;\n }\n\n currentDir = parentDir;\n }\n}\n\nasync function loadConfigFile(filePath: string, env?: ConfigEnv): Promise<VizeConfig | null> {\n if (!fs.existsSync(filePath)) {\n return null;\n }\n\n const ext = path.extname(filePath);\n\n if (ext === \".json\") {\n const content = fs.readFileSync(filePath, \"utf-8\");\n return parseJsonConfig(content, filePath);\n }\n\n if (ext === \".pkl\") {\n return loadPklConfig(filePath);\n }\n\n if (ext === \".ts\") {\n return loadTypeScriptConfig(filePath, env);\n }\n\n return loadESMConfig(filePath, env);\n}\n\nasync function resolveConfigExport(\n exported: UserConfigExport,\n env?: ConfigEnv,\n): Promise<VizeConfig> {\n if (typeof exported === \"function\") {\n return exported(env ?? DEFAULT_CONFIG_ENV);\n }\n\n return exported;\n}\n\nasync function loadTypeScriptConfig(filePath: string, env?: ConfigEnv): Promise<VizeConfig> {\n const source = fs.readFileSync(filePath, \"utf-8\");\n const result = transform(filePath, source, {\n typescript: {\n onlyRemoveTypeImports: true,\n },\n });\n\n const tempFile = filePath.replace(/\\.ts$/, `.temp.${Date.now()}.mjs`);\n fs.writeFileSync(tempFile, result.code);\n\n try {\n const module = await importFresh(tempFile);\n const exported: UserConfigExport = module.default || module;\n return resolveConfigExport(exported, env);\n } finally {\n fs.rmSync(tempFile, { force: true });\n }\n}\n\nasync function loadESMConfig(filePath: string, env?: ConfigEnv): Promise<VizeConfig> {\n const module = await importFresh(filePath);\n const exported: UserConfigExport = module.default || module;\n return resolveConfigExport(exported, env);\n}\n\nfunction loadPklConfig(filePath: string): VizeConfig {\n try {\n const output = execFileSync(\"pkl\", [\"eval\", \"--format\", \"json\", filePath], {\n cwd: path.dirname(filePath),\n encoding: \"utf-8\",\n stdio: [\"ignore\", \"pipe\", \"pipe\"],\n });\n return parseJsonConfig(output, filePath);\n } catch (error) {\n throw new Error(\n `Failed to evaluate PKL config at ${filePath}. Make sure the 'pkl' CLI is installed and on PATH. ${getErrorMessage(error)}`,\n );\n }\n}\n\nasync function importFresh(filePath: string): Promise<Record<string, unknown>> {\n const fileUrl = pathToFileURL(filePath);\n fileUrl.searchParams.set(\"t\", String(fs.statSync(filePath).mtimeMs));\n return import(fileUrl.href);\n}\n\nfunction parseJsonConfig(content: string, filePath: string): VizeConfig {\n try {\n return normalizeLoadedConfig(JSON.parse(content));\n } catch (error) {\n throw new Error(`Failed to parse vize config JSON at ${filePath}: ${getErrorMessage(error)}`);\n }\n}\n\nfunction normalizeLoadedConfig(config: unknown): VizeConfig {\n const normalized = stripNullish(config);\n return (normalized ?? {}) as VizeConfig;\n}\n\nfunction stripNullish(value: unknown): unknown {\n if (value === null) {\n return undefined;\n }\n\n if (Array.isArray(value)) {\n return value.map((entry) => stripNullish(entry)).filter((entry) => entry !== undefined);\n }\n\n if (typeof value === \"object\" && value !== null) {\n const result: Record<string, unknown> = {};\n for (const [key, entry] of Object.entries(value)) {\n const normalizedEntry = stripNullish(entry);\n if (normalizedEntry !== undefined) {\n result[key] = normalizedEntry;\n }\n }\n return result;\n }\n\n return value;\n}\n\nfunction getErrorMessage(error: unknown): string {\n if (error instanceof Error) {\n return error.message;\n }\n\n return String(error);\n}\n\n/**\n * Normalize GlobalTypesConfig shorthand strings to GlobalTypeDeclaration objects\n */\nexport function normalizeGlobalTypes(\n config: GlobalTypesConfig,\n): Record<string, GlobalTypeDeclaration> {\n const result: Record<string, GlobalTypeDeclaration> = {};\n for (const [key, value] of Object.entries(config)) {\n if (typeof value === \"string\") {\n result[key] = { type: value };\n } else {\n result[key] = value;\n }\n }\n return result;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"config.mjs","names":[],"sources":["../src/config.ts"],"sourcesContent":["import * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport { execFileSync } from \"node:child_process\";\nimport { fileURLToPath, pathToFileURL } from \"node:url\";\nimport { transform } from \"oxc-transform\";\nimport type {\n VizeConfig,\n LoadConfigOptions,\n UserConfigExport,\n ConfigEnv,\n GlobalTypesConfig,\n GlobalTypeDeclaration,\n} from \"./types/index.js\";\n\nexport const CONFIG_FILE_NAMES = [\n \"vize.config.ts\",\n \"vize.config.js\",\n \"vize.config.mjs\",\n \"vize.config.pkl\",\n \"vize.config.json\",\n] as const;\n\nconst DEFAULT_CONFIG_ENV: ConfigEnv = {\n mode: \"development\",\n command: \"serve\",\n};\n\nconst PACKAGE_ROOT = path.resolve(fileURLToPath(new URL(\".\", import.meta.url)), \"..\");\n\nexport const VIZE_CONFIG_JSON_SCHEMA_PATH = path.join(\n PACKAGE_ROOT,\n \"schemas\",\n \"vize.config.schema.json\",\n);\n\nexport const VIZE_CONFIG_PKL_SCHEMA_PATH = path.join(PACKAGE_ROOT, \"pkl\", \"vize.pkl\");\n\n/**\n * Define a Vize configuration with type checking.\n * Accepts a plain object or a function that receives ConfigEnv.\n */\nexport function defineConfig(config: UserConfigExport): UserConfigExport {\n return config;\n}\n\n/**\n * Load `vize.config.*` from the specified directory.\n */\nexport async function loadConfig(\n root: string,\n options: LoadConfigOptions = {},\n): Promise<VizeConfig | null> {\n const { mode = \"root\", configFile, env } = options;\n\n if (mode === \"none\") {\n return null;\n }\n\n if (configFile) {\n const absolutePath = path.isAbsolute(configFile) ? configFile : path.resolve(root, configFile);\n if (fs.existsSync(absolutePath)) {\n return loadConfigFile(absolutePath, env);\n }\n return null;\n }\n\n if (mode === \"auto\") {\n const configPath = findConfigFileAuto(root);\n if (!configPath) {\n return null;\n }\n return loadConfigFile(configPath, env);\n }\n\n const configPath = findConfigFileInDir(root);\n if (!configPath) {\n return null;\n }\n\n return loadConfigFile(configPath, env);\n}\n\nfunction findConfigFileInDir(dir: string): string | null {\n for (const name of CONFIG_FILE_NAMES) {\n const filePath = path.join(dir, name);\n if (fs.existsSync(filePath)) {\n return filePath;\n }\n }\n return null;\n}\n\nfunction findConfigFileAuto(startDir: string): string | null {\n let currentDir = path.resolve(startDir);\n\n while (true) {\n const configPath = findConfigFileInDir(currentDir);\n if (configPath) {\n return configPath;\n }\n\n const parentDir = path.dirname(currentDir);\n if (parentDir === currentDir) {\n return null;\n }\n\n currentDir = parentDir;\n }\n}\n\nasync function loadConfigFile(filePath: string, env?: ConfigEnv): Promise<VizeConfig | null> {\n if (!fs.existsSync(filePath)) {\n return null;\n }\n\n const ext = path.extname(filePath);\n\n if (ext === \".json\") {\n const content = fs.readFileSync(filePath, \"utf-8\");\n return parseJsonConfig(content, filePath);\n }\n\n if (ext === \".pkl\") {\n return loadPklConfig(filePath);\n }\n\n if (ext === \".ts\") {\n return loadTypeScriptConfig(filePath, env);\n }\n\n return loadESMConfig(filePath, env);\n}\n\nasync function resolveConfigExport(\n exported: UserConfigExport,\n env?: ConfigEnv,\n): Promise<VizeConfig> {\n if (typeof exported === \"function\") {\n return exported(env ?? DEFAULT_CONFIG_ENV);\n }\n\n return exported;\n}\n\nasync function loadTypeScriptConfig(filePath: string, env?: ConfigEnv): Promise<VizeConfig> {\n const source = fs.readFileSync(filePath, \"utf-8\");\n const result = transform(filePath, source, {\n typescript: {\n onlyRemoveTypeImports: true,\n },\n });\n\n const tempFile = filePath.replace(/\\.ts$/, `.temp.${Date.now()}.mjs`);\n fs.writeFileSync(tempFile, result.code);\n\n try {\n const module = await importFresh(tempFile);\n const exported: UserConfigExport = module.default || module;\n return resolveConfigExport(exported, env);\n } finally {\n fs.rmSync(tempFile, { force: true });\n }\n}\n\nasync function loadESMConfig(filePath: string, env?: ConfigEnv): Promise<VizeConfig> {\n const module = await importFresh(filePath);\n const exported: UserConfigExport = module.default || module;\n return resolveConfigExport(exported, env);\n}\n\nfunction loadPklConfig(filePath: string): VizeConfig {\n try {\n const output = execFileSync(\"pkl\", [\"eval\", \"--format\", \"json\", filePath], {\n cwd: path.dirname(filePath),\n encoding: \"utf-8\",\n stdio: [\"ignore\", \"pipe\", \"pipe\"],\n });\n return parseJsonConfig(output, filePath);\n } catch (error) {\n throw new Error(\n `Failed to evaluate PKL config at ${filePath}. Make sure the 'pkl' CLI is installed and on PATH. ${getErrorMessage(error)}`,\n );\n }\n}\n\nasync function importFresh(filePath: string): Promise<Record<string, unknown>> {\n const fileUrl = pathToFileURL(filePath);\n fileUrl.searchParams.set(\"t\", String(fs.statSync(filePath).mtimeMs));\n return import(fileUrl.href);\n}\n\nfunction parseJsonConfig(content: string, filePath: string): VizeConfig {\n try {\n return normalizeLoadedConfig(JSON.parse(content));\n } catch (error) {\n throw new Error(`Failed to parse vize config JSON at ${filePath}: ${getErrorMessage(error)}`);\n }\n}\n\nfunction normalizeLoadedConfig(config: unknown): VizeConfig {\n const normalized = stripNullish(config);\n return (normalized ?? {}) as VizeConfig;\n}\n\nfunction stripNullish(value: unknown): unknown {\n if (value === null) {\n return undefined;\n }\n\n if (Array.isArray(value)) {\n return value.map((entry) => stripNullish(entry)).filter((entry) => entry !== undefined);\n }\n\n if (typeof value === \"object\" && value !== null) {\n const result: Record<string, unknown> = {};\n for (const [key, entry] of Object.entries(value)) {\n const normalizedEntry = stripNullish(entry);\n if (normalizedEntry !== undefined) {\n result[key] = normalizedEntry;\n }\n }\n return result;\n }\n\n return value;\n}\n\nfunction getErrorMessage(error: unknown): string {\n if (error instanceof Error) {\n return error.message;\n }\n\n return String(error);\n}\n\n/**\n * Normalize GlobalTypesConfig shorthand strings to GlobalTypeDeclaration objects\n */\nexport function normalizeGlobalTypes(\n config: GlobalTypesConfig,\n): Record<string, GlobalTypeDeclaration> {\n const result: Record<string, GlobalTypeDeclaration> = {};\n for (const [key, value] of Object.entries(config)) {\n if (typeof value === \"string\") {\n result[key] = { type: value };\n } else {\n result[key] = value;\n }\n }\n return result;\n}\n"],"mappings":"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"}
package/dist/index.d.mts CHANGED
@@ -1,2 +1,2 @@
1
- import { C as LspConfig, D as CompilerConfig, E as LintRulesConfig, O as VitePluginConfig, S as LinterConfig, T as LintRuleName, _ as MuseaA11yConfig, a as loadConfig, b as MuseaVrtConfig, c as LintPreset, d as RuleSeverity, f as UserConfigExport, g as LoadConfigOptions, h as GlobalTypesConfig, i as defineConfig, l as MaybePromise, m as GlobalTypeDeclaration, n as VIZE_CONFIG_JSON_SCHEMA_PATH, o as normalizeGlobalTypes, p as VizeConfig, r as VIZE_CONFIG_PKL_SCHEMA_PATH, s as ConfigEnv, t as CONFIG_FILE_NAMES, u as RuleCategory, v as MuseaAutogenConfig, w as TypeCheckerConfig, x as FormatterConfig, y as MuseaConfig } from "./config-Dt42z0M4.mjs";
1
+ import { C as LspConfig, D as CompilerConfig, E as LintRulesConfig, O as VitePluginConfig, S as LinterConfig, T as LintRuleName, _ as MuseaA11yConfig, a as loadConfig, b as MuseaVrtConfig, c as LintPreset, d as RuleSeverity, f as UserConfigExport, g as LoadConfigOptions, h as GlobalTypesConfig, i as defineConfig, l as MaybePromise, m as GlobalTypeDeclaration, n as VIZE_CONFIG_JSON_SCHEMA_PATH, o as normalizeGlobalTypes, p as VizeConfig, r as VIZE_CONFIG_PKL_SCHEMA_PATH, s as ConfigEnv, t as CONFIG_FILE_NAMES, u as RuleCategory, v as MuseaAutogenConfig, w as TypeCheckerConfig, x as FormatterConfig, y as MuseaConfig } from "./config-CTXni-Py.mjs";
2
2
  export { CONFIG_FILE_NAMES, type CompilerConfig, type ConfigEnv, type FormatterConfig, type GlobalTypeDeclaration, type GlobalTypesConfig, type LintPreset, type LintRuleName, type LintRulesConfig, type LinterConfig, type LoadConfigOptions, type LspConfig, type MaybePromise, type MuseaA11yConfig, type MuseaAutogenConfig, type MuseaConfig, type MuseaVrtConfig, type RuleCategory, type RuleSeverity, type TypeCheckerConfig, type UserConfigExport, VIZE_CONFIG_JSON_SCHEMA_PATH, VIZE_CONFIG_PKL_SCHEMA_PATH, type VitePluginConfig, type VizeConfig, defineConfig, loadConfig, normalizeGlobalTypes };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vize",
3
- "version": "0.78.0",
3
+ "version": "0.81.0",
4
4
  "description": "Vize - High-performance Vue.js toolchain in Rust",
5
5
  "keywords": [
6
6
  "cli",
@@ -45,25 +45,25 @@
45
45
  "access": "public"
46
46
  },
47
47
  "dependencies": {
48
- "oxc-transform": "0.56.5"
48
+ "oxc-transform": "0.130.0"
49
49
  },
50
50
  "devDependencies": {
51
- "@tsdown/css": "0.21.9",
52
- "@types/node": "25.6.0",
53
- "tsdown": "0.21.9",
51
+ "@tsdown/css": "0.22.0",
52
+ "@types/node": "25.7.0",
53
+ "tsdown": "0.22.0",
54
54
  "typescript": "6.0.3",
55
- "vite": "npm:@voidzero-dev/vite-plus-core@0.1.19",
56
- "vite-plus": "0.1.19"
55
+ "vite": "npm:@voidzero-dev/vite-plus-core@0.1.21",
56
+ "vite-plus": "0.1.21"
57
57
  },
58
58
  "optionalDependencies": {
59
- "@vizejs/native-darwin-arm64": "0.78.0",
60
- "@vizejs/native-darwin-x64": "0.78.0",
61
- "@vizejs/native-linux-arm64-gnu": "0.78.0",
62
- "@vizejs/native-linux-arm64-musl": "0.78.0",
63
- "@vizejs/native-linux-x64-gnu": "0.78.0",
64
- "@vizejs/native-linux-x64-musl": "0.78.0",
65
- "@vizejs/native-win32-arm64-msvc": "0.78.0",
66
- "@vizejs/native-win32-x64-msvc": "0.78.0"
59
+ "@vizejs/native-darwin-arm64": "0.81.0",
60
+ "@vizejs/native-darwin-x64": "0.81.0",
61
+ "@vizejs/native-linux-arm64-gnu": "0.81.0",
62
+ "@vizejs/native-linux-arm64-musl": "0.81.0",
63
+ "@vizejs/native-linux-x64-gnu": "0.81.0",
64
+ "@vizejs/native-linux-x64-musl": "0.81.0",
65
+ "@vizejs/native-win32-arm64-msvc": "0.81.0",
66
+ "@vizejs/native-win32-x64-msvc": "0.81.0"
67
67
  },
68
68
  "engines": {
69
69
  "node": ">=18"
package/pkl/vize.pkl CHANGED
@@ -35,6 +35,7 @@ class VitePluginConfig {
35
35
  include: FilterPattern? = null
36
36
  exclude: FilterPattern? = null
37
37
  scanPatterns: Listing<String>? = null
38
+ precompileBatchSize: Int? = null
38
39
  ignorePatterns: Listing<String>? = null
39
40
  }
40
41
 
@@ -118,6 +118,10 @@
118
118
  "type": "array",
119
119
  "items": { "type": "string" }
120
120
  },
121
+ "precompileBatchSize": {
122
+ "type": "integer",
123
+ "minimum": 1
124
+ },
121
125
  "ignorePatterns": {
122
126
  "type": "array",
123
127
  "items": { "type": "string" }
package/src/cli.ts CHANGED
@@ -7,6 +7,16 @@ import { loadConfig } from "./config.js";
7
7
 
8
8
  const require = createRequire(import.meta.url);
9
9
  const WORKSPACE_BINDING_PATH = "../../vize-native";
10
+ const BUILD_BATCH_SIZE = 128;
11
+ const SKIPPED_VUE_FILE_DIRECTORIES = new Set([
12
+ "node_modules",
13
+ "dist",
14
+ ".git",
15
+ ".nuxt",
16
+ ".output",
17
+ ".nitro",
18
+ "coverage",
19
+ ]);
10
20
 
11
21
  // ============================================================================
12
22
  // Native binding loader (oxlint pattern)
@@ -504,44 +514,56 @@ async function runBuild(args: string[]): Promise<void> {
504
514
  process.exit(1);
505
515
  }
506
516
 
507
- const inputs = files.map((file) => ({
508
- path: file,
509
- source: readFileSync(file, "utf8"),
510
- }));
511
517
  const native = loadNative("build");
512
518
  const startedAt = performance.now();
513
- const result = native.compileSfcBatchWithResults(inputs, toNativeBuildOptions(options));
514
- const timeMs = result.timeMs ?? result.time_ms ?? performance.now() - startedAt;
515
- const results = [...result.results].sort((left, right) => left.path.localeCompare(right.path));
516
519
 
517
520
  if (options.format !== "stats") {
518
521
  mkdirSync(options.output, { recursive: true });
519
522
  }
520
523
 
521
- for (const fileResult of results) {
522
- const source = inputs.find((input) => input.path === fileResult.path)?.source ?? "";
523
- for (const warning of fileResult.warnings) {
524
- process.stderr.write(`warning: ${displayPath(fileResult.path)} ${warning}\n`);
525
- }
526
- for (const error of fileResult.errors) {
527
- process.stderr.write(`error: ${displayPath(fileResult.path)} ${error}\n`);
528
- }
524
+ let nativeTimeMs = 0;
525
+ let failed = 0;
526
+ let success = 0;
527
+
528
+ for (let start = 0; start < files.length; start += BUILD_BATCH_SIZE) {
529
+ const inputs = files.slice(start, start + BUILD_BATCH_SIZE).map((file) => ({
530
+ path: file,
531
+ source: readFileSync(file, "utf8"),
532
+ }));
533
+ const sourceByPath = new Map(inputs.map((input) => [input.path, input.source]));
534
+ const chunkStartedAt = performance.now();
535
+ const result = native.compileSfcBatchWithResults(inputs, toNativeBuildOptions(options));
536
+ nativeTimeMs += result.timeMs ?? result.time_ms ?? performance.now() - chunkStartedAt;
537
+ const results = [...result.results].sort((left, right) => left.path.localeCompare(right.path));
538
+
539
+ for (const fileResult of results) {
540
+ const source = sourceByPath.get(fileResult.path) ?? "";
541
+ for (const warning of fileResult.warnings) {
542
+ process.stderr.write(`warning: ${displayPath(fileResult.path)} ${warning}\n`);
543
+ }
544
+ for (const error of fileResult.errors) {
545
+ process.stderr.write(`error: ${displayPath(fileResult.path)} ${error}\n`);
546
+ }
529
547
 
530
- if (fileResult.errors.length > 0 || options.format === "stats") {
531
- continue;
548
+ if (fileResult.errors.length > 0 || options.format === "stats") {
549
+ continue;
550
+ }
551
+
552
+ const extension =
553
+ options.format === "json" ? "json" : getOutputExtension(source, options.scriptExt);
554
+ const outputPath = path.join(options.output, outputFileName(fileResult.path, extension));
555
+ const content =
556
+ options.format === "json" ? JSON.stringify(fileResult, null, 2) : fileResult.code;
557
+ writeFileSync(outputPath, content);
532
558
  }
533
559
 
534
- const extension =
535
- options.format === "json" ? "json" : getOutputExtension(source, options.scriptExt);
536
- const outputPath = path.join(options.output, outputFileName(fileResult.path, extension));
537
- const content =
538
- options.format === "json" ? JSON.stringify(fileResult, null, 2) : fileResult.code;
539
- writeFileSync(outputPath, content);
560
+ const chunkFailed =
561
+ result.failedCount ?? result.failed_count ?? results.filter((r) => r.errors.length).length;
562
+ failed += chunkFailed;
563
+ success += result.successCount ?? result.success_count ?? results.length - chunkFailed;
540
564
  }
541
565
 
542
- const failed =
543
- result.failedCount ?? result.failed_count ?? results.filter((r) => r.errors.length).length;
544
- const success = result.successCount ?? result.success_count ?? results.length - failed;
566
+ const timeMs = nativeTimeMs || performance.now() - startedAt;
545
567
  process.stderr.write(
546
568
  `\x1b[32mOK\x1b[0m Built ${success} Vue file(s) in ${timeMs.toFixed(2)}ms\n`,
547
569
  );
@@ -920,7 +942,7 @@ function collectVueFilesFromDirectory(directory: string, recursive: boolean): st
920
942
  for (const entry of entries) {
921
943
  const entryPath = path.join(directory, entry.name);
922
944
  if (entry.isDirectory()) {
923
- if (entry.name === "node_modules" || entry.name === ".git") {
945
+ if (SKIPPED_VUE_FILE_DIRECTORIES.has(entry.name)) {
924
946
  continue;
925
947
  }
926
948
  if (recursive) {
@@ -106,9 +106,16 @@ export interface VitePluginConfig {
106
106
  */
107
107
  scanPatterns?: string[];
108
108
 
109
+ /**
110
+ * Maximum number of Vue files to compile in a single native batch during
111
+ * pre-compilation. Lower values reduce peak V8 heap usage in large apps.
112
+ * @default 128
113
+ */
114
+ precompileBatchSize?: number;
115
+
109
116
  /**
110
117
  * Glob patterns to ignore during pre-compilation
111
- * @default ['node_modules/**', 'dist/**', '.git/**']
118
+ * @default ['node_modules/**', 'dist/**', '.git/**', '.nuxt/**', '.output/**', '.nitro/**', 'coverage/**']
112
119
  */
113
120
  ignorePatterns?: string[];
114
121
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"config-Dt42z0M4.d.mts","names":[],"sources":["../src/types/compiler.ts","../src/types/rules.ts","../src/types/tools.ts","../src/types/musea.ts","../src/types/loader.ts","../src/types/core.ts","../src/config.ts"],"mappings":"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"}