/
Alex_Ural
/
opencode
Обзор
Документация
Войти
/
Alex_Ural
/
opencode
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
dev
packages/session-ui/src/components/markdown-worker-protocol.ts
48 строк
2 KB
Victor Navarro
refactor(ui): isolate session components (#33670)
24 июн 2026, 17:56
Не верифицирован
24 июн 2026, 17:56
04c1730
Код
Авторство
О чём код?
import type { ThemeRegistrationResolved } from "shiki" export type MarkdownToken = [content: string, style: string] export type MarkdownWorkerRequest = | { type: "init"; theme: ThemeRegistrationResolved } | { type: "highlight"; id: number; key: string; text: string; language: string; complete?: boolean } | { type: "dispose"; key: string } export type MarkdownWorkerResponse = | { type: "highlight" id: number key: string reset: boolean stable: MarkdownToken[] unstable: MarkdownToken[] } | { type: "error"; id: number; key: string; message: string } | { type: "superseded"; id: number; key: string } export type MarkdownWorkerState = { id: number generation: number stable: MarkdownToken[] unstable: MarkdownToken[] } export function shouldReleaseMarkdownWorkerState(complete: boolean, latestID: number | undefined, responseID: number) { return complete && latestID === responseID } export function markdownBlockKey(owner: string, cacheKey: string | undefined, index: number, mode: string) { return `${owner}:${cacheKey ? `${cacheKey}:${index}:${mode}` : `block:${index}`}` } export function applyMarkdownWorkerResponse( state: MarkdownWorkerState | undefined, response: Extract<MarkdownWorkerResponse, { type: "highlight" }>, ) { if (state && response.id <= state.id) return state return { id: response.id, generation: (state?.generation ?? 0) + (response.reset ? 1 : 0), stable: response.reset ? response.stable : [...(state?.stable ?? []), ...response.stable], unstable: response.unstable, } }