import { fileURLToPath } from 'node:url' export default () => { const clientId = fileURLToPath(new URL('./src/client.ts', import.meta.url)) // const buildingCjs = false return { external: ['@mtcute/crypto-node'], rollupPluginsPre: [ { // very much a crutch, but it works // i couldn't figure out a way to hook into the esm->cjs transform, // so i'm just replacing the await import with require and then back name: 'mtcute-node-build-plugin', transform(code, id) { if (id === clientId) { return code.replace('await import(', 'require(') } return code }, generateBundle(output, bundle) { if (output.format !== 'es') return let found = false for (const chunk of Object.values(bundle)) { if (chunk.code.match(/require\("@mtcute\/crypto-node"\)/)) { found = true chunk.code = chunk.code.replace('require("@mtcute/crypto-node")', '(await import("@mtcute/crypto-node"))') } } if (!found) { throw new Error('Could not find crypto-node import') } }, }, ], } }