import * as Comlink from 'comlink'
import type { Manifest } from '$lib/types'
import type { ImportMap } from './system'
import TranspileWorker from './transpile.worker?worker'
export interface Transpile {
transform>(
input: Input,
options: {
manifest: Manifest
modules?: Record
preload?: string[]
},
): Promise
findImports(
code: string,
options: {
manifest: Manifest
},
): Promise
}
export default load()
function load(): Transpile {
if (import.meta.env.SSR) {
return {
async transform(...args) {
const { default: api } = await import('./transpile.api')
return api.transform(...args)
},
async findImports(...args) {
const { default: api } = await import('./transpile.api')
return api.findImports(...args)
},
}
}
return Comlink.wrap(new TranspileWorker()) as Transpile
}