24 lines
941 B
TypeScript
24 lines
941 B
TypeScript
import { readFile, writeFile } from 'fs/promises'
|
|
import { paths } from './paths'
|
|
import { DEFAULT_SETTINGS, type UserSettings } from '../shared/ipc'
|
|
|
|
/** Lecture des réglages persistés (fusionnés avec les valeurs par défaut). */
|
|
export async function getSettings(): Promise<UserSettings> {
|
|
try {
|
|
const raw = await readFile(paths.settingsFile, 'utf-8')
|
|
return { ...DEFAULT_SETTINGS, ...(JSON.parse(raw) as Partial<UserSettings>) }
|
|
} catch {
|
|
return { ...DEFAULT_SETTINGS }
|
|
}
|
|
}
|
|
|
|
/** Écriture des réglages (validés/clampés). */
|
|
export async function setSettings(next: UserSettings): Promise<UserSettings> {
|
|
const clean: UserSettings = {
|
|
maxMemoryMb: Math.max(2048, Math.min(32768, Math.round(next.maxMemoryMb || DEFAULT_SETTINGS.maxMemoryMb))),
|
|
extraJvmArgs: Array.isArray(next.extraJvmArgs) ? next.extraJvmArgs : []
|
|
}
|
|
await writeFile(paths.settingsFile, JSON.stringify(clean, null, 2))
|
|
return clean
|
|
}
|