36 lines
1.1 KiB
TypeScript
36 lines
1.1 KiB
TypeScript
import { homedir, platform } from "node:os";
|
|
import { join, posix, win32 } from "node:path";
|
|
|
|
export function appDataDir(): string {
|
|
// 支持 DBX_DATA_DIR 环境变量(与 Rust 侧 data_dir.rs 保持一致)
|
|
return appDataDirFromInputs({
|
|
platform: platform(),
|
|
home: homedir(),
|
|
appData: process.env.APPDATA,
|
|
envDataDir: process.env.DBX_DATA_DIR,
|
|
});
|
|
}
|
|
|
|
export function appDataDirFromInputs(options: { platform: NodeJS.Platform; home: string; appData?: string; envDataDir?: string }): string {
|
|
if (options.envDataDir && options.envDataDir.trim() !== "") {
|
|
return options.envDataDir;
|
|
}
|
|
|
|
switch (options.platform) {
|
|
case "darwin":
|
|
return posix.join(options.home, "Library", "Application Support", "com.dbx.app");
|
|
case "win32":
|
|
return win32.join(options.appData || win32.join(options.home, "AppData", "Roaming"), "com.dbx.app");
|
|
default:
|
|
return posix.join(options.home, ".local", "share", "com.dbx.app");
|
|
}
|
|
}
|
|
|
|
export function dbPath(): string {
|
|
return join(appDataDir(), "dbx.db");
|
|
}
|
|
|
|
export function bridgePortFilePath(): string {
|
|
return join(appDataDir(), "mcp-bridge-port");
|
|
}
|