Skip to content

🔌 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

  1. Observabilidad: Plugins como el FileWatcher observan el entorno y emiten eventos.
  2. Servicios: Otros plugins pueden ofrecer validación, lógica de negocio arquitectónica o integración con APIs externas.
  3. Comunicación: Utilizan el FFEventEmitter para hablar con otros plugins y herramientas de forma desacoplada.

⚙️ Registro

ts
import { MiPlugin } from './plugins/mi-plugin'

export default defineConfig({
  plugins: [
    new MiPlugin()
  ]
})