vize 0.163.0 → 0.164.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
@@ -1,6 +1,10 @@
1
1
  import { createRequire } from "node:module";
2
+ import { dirname } from "node:path";
2
3
  //#region src/cli.ts
3
- createRequire(import.meta.url)("@vizejs/native").runCli(process.argv.slice(2));
4
+ const require = createRequire(import.meta.url);
5
+ const native = require("@vizejs/native");
6
+ process.env.VIZE_VUE_PACKAGE ??= dirname(require.resolve("vue/package.json"));
7
+ native.runCli(process.argv.slice(2));
4
8
  //#endregion
5
9
  export {};
6
10
 
package/dist/cli.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.mjs","names":[],"sources":["../src/cli.ts"],"sourcesContent":["import { createRequire } from \"node:module\";\n\nconst require = createRequire(import.meta.url);\nconst native = require(\"@vizejs/native\") as typeof import(\"@vizejs/native\");\n\nnative.runCli(process.argv.slice(2));\n"],"mappings":";;AAEgB,cAAc,OAAO,KAAK,IACpB,CAAC,iBAEjB,CAAC,OAAO,QAAQ,KAAK,MAAM,EAAE,CAAC"}
1
+ {"version":3,"file":"cli.mjs","names":[],"sources":["../src/cli.ts"],"sourcesContent":["import { createRequire } from \"node:module\";\nimport { dirname } from \"node:path\";\n\nconst require = createRequire(import.meta.url);\nconst native = require(\"@vizejs/native\") as typeof import(\"@vizejs/native\");\n\nprocess.env.VIZE_VUE_PACKAGE ??= dirname(require.resolve(\"vue/package.json\"));\n\nnative.runCli(process.argv.slice(2));\n"],"mappings":";;;AAGA,MAAM,UAAU,cAAc,OAAO,KAAK,IAAI;AAC9C,MAAM,SAAS,QAAQ,iBAAiB;AAExC,QAAQ,IAAI,qBAAqB,QAAQ,QAAQ,QAAQ,mBAAmB,CAAC;AAE7E,OAAO,OAAO,QAAQ,KAAK,MAAM,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"config-BPtKWQg0.d.mts","names":[],"sources":["../src/types/generated.ts","../src/types/rules.ts","../src/types/runtime.ts","../src/types/index.ts","../src/config.ts"],"mappings":"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"}
1
+ {"version":3,"file":"config-BPtKWQg0.d.mts","names":[],"sources":["../src/types/generated.ts","../src/types/rules.ts","../src/types/runtime.ts","../src/types/index.ts","../src/config.ts"],"mappings":"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"}
package/dist/config.mjs CHANGED
@@ -223,13 +223,10 @@ function isGlobalConfigEntry(entry) {
223
223
  function isEmptyConfigEntry(entry) {
224
224
  return Object.keys(entry).length === 0;
225
225
  }
226
- function isPlainObject(value) {
227
- return typeof value === "object" && value !== null && !Array.isArray(value);
228
- }
229
226
  function stripNullish(value) {
230
227
  if (value === null) return;
231
228
  if (Array.isArray(value)) return value.map((entry) => stripNullish(entry)).filter((entry) => entry !== void 0);
232
- if (typeof value === "object" && value !== null) {
229
+ if (isPlainObject(value)) {
233
230
  const result = {};
234
231
  for (const [key, entry] of Object.entries(value)) {
235
232
  const normalizedEntry = stripNullish(entry);
@@ -239,6 +236,11 @@ function stripNullish(value) {
239
236
  }
240
237
  return value;
241
238
  }
239
+ function isPlainObject(value) {
240
+ if (typeof value !== "object" || value === null || Array.isArray(value)) return false;
241
+ const prototype = Object.getPrototypeOf(value);
242
+ return prototype === Object.prototype || prototype === null;
243
+ }
242
244
  function getErrorMessage(error) {
243
245
  if (error instanceof Error) return error.message;
244
246
  return String(error);
@@ -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 { randomUUID } from \"node:crypto\";\nimport { fileURLToPath, pathToFileURL } from \"node:url\";\nimport { transform } from \"oxc-transform\";\nimport type {\n LanguageServerConfig,\n VizeConfig,\n VizeConfigEntry,\n ResolvedVizeConfig,\n LoadConfigOptions,\n UserConfigExport,\n ConfigEnv,\n GlobalTypesConfig,\n GlobalTypeDeclaration,\n} from \"./types/index.js\";\n\nexport const CONFIG_FILE_NAMES = [\n \"vize.config.pkl\",\n \"vize.config.ts\",\n \"vize.config.js\",\n \"vize.config.mjs\",\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\nconst DOCUMENTED_PKL_SCHEMA_IMPORT_RE =\n /^(\\s*(?:amends|import)\\s+)([\"'])node_modules\\/vize\\/pkl\\/(VizeConfig\\.pkl|vize\\.pkl)\\2/gm;\n\ntype CompatVizeConfig = VizeConfig & {\n lsp?: LanguageServerConfig;\n};\n\ntype CompatVizeConfigEntry = VizeConfigEntry & {\n lsp?: LanguageServerConfig;\n};\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<ResolvedVizeConfig | 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 return loadConfigFromDirAuto(root, env);\n }\n\n return loadConfigFromDir(root, env);\n}\n\nasync function loadConfigFromDir(dir: string, env?: ConfigEnv): Promise<ResolvedVizeConfig | null> {\n for (const name of CONFIG_FILE_NAMES) {\n const filePath = path.join(dir, name);\n if (!fs.existsSync(filePath)) {\n continue;\n }\n\n const config = await loadConfigFile(filePath, env);\n if (config !== null) {\n return config;\n }\n }\n return null;\n}\n\nasync function loadConfigFromDirAuto(\n startDir: string,\n env?: ConfigEnv,\n): Promise<ResolvedVizeConfig | null> {\n let currentDir = path.resolve(startDir);\n\n while (true) {\n const config = await loadConfigFromDir(currentDir, env);\n if (config !== null) {\n return config;\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(\n filePath: string,\n env?: ConfigEnv,\n): Promise<ResolvedVizeConfig | null> {\n const absolutePath = path.resolve(filePath);\n if (!fs.existsSync(absolutePath)) {\n return null;\n }\n\n const ext = path.extname(absolutePath);\n\n if (ext === \".pkl\") {\n return loadPklConfig(absolutePath);\n }\n\n if (ext === \".json\") {\n const content = fs.readFileSync(absolutePath, \"utf-8\");\n return parseJsonConfig(content, absolutePath);\n }\n\n if (ext === \".ts\") {\n return loadTypeScriptConfig(absolutePath, env);\n }\n\n return loadESMConfig(absolutePath, env);\n}\n\nfunction findPklBinary(): string | null {\n try {\n const pklPkgPath = import.meta.resolve?.(\"@pkl-community/pkl\");\n if (pklPkgPath) {\n const pklLibDir = path.dirname(fileURLToPath(pklPkgPath));\n const pklPackageDir = path.dirname(pklLibDir);\n const candidates = [\n path.join(pklLibDir, \"main.js\"),\n path.join(pklPackageDir, \"pkl\"),\n path.join(pklPackageDir, \"pkl.exe\"),\n ];\n\n for (const candidate of candidates) {\n if (fs.existsSync(candidate)) {\n try {\n execFileSync(candidate, [\"--version\"], { stdio: \"ignore\" });\n return candidate;\n } catch {\n // Keep looking: the bundled shim can exist even when its runtime is unavailable.\n }\n }\n }\n }\n } catch {\n // Fall back to PATH below.\n }\n\n try {\n execFileSync(\"pkl\", [\"--version\"], { stdio: \"ignore\" });\n return \"pkl\";\n } catch {\n return null;\n }\n}\n\nfunction loadPklConfig(filePath: string): ResolvedVizeConfig | null {\n const pklBin = findPklBinary();\n if (!pklBin) {\n console.warn(\n \"[vize] pkl CLI not found. Install @pkl-community/pkl or add pkl to PATH. \" +\n \"Falling back to the next config format.\",\n );\n return null;\n }\n\n let output: string;\n const patchedFilePath = createPklConfigWithBundledSchemaImports(filePath);\n const evalFilePath = patchedFilePath ?? filePath;\n try {\n output = execFileSync(pklBin, [\"eval\", \"-f\", \"json\", evalFilePath], {\n cwd: path.dirname(filePath),\n encoding: \"utf-8\",\n stdio: [\"ignore\", \"pipe\", \"pipe\"],\n timeout: 30_000,\n });\n } catch (error) {\n throw new Error(`Failed to evaluate vize PKL config at ${filePath}: ${getErrorMessage(error)}`);\n } finally {\n if (patchedFilePath) {\n fs.rmSync(patchedFilePath, { force: true });\n }\n }\n return parseJsonConfig(output, filePath);\n}\n\nfunction createPklConfigWithBundledSchemaImports(filePath: string): string | null {\n const configDir = path.dirname(filePath);\n const source = fs.readFileSync(filePath, \"utf-8\");\n let patched = false;\n\n const content = source.replace(\n DOCUMENTED_PKL_SCHEMA_IMPORT_RE,\n (match, prefix, quote, schemaFile) => {\n const projectSchemaPath = path.join(configDir, \"node_modules\", \"vize\", \"pkl\", schemaFile);\n if (fs.existsSync(projectSchemaPath)) {\n return match;\n }\n\n const bundledSchemaPath = path.join(PACKAGE_ROOT, \"pkl\", schemaFile);\n if (!fs.existsSync(bundledSchemaPath)) {\n return match;\n }\n\n patched = true;\n return `${prefix}${quote}${pathToFileURL(bundledSchemaPath).href}${quote}`;\n },\n );\n\n if (!patched) {\n return null;\n }\n\n const tempFile = path.join(\n configDir,\n `.vize-config-${process.pid}-${Date.now()}-${randomUUID()}.pkl`,\n );\n fs.writeFileSync(tempFile, content, { flag: \"wx\", mode: 0o600 });\n return tempFile;\n}\n\nexport async function resolveConfigExport(\n exported: UserConfigExport,\n env?: ConfigEnv,\n): Promise<ResolvedVizeConfig> {\n if (typeof exported === \"function\") {\n return normalizeLoadedConfig(await exported(env ?? DEFAULT_CONFIG_ENV));\n }\n\n return normalizeLoadedConfig(exported);\n}\n\nasync function loadTypeScriptConfig(\n filePath: string,\n env?: ConfigEnv,\n): Promise<ResolvedVizeConfig> {\n const source = fs.readFileSync(filePath, \"utf-8\");\n const result = await transform(filePath, source, {\n typescript: {\n onlyRemoveTypeImports: true,\n },\n });\n\n const tempFile = path.join(\n path.dirname(filePath),\n `.vize-config-${process.pid}-${Date.now()}-${randomUUID()}.mjs`,\n );\n fs.writeFileSync(tempFile, result.code, { flag: \"wx\", mode: 0o600 });\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<ResolvedVizeConfig> {\n const module = await importFresh(filePath);\n const exported: UserConfigExport = module.default || module;\n return resolveConfigExport(exported, env);\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): ResolvedVizeConfig {\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): ResolvedVizeConfig {\n const normalized = stripNullish(config);\n if (Array.isArray(normalized)) {\n return normalizeConfigEntries(normalized as CompatVizeConfigEntry[]);\n }\n\n return normalizeConfigObject((normalized ?? {}) as CompatVizeConfig);\n}\n\nfunction normalizeConfigObject(config: CompatVizeConfig): ResolvedVizeConfig {\n const { entries: rawEntries, ...rootConfig } = normalizeConfigAliases(config) as VizeConfig & {\n entries?: CompatVizeConfigEntry[];\n };\n const rootEntry = rootConfig as VizeConfigEntry;\n const entries = [\n ...(isEmptyConfigEntry(rootEntry) ? [] : [rootEntry]),\n ...(rawEntries ?? []).map((entry) => normalizeConfigAliases(entry) as VizeConfigEntry),\n ];\n\n return {\n ...rootEntry,\n entries,\n };\n}\n\nfunction normalizeConfigEntries(entries: CompatVizeConfigEntry[]): ResolvedVizeConfig {\n const normalizedEntries = entries.map(\n (entry) => normalizeConfigAliases(entry) as VizeConfigEntry,\n );\n const globalConfig = mergeConfigEntries(normalizedEntries.filter(isGlobalConfigEntry));\n\n return {\n ...globalConfig,\n entries: normalizedEntries,\n };\n}\n\nfunction mergeConfigEntries(entries: VizeConfigEntry[]): VizeConfigEntry {\n const result: Record<string, unknown> = {};\n for (const entry of entries) {\n deepMerge(result, stripEntryMetadata(entry));\n }\n return result as VizeConfigEntry;\n}\n\nfunction stripEntryMetadata(entry: VizeConfigEntry): Partial<VizeConfigEntry> {\n const { name, basePath, files, ignores, extends: extendsConfig, ...config } = entry;\n void name;\n void basePath;\n void files;\n void ignores;\n void extendsConfig;\n return config;\n}\n\nfunction deepMerge(target: Record<string, unknown>, source: Record<string, unknown>): void {\n for (const [key, value] of Object.entries(source)) {\n if (value === undefined) {\n continue;\n }\n\n const current = target[key];\n if (isPlainObject(current) && isPlainObject(value)) {\n deepMerge(current, value);\n } else {\n target[key] = value;\n }\n }\n}\n\nfunction isGlobalConfigEntry(entry: VizeConfigEntry): boolean {\n return entry.basePath === undefined && entry.files === undefined && entry.ignores === undefined;\n}\n\nfunction isEmptyConfigEntry(entry: VizeConfigEntry): boolean {\n return Object.keys(entry).length === 0;\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\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 resolvedConfig =\n \"types\" in config &&\n typeof config.types === \"object\" &&\n config.types !== null &&\n !Array.isArray(config.types)\n ? config.types\n : config;\n\n const result: Record<string, GlobalTypeDeclaration> = {};\n for (const [key, value] of Object.entries(resolvedConfig)) {\n if (typeof value === \"string\") {\n result[key] = { type: value };\n } else {\n result[key] = value;\n }\n }\n return result;\n}\n\nfunction normalizeConfigAliases(config: CompatVizeConfig): VizeConfig {\n if (config.lsp === undefined) {\n return config;\n }\n\n const { lsp, ...rest } = config;\n if (config.languageServer !== undefined) {\n return rest;\n }\n\n return {\n ...rest,\n languageServer: lsp,\n };\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 { randomUUID } from \"node:crypto\";\nimport { fileURLToPath, pathToFileURL } from \"node:url\";\nimport { transform } from \"oxc-transform\";\nimport type {\n LanguageServerConfig,\n VizeConfig,\n VizeConfigEntry,\n ResolvedVizeConfig,\n LoadConfigOptions,\n UserConfigExport,\n ConfigEnv,\n GlobalTypesConfig,\n GlobalTypeDeclaration,\n} from \"./types/index.js\";\n\nexport const CONFIG_FILE_NAMES = [\n \"vize.config.pkl\",\n \"vize.config.ts\",\n \"vize.config.js\",\n \"vize.config.mjs\",\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\nconst DOCUMENTED_PKL_SCHEMA_IMPORT_RE =\n /^(\\s*(?:amends|import)\\s+)([\"'])node_modules\\/vize\\/pkl\\/(VizeConfig\\.pkl|vize\\.pkl)\\2/gm;\n\ntype CompatVizeConfig = VizeConfig & {\n lsp?: LanguageServerConfig;\n};\n\ntype CompatVizeConfigEntry = VizeConfigEntry & {\n lsp?: LanguageServerConfig;\n};\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<ResolvedVizeConfig | 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 return loadConfigFromDirAuto(root, env);\n }\n\n return loadConfigFromDir(root, env);\n}\n\nasync function loadConfigFromDir(dir: string, env?: ConfigEnv): Promise<ResolvedVizeConfig | null> {\n for (const name of CONFIG_FILE_NAMES) {\n const filePath = path.join(dir, name);\n if (!fs.existsSync(filePath)) {\n continue;\n }\n\n const config = await loadConfigFile(filePath, env);\n if (config !== null) {\n return config;\n }\n }\n return null;\n}\n\nasync function loadConfigFromDirAuto(\n startDir: string,\n env?: ConfigEnv,\n): Promise<ResolvedVizeConfig | null> {\n let currentDir = path.resolve(startDir);\n\n while (true) {\n const config = await loadConfigFromDir(currentDir, env);\n if (config !== null) {\n return config;\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(\n filePath: string,\n env?: ConfigEnv,\n): Promise<ResolvedVizeConfig | null> {\n const absolutePath = path.resolve(filePath);\n if (!fs.existsSync(absolutePath)) {\n return null;\n }\n\n const ext = path.extname(absolutePath);\n\n if (ext === \".pkl\") {\n return loadPklConfig(absolutePath);\n }\n\n if (ext === \".json\") {\n const content = fs.readFileSync(absolutePath, \"utf-8\");\n return parseJsonConfig(content, absolutePath);\n }\n\n if (ext === \".ts\") {\n return loadTypeScriptConfig(absolutePath, env);\n }\n\n return loadESMConfig(absolutePath, env);\n}\n\nfunction findPklBinary(): string | null {\n try {\n const pklPkgPath = import.meta.resolve?.(\"@pkl-community/pkl\");\n if (pklPkgPath) {\n const pklLibDir = path.dirname(fileURLToPath(pklPkgPath));\n const pklPackageDir = path.dirname(pklLibDir);\n const candidates = [\n path.join(pklLibDir, \"main.js\"),\n path.join(pklPackageDir, \"pkl\"),\n path.join(pklPackageDir, \"pkl.exe\"),\n ];\n\n for (const candidate of candidates) {\n if (fs.existsSync(candidate)) {\n try {\n execFileSync(candidate, [\"--version\"], { stdio: \"ignore\" });\n return candidate;\n } catch {\n // Keep looking: the bundled shim can exist even when its runtime is unavailable.\n }\n }\n }\n }\n } catch {\n // Fall back to PATH below.\n }\n\n try {\n execFileSync(\"pkl\", [\"--version\"], { stdio: \"ignore\" });\n return \"pkl\";\n } catch {\n return null;\n }\n}\n\nfunction loadPklConfig(filePath: string): ResolvedVizeConfig | null {\n const pklBin = findPklBinary();\n if (!pklBin) {\n console.warn(\n \"[vize] pkl CLI not found. Install @pkl-community/pkl or add pkl to PATH. \" +\n \"Falling back to the next config format.\",\n );\n return null;\n }\n\n let output: string;\n const patchedFilePath = createPklConfigWithBundledSchemaImports(filePath);\n const evalFilePath = patchedFilePath ?? filePath;\n try {\n output = execFileSync(pklBin, [\"eval\", \"-f\", \"json\", evalFilePath], {\n cwd: path.dirname(filePath),\n encoding: \"utf-8\",\n stdio: [\"ignore\", \"pipe\", \"pipe\"],\n timeout: 30_000,\n });\n } catch (error) {\n throw new Error(`Failed to evaluate vize PKL config at ${filePath}: ${getErrorMessage(error)}`);\n } finally {\n if (patchedFilePath) {\n fs.rmSync(patchedFilePath, { force: true });\n }\n }\n return parseJsonConfig(output, filePath);\n}\n\nfunction createPklConfigWithBundledSchemaImports(filePath: string): string | null {\n const configDir = path.dirname(filePath);\n const source = fs.readFileSync(filePath, \"utf-8\");\n let patched = false;\n\n const content = source.replace(\n DOCUMENTED_PKL_SCHEMA_IMPORT_RE,\n (match, prefix, quote, schemaFile) => {\n const projectSchemaPath = path.join(configDir, \"node_modules\", \"vize\", \"pkl\", schemaFile);\n if (fs.existsSync(projectSchemaPath)) {\n return match;\n }\n\n const bundledSchemaPath = path.join(PACKAGE_ROOT, \"pkl\", schemaFile);\n if (!fs.existsSync(bundledSchemaPath)) {\n return match;\n }\n\n patched = true;\n return `${prefix}${quote}${pathToFileURL(bundledSchemaPath).href}${quote}`;\n },\n );\n\n if (!patched) {\n return null;\n }\n\n const tempFile = path.join(\n configDir,\n `.vize-config-${process.pid}-${Date.now()}-${randomUUID()}.pkl`,\n );\n fs.writeFileSync(tempFile, content, { flag: \"wx\", mode: 0o600 });\n return tempFile;\n}\n\nexport async function resolveConfigExport(\n exported: UserConfigExport,\n env?: ConfigEnv,\n): Promise<ResolvedVizeConfig> {\n if (typeof exported === \"function\") {\n return normalizeLoadedConfig(await exported(env ?? DEFAULT_CONFIG_ENV));\n }\n\n return normalizeLoadedConfig(exported);\n}\n\nasync function loadTypeScriptConfig(\n filePath: string,\n env?: ConfigEnv,\n): Promise<ResolvedVizeConfig> {\n const source = fs.readFileSync(filePath, \"utf-8\");\n const result = await transform(filePath, source, {\n typescript: {\n onlyRemoveTypeImports: true,\n },\n });\n\n const tempFile = path.join(\n path.dirname(filePath),\n `.vize-config-${process.pid}-${Date.now()}-${randomUUID()}.mjs`,\n );\n fs.writeFileSync(tempFile, result.code, { flag: \"wx\", mode: 0o600 });\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<ResolvedVizeConfig> {\n const module = await importFresh(filePath);\n const exported: UserConfigExport = module.default || module;\n return resolveConfigExport(exported, env);\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): ResolvedVizeConfig {\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): ResolvedVizeConfig {\n const normalized = stripNullish(config);\n if (Array.isArray(normalized)) {\n return normalizeConfigEntries(normalized as CompatVizeConfigEntry[]);\n }\n\n return normalizeConfigObject((normalized ?? {}) as CompatVizeConfig);\n}\n\nfunction normalizeConfigObject(config: CompatVizeConfig): ResolvedVizeConfig {\n const { entries: rawEntries, ...rootConfig } = normalizeConfigAliases(config) as VizeConfig & {\n entries?: CompatVizeConfigEntry[];\n };\n const rootEntry = rootConfig as VizeConfigEntry;\n const entries = [\n ...(isEmptyConfigEntry(rootEntry) ? [] : [rootEntry]),\n ...(rawEntries ?? []).map((entry) => normalizeConfigAliases(entry) as VizeConfigEntry),\n ];\n\n return {\n ...rootEntry,\n entries,\n };\n}\n\nfunction normalizeConfigEntries(entries: CompatVizeConfigEntry[]): ResolvedVizeConfig {\n const normalizedEntries = entries.map(\n (entry) => normalizeConfigAliases(entry) as VizeConfigEntry,\n );\n const globalConfig = mergeConfigEntries(normalizedEntries.filter(isGlobalConfigEntry));\n\n return {\n ...globalConfig,\n entries: normalizedEntries,\n };\n}\n\nfunction mergeConfigEntries(entries: VizeConfigEntry[]): VizeConfigEntry {\n const result: Record<string, unknown> = {};\n for (const entry of entries) {\n deepMerge(result, stripEntryMetadata(entry));\n }\n return result as VizeConfigEntry;\n}\n\nfunction stripEntryMetadata(entry: VizeConfigEntry): Partial<VizeConfigEntry> {\n const { name, basePath, files, ignores, extends: extendsConfig, ...config } = entry;\n void name;\n void basePath;\n void files;\n void ignores;\n void extendsConfig;\n return config;\n}\n\nfunction deepMerge(target: Record<string, unknown>, source: Record<string, unknown>): void {\n for (const [key, value] of Object.entries(source)) {\n if (value === undefined) {\n continue;\n }\n\n const current = target[key];\n if (isPlainObject(current) && isPlainObject(value)) {\n deepMerge(current, value);\n } else {\n target[key] = value;\n }\n }\n}\n\nfunction isGlobalConfigEntry(entry: VizeConfigEntry): boolean {\n return entry.basePath === undefined && entry.files === undefined && entry.ignores === undefined;\n}\n\nfunction isEmptyConfigEntry(entry: VizeConfigEntry): boolean {\n return Object.keys(entry).length === 0;\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 (isPlainObject(value)) {\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 isPlainObject(value: unknown): value is Record<string, unknown> {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n return false;\n }\n\n const prototype = Object.getPrototypeOf(value);\n return prototype === Object.prototype || prototype === null;\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 resolvedConfig =\n \"types\" in config &&\n typeof config.types === \"object\" &&\n config.types !== null &&\n !Array.isArray(config.types)\n ? config.types\n : config;\n\n const result: Record<string, GlobalTypeDeclaration> = {};\n for (const [key, value] of Object.entries(resolvedConfig)) {\n if (typeof value === \"string\") {\n result[key] = { type: value };\n } else {\n result[key] = value;\n }\n }\n return result;\n}\n\nfunction normalizeConfigAliases(config: CompatVizeConfig): VizeConfig {\n if (config.lsp === undefined) {\n return config;\n }\n\n const { lsp, ...rest } = config;\n if (config.languageServer !== undefined) {\n return rest;\n }\n\n return {\n ...rest,\n languageServer: lsp,\n };\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vize",
3
- "version": "0.163.0",
3
+ "version": "0.164.0",
4
4
  "description": "Vize - High-performance Vue.js toolchain in Rust",
5
5
  "keywords": [
6
6
  "cli",
@@ -50,8 +50,9 @@
50
50
  "access": "public"
51
51
  },
52
52
  "dependencies": {
53
- "@vizejs/native": "0.163.0",
54
- "oxc-transform": "0.130.0"
53
+ "@vizejs/native": "0.164.0",
54
+ "oxc-transform": "0.130.0",
55
+ "vue": "3.5.34"
55
56
  },
56
57
  "devDependencies": {
57
58
  "@pkl-community/pkl": "0.27.2",
package/src/cli.ts CHANGED
@@ -1,6 +1,9 @@
1
1
  import { createRequire } from "node:module";
2
+ import { dirname } from "node:path";
2
3
 
3
4
  const require = createRequire(import.meta.url);
4
5
  const native = require("@vizejs/native") as typeof import("@vizejs/native");
5
6
 
7
+ process.env.VIZE_VUE_PACKAGE ??= dirname(require.resolve("vue/package.json"));
8
+
6
9
  native.runCli(process.argv.slice(2));
package/src/config.ts CHANGED
@@ -384,10 +384,6 @@ function isEmptyConfigEntry(entry: VizeConfigEntry): boolean {
384
384
  return Object.keys(entry).length === 0;
385
385
  }
386
386
 
387
- function isPlainObject(value: unknown): value is Record<string, unknown> {
388
- return typeof value === "object" && value !== null && !Array.isArray(value);
389
- }
390
-
391
387
  function stripNullish(value: unknown): unknown {
392
388
  if (value === null) {
393
389
  return undefined;
@@ -397,7 +393,7 @@ function stripNullish(value: unknown): unknown {
397
393
  return value.map((entry) => stripNullish(entry)).filter((entry) => entry !== undefined);
398
394
  }
399
395
 
400
- if (typeof value === "object" && value !== null) {
396
+ if (isPlainObject(value)) {
401
397
  const result: Record<string, unknown> = {};
402
398
  for (const [key, entry] of Object.entries(value)) {
403
399
  const normalizedEntry = stripNullish(entry);
@@ -411,6 +407,15 @@ function stripNullish(value: unknown): unknown {
411
407
  return value;
412
408
  }
413
409
 
410
+ function isPlainObject(value: unknown): value is Record<string, unknown> {
411
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
412
+ return false;
413
+ }
414
+
415
+ const prototype = Object.getPrototypeOf(value);
416
+ return prototype === Object.prototype || prototype === null;
417
+ }
418
+
414
419
  function getErrorMessage(error: unknown): string {
415
420
  if (error instanceof Error) {
416
421
  return error.message;