/
githubmirror
/
code-server
Обзор
Документация
Войти
/
githubmirror
/
code-server
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
v4.113.0-rc.3
src/node/settings.ts
56 строк
1 KB
Asher
Remove import from express-serve-static-core
04 авг 2025, 23:26
04 авг 2025, 23:26
3f23840
Код
Авторство
О чём код?
import { logger } from "@coder/logger" import type { ParsedQs } from "qs" import { promises as fs } from "fs" export type Settings = { [key: string]: Settings | string | boolean | number } /** * Provides read and write access to settings. */ export class SettingsProvider<T> { public constructor(private readonly settingsPath: string) {} /** * Read settings from the file. On a failure return last known settings and * log a warning. */ public async read(): Promise<T> { try { const raw = (await fs.readFile(this.settingsPath, "utf8")).trim() return raw ? JSON.parse(raw) : ({} as T) } catch (error: any) { if (error.code !== "ENOENT") { logger.warn(error.message) } } return {} as T } /** * Write settings combined with current settings. On failure log a warning. * Settings will be merged shallowly. */ public async write(settings: Partial<T>): Promise<void> { try { const oldSettings = await this.read() const nextSettings = { ...oldSettings, ...settings } await fs.writeFile(this.settingsPath, JSON.stringify(nextSettings, null, 2)) } catch (error: any) { logger.warn(error.message) } } } export interface UpdateSettings { update: { checked: number version: string } } /** * Global code-server settings. */ export interface CoderSettings extends UpdateSettings { query?: ParsedQs }