UNPKG

vlibras-player-webjs

Version:

Biblioteca JavaScript moderna para integração do VLibras Player com React, Vue, Angular e vanilla JS

85 lines 3.02 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AnalyticsPlugin = void 0; /** * Plugin exemplo para analytics básico */ class AnalyticsPlugin { constructor() { this.name = 'analytics'; this.version = '1.0.0'; this.description = 'Coleta métricas básicas de uso do VLibras'; this.analytics = { translations: 0, totalTime: 0, errors: 0, startTime: Date.now() }; this.hooks = { beforePlay: async (text) => { console.log(`📊 Analytics: Iniciando reprodução para texto com ${text.length} caracteres`); return text; }, afterPlay: async (result) => { console.log('📊 Analytics: Reprodução concluída', result); }, onError: async (error) => { console.log('📊 Analytics: Erro capturado', error.message); } }; } async init(context) { console.log('📊 Analytics Plugin iniciado'); // Resetar métricas this.analytics = { translations: 0, totalTime: 0, errors: 0, startTime: Date.now() }; // Configurar eventos this.setupEventListeners(context); } setupEventListeners(context) { if (context.events) { context.events.on('translation:start', () => { this.analytics.translations++; context.utils.logger('Translation started', 'info'); }); context.events.on('translation:complete', (data) => { if (data?.duration) { this.analytics.totalTime += data.duration; } context.utils.logger('Translation completed', 'info'); }); context.events.on('player:error', () => { this.analytics.errors++; context.utils.logger('Error occurred', 'error'); }); } } async destroy() { console.log('📊 Analytics Plugin - Relatório Final:', this.getReport()); } getReport() { const sessionTime = Date.now() - this.analytics.startTime; return { translations: this.analytics.translations, totalTranslationTime: this.analytics.totalTime, averageTranslationTime: this.analytics.translations > 0 ? this.analytics.totalTime / this.analytics.translations : 0, errors: this.analytics.errors, errorRate: this.analytics.translations > 0 ? this.analytics.errors / this.analytics.translations : 0, sessionDuration: sessionTime, timestamp: new Date().toISOString() }; } exportData() { return JSON.stringify(this.getReport(), null, 2); } } exports.AnalyticsPlugin = AnalyticsPlugin; //# sourceMappingURL=AnalyticsPlugin.js.map