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())