summaryrefslogtreecommitdiffhomepage
path: root/packages/ui/src/pierre/worker.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/ui/src/pierre/worker.ts')
-rw-r--r--packages/ui/src/pierre/worker.ts36
1 files changed, 22 insertions, 14 deletions
diff --git a/packages/ui/src/pierre/worker.ts b/packages/ui/src/pierre/worker.ts
index e47268d4e..2d2640674 100644
--- a/packages/ui/src/pierre/worker.ts
+++ b/packages/ui/src/pierre/worker.ts
@@ -1,20 +1,28 @@
-import { getOrCreateWorkerPoolSingleton } from "@pierre/diffs/worker"
+import { getOrCreateWorkerPoolSingleton, WorkerPoolManager } from "@pierre/diffs/worker"
import ShikiWorkerUrl from "@pierre/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"],
- },
-})
+export const workerPool: WorkerPoolManager | undefined = (() => {
+ if (typeof window === "undefined") {
+ return undefined
+ }
+ return getOrCreateWorkerPoolSingleton({
+ poolOptions: {
+ 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,
+ },
+ highlighterOptions: {
+ theme: "OpenCode",
+ // Optionally preload languages to avoid lazy-loading delays
+ // langs: ["typescript", "javascript", "css", "html"],
+ },
+ })
+})()