mirror of
https://gitverse.ru/anarchic/claude-code
synced 2026-05-03 15:00:37 +00:00
new initial commit (history rewritten)
This commit is contained in:
commit
c1996f2e3b
1907 changed files with 514172 additions and 0 deletions
80
utils/settings/settingsCache.ts
Normal file
80
utils/settings/settingsCache.ts
Normal file
|
|
@ -0,0 +1,80 @@
|
|||
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
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue