@redwoodjs/sdk
Version:
Build fast, server-driven webapps on Cloudflare with SSR, RSC, and realtime
36 lines (35 loc) • 1.26 kB
JavaScript
import { copy, pathExists } from "fs-extra";
import { resolve } from "node:path";
import MagicString from "magic-string";
import path from "path";
export const copyPrismaWasmPlugin = ({ rootDir, }) => ({
name: "rwsdk:copy-prisma-wasm",
enforce: "post",
apply: "build",
async writeBundle() {
const wasmFilePath = resolve(rootDir, "node_modules/.prisma/client/query_engine_bg.wasm");
const fileName = path.basename(wasmFilePath);
const outputPath = path.resolve(rootDir, "dist", "worker", fileName);
if (await pathExists(wasmFilePath)) {
await copy(wasmFilePath, outputPath);
console.log(`✅ Copied ${fileName} from ${wasmFilePath} to ${outputPath}`);
}
else {
console.warn(`⚠️ WASM file not found at: ${wasmFilePath}`);
}
},
renderChunk(code) {
if (!code.includes(".wasm")) {
return;
}
const s = new MagicString(code);
s.replace(/import\(["'](.+?\.wasm)["']\)/g, (_, filePath) => {
const fileName = path.basename(filePath);
return `import("./${fileName}")`;
});
return {
code: s.toString(),
map: s.generateMap(),
};
},
});