Add compiler

This commit is contained in:
2024-01-10 18:15:17 +08:00
parent e846c28082
commit 71052009ae
6 changed files with 172 additions and 9 deletions

View File

@@ -0,0 +1,30 @@
import esbuild, { Loader } from 'esbuild-wasm'
import wasm from 'esbuild-wasm/esbuild.wasm?url'
class Compiler {
private init = false
constructor() {
try {
void esbuild.initialize({ worker: true, wasmURL: wasm }).then(() => {
this.init = true
})
} catch (e) {
throw e
}
}
transform = (code: string, loader: Loader) =>
new Promise<boolean>((resolve) => {
const timer = setInterval(() => {
if (this.init) {
clearInterval(timer)
resolve(true)
}
}, 100)
}).then(() => {
return esbuild.transform(code, { loader })
})
}
export default Compiler