/
Alex_Ural
/
opencode
Обзор
Документация
Войти
/
Alex_Ural
/
opencode
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
dev
packages/tui/src/context/runtime.tsx
62 строки
2 KB
Dax
refactor(tui): extract standalone package (#31193)
07 июн 2026, 08:24
Не верифицирован
07 июн 2026, 08:24
106f8e9
Код
Авторство
О чём код?
import { createComponent, createContext, type JSX, useContext } from "solid-js" export type TuiPaths = Readonly<{ cwd: string home: string state: string worktree: string }> export type TuiTerminalEnvironment = Readonly<{ platform: string multiplexer?: "tmux" | "screen" displayServer?: "wayland" | "x11" }> export type TuiStartup = Readonly<{ initialRoute?: unknown skipInitialLoading: boolean }> const PathsContext = createContext<TuiPaths>() const TerminalEnvironmentContext = createContext<TuiTerminalEnvironment>() const StartupContext = createContext<TuiStartup>() function provider<T>(context: ReturnType<typeof createContext<T>>, value: T, children: () => JSX.Element) { return createComponent(context.Provider, { value: Object.freeze({ ...value }), get children() { return children() }, }) } export function TuiPathsProvider(props: { value: TuiPaths; children: JSX.Element }) { return provider(PathsContext, props.value, () => props.children) } export function TuiTerminalEnvironmentProvider(props: { value: TuiTerminalEnvironment; children: JSX.Element }) { return provider(TerminalEnvironmentContext, props.value, () => props.children) } export function TuiStartupProvider(props: { value: TuiStartup; children: JSX.Element }) { return provider(StartupContext, props.value, () => props.children) } function required<T>(context: ReturnType<typeof createContext<T>>, name: string) { const value = useContext(context) if (!value) throw new Error(`${name} is missing`) return value } export function useTuiPaths() { return required(PathsContext, "TuiPathsProvider") } export function useTuiTerminalEnvironment() { return required(TerminalEnvironmentContext, "TuiTerminalEnvironmentProvider") } export function useTuiStartup() { return required(StartupContext, "TuiStartupProvider") }