/
melnik-demyan
/
ipdocgen
Обзор
Документация
Войти
/
melnik-demyan
/
ipdocgen
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/clientConfig.ts
34 строки
1 KB
Demyan Melnik
Make name/contractNumber/startContractDate required in client config
15 май 2026, 19:47
15 май 2026, 19:47
245343e
Код
Авторство
О чём код?
import fs from 'fs'; import path from 'path'; import type {TClientConfigRaw} from './@types/TConfig'; const CLIENT_DIR = path.resolve('./configs/per-client'); export const clientConfigPath = (clientId: string) => path.join(CLIENT_DIR, `${clientId}.json`); export const clientConfigExists = (clientId: string): boolean => fs.existsSync(clientConfigPath(clientId)); export const listClientConfigs = (): Array<{clientId: string, config: TClientConfigRaw}> => { if (!fs.existsSync(CLIENT_DIR)) return []; return fs.readdirSync(CLIENT_DIR) .filter((f) => f.endsWith('.json') && f !== 'example.json') .map((f) => { const clientId = f.slice(0, -'.json'.length); return {clientId, config: loadClientConfig(clientId)}; }); }; export const loadClientConfig = (clientId: string): TClientConfigRaw => { const filePath = clientConfigPath(clientId); if (!fs.existsSync(filePath)) return {}; return JSON.parse(fs.readFileSync(filePath, 'utf8')) as TClientConfigRaw; }; export const saveClientConfig = (clientId: string, partial: TClientConfigRaw): TClientConfigRaw => { fs.mkdirSync(CLIENT_DIR, {recursive: true}); const current = loadClientConfig(clientId); const next = {...current, ...partial}; fs.writeFileSync(clientConfigPath(clientId), JSON.stringify(next, null, 2) + '\n'); return next; };