Download src/utils/settings/settingsCache.ts from chenbhao/codev: direct link, hf CLI and curl.
- Browser
- Download file 2.42 kB
-
https://huggingface.co/chenbhao/codev/resolve/main/src/utils/settings/settingsCache.ts
- Command line
-
hf download hf://chenbhao/codev/src/utils/settings/settingsCache.ts
-
curl -L -o settingsCache.ts https://huggingface.co/chenbhao/codev/resolve/main/src/utils/settings/settingsCache.ts
2.42 kB
| import type { SettingSource } from './constants.js' | |
| import type { SettingsJson } from './types.js' | |
| import type { SettingsWithErrors, ValidationError } from './validation.js' | |
| let sessionSettingsCache: SettingsWithErrors | null = null | |
| export function getSessionSettingsCache(): SettingsWithErrors | null { | |
| return sessionSettingsCache | |
| } | |
| export function setSessionSettingsCache(value: SettingsWithErrors): void { | |
| sessionSettingsCache = value | |
| } | |
| /** | |
| * Per-source cache for getSettingsForSource. Invalidated alongside the | |
| * merged sessionSettingsCache — same resetSettingsCache() triggers | |
| * (settings write, --add-dir, plugin init, hooks refresh). | |
| */ | |
| const perSourceCache = new Map<SettingSource, SettingsJson | null>() | |
| export function getCachedSettingsForSource( | |
| source: SettingSource, | |
| ): SettingsJson | null | undefined { | |
| // undefined = cache miss; null = cached "no settings for this source" | |
| return perSourceCache.has(source) ? perSourceCache.get(source) : undefined | |
| } | |
| export function setCachedSettingsForSource( | |
| source: SettingSource, | |
| value: SettingsJson | null, | |
| ): void { | |
| perSourceCache.set(source, value) | |
| } | |
| /** | |
| * Path-keyed cache for parseSettingsFile. Both getSettingsForSource and | |
| * loadSettingsFromDisk call parseSettingsFile on the same paths during | |
| * startup — this dedupes the disk read + zod parse. | |
| */ | |
| type ParsedSettings = { | |
| settings: SettingsJson | null | |
| errors: ValidationError[] | |
| } | |
| const parseFileCache = new Map<string, ParsedSettings>() | |
| export function getCachedParsedFile(path: string): ParsedSettings | undefined { | |
| return parseFileCache.get(path) | |
| } | |
| export function setCachedParsedFile(path: string, value: ParsedSettings): void { | |
| parseFileCache.set(path, value) | |
| } | |
| export function resetSettingsCache(): void { | |
| sessionSettingsCache = null | |
| perSourceCache.clear() | |
| parseFileCache.clear() | |
| } | |
| /** | |
| * Plugin settings base layer for the settings cascade. | |
| * pluginLoader writes here after loading plugins; | |
| * loadSettingsFromDisk reads it as the lowest-priority base. | |
| */ | |
| let pluginSettingsBase: Record<string, unknown> | undefined | |
| export function getPluginSettingsBase(): Record<string, unknown> | undefined { | |
| return pluginSettingsBase | |
| } | |
| export function setPluginSettingsBase( | |
| settings: Record<string, unknown> | undefined, | |
| ): void { | |
| pluginSettingsBase = settings | |
| } | |
| export function clearPluginSettingsBase(): void { | |
| pluginSettingsBase = undefined | |
| } | |