UNPKG

@simplito/privmx-webendpoint

Version:

PrivMX Web Endpoint library

70 lines (69 loc) 2.21 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.WebWorker = void 0; class WebWorker { assetsDir; onFrame; worker; constructor(assetsDir, onFrame) { this.assetsDir = assetsDir; this.onFrame = onFrame; } async init_e2ee() { this.worker = new Worker(this.assetsDir + "/e2ee-worker.js"); this.worker.onmessage = (event) => { try { if (event.data.type === "rms") { if (this.onFrame !== undefined && typeof this.onFrame === "function") { this.onFrame({ rms: event.data.rms, kind: "audio", receiverId: event.data.receiverId, publisherId: event.data.publisherId, }); } } } catch (e) { console.error("[Worker]: invalid event"); } }; this.worker.onerror = (e) => console.error(e); this.worker.postMessage({ operation: "initialize", }); } getWorker() { return this.worker; } setKeys(keys) { if (!this.worker) { console.warn("Cannot pass keys to e2ee worker as it is not initialized yet."); return; } this.worker.postMessage({ operation: "setKeys", keys, }); } createWorkerFromFunction(workerFunction) { const blob = new Blob([`(${workerFunction.toString()})()`], { type: "application/javascript", }); return new Worker(URL.createObjectURL(blob)); } async createWorkerFromScript(scriptUrl) { const scriptContent = await fetch(scriptUrl).then((r) => r.text()); const blob = new Blob([scriptContent], { type: "application/javascript" }); const workerUrl = URL.createObjectURL(blob); const worker = new Worker(workerUrl); return worker; } } exports.WebWorker = WebWorker; // function workerScript() { // self.onmessage = WorkerSpec.onmessage; // } function workerScript() { return ""; }