77 lines
2.3 KiB
TypeScript
77 lines
2.3 KiB
TypeScript
/**
|
|
* Polyfill global para BlobBuilder
|
|
* Deve ser executado ANTES de qualquer import de lib-jitsi-meet
|
|
*
|
|
* BlobBuilder é uma API antiga dos navegadores que foi substituída pelo construtor Blob
|
|
* A biblioteca lib-jitsi-meet pode tentar usar BlobBuilder em navegadores modernos
|
|
*/
|
|
|
|
export function adicionarBlobBuilderPolyfill(): void {
|
|
if (typeof window === 'undefined') return;
|
|
|
|
// Verificar se já foi adicionado (evitar múltiplas execuções)
|
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
if ((window as any).__blobBuilderPolyfillAdded) {
|
|
return;
|
|
}
|
|
|
|
// Implementar BlobBuilder usando Blob moderno
|
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
const BlobBuilderClass = class BlobBuilder {
|
|
private parts: BlobPart[] = [];
|
|
|
|
append(data: BlobPart): void {
|
|
this.parts.push(data);
|
|
}
|
|
|
|
getBlob(contentType?: string): Blob {
|
|
return new Blob(this.parts, contentType ? { type: contentType } : undefined);
|
|
}
|
|
};
|
|
|
|
// Adicionar em todos os possíveis locais onde a biblioteca pode procurar
|
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
const win = window as any;
|
|
|
|
// Definir BlobBuilder se não existir
|
|
if (typeof win.BlobBuilder === 'undefined') {
|
|
win.BlobBuilder = BlobBuilderClass;
|
|
}
|
|
|
|
// Variantes de navegadores antigos
|
|
if (typeof win.WebKitBlobBuilder === 'undefined') {
|
|
win.WebKitBlobBuilder = BlobBuilderClass;
|
|
}
|
|
|
|
if (typeof win.MozBlobBuilder === 'undefined') {
|
|
win.MozBlobBuilder = BlobBuilderClass;
|
|
}
|
|
|
|
if (typeof win.MSBlobBuilder === 'undefined') {
|
|
win.MSBlobBuilder = BlobBuilderClass;
|
|
}
|
|
|
|
// Adicionar no global scope
|
|
if (typeof globalThis !== 'undefined') {
|
|
if (typeof (globalThis as any).BlobBuilder === 'undefined') {
|
|
(globalThis as any).BlobBuilder = BlobBuilderClass;
|
|
}
|
|
if (typeof (globalThis as any).WebKitBlobBuilder === 'undefined') {
|
|
(globalThis as any).WebKitBlobBuilder = BlobBuilderClass;
|
|
}
|
|
if (typeof (globalThis as any).MozBlobBuilder === 'undefined') {
|
|
(globalThis as any).MozBlobBuilder = BlobBuilderClass;
|
|
}
|
|
}
|
|
|
|
// Marcar que o polyfill foi adicionado
|
|
win.__blobBuilderPolyfillAdded = true;
|
|
|
|
console.log('✅ Polyfill BlobBuilder adicionado globalmente');
|
|
}
|
|
|
|
// Executar imediatamente se estiver no browser
|
|
if (typeof window !== 'undefined') {
|
|
adicionarBlobBuilderPolyfill();
|
|
}
|