diff options
| author | Adam <[email protected]> | 2025-12-08 06:24:19 -0600 |
|---|---|---|
| committer | Adam <[email protected]> | 2025-12-08 06:24:24 -0600 |
| commit | 9363c15b4a1fafca2d30063ebcb166f36ba35235 (patch) | |
| tree | fa7d6c62a0b0d0f7811562d6d989735bfad49537 /packages/ui/src/pierre | |
| parent | 3325823f23800687e4af8d9960438b848bd4e005 (diff) | |
| download | opencode-9363c15b4a1fafca2d30063ebcb166f36ba35235.tar.gz opencode-9363c15b4a1fafca2d30063ebcb166f36ba35235.zip | |
feat: better code and diff perf
Diffstat (limited to 'packages/ui/src/pierre')
| -rw-r--r-- | packages/ui/src/pierre/index.ts | 34 | ||||
| -rw-r--r-- | packages/ui/src/pierre/worker.ts | 17 |
2 files changed, 34 insertions, 17 deletions
diff --git a/packages/ui/src/pierre/index.ts b/packages/ui/src/pierre/index.ts index 26e902d05..ddbd1b82d 100644 --- a/packages/ui/src/pierre/index.ts +++ b/packages/ui/src/pierre/index.ts @@ -9,21 +9,7 @@ export type DiffProps<T = {}> = FileDiffOptions<T> & { classList?: ComponentProps<"div">["classList"] } -export function createDefaultOptions<T>(style: FileDiffOptions<T>["diffStyle"]) { - return { - theme: "OpenCode", - themeType: "system", - disableLineNumbers: false, - overflow: "wrap", - diffStyle: style ?? "unified", - diffIndicators: "bars", - disableBackground: false, - expansionLineCount: 20, - lineDiffType: style === "split" ? "word-alt" : "none", - maxLineDiffLength: 1000, - maxLineLengthForHighlighting: 1000, - disableFileHeader: true, - unsafeCSS: ` +const unsafeCSS = ` [data-pjs-header], [data-pjs] { [data-separator-wrapper] { @@ -46,7 +32,23 @@ export function createDefaultOptions<T>(style: FileDiffOptions<T>["diffStyle"]) [data-separator-content] { height: 24px !important; } -}`, +}` + +export function createDefaultOptions<T>(style: FileDiffOptions<T>["diffStyle"]) { + return { + theme: "OpenCode", + themeType: "system", + disableLineNumbers: false, + overflow: "wrap", + diffStyle: style ?? "unified", + diffIndicators: "bars", + disableBackground: false, + expansionLineCount: 20, + lineDiffType: style === "split" ? "word-alt" : "none", + maxLineDiffLength: 1000, + maxLineLengthForHighlighting: 1000, + disableFileHeader: true, + unsafeCSS, // hunkSeparators(hunkData: HunkData) { // const fragment = document.createDocumentFragment() // const numCol = document.createElement("div") diff --git a/packages/ui/src/pierre/worker.ts b/packages/ui/src/pierre/worker.ts index de5fd625a..2b2da1f09 100644 --- a/packages/ui/src/pierre/worker.ts +++ b/packages/ui/src/pierre/worker.ts @@ -1,5 +1,20 @@ -import ShikiWorkerUrl from "@pierre/precision-diffs/worker/shiki-worker.js?worker&url" +import { getOrCreateWorkerPoolSingleton } from "@pierre/precision-diffs/worker" +import ShikiWorkerUrl from "@pierre/precision-diffs/worker/worker.js?worker&url" export function workerFactory(): Worker { return new Worker(ShikiWorkerUrl, { type: "module" }) } + +export const workerPool = getOrCreateWorkerPoolSingleton({ + poolOptions: { + workerFactory, + // poolSize defaults to 8. More workers = more parallelism but + // also more memory. Too many can actually slow things down. + // poolSize: 8, + }, + highlighterOptions: { + theme: "OpenCode", + // Optionally preload languages to avoid lazy-loading delays + // langs: ["typescript", "javascript", "css", "html"], + }, +}) |
