🔌 Plugins
Los Plugins son los proveedores de capacidades y servicios para las Tools. Mientras que las Tools "hacen algo", los Plugins "ofrecen algo".
🏗️ Implementación
Un plugin es una clase que implementa la interfaz Plugin de @fireflayjs/core.
ts
import { Plugin, FFEventEmitter } from '@fireflayjs/core'
export class MiPlugin implements Plugin {
name = "MiPlugin"
private context!: FFEventEmitter
// Se llama al registrar el plugin en el kernel
initialize(context: FFEventEmitter): void {
this.context = context
console.log("Plugin inicializado")
}
// Método opcional para procesamiento directo de datos
process<T>(data: T): void {
console.log("Procesando:", data)
}
// Se llama cuando el sistema se apaga
shutdown?(): void | Promise<void> {
console.log("Limpiando recursos...")
}
}📍 Responsabilidades
- Observabilidad: Plugins como el
FileWatcherobservan el entorno y emiten eventos. - Servicios: Otros plugins pueden ofrecer validación, lógica de negocio arquitectónica o integración con APIs externas.
- Comunicación: Utilizan el
FFEventEmitterpara hablar con otros plugins y herramientas de forma desacoplada.
⚙️ Registro
ts
import { MiPlugin } from './plugins/mi-plugin'
export default defineConfig({
plugins: [
new MiPlugin()
]
})