| |
| |
| |
| |
| |
| |
|
|
| import { createSubsystemLogger } from "../logging/subsystem.js"; |
| import { createHookRunner, type HookRunner } from "./hooks.js"; |
| import type { PluginRegistry } from "./registry.js"; |
|
|
| const log = createSubsystemLogger("plugins"); |
|
|
| let globalHookRunner: HookRunner | null = null; |
| let globalRegistry: PluginRegistry | null = null; |
|
|
| |
| |
| |
| |
| export function initializeGlobalHookRunner(registry: PluginRegistry): void { |
| globalRegistry = registry; |
| globalHookRunner = createHookRunner(registry, { |
| logger: { |
| debug: (msg) => log.debug(msg), |
| warn: (msg) => log.warn(msg), |
| error: (msg) => log.error(msg), |
| }, |
| catchErrors: true, |
| }); |
|
|
| const hookCount = registry.hooks.length; |
| if (hookCount > 0) { |
| log.info(`hook runner initialized with ${hookCount} registered hooks`); |
| } |
| } |
|
|
| |
| |
| |
| |
| export function getGlobalHookRunner(): HookRunner | null { |
| return globalHookRunner; |
| } |
|
|
| |
| |
| |
| |
| export function getGlobalPluginRegistry(): PluginRegistry | null { |
| return globalRegistry; |
| } |
|
|
| |
| |
| |
| export function hasGlobalHooks(hookName: Parameters<HookRunner["hasHooks"]>[0]): boolean { |
| return globalHookRunner?.hasHooks(hookName) ?? false; |
| } |
|
|
| |
| |
| |
| export function resetGlobalHookRunner(): void { |
| globalHookRunner = null; |
| globalRegistry = null; |
| } |
|
|