import { v4 as uuidv4 } from 'uuid'; import { PackageJSON } from '../types/packages'; import { Plugin } from 'rollup'; import indexJSBuilder from '../utils/index-js-builder'; import { readFileSync } from 'fs'; import path from 'path'; export const INPUT_FILE = `${uuidv4()}.js`; export function packageBuilder(opts: { entry: string }): Plugin { const pkg: PackageJSON = JSON.parse(readFileSync('./package.json').toString('utf-8')); const indexHtmlSource = readFileSync( path.join(__dirname, '../utils/default-package-index.html') ).toString('utf-8'); return { name: 'Studio Package Builder Rollup Plugin', resolveId(id): string | null { if (id === INPUT_FILE) { return id; } return null; }, async load(id): Promise { if (id === INPUT_FILE) { return indexJSBuilder(pkg, opts.entry); } return null; }, generateBundle() { this.emitFile({ type: 'asset', fileName: 'index.html', source: indexHtmlSource }); } }; }