/
Alex_Ural
/
opencode
Обзор
Документация
Войти
/
Alex_Ural
/
opencode
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
dev
packages/tui/src/plugin/api.ts
52 строки
1 KB
Dax
refactor(server): canonicalize service API (#31049)
07 июн 2026, 06:27
Не верифицирован
07 июн 2026, 06:27
fe0c4f8
Код
Авторство
О чём код?
import type { TuiPluginApi, TuiRouteDefinition } from "@opencode-ai/plugin/tui" import { createSignal } from "solid-js" type RouteEntry = { key: symbol render: TuiRouteDefinition["render"] } export type RouteMap = Map<string, RouteEntry[]> export function createPluginRoutes() { const routes: RouteMap = new Map() const [revision, setRevision] = createSignal(0) return { register(list: TuiRouteDefinition[]) { const key = Symbol() list.forEach((item) => routes.set(item.name, [...(routes.get(item.name) ?? []), { key, render: item.render }])) setRevision((value) => value + 1) return () => { list.forEach((item) => { const next = routes.get(item.name)?.filter((entry) => entry.key !== key) ?? [] if (next.length) { routes.set(item.name, next) return } routes.delete(item.name) }) setRevision((value) => value + 1) } }, get(name: string) { revision() return routes.get(name)?.at(-1)?.render }, } } export type PluginRoutes = ReturnType<typeof createPluginRoutes> export function createTuiApi(input: Omit<TuiPluginApi, "lifecycle">): TuiPluginApi { return { ...input, lifecycle: { signal: new AbortController().signal, onDispose() { return () => {} }, }, } }