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
JavaScript
"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