vize 0.162.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 +5 -1
- package/dist/cli.mjs.map +1 -1
- package/dist/config-BPtKWQg0.d.mts.map +1 -1
- package/dist/config.mjs +6 -4
- package/dist/config.mjs.map +1 -1
- package/package.json +5 -4
- package/src/cli.ts +3 -0
- package/src/config.ts +10 -5
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)
|
|
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":"
|
|
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 (
|
|
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);
|
package/dist/config.mjs.map
CHANGED
|
@@ -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.
|
|
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.
|
|
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",
|
|
@@ -64,7 +65,7 @@
|
|
|
64
65
|
},
|
|
65
66
|
"peerDependencies": {
|
|
66
67
|
"@pkl-community/pkl": "0.27.2",
|
|
67
|
-
"@typescript/native-preview": "7.0.0-dev.
|
|
68
|
+
"@typescript/native-preview": "7.0.0-dev.20260602.1"
|
|
68
69
|
},
|
|
69
70
|
"peerDependenciesMeta": {
|
|
70
71
|
"@typescript/native-preview": {
|
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 (
|
|
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;
|