UNPKG

@bytecodealliance/jco

Version:

JavaScript tooling for working with WebAssembly Components

24 lines (22 loc) 882 B
import { readFile, writeFile } from 'node:fs/promises'; import { resolve, basename } from 'node:path'; import c from 'chalk-template'; export async function componentize (jsSource, opts) { const { componentize: componentizeFn } = await eval('import("@bytecodealliance/componentize-js")'); if (opts.disable?.includes('all')) { opts.disable = ['stdio', 'random', 'clocks', 'http']; } const source = await readFile(jsSource, 'utf8'); const { component } = await componentizeFn(source, { enableAot: opts.aot, wevalBin: opts.wevalBin, sourceName: basename(jsSource), witPath: resolve(opts.wit), worldName: opts.worldName, disableFeatures: opts.disable, enableFeatures: opts.enable, preview2Adapter: opts.preview2Adapter, }); await writeFile(opts.out, component); console.log(c`{green OK} Successfully written {bold ${opts.out}}.`); }