import rust from "@wasm-tool/rollup-plugin-rust";
import resolve from "@rollup/plugin-node-resolve";
import commonjs from "@rollup/plugin-commonjs";
import copy from "rollup-plugin-copy";
const devMode = process.env.MIDEN_WEB_DEV === "true";
const wasmOptArgs = [
devMode ? "-O0" : "-O3",
"--enable-bulk-memory",
"--enable-nontrapping-float-to-int",
];
const baseCargoArgs = [
"--features",
"testing",
"--config",
`build.rustflags=["-C", "target-feature=+atomics,+bulk-memory,+mutable-globals", "-C", "link-arg=--max-memory=4294967296"]`,
"--no-default-features",
];
export default [
{
input: "./js/wasm.js",
output: {
dir: `dist`,
format: "es",
sourcemap: true,
assetFileNames: "assets/[name][extname]",
},
plugins: [
rust({
verbose: true,
extraArgs: {
cargo: [...baseCargoArgs],
wasmOpt: wasmOptArgs,
},
experimental: {
typescriptDeclarationDir: "dist/crates",
},
optimize: { release: true, rustc: true },
}),
resolve(),
commonjs(),
],
},
{
input: "./js/workers/web-client-methods-worker.js",
output: {
dir: `dist/workers`,
format: "es",
sourcemap: true,
},
plugins: [
resolve(),
commonjs(),
copy({
targets: [
{ src: "dist/assets/*.wasm", dest: "dist/workers/assets" },
],
verbose: true,
}),
],
},
{
input: "./js/index.js",
output: {
dir: `dist`,
format: "es",
sourcemap: true,
},
plugins: [resolve(), commonjs()],
},
];