/
Alex_Ural
/
opencode
Обзор
Документация
Войти
/
Alex_Ural
/
opencode
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
dev
packages/app/src/context/tab-memory.ts
36 строк
1021 B
Brendan Allan
feat(app): extract prompt state and add composer model selection (#36227)
10 июл 2026, 10:49
Не верифицирован
10 июл 2026, 10:49
8a03fc2
Код
Авторство
О чём код?
import { createRoot, type Owner } from "solid-js" type Entry = { value: unknown dispose: VoidFunction } export function createTabMemory(owner: Owner | null) { const entries = new Map<string, Map<string, Entry>>() const remove = (key: string) => { const state = entries.get(key) if (!state) return for (const entry of state.values()) entry.dispose() entries.delete(key) } return { get<T>(key: string, name: string) { return entries.get(key)?.get(name)?.value as T | undefined }, ensure<T>(key: string, name: string, init: () => T) { const state = entries.get(key) ?? new Map<string, Entry>() if (!entries.has(key)) entries.set(key, state) const existing = state.get(name) if (existing) return existing.value as T const entry = createRoot((dispose) => ({ value: init(), dispose }), owner) state.set(name, entry) return entry.value }, remove, dispose() { for (const key of entries.keys()) remove(key) }, } }