/
Alex_Ural
/
opencode
Обзор
Документация
Войти
/
Alex_Ural
/
opencode
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
dev
packages/session-ui/src/pierre/worker.ts
52 строки
1 KB
Victor Navarro
refactor(ui): isolate session components (#33670)
24 июн 2026, 17:56
Не верифицирован
24 июн 2026, 17:56
04c1730
Код
Авторство
О чём код?
import { WorkerPoolManager } from "@pierre/diffs/worker" import ShikiWorkerUrl from "@pierre/diffs/worker/worker.js?worker&url" export type WorkerPoolStyle = "unified" | "split" export function workerFactory(): Worker { return new Worker(ShikiWorkerUrl, { type: "module" }) } function createPool(lineDiffType: "none" | "word-alt") { const pool = new WorkerPoolManager( { workerFactory, // poolSize defaults to 8. More workers = more parallelism but // also more memory. Too many can actually slow things down. // NOTE: 2 is probably better for OpenCode, as I think 8 might be // a bit overkill, especially because Safari has a significantly slower // boot up time for workers poolSize: 2, }, { theme: "OpenCode", lineDiffType, preferredHighlighter: "shiki-wasm", }, ) void pool.initialize() return pool } let unified: WorkerPoolManager | undefined let split: WorkerPoolManager | undefined export function getWorkerPool(style: WorkerPoolStyle | undefined): WorkerPoolManager | undefined { if (typeof window === "undefined") return if (style === "split") { if (!split) split = createPool("word-alt") return split } if (!unified) unified = createPool("none") return unified } export function getWorkerPools() { return { unified: getWorkerPool("unified"), split: getWorkerPool("split"), } }