shogun-core
Version:
SHOGUN CORE - Core library for Shogun Ecosystem
52 lines (51 loc) • 1.53 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.BasePlugin = void 0;
const eventEmitter_1 = require("../utils/eventEmitter");
/**
* Classe base per tutti i plugin di ShogunCore
* Fornisce funzionalità comuni e implementazione base dell'interfaccia ShogunPlugin
*/
class BasePlugin extends eventEmitter_1.EventEmitter {
/** Descrizione opzionale del plugin */
description;
/** Categoria del plugin */
_category;
/** Riferimento all'istanza di ShogunCore */
core = null;
/**
* Inizializza il plugin con un'istanza di ShogunCore
* @param core Istanza di ShogunCore
*/
initialize(core) {
this.core = core;
}
/**
* Distrugge il plugin e libera le risorse
*/
destroy() {
try {
// Emetti evento di distruzione
this.emit("destroyed", {
name: this.name,
version: this.version,
});
this.core = null;
}
catch (error) {
console.error(`[${this.name}] Error during plugin destruction:`, error);
}
}
/**
* Verifica che il plugin sia stato inizializzato prima di usare il core
* @throws Error se il plugin non è stato inizializzato
* @returns L'istanza di ShogunCore non null
*/
assertInitialized() {
if (!this.core) {
throw new Error(`Plugin ${this.name} not initialized`);
}
return this.core;
}
}
exports.BasePlugin = BasePlugin;