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 cargoArgsUseDebugSymbols = [
"--config",
"profile.release.debug='full'",
"--config",
"profile.release.strip='none'",
];
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", "-C", "panic=abort"]`,
"--no-default-features",
].concat(devMode ? cargoArgsUseDebugSymbols : []);
export default [
{
input: ["./js/wasm.js", "./js/index.js"],
output: {
dir: `dist`,
format: "es",
sourcemap: true,
assetFileNames: "assets/[name][extname]",
},
plugins: [
rust({
verbose: true,
extraArgs: {
cargo: [...baseCargoArgs],
wasmOpt: wasmOptArgs,
wasmBindgen: devMode ? ["--keep-debug"] : [],
},
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,
}),
],
},
];