vlibras-player-webjs
Version:
Biblioteca JavaScript moderna para integração do VLibras Player com React, Vue, Angular e vanilla JS
191 lines • 4.39 kB
TypeScript
/**
* Sistema de cache inteligente para VLibras Player
* Implementa diferentes estratégias de cache e preload
*/
export interface CacheEntry<T = any> {
key: string;
data: T;
timestamp: number;
ttl: number;
size: number;
accessCount: number;
lastAccess: number;
}
export interface CacheStrategy {
type: 'memory' | 'localStorage' | 'indexedDB' | 'hybrid';
maxSize: number;
ttl: number;
compression: boolean;
encryption?: boolean;
maxEntries?: number;
}
export interface CacheStats {
hits: number;
misses: number;
totalRequests: number;
hitRate: number;
currentSize: number;
maxSize: number;
entries: number;
oldestEntry: number;
newestEntry: number;
}
export interface PredictiveCacheConfig {
enabled: boolean;
relatedWordsLimit: number;
commonWordsLimit: number;
contextWords: Record<string, string[]>;
}
/**
* Cache principal do VLibras
*/
export declare class VLibrasCache {
private static instance;
private strategy;
private memoryCache;
private stats;
private constructor();
/**
* Obtém instância singleton
*/
static getInstance(strategy?: CacheStrategy): VLibrasCache;
/**
* Configura estratégia de cache
*/
static configure(strategy: Partial<CacheStrategy>): void;
/**
* Armazena item no cache
*/
set<T>(key: string, data: T, customTtl?: number): Promise<void>;
/**
* Recupera item do cache
*/
get<T>(key: string): Promise<T | null>;
/**
* Remove item do cache
*/
delete(key: string): Promise<boolean>;
/**
* Limpa todo o cache
*/
clear(): Promise<void>;
/**
* Verifica se uma chave existe no cache
*/
has(key: string): Promise<boolean>;
/**
* Obtém estatísticas do cache
*/
getStats(): CacheStats;
/**
* Preload de palavras comuns
*/
preloadCommonWords(words: string[]): Promise<void>;
/**
* Cache preditivo - precarrega palavras relacionadas
*/
enablePredictiveCache(config: PredictiveCacheConfig): Promise<void>;
/**
* Cache por contexto
*/
preloadForContext(context: 'dictionary' | 'quiz' | 'tutorial'): Promise<void>;
/**
* Calcula tamanho de um objeto
*/
private calculateSize;
/**
* Verifica se entrada está expirada
*/
private isExpired;
/**
* Garante espaço disponível no cache
*/
private ensureSpace;
/**
* Armazena entrada baseado na estratégia
*/
private storeEntry;
/**
* Recupera entrada baseado na estratégia
*/
private retrieveEntry;
/**
* Remove entrada baseado na estratégia
*/
private deleteEntry;
/**
* Armazena no localStorage
*/
private storeInLocalStorage;
/**
* Recupera do localStorage
*/
private retrieveFromLocalStorage;
/**
* Remove do localStorage
*/
private deleteFromLocalStorage;
/**
* Armazena no IndexedDB
*/
private storeInIndexedDB;
/**
* Recupera do IndexedDB
*/
private retrieveFromIndexedDB;
/**
* Remove do IndexedDB
*/
private deleteFromIndexedDB;
/**
* Abre conexão com IndexedDB
*/
private openIndexedDB;
/**
* Limpa localStorage
*/
private clearLocalStorage;
/**
* Limpa IndexedDB
*/
private clearIndexedDB;
/**
* Comprime dados (implementação simples)
*/
private compress;
/**
* Descomprime dados
*/
private decompress;
/**
* Atualiza estatísticas gerais
*/
private updateStats;
/**
* Atualiza taxa de acerto
*/
private updateHitRate;
/**
* Reseta estatísticas
*/
private resetStats;
}
/**
* Utilitários de cache
*/
export declare class VLibrasCacheUtils {
/**
* Cria chave de cache baseada em parâmetros
*/
static createKey(type: string, ...params: any[]): string;
/**
* Estima tamanho ideal de cache baseado no dispositivo
*/
static getOptimalCacheSize(): number;
/**
* Migra cache antigo para nova versão
*/
static migrateCache(oldVersion: string, newVersion: string): Promise<void>;
}
export declare const vlibrasCache: VLibrasCache;
//# sourceMappingURL=VLibrasCache.d.ts.map