imrishabh18/corne-keyboard
The code defines and renders two surface-mount chip components with SMT pads, silkscreen outlines, and 3D CAD models (OBJ and STEP) for PCB assembly.
- Version
- 2.0.21
- License
- unset
- Stars
- 1
scripts/browser-worker-entrypoint.mjs
import { expose } from 'comlink'
import { CircuitRunner } from '@tscircuit/eval'
import * as React from 'react'
// Use the installed runner, so esbuild resolves the same patched core/checks/
// copper-pour solver as CLI builds. Preserve eval's Comlink and fetch transport.
globalThis.React = React
globalThis.global = globalThis
const pending = new Map()
let serial = 0
const fetchProxy = async (input, init) => new Promise((resolve, reject) => {
const requestId = `local-${serial++}`
pending.set(requestId, { resolve, reject })
const requestInit = { ...init }
if (requestInit.headers) requestInit.headers = Object.fromEntries(new Headers(requestInit.headers))
globalThis.postMessage({
type: 'worker_fetch', requestId,
input: typeof input === 'string' ? input : input instanceof URL ? input.href : input.url,
init: requestInit,
})
})
globalThis.addEventListener('message', (event) => {
const data = event.data
if (data?.type === 'override_global_fetch') globalThis.fetch = fetchProxy
if (data?.type === 'disable_cdn_loading') globalThis.__DISABLE_CDN_LOADING__ = data.value
if (data?.type !== 'worker_fetch_result') return
const handlers = pending.get(data.requestId)
if (!handlers) return
pending.delete(data.requestId)
if (data.success) handlers.resolve(new Response(data.response.body, data.response))
else handlers.reject(Object.assign(new Error(data.error.message), data.error))
})
expose(new CircuitRunner())