UNPKG

userface

Version:

Universal Data-Driven UI Engine with live data, validation, and multi-platform support

86 lines (85 loc) 2.65 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.lifecycleManager = exports.LifecycleManager = void 0; const event_bus_1 = require("./event-bus"); class LifecycleManager { constructor() { Object.defineProperty(this, "hooks", { enumerable: true, configurable: true, writable: true, value: new Map() }); Object.defineProperty(this, "errorCallbacks", { enumerable: true, configurable: true, writable: true, value: [] }); } onBeforeRegister(callback) { this.addHook('beforeRegister', callback); } onAfterRegister(callback) { this.addHook('afterRegister', callback); } onBeforeRender(callback) { this.addHook('beforeRender', callback); } onAfterRender(callback) { this.addHook('afterRender', callback); } onError(callback) { this.errorCallbacks.push(callback); } async executeLifecycle(event, context) { // Выполняем хуки жизненного цикла const callbacks = this.hooks.get(event) || []; for (const callback of callbacks) { try { await callback(context); } catch (error) { console.error(`Error in lifecycle hook ${event}:`, error); await this.handleError(error, context); } } // Эмитим событие event_bus_1.eventBus.emit(`lifecycle:${event}`, context); } async handleError(error, context) { // Выполняем error callbacks for (const callback of this.errorCallbacks) { try { await callback(error, context); } catch (callbackError) { console.error('Error in error callback:', callbackError); } } // Эмитим событие ошибки event_bus_1.eventBus.emit('lifecycle:error', { error, context }); } addHook(event, callback) { if (!this.hooks.has(event)) { this.hooks.set(event, []); } this.hooks.get(event).push(callback); } getHookCount(event) { return this.hooks.get(event)?.length || 0; } clearHooks(event) { if (event) { this.hooks.delete(event); } else { this.hooks.clear(); } } clearErrorCallbacks() { this.errorCallbacks = []; } } exports.LifecycleManager = LifecycleManager; exports.lifecycleManager = new LifecycleManager();