import type { PluginPageDecl } from './contracts' export interface PluginPageModule { mount(el: HTMLElement, bridge: unknown): void unmount?: () => void } // loadPluginPage 按声明加载 ESM。模块 URL 由插件页面声明给出,宿主不内嵌领域页面。 export async function loadPluginPage(page: PluginPageDecl): Promise { if (!page.module) throw new Error(`plugin page ${page.id} missing module`) const mod = await import(/* @vite-ignore */ page.module) if (typeof mod.mount !== 'function') throw new Error(`plugin page ${page.id} has no mount`) return mod as PluginPageModule }