UNPKG

@rsc-labs/create-nocto-app

Version:

50 lines (43 loc) 1.59 kB
/// <reference types="vite/client" /> import { SidebarRegistry, PluginConfigRegistry, RouteRegistry, NoctoConfig, SlotRegistry } from "@rsc-labs/nocto-plugin-system" export async function loadMyNoctoPlugins(noctoConfig: NoctoConfig) { SidebarRegistry.setConfig(noctoConfig.sidebar) const modules = { ...import.meta.glob("./plugins/**/index.ts", { eager: false }), ...import.meta.glob("./plugins/**/index.tsx", { eager: false }), } for (const path in modules) { const mod = await modules[path]() as any for (const key in mod) { const plugin = mod[key] if (noctoConfig.plugins[plugin.id] || noctoConfig.sidebar[plugin.id]) { if (plugin.configSchema) { const userConfig = noctoConfig.plugins?.[plugin.id]?.config ?? {} PluginConfigRegistry.register(plugin.id, plugin.configSchema, userConfig) } if (typeof plugin.routes === "function") { const routes = plugin.routes() RouteRegistry.register(plugin.id, routes) } if (plugin.sidebar) { SidebarRegistry.register(plugin as unknown as any) } if (plugin.injections) { plugin.injections().forEach((c: any) => { if (SlotRegistry.get(c.pluginId, c.slot).length) { return; } SlotRegistry.register( { pluginId: c.pluginId, slot: c.slot, component: c.component, injectedPluginId: plugin.id, } ) }) } } } } }