mirror of
https://github.com/eliasstepanik/strudel-docker.git
synced 2026-01-11 13:48:34 +00:00
49 lines
1.2 KiB
JavaScript
49 lines
1.2 KiB
JavaScript
import { createLogger, build } from 'vite';
|
|
|
|
const end = '?audioworklet';
|
|
|
|
function bundleAudioWorkletPlugin() /* : PluginOption */ {
|
|
let viteConfig /* : UserConfig */;
|
|
|
|
return {
|
|
name: 'vite-plugin-bundle-audioworklet',
|
|
/* apply: 'build', */
|
|
enforce: 'post',
|
|
|
|
config(config) {
|
|
viteConfig = config;
|
|
},
|
|
|
|
async transform(_code, id) {
|
|
if (!id.endsWith(end)) {
|
|
return;
|
|
}
|
|
const entry = id.replace(end, '');
|
|
const quietLogger = createLogger();
|
|
quietLogger.info = () => undefined;
|
|
|
|
const output = await build({
|
|
configFile: false,
|
|
clearScreen: false,
|
|
customLogger: quietLogger,
|
|
build: {
|
|
lib: {
|
|
entry,
|
|
name: '_',
|
|
formats: ['iife'],
|
|
},
|
|
write: false,
|
|
},
|
|
});
|
|
if (!(output instanceof Array)) {
|
|
throw new Error('Expected output to be Array');
|
|
}
|
|
const iife = output[0].output[0].code;
|
|
const encoded = Buffer.from(iife, 'utf8').toString('base64');
|
|
return `export default "data:text/javascript;base64,${encoded}";`;
|
|
},
|
|
};
|
|
}
|
|
|
|
export default bundleAudioWorkletPlugin;
|