import { Environment, napi } from 'napi-wasm'; import { await_promise_sync, createBundleAsync } from './async.mjs'; import fs from 'fs'; import {webcrypto as crypto} from 'node:crypto'; let wasmBytes = fs.readFileSync(new URL('lightningcss_node.wasm', import.meta.url)); let wasmModule = new WebAssembly.Module(wasmBytes); let instance = new WebAssembly.Instance(wasmModule, { env: { ...napi, await_promise_sync, __getrandom_custom: (ptr, len) => { let buf = env.memory.subarray(ptr, ptr + len); crypto.getRandomValues(buf); }, }, }); instance.exports.register_module(); let env = new Environment(instance); let wasm = env.exports; let bundleAsyncInternal = createBundleAsync(env); export default async function init() { // do nothing. for backward compatibility. } export function transform(options) { return wasm.transform(options); } export function transformStyleAttribute(options) { return wasm.transformStyleAttribute(options); } export function bundle(options) { return wasm.bundle({ ...options, resolver: { read: (filePath) => fs.readFileSync(filePath, 'utf8') } }); } export async function bundleAsync(options) { if (!options.resolver?.read) { options.resolver = { ...options.resolver, read: (filePath) => fs.readFileSync(filePath, 'utf8') }; } return bundleAsyncInternal(options); } export { browserslistToTargets } from './browserslistToTargets.js' export { Features } from './flags.js' export { composeVisitors } from './composeVisitors.js';