import { instantiate, Parser as InternalParser, } from './eszip_wasm.generated.js';
const encoder = new TextEncoder();
export const options = { wasmURL: undefined };
export class Parser extends InternalParser {
    static async createInstance() {
        await instantiate({ url: options.wasmURL });
        return new Parser();
    }
}
export async function build(roots, loader, importMapUrl) {
    const { build } = await instantiate({ url: options.wasmURL });
    return build(roots, (specifier, options) => {
        return loader(specifier, options.isDynamic, options.cacheSetting, options.checksum)
            .then((result) => {
            if (result?.kind === 'module') {
                if (typeof result.content === 'string') {
                    result.content = encoder.encode(result.content);
                }
                // need to convert to an array for serde_wasm_bindgen to work
                // deno-lint-ignore no-explicit-any
                result.content = Array.from(result.content);
            }
            return result;
        })
            .catch((err) => Promise.reject(String(err)));
    }, importMapUrl);
}
