44 lines
1.1 KiB
JavaScript
44 lines
1.1 KiB
JavaScript
import fs from "node:fs";
|
|
import path from "node:path";
|
|
import { settings } from "./config.js";
|
|
|
|
const DEFAULT_CLIENT_SETTINGS = {
|
|
homeBypassEnabled: false,
|
|
};
|
|
|
|
function readJson(filePath, fallback) {
|
|
try {
|
|
if (!fs.existsSync(filePath)) return fallback;
|
|
return JSON.parse(fs.readFileSync(filePath, "utf8"));
|
|
} catch {
|
|
return fallback;
|
|
}
|
|
}
|
|
|
|
function writeJson(filePath, value) {
|
|
fs.mkdirSync(path.dirname(filePath), { recursive: true });
|
|
fs.writeFileSync(filePath, JSON.stringify(value, null, 2), "utf8");
|
|
}
|
|
|
|
export function normalizeClientSettings(input = {}) {
|
|
return {
|
|
homeBypassEnabled: Boolean(input.homeBypassEnabled),
|
|
};
|
|
}
|
|
|
|
export function readClientSettings() {
|
|
return normalizeClientSettings({
|
|
...DEFAULT_CLIENT_SETTINGS,
|
|
...readJson(settings.clientSettingsPath, {}),
|
|
});
|
|
}
|
|
|
|
export function writeClientSettings(input) {
|
|
const normalized = normalizeClientSettings({
|
|
...readClientSettings(),
|
|
...(input && typeof input === "object" ? input : {}),
|
|
});
|
|
writeJson(settings.clientSettingsPath, normalized);
|
|
return normalized;
|
|
}
|