MCPcopy Create free account
hub / github.com/anomalyco/opencode / getWorker

Function getWorker

packages/session-ui/src/components/markdown-worker.ts:66–122  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

64export class MarkdownWorkerUnavailableError extends Error {}
65
66function getWorker() {
67 if (worker) return worker
68 if (disabled) throw new MarkdownWorkerUnavailableError(disabled.message)
69 try {
70 worker = new Worker(MarkdownShikiWorkerUrl, { type: "module" })
71 } catch (error) {
72 disabled = error instanceof Error ? error : new Error(String(error))
73 throw new MarkdownWorkerUnavailableError(disabled.message)
74 }
75 worker.onmessage = (event: MessageEvent<MarkdownWorkerResponse>) => {
76 const result = pending.get(event.data.id)
77 if (!result) {
78 transport.complete(event.data.key, event.data.id)
79 return
80 }
81 pending.delete(event.data.id)
82 if (!keys.has(event.data.key)) {
83 result.reject(new MarkdownWorkerDisposedError())
84 transport.complete(event.data.key, event.data.id)
85 return
86 }
87 if (event.data.type === "superseded") {
88 result.reject(new MarkdownWorkerSupersededError())
89 transport.complete(event.data.key, event.data.id)
90 return
91 }
92 if (event.data.type === "error") {
93 result.reject(new Error(event.data.message))
94 transport.complete(event.data.key, event.data.id)
95 return
96 }
97 const state = applyMarkdownWorkerResponse(states.get(event.data.key), event.data)
98 if (shouldReleaseMarkdownWorkerState(result.complete, latest.get(event.data.key), event.data.id)) {
99 states.delete(event.data.key)
100 keys.delete(event.data.key)
101 latest.delete(event.data.key)
102 } else states.set(event.data.key, state)
103 result.resolve(state)
104 transport.complete(event.data.key, event.data.id)
105 }
106 const fail = (message: string) => {
107 const error = new Error(message)
108 disabled = error
109 transport.reset()
110 pending.forEach((request) => request.reject(error))
111 pending.clear()
112 states.clear()
113 keys.clear()
114 latest.clear()
115 worker?.terminate()
116 worker = undefined
117 }
118 worker.onerror = (event) => fail(event.message || "Markdown highlighting worker failed")
119 worker.onmessageerror = () => fail("Markdown worker response failed")
120 worker.postMessage({ type: "init", theme: OpenCodeTheme } satisfies MarkdownWorkerRequest)
121 return worker
122}

Callers 1

highlightStreamingCodeFunction · 0.85

Calls 8

failFunction · 0.70
getMethod · 0.65
completeMethod · 0.45
deleteMethod · 0.45
rejectMethod · 0.45
setMethod · 0.45

Tested by

no test coverage detected