vize 0.82.0 → 0.84.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/config-CTXni-Py.d.mts.map +1 -1
- package/dist/config.mjs +11 -3
- package/dist/config.mjs.map +1 -1
- package/package.json +9 -9
- package/src/config.ts +5 -3
|
@@ -1 +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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
|
|
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.mjs
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as fs from "node:fs";
|
|
2
|
+
import * as os from "node:os";
|
|
2
3
|
import * as path from "node:path";
|
|
3
4
|
import { execFileSync } from "node:child_process";
|
|
4
5
|
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
@@ -76,13 +77,20 @@ async function resolveConfigExport(exported, env) {
|
|
|
76
77
|
}
|
|
77
78
|
async function loadTypeScriptConfig(filePath, env) {
|
|
78
79
|
const result = transform(filePath, fs.readFileSync(filePath, "utf-8"), { typescript: { onlyRemoveTypeImports: true } });
|
|
79
|
-
const
|
|
80
|
-
|
|
80
|
+
const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), "vize-config-"));
|
|
81
|
+
const tempFile = path.join(tempDir, "config.mjs");
|
|
82
|
+
fs.writeFileSync(tempFile, result.code, {
|
|
83
|
+
flag: "wx",
|
|
84
|
+
mode: 384
|
|
85
|
+
});
|
|
81
86
|
try {
|
|
82
87
|
const module = await importFresh(tempFile);
|
|
83
88
|
return resolveConfigExport(module.default || module, env);
|
|
84
89
|
} finally {
|
|
85
|
-
fs.rmSync(
|
|
90
|
+
fs.rmSync(tempDir, {
|
|
91
|
+
recursive: true,
|
|
92
|
+
force: true
|
|
93
|
+
});
|
|
86
94
|
}
|
|
87
95
|
}
|
|
88
96
|
async function loadESMConfig(filePath, env) {
|
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 { 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 os from \"node:os\";\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 tempDir = fs.mkdtempSync(path.join(os.tmpdir(), \"vize-config-\"));\n const tempFile = path.join(tempDir, \"config.mjs\");\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(tempDir, { recursive: true, 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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vize",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.84.0",
|
|
4
4
|
"description": "Vize - High-performance Vue.js toolchain in Rust",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cli",
|
|
@@ -56,14 +56,14 @@
|
|
|
56
56
|
"vite-plus": "0.1.21"
|
|
57
57
|
},
|
|
58
58
|
"optionalDependencies": {
|
|
59
|
-
"@vizejs/native-darwin-arm64": "0.
|
|
60
|
-
"@vizejs/native-darwin-x64": "0.
|
|
61
|
-
"@vizejs/native-linux-arm64-gnu": "0.
|
|
62
|
-
"@vizejs/native-linux-arm64-musl": "0.
|
|
63
|
-
"@vizejs/native-linux-x64-gnu": "0.
|
|
64
|
-
"@vizejs/native-linux-x64-musl": "0.
|
|
65
|
-
"@vizejs/native-win32-arm64-msvc": "0.
|
|
66
|
-
"@vizejs/native-win32-x64-msvc": "0.
|
|
59
|
+
"@vizejs/native-darwin-arm64": "0.84.0",
|
|
60
|
+
"@vizejs/native-darwin-x64": "0.84.0",
|
|
61
|
+
"@vizejs/native-linux-arm64-gnu": "0.84.0",
|
|
62
|
+
"@vizejs/native-linux-arm64-musl": "0.84.0",
|
|
63
|
+
"@vizejs/native-linux-x64-gnu": "0.84.0",
|
|
64
|
+
"@vizejs/native-linux-x64-musl": "0.84.0",
|
|
65
|
+
"@vizejs/native-win32-arm64-msvc": "0.84.0",
|
|
66
|
+
"@vizejs/native-win32-x64-msvc": "0.84.0"
|
|
67
67
|
},
|
|
68
68
|
"engines": {
|
|
69
69
|
"node": ">=18"
|
package/src/config.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as fs from "node:fs";
|
|
2
|
+
import * as os from "node:os";
|
|
2
3
|
import * as path from "node:path";
|
|
3
4
|
import { execFileSync } from "node:child_process";
|
|
4
5
|
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
@@ -150,15 +151,16 @@ async function loadTypeScriptConfig(filePath: string, env?: ConfigEnv): Promise<
|
|
|
150
151
|
},
|
|
151
152
|
});
|
|
152
153
|
|
|
153
|
-
const
|
|
154
|
-
|
|
154
|
+
const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), "vize-config-"));
|
|
155
|
+
const tempFile = path.join(tempDir, "config.mjs");
|
|
156
|
+
fs.writeFileSync(tempFile, result.code, { flag: "wx", mode: 0o600 });
|
|
155
157
|
|
|
156
158
|
try {
|
|
157
159
|
const module = await importFresh(tempFile);
|
|
158
160
|
const exported: UserConfigExport = module.default || module;
|
|
159
161
|
return resolveConfigExport(exported, env);
|
|
160
162
|
} finally {
|
|
161
|
-
fs.rmSync(
|
|
163
|
+
fs.rmSync(tempDir, { recursive: true, force: true });
|
|
162
164
|
}
|
|
163
165
|
}
|
|
164
166
|
|