import { n as onExit, t as watch } from "./shared/watch-BMFUc4Au.mjs";
import "./shared/normalize-string-or-regex-CF3Uz6aU.mjs";
import { b as VERSION, y as RUNTIME_MODULE_ID } from "./shared/bindingify-input-options-CxjTlvCV.mjs";
import "./shared/rolldown-build-D_FXM8pA.mjs";
import "./shared/error-CQ6njWsV.mjs";
import "./shared/parse-DDUnGYGU.mjs";
import { t as rolldown } from "./shared/rolldown-D2p2QuF1.mjs";
import { t as defineConfig } from "./shared/define-config-DJOr6Iwt.mjs";
import { isMainThread } from "node:worker_threads";
import { BindingMagicString, initTraceSubscriber } from "./rolldown-binding.wasi.cjs";
//#region src/setup.ts
if (isMainThread) {
	const subscriberGuard = initTraceSubscriber();
	onExit(() => {
		subscriberGuard?.close();
	});
}
//#endregion
//#region src/api/build.ts
/**
* The API similar to esbuild's `build` function.
*
* @example
* ```js
* import { build } from 'rolldown';
*
* const result = await build({
*   input: 'src/main.js',
*   output: {
*     file: 'bundle.js',
*   },
* });
* console.log(result);
* ```
*
* @experimental
* @category Programmatic APIs
*/
async function build(options) {
	if (Array.isArray(options)) return Promise.all(options.map((opts) => build(opts)));
	else {
		const { output, write = true, ...inputOptions } = options;
		const build = await rolldown(inputOptions);
		try {
			if (write) return await build.write(output);
			else return await build.generate(output);
		} finally {
			await build.close();
		}
	}
}
//#endregion
export { BindingMagicString, RUNTIME_MODULE_ID, VERSION, build, defineConfig, rolldown, watch };
