import { Plugin } from '../plugin'; import { MAIN_SCRIPT_ID } from '../script'; export interface ExternalOptions { libs: string[] } export function externalPlugin(options: ExternalOptions): Plugin { const { libs } = options; const allLibScripts: Symbol[] = []; return { async onCompile(): Promise { const mainScript = this.getScript(MAIN_SCRIPT_ID); libs.forEach(() => { const syl = this.addScript(); allLibScripts.push(syl); mainScript.imports.push({ scriptId: syl, }); }); }, onPrint(): void { allLibScripts.forEach((syl, index) => { this.useScript(syl); this.println(libs[index]); }); }, }; }