@vonage/ml-transformers
Version:
<!-- README for NPM; the one for GitHub is in .github directory. -->
1 lines • 269 kB
JavaScript
function sn(e,t){globalThis.vonage||(globalThis.vonage={}),globalThis.vonage.workerizer||(globalThis.vonage.workerizer={});let r=globalThis.vonage.workerizer;return r[e]||(r[e]=t),r[e]}const je=sn("globals",{});var U=(e=>(e.INIT="INIT",e.FORWARD="FORWARD",e.TERMINATE="TERMINATE",e.GLOBALS_SYNC="GLOBALS_SYNC",e.EVENT="EVENT",e))(U||{});function Ci(e){return[ImageBitmap,ReadableStream,WritableStream].some(t=>e instanceof t)}let Ls=0;function Nt(e,t,r,n,i){const o=Ls++;return e.postMessage({id:o,type:t,functionName:r,args:n},n.filter(e=>Ci(e))),new Promise(e=>{i?.set(o,e)})}function Ve(e,t){const{id:r,type:n}=e,i=Array.isArray(t)?t:[t];postMessage({id:r,type:n,result:t},i.filter(e=>Ci(e)))}const $t=sn("workerized",{});function an(){return typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope}async function zs(){if(an())Ve({type:U.GLOBALS_SYNC},je);else{const e=[];for(const t in $t){const{worker:r,resolvers:n}=$t[t].workerContext;r&&e.push(Nt(r,U.GLOBALS_SYNC,"",[je],n))}await Promise.all(e)}}function ot(e,t){if(Array.isArray(t))t.splice(0,t.length);else if("object"==typeof t)for(const e in t)delete t[e];for(const r in e)Array.isArray(e[r])?(t[r]=[],ot(e[r],t[r])):"object"==typeof e[r]?(t[r]={},ot(e[r],t[r])):t[r]=e[r]}async function Us(e,t,r,n){const i=new t;if(i.addEventListener("message",async({data:e})=>{var t,i,o,s,a,c,u;switch(e.type){case U.GLOBALS_SYNC:e.id?(null==(i=r.get(null!=(t=e.id)?t:-1))||i(e.result),r.delete(null!=(o=e.id)?o:-1)):(ot(null!=(s=e.result)?s:{},je),await zs());break;case U.EVENT:const{result:l}=e,f=l;if(null==f?.name)throw"Missing event name";n(f.name,f.data);break;default:null==(c=r.get(null!=(a=e.id)?a:-1))||c(e.result),r.delete(null!=(u=e.id)?u:-1)}}),!await Nt(i,U.INIT,"",[e.workerId,je],r))throw"Failed to instantiate workerized class";return i}const te=new WeakMap,ge=new WeakMap,X=new WeakMap,Wt=Symbol("anyProducer"),Qn=Promise.resolve(),Gt=Symbol("listenerAdded"),jt=Symbol("listenerRemoved");let Vt=!1,Mr=!1;function ke(e){if("string"!=typeof e&&"symbol"!=typeof e&&"number"!=typeof e)throw new TypeError("`eventName` must be a string, symbol, or number")}function Et(e){if("function"!=typeof e)throw new TypeError("listener must be a function")}function Re(e,t){const r=ge.get(e);if(r.has(t))return r.get(t)}function tt(e,t){const r="string"==typeof t||"symbol"==typeof t||"number"==typeof t?t:Wt,n=X.get(e);if(n.has(r))return n.get(r)}function Ns(e,t,r){const n=X.get(e);if(n.has(t))for(const e of n.get(t))e.enqueue(r);if(n.has(Wt)){const e=Promise.all([t,r]);for(const t of n.get(Wt))t.enqueue(e)}}function Xn(e,t){t=Array.isArray(t)?t:[t];let r=!1,n=()=>{},i=[];const o={enqueue(e){i.push(e),n()},finish(){r=!0,n()}};for(const r of t){let t=tt(e,r);t||(t=new Set,X.get(e).set(r,t)),t.add(o)}return{async next(){return i?0===i.length?r?(i=void 0,this.next()):(await new Promise(e=>{n=e}),this.next()):{done:!1,value:await i.shift()}:{done:!0}},async return(r){i=void 0;for(const r of t){const t=tt(e,r);t&&(t.delete(o),0===t.size&&X.get(e).delete(r))}return n(),arguments.length>0?{done:!0,value:await r}:{done:!0}},[Symbol.asyncIterator](){return this}}}function Kn(e){if(void 0===e)return Jn;if(!Array.isArray(e))throw new TypeError("`methodNames` must be an array of strings");for(const t of e)if(!Jn.includes(t))throw"string"!=typeof t?new TypeError("`methodNames` element must be a string"):new Error(`${t} is not Emittery method`);return e}const Ne=e=>e===Gt||e===jt;function _t(e,t,r){if(Ne(t))try{Vt=!0,e.emit(t,r)}finally{Vt=!1}}let yr=class e{static mixin(t,r){return r=Kn(r),n=>{if("function"!=typeof n)throw new TypeError("`target` must be function");for(const e of r)if(void 0!==n.prototype[e])throw new Error(`The property \`${e}\` already exists on \`target\``);Object.defineProperty(n.prototype,t,{enumerable:!1,get:function(){return Object.defineProperty(this,t,{enumerable:!1,value:new e}),this[t]}});const i=e=>function(...r){return this[t][e](...r)};for(const e of r)Object.defineProperty(n.prototype,e,{enumerable:!1,value:i(e)});return n}}static get isDebugEnabled(){var e,t;if("object"!=typeof(null==(e=globalThis.process)?void 0:e.env))return Mr;const{env:r}=null!=(t=globalThis.process)?t:{env:{}};return"emittery"===r.DEBUG||"*"===r.DEBUG||Mr}static set isDebugEnabled(e){Mr=e}constructor(e={}){var t;te.set(this,new Set),ge.set(this,new Map),X.set(this,new Map),X.get(this).set(Wt,new Set),this.debug=null!=(t=e.debug)?t:{},void 0===this.debug.enabled&&(this.debug.enabled=!1),this.debug.logger||(this.debug.logger=(e,t,r,n)=>{try{n=JSON.stringify(n)}catch{n=`Object with the following keys failed to stringify: ${Object.keys(n).join(",")}`}("symbol"==typeof r||"number"==typeof r)&&(r=r.toString());const i=new Date,o=`${i.getHours()}:${i.getMinutes()}:${i.getSeconds()}.${i.getMilliseconds()}`;console.log(`[${o}][emittery:${e}][${t}] Event Name: ${r}\n\tdata: ${n}`)})}logIfDebugEnabled(t,r,n){(e.isDebugEnabled||this.debug.enabled)&&this.debug.logger(t,this.debug.name,r,n)}on(e,t){Et(t),e=Array.isArray(e)?e:[e];for(const r of e){ke(r);let e=Re(this,r);e||(e=new Set,ge.get(this).set(r,e)),e.add(t),this.logIfDebugEnabled("subscribe",r,void 0),Ne(r)||_t(this,Gt,{eventName:r,listener:t})}return this.off.bind(this,e,t)}off(e,t){Et(t),e=Array.isArray(e)?e:[e];for(const r of e){ke(r);const e=Re(this,r);e&&(e.delete(t),0===e.size&&ge.get(this).delete(r)),this.logIfDebugEnabled("unsubscribe",r,void 0),Ne(r)||_t(this,jt,{eventName:r,listener:t})}}once(e){let t;const r=new Promise(r=>{t=this.on(e,e=>{t(),r(e)})});return r.off=t,r}events(e){e=Array.isArray(e)?e:[e];for(const t of e)ke(t);return Xn(this,e)}async emit(e,t){var r;if(ke(e),Ne(e)&&!Vt)throw new TypeError("`eventName` cannot be meta event `listenerAdded` or `listenerRemoved`");this.logIfDebugEnabled("emit",e,t),Ns(this,e,t);const n=null!=(r=Re(this,e))?r:new Set,i=te.get(this),o=[...n],s=Ne(e)?[]:[...i];await Qn,await Promise.all([...o.map(async e=>{if(n.has(e))return e(t)}),...s.map(async r=>{if(i.has(r))return r(e,t)})])}async emitSerial(e,t){var r;if(ke(e),Ne(e)&&!Vt)throw new TypeError("`eventName` cannot be meta event `listenerAdded` or `listenerRemoved`");this.logIfDebugEnabled("emitSerial",e,t);const n=null!=(r=Re(this,e))?r:new Set,i=te.get(this),o=[...n],s=[...i];await Qn;for(const e of o)n.has(e)&&await e(t);for(const r of s)i.has(r)&&await r(e,t)}onAny(e){return Et(e),this.logIfDebugEnabled("subscribeAny",void 0,void 0),te.get(this).add(e),_t(this,Gt,{listener:e}),this.offAny.bind(this,e)}anyEvent(){return Xn(this)}offAny(e){Et(e),this.logIfDebugEnabled("unsubscribeAny",void 0,void 0),_t(this,jt,{listener:e}),te.get(this).delete(e)}clearListeners(e){e=Array.isArray(e)?e:[e];for(const t of e)if(this.logIfDebugEnabled("clear",t,void 0),"string"==typeof t||"symbol"==typeof t||"number"==typeof t){const e=Re(this,t);e&&e.clear();const r=tt(this,t);if(r){for(const e of r)e.finish();r.clear()}}else{te.get(this).clear();for(const[e,t]of ge.get(this).entries())t.clear(),ge.get(this).delete(e);for(const[e,t]of X.get(this).entries()){for(const e of t)e.finish();t.clear(),X.get(this).delete(e)}}}listenerCount(e){var t,r,n,i,o,s;e=Array.isArray(e)?e:[e];let a=0;for(const c of e)if("string"!=typeof c){typeof c<"u"&&ke(c),a+=te.get(this).size;for(const e of ge.get(this).values())a+=e.size;for(const e of X.get(this).values())a+=e.size}else a+=te.get(this).size+(null!=(r=null==(t=Re(this,c))?void 0:t.size)?r:0)+(null!=(i=null==(n=tt(this,c))?void 0:n.size)?i:0)+(null!=(s=null==(o=tt(this))?void 0:o.size)?s:0);return a}bindMethods(e,t){if("object"!=typeof e||null===e)throw new TypeError("`target` must be an object");t=Kn(t);for(const r of t){if(void 0!==e[r])throw new Error(`The property \`${r}\` already exists on \`target\``);Object.defineProperty(e,r,{enumerable:!1,value:this[r].bind(this)})}}};const Jn=Object.getOwnPropertyNames(yr.prototype).filter(e=>"constructor"!==e);function $s(e){return e.onAny&&e.emit}function Ws(e){return e.prototype.onAny&&e.prototype.emit}Object.defineProperty(yr,"listenerAdded",{value:Gt,writable:!1,enumerable:!0,configurable:!1}),Object.defineProperty(yr,"listenerRemoved",{value:jt,writable:!1,enumerable:!0,configurable:!1});let Gs=0;async function js(e,t,r){const n=Ws(e)?new yr:{},i=Gs++;return Object.getOwnPropertyNames(e.prototype).forEach(e=>{n[e]=(...n)=>Nt(t,U.FORWARD,e,n,r)}),n.terminate=async(...e)=>{const o=await Nt(t,U.TERMINATE,"",e,r);return delete $t[i],t.terminate(),n.workerContext.worker=void 0,o},n.workerContext={id:i,worker:t,resolvers:r},$t[i]=n,n}async function Vs(e,t){const r=new Map;let n;const i=await Us(e,t,r,(e,t)=>{n?.emit&&n?.emit(e,t)});return n=await js(e,i,r),n}async function Hs(e,t){const{functionName:r,args:n}=e;if(!t.instance)throw"instance not initialized";if(!r)throw"missing function name to call";if(!t.instance[r])throw`undefined function [${r}] in class ${t.instance.constructor.workerId}`;Ve(e,await t.instance[r](...n??[]))}const Di=sn("registeredWorkers",{});function Ys(e,t){t.workerId=e,an()&&(Di[t.workerId]=t)}function qs(e,t){if(!e.args)throw"Missing className while initializing worker";const[r,n]=e.args,i=Di[r];if(!i)throw`unknown worker class ${r}`;t.instance=new i(e.args.slice(1)),ot(n,je),$s(t.instance)&&t.instance.onAny((e,t)=>{Ve({type:U.EVENT},{name:e,data:t})}),Ve(e,void 0!==typeof t.instance)}async function Qs(e,t){const{args:r}=e;if(!t.instance)throw"instance not initialized";let n;t.instance.terminate&&(n=await t.instance.terminate(...r??[])),Ve(e,n)}function Xs(e){if(!e.args)throw"Missing globals while syncing";ot(e.args[0],je),Ve(e,{})}function Ks(){const e={};onmessage=async t=>{const r=t.data;switch(r.type){case U.INIT:qs(r,e);break;case U.FORWARD:Hs(r,e);break;case U.TERMINATE:Qs(r,e);break;case U.GLOBALS_SYNC:Xs(r)}}}an()&&Ks();const Bi='(function(){"use strict";function z(r,e){globalThis.vonage||(globalThis.vonage={}),globalThis.vonage.workerizer||(globalThis.vonage.workerizer={});let t=globalThis.vonage.workerizer;return t[r]||(t[r]=e),t[r]}const P=z("globals",{});var d=(r=>(r.INIT="INIT",r.FORWARD="FORWARD",r.TERMINATE="TERMINATE",r.GLOBALS_SYNC="GLOBALS_SYNC",r.EVENT="EVENT",r))(d||{});function D(r){return[ImageBitmap,ReadableStream,WritableStream].some(t=>r instanceof t)}function w(r,e){const{id:t,type:s}=r,i=Array.isArray(e)?e:[e];postMessage({id:t,type:s,result:e},i.filter(n=>D(n)))}z("workerized",{});function W(){return typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope}function A(r,e){if(Array.isArray(e))e.splice(0,e.length);else if(typeof e=="object")for(const t in e)delete e[t];for(const t in r)Array.isArray(r[t])?(e[t]=[],A(r[t],e[t])):typeof r[t]=="object"?(e[t]={},A(r[t],e[t])):e[t]=r[t]}const c=new WeakMap,u=new WeakMap,a=new WeakMap,T=Symbol("anyProducer"),$=Promise.resolve(),k=Symbol("listenerAdded"),S=Symbol("listenerRemoved");let I=!1,m=!1;function h(r){if(typeof r!="string"&&typeof r!="symbol"&&typeof r!="number")throw new TypeError("`eventName` must be a string, symbol, or number")}function M(r){if(typeof r!="function")throw new TypeError("listener must be a function")}function b(r,e){const t=u.get(r);if(t.has(e))return t.get(e)}function E(r,e){const t=typeof e=="string"||typeof e=="symbol"||typeof e=="number"?e:T,s=a.get(r);if(s.has(t))return s.get(t)}function B(r,e,t){const s=a.get(r);if(s.has(e))for(const i of s.get(e))i.enqueue(t);if(s.has(T)){const i=Promise.all([e,t]);for(const n of s.get(T))n.enqueue(i)}}function j(r,e){e=Array.isArray(e)?e:[e];let t=!1,s=()=>{},i=[];const n={enqueue(o){i.push(o),s()},finish(){t=!0,s()}};for(const o of e){let f=E(r,o);f||(f=new Set,a.get(r).set(o,f)),f.add(n)}return{async next(){return i?i.length===0?t?(i=void 0,this.next()):(await new Promise(o=>{s=o}),this.next()):{done:!1,value:await i.shift()}:{done:!0}},async return(o){i=void 0;for(const f of e){const l=E(r,f);l&&(l.delete(n),l.size===0&&a.get(r).delete(f))}return s(),arguments.length>0?{done:!0,value:await o}:{done:!0}},[Symbol.asyncIterator](){return this}}}function L(r){if(r===void 0)return R;if(!Array.isArray(r))throw new TypeError("`methodNames` must be an array of strings");for(const e of r)if(!R.includes(e))throw typeof e!="string"?new TypeError("`methodNames` element must be a string"):new Error(`${e} is not Emittery method`);return r}const g=r=>r===k||r===S;function O(r,e,t){if(g(e))try{I=!0,r.emit(e,t)}finally{I=!1}}class y{static mixin(e,t){return t=L(t),s=>{if(typeof s!="function")throw new TypeError("`target` must be function");for(const o of t)if(s.prototype[o]!==void 0)throw new Error(`The property \\`${o}\\` already exists on \\`target\\``);function i(){return Object.defineProperty(this,e,{enumerable:!1,value:new y}),this[e]}Object.defineProperty(s.prototype,e,{enumerable:!1,get:i});const n=o=>function(...f){return this[e][o](...f)};for(const o of t)Object.defineProperty(s.prototype,o,{enumerable:!1,value:n(o)});return s}}static get isDebugEnabled(){var e,t;if(typeof((e=globalThis.process)==null?void 0:e.env)!="object")return m;const{env:s}=(t=globalThis.process)!=null?t:{env:{}};return s.DEBUG==="emittery"||s.DEBUG==="*"||m}static set isDebugEnabled(e){m=e}constructor(e={}){var t;c.set(this,new Set),u.set(this,new Map),a.set(this,new Map),a.get(this).set(T,new Set),this.debug=(t=e.debug)!=null?t:{},this.debug.enabled===void 0&&(this.debug.enabled=!1),this.debug.logger||(this.debug.logger=(s,i,n,o)=>{try{o=JSON.stringify(o)}catch{o=`Object with the following keys failed to stringify: ${Object.keys(o).join(",")}`}(typeof n=="symbol"||typeof n=="number")&&(n=n.toString());const f=new Date,l=`${f.getHours()}:${f.getMinutes()}:${f.getSeconds()}.${f.getMilliseconds()}`;console.log(`[${l}][emittery:${s}][${i}] Event Name: ${n}\n\tdata: ${o}`)})}logIfDebugEnabled(e,t,s){(y.isDebugEnabled||this.debug.enabled)&&this.debug.logger(e,this.debug.name,t,s)}on(e,t){M(t),e=Array.isArray(e)?e:[e];for(const s of e){h(s);let i=b(this,s);i||(i=new Set,u.get(this).set(s,i)),i.add(t),this.logIfDebugEnabled("subscribe",s,void 0),g(s)||O(this,k,{eventName:s,listener:t})}return this.off.bind(this,e,t)}off(e,t){M(t),e=Array.isArray(e)?e:[e];for(const s of e){h(s);const i=b(this,s);i&&(i.delete(t),i.size===0&&u.get(this).delete(s)),this.logIfDebugEnabled("unsubscribe",s,void 0),g(s)||O(this,S,{eventName:s,listener:t})}}once(e){let t;const s=new Promise(i=>{t=this.on(e,n=>{t(),i(n)})});return s.off=t,s}events(e){e=Array.isArray(e)?e:[e];for(const t of e)h(t);return j(this,e)}async emit(e,t){var s;if(h(e),g(e)&&!I)throw new TypeError("`eventName` cannot be meta event `listenerAdded` or `listenerRemoved`");this.logIfDebugEnabled("emit",e,t),B(this,e,t);const i=(s=b(this,e))!=null?s:new Set,n=c.get(this),o=[...i],f=g(e)?[]:[...n];await $,await Promise.all([...o.map(async l=>{if(i.has(l))return l(t)}),...f.map(async l=>{if(n.has(l))return l(e,t)})])}async emitSerial(e,t){var s;if(h(e),g(e)&&!I)throw new TypeError("`eventName` cannot be meta event `listenerAdded` or `listenerRemoved`");this.logIfDebugEnabled("emitSerial",e,t);const i=(s=b(this,e))!=null?s:new Set,n=c.get(this),o=[...i],f=[...n];await $;for(const l of o)i.has(l)&&await l(t);for(const l of f)n.has(l)&&await l(e,t)}onAny(e){return M(e),this.logIfDebugEnabled("subscribeAny",void 0,void 0),c.get(this).add(e),O(this,k,{listener:e}),this.offAny.bind(this,e)}anyEvent(){return j(this)}offAny(e){M(e),this.logIfDebugEnabled("unsubscribeAny",void 0,void 0),O(this,S,{listener:e}),c.get(this).delete(e)}clearListeners(e){e=Array.isArray(e)?e:[e];for(const t of e)if(this.logIfDebugEnabled("clear",t,void 0),typeof t=="string"||typeof t=="symbol"||typeof t=="number"){const s=b(this,t);s&&s.clear();const i=E(this,t);if(i){for(const n of i)n.finish();i.clear()}}else{c.get(this).clear();for(const[s,i]of u.get(this).entries())i.clear(),u.get(this).delete(s);for(const[s,i]of a.get(this).entries()){for(const n of i)n.finish();i.clear(),a.get(this).delete(s)}}}listenerCount(e){var t,s,i,n,o,f;e=Array.isArray(e)?e:[e];let l=0;for(const p of e){if(typeof p=="string"){l+=c.get(this).size+((s=(t=b(this,p))==null?void 0:t.size)!=null?s:0)+((n=(i=E(this,p))==null?void 0:i.size)!=null?n:0)+((f=(o=E(this))==null?void 0:o.size)!=null?f:0);continue}typeof p<"u"&&h(p),l+=c.get(this).size;for(const v of u.get(this).values())l+=v.size;for(const v of a.get(this).values())l+=v.size}return l}bindMethods(e,t){if(typeof e!="object"||e===null)throw new TypeError("`target` must be an object");t=L(t);for(const s of t){if(e[s]!==void 0)throw new Error(`The property \\`${s}\\` already exists on \\`target\\``);Object.defineProperty(e,s,{enumerable:!1,value:this[s].bind(this)})}}}const R=Object.getOwnPropertyNames(y.prototype).filter(r=>r!=="constructor");Object.defineProperty(y,"listenerAdded",{value:k,writable:!1,enumerable:!0,configurable:!1}),Object.defineProperty(y,"listenerRemoved",{value:S,writable:!1,enumerable:!0,configurable:!1});function C(r){return r.onAny&&r.emit}async function V(r,e){const{functionName:t,args:s}=r;if(!e.instance)throw"instance not initialized";if(!t)throw"missing function name to call";if(!e.instance[t])throw`undefined function [${t}] in class ${e.instance.constructor.workerId}`;w(r,await e.instance[t](...s??[]))}const _=z("registeredWorkers",{});function q(r,e){e.workerId=r,W()&&(_[e.workerId]=e)}function F(r,e){if(!r.args)throw"Missing className while initializing worker";const[t,s]=r.args,i=_[t];if(i)e.instance=new i(r.args.slice(1));else throw`unknown worker class ${t}`;A(s,P),C(e.instance)&&e.instance.onAny((n,o)=>{w({type:d.EVENT},{name:n,data:o})}),w(r,typeof e.instance!==void 0)}async function Y(r,e){const{args:t}=r;if(!e.instance)throw"instance not initialized";let s;e.instance.terminate&&(s=await e.instance.terminate(...t??[])),w(r,s)}function U(r){if(!r.args)throw"Missing globals while syncing";A(r.args[0],P),w(r,{})}function G(){const r={};onmessage=async e=>{const t=e.data;switch(t.type){case d.INIT:F(t,r);break;case d.FORWARD:V(t,r);break;case d.TERMINATE:Y(t,r);break;case d.GLOBALS_SYNC:U(t);break}}}W()&&G();class H{check(){return typeof globalThis.MediaStreamTrackProcessor<"u"&&typeof globalThis.VideoTrackGenerator<"u"}}q("IsSupportedWorkerized",H),G()})();\n',Zn=typeof self<"u"&&self.Blob&&new Blob(["(self.URL || self.webkitURL).revokeObjectURL(self.location.href);",Bi],{type:"text/javascript;charset=utf-8"});function Js(e){let t;try{if(t=Zn&&(self.URL||self.webkitURL).createObjectURL(Zn),!t)throw"";const r=new Worker(t,{name:e?.name});return r.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(t)}),r}catch{return new Worker("data:text/javascript;charset=utf-8,"+encodeURIComponent(Bi),{name:e?.name})}}class Li{check(){return typeof globalThis.MediaStreamTrackProcessor<"u"&&typeof globalThis.VideoTrackGenerator<"u"}}async function Zs(){return new Promise(async(e,t)=>{ta()||!await Ui()&&!zi()?t("Your browser does not support the MediaStreamTrack API for Insertable Streams of Media."):e()})}function zi(){return void 0!==self.MediaStreamTrackProcessor&&void 0!==self.MediaStreamTrackGenerator||ea()}function ea(){return 0===[self.ReadableStream,self.WritableStream,self.MediaStream,self.OffscreenCanvas,self.VideoFrame,self.AudioContext,self.AudioWorkletNode].filter(e=>void 0===e).length}function ta(){const e=navigator.userAgent.toLowerCase();return!(!(navigator.vendor&&navigator.vendor.toLowerCase().indexOf("apple")>-1)||e.indexOf("applewebkit")>-1&&-1===e.indexOf("version"))&&parseInt((e.split(" ").find(e=>e.includes("version/"))??"/0").split("/")[1])<26}function Ui(){return Vs(Li,Js).then(async e=>{const t=await e.check();return await e.terminate(),t}).catch(()=>!1)}Ys("IsSupportedWorkerized",Li);const re=new WeakMap,ye=new WeakMap,K=new WeakMap,Ht=Symbol("anyProducer"),ei=Promise.resolve(),Yt=Symbol("listenerAdded"),qt=Symbol("listenerRemoved");let Qt=!1,Cr=!1;const Xt=e=>"string"==typeof e||"symbol"==typeof e||"number"==typeof e;function Pe(e){if(!Xt(e))throw new TypeError("`eventName` must be a string, symbol, or number")}function At(e){if("function"!=typeof e)throw new TypeError("listener must be a function")}function Fe(e,t){const r=ye.get(e);if(r.has(t))return r.get(t)}function rt(e,t){const r=Xt(t)?t:Ht,n=K.get(e);if(n.has(r))return n.get(r)}function ra(e,t,r){const n=K.get(e);if(n.has(t))for(const e of n.get(t))e.enqueue(r);if(n.has(Ht)){const e=Promise.all([t,r]);for(const t of n.get(Ht))t.enqueue(e)}}function ti(e,t){t=Array.isArray(t)?t:[t];let r=!1,n=()=>{},i=[];const o={enqueue(e){i.push(e),n()},finish(){r=!0,n()}};for(const r of t){let t=rt(e,r);t||(t=new Set,K.get(e).set(r,t)),t.add(o)}return{async next(){return i?0===i.length?r?(i=void 0,this.next()):(await new Promise(e=>{n=e}),this.next()):{done:!1,value:await i.shift()}:{done:!0}},async return(r){i=void 0;for(const r of t){const t=rt(e,r);t&&(t.delete(o),0===t.size&&K.get(e).delete(r))}return n(),arguments.length>0?{done:!0,value:await r}:{done:!0}},[Symbol.asyncIterator](){return this}}}function ri(e){if(void 0===e)return ni;if(!Array.isArray(e))throw new TypeError("`methodNames` must be an array of strings");for(const t of e)if(!ni.includes(t))throw"string"!=typeof t?new TypeError("`methodNames` element must be a string"):new Error(`${t} is not Emittery method`);return e}const $e=e=>e===Yt||e===qt;function Tt(e,t,r){if($e(t))try{Qt=!0,e.emit(t,r)}finally{Qt=!1}}let Qe=class e{static mixin(t,r){return r=ri(r),n=>{if("function"!=typeof n)throw new TypeError("`target` must be function");for(const e of r)if(void 0!==n.prototype[e])throw new Error(`The property \`${e}\` already exists on \`target\``);Object.defineProperty(n.prototype,t,{enumerable:!1,get:function(){return Object.defineProperty(this,t,{enumerable:!1,value:new e}),this[t]}});const i=e=>function(...r){return this[t][e](...r)};for(const e of r)Object.defineProperty(n.prototype,e,{enumerable:!1,value:i(e)});return n}}static get isDebugEnabled(){if("object"!=typeof globalThis.process?.env)return Cr;const{env:e}=globalThis.process??{env:{}};return"emittery"===e.DEBUG||"*"===e.DEBUG||Cr}static set isDebugEnabled(e){Cr=e}constructor(e={}){re.set(this,new Set),ye.set(this,new Map),K.set(this,new Map),K.get(this).set(Ht,new Set),this.debug=e.debug??{},void 0===this.debug.enabled&&(this.debug.enabled=!1),this.debug.logger||(this.debug.logger=(e,t,r,n)=>{try{n=JSON.stringify(n)}catch{n=`Object with the following keys failed to stringify: ${Object.keys(n).join(",")}`}("symbol"==typeof r||"number"==typeof r)&&(r=r.toString());const i=new Date,o=`${i.getHours()}:${i.getMinutes()}:${i.getSeconds()}.${i.getMilliseconds()}`;console.log(`[${o}][emittery:${e}][${t}] Event Name: ${r}\n\tdata: ${n}`)})}logIfDebugEnabled(t,r,n){(e.isDebugEnabled||this.debug.enabled)&&this.debug.logger(t,this.debug.name,r,n)}on(e,t,{signal:r}={}){At(t),e=Array.isArray(e)?e:[e];for(const r of e){Pe(r);let e=Fe(this,r);e||(e=new Set,ye.get(this).set(r,e)),e.add(t),this.logIfDebugEnabled("subscribe",r,void 0),$e(r)||Tt(this,Yt,{eventName:r,listener:t})}const n=()=>{this.off(e,t),r?.removeEventListener("abort",n)};return r?.addEventListener("abort",n,{once:!0}),r?.aborted&&n(),n}off(e,t){At(t),e=Array.isArray(e)?e:[e];for(const r of e){Pe(r);const e=Fe(this,r);e&&(e.delete(t),0===e.size&&ye.get(this).delete(r)),this.logIfDebugEnabled("unsubscribe",r,void 0),$e(r)||Tt(this,qt,{eventName:r,listener:t})}}once(e,t){if(void 0!==t&&"function"!=typeof t)throw new TypeError("predicate must be a function");let r;const n=new Promise(n=>{r=this.on(e,e=>{t&&!t(e)||(r(),n(e))})});return n.off=r,n}events(e){e=Array.isArray(e)?e:[e];for(const t of e)Pe(t);return ti(this,e)}async emit(e,t){if(Pe(e),$e(e)&&!Qt)throw new TypeError("`eventName` cannot be meta event `listenerAdded` or `listenerRemoved`");this.logIfDebugEnabled("emit",e,t),ra(this,e,t);const r=Fe(this,e)??new Set,n=re.get(this),i=[...r],o=$e(e)?[]:[...n];await ei,await Promise.all([...i.map(async e=>{if(r.has(e))return e(t)}),...o.map(async r=>{if(n.has(r))return r(e,t)})])}async emitSerial(e,t){if(Pe(e),$e(e)&&!Qt)throw new TypeError("`eventName` cannot be meta event `listenerAdded` or `listenerRemoved`");this.logIfDebugEnabled("emitSerial",e,t);const r=Fe(this,e)??new Set,n=re.get(this),i=[...r],o=[...n];await ei;for(const e of i)r.has(e)&&await e(t);for(const r of o)n.has(r)&&await r(e,t)}onAny(e,{signal:t}={}){At(e),this.logIfDebugEnabled("subscribeAny",void 0,void 0),re.get(this).add(e),Tt(this,Yt,{listener:e});const r=()=>{this.offAny(e),t?.removeEventListener("abort",r)};return t?.addEventListener("abort",r,{once:!0}),t?.aborted&&r(),r}anyEvent(){return ti(this)}offAny(e){At(e),this.logIfDebugEnabled("unsubscribeAny",void 0,void 0),Tt(this,qt,{listener:e}),re.get(this).delete(e)}clearListeners(e){e=Array.isArray(e)?e:[e];for(const t of e)if(this.logIfDebugEnabled("clear",t,void 0),Xt(t)){const e=Fe(this,t);e&&e.clear();const r=rt(this,t);if(r){for(const e of r)e.finish();r.clear()}}else{re.get(this).clear();for(const[e,t]of ye.get(this).entries())t.clear(),ye.get(this).delete(e);for(const[e,t]of K.get(this).entries()){for(const e of t)e.finish();t.clear(),K.get(this).delete(e)}}}listenerCount(e){e=Array.isArray(e)?e:[e];let t=0;for(const r of e)if(Xt(r))t+=re.get(this).size+(Fe(this,r)?.size??0)+(rt(this,r)?.size??0)+(rt(this)?.size??0);else{void 0!==r&&Pe(r),t+=re.get(this).size;for(const e of ye.get(this).values())t+=e.size;for(const e of K.get(this).values())t+=e.size}return t}bindMethods(e,t){if("object"!=typeof e||null===e)throw new TypeError("`target` must be an object");t=ri(t);for(const r of t){if(void 0!==e[r])throw new Error(`The property \`${r}\` already exists on \`target\``);Object.defineProperty(e,r,{enumerable:!1,value:this[r].bind(this)})}}};const ni=Object.getOwnPropertyNames(Qe.prototype).filter(e=>"constructor"!==e);Object.defineProperty(Qe,"listenerAdded",{value:Yt,writable:!1,enumerable:!0,configurable:!1}),Object.defineProperty(Qe,"listenerRemoved",{value:qt,writable:!1,enumerable:!0,configurable:!1});var na=Object.defineProperty,ia=(e,t,r)=>t in e?na(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,oa=(e,t,r)=>(ia(e,t+"",r),r);const sa="hlg.tokbox.com/prod/logging/vcp_webrtc",aa="https://",ca=1e4,F=[];for(let e=0;e<256;++e)F.push((e+256).toString(16).slice(1));function ua(e,t=0){return(F[e[t+0]]+F[e[t+1]]+F[e[t+2]]+F[e[t+3]]+"-"+F[e[t+4]]+F[e[t+5]]+"-"+F[e[t+6]]+F[e[t+7]]+"-"+F[e[t+8]]+F[e[t+9]]+"-"+F[e[t+10]]+F[e[t+11]]+F[e[t+12]]+F[e[t+13]]+F[e[t+14]]+F[e[t+15]]).toLowerCase()}const la=new Uint8Array(16);function fa(){return crypto.getRandomValues(la)}function da(e,t,r){return crypto.randomUUID?crypto.randomUUID():ha(e)}function ha(e,t,r){var n,i,o;const s=null!=(o=null!=(i=(e=e||{}).random)?i:null==(n=e.rng)?void 0:n.call(e))?o:fa();if(s.length<16)throw new Error("Random bytes length must be >= 16");return s[6]=15&s[6]|64,s[8]=63&s[8]|128,ua(s)}function cn(e,t){globalThis.vonage||(globalThis.vonage={}),globalThis.vonage.workerizer||(globalThis.vonage.workerizer={});let r=globalThis.vonage.workerizer;return r[e]||(r[e]=t),r[e]}const se=cn("globals",{});var xe=(e=>(e.INIT="INIT",e.FORWARD="FORWARD",e.TERMINATE="TERMINATE",e.GLOBALS_SYNC="GLOBALS_SYNC",e))(xe||{});function Ni(e){return[ImageBitmap,ReadableStream,WritableStream].some(t=>e instanceof t)}let ma=0;function pa(e,t,r,n,i){const o=ma++;return e.postMessage({id:o,type:t,functionName:r,args:n},n.filter(e=>Ni(e))),new Promise(e=>{i?.set(o,e)})}function lt(e,t){const{id:r,type:n}=e,i=Array.isArray(t)?t:[t];postMessage({id:r,type:n,result:t},i.filter(e=>Ni(e)))}const ii=cn("workerized",{});function $i(){return typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope}async function ga(){if($i())lt({type:xe.GLOBALS_SYNC},se);else{const e=[];for(const t in ii){const{worker:r,resolvers:n}=ii[t].workerContext;r&&e.push(pa(r,xe.GLOBALS_SYNC,"",[se],n))}await Promise.all(e)}}function Kt(e,t){if(Array.isArray(t))t.splice(0,t.length);else if("object"==typeof t)for(const e in t)delete t[e];for(const r in e)Array.isArray(e[r])?(t[r]=[],Kt(e[r],t[r])):"object"==typeof e[r]?(t[r]={},Kt(e[r],t[r])):t[r]=e[r]}async function ya(e,t){const{functionName:r,args:n}=e;if(!t.instance)throw"instance not initialized";if(!r)throw"missing function name to call";if(!t.instance[r])throw`undefined function [${r}] in class ${t.instance.constructor.workerId}`;lt(e,await t.instance[r](...n??[]))}const ba=cn("registeredWorkers",{});function wa(e,t){if(!e.args)throw"Missing className while initializing worker";const[r,n]=e.args,i=ba[r];if(!i)throw`unknown worker class ${r}`;t.instance=new i(e.args.slice(1)),Kt(n,se),lt(e,void 0!==typeof t.instance)}async function va(e,t){const{args:r}=e;if(!t.instance)throw"instance not initialized";let n;t.instance.terminate&&(n=await t.instance.terminate(...r??[])),lt(e,n)}function xa(e){if(!e.args)throw"Missing globals while syncing";Kt(e.args[0],se),lt(e,{})}function Ea(){const e={};onmessage=async t=>{const r=t.data;switch(r.type){case xe.INIT:wa(r,e);break;case xe.FORWARD:ya(r,e);break;case xe.TERMINATE:va(r,e);break;case xe.GLOBALS_SYNC:xa(r)}}}function _a(e,t){return se[e]||(se[e]=t),[()=>se[e],async t=>{se[e]=t,await ga()}]}function Aa(e,t){return _a(e,t)}$i()&&Ea();const[Ta,Sa]=Aa("metadata");function Ia(e){Sa(e)}function Lt(){return Ta()}class un{constructor(e,t){oa(this,"uuid"),this.config=e,this.uuid=t??da()}async send(e){var t,r,n;const{appId:i,sourceType:o}=null!=(t=Lt())?t:{};if(!i||!o)return"metadata missing";const s=new AbortController,a=setTimeout(()=>s.abort(),ca);return await(null!=(n=null==(r=this.config)?void 0:r.fetch)?n:fetch)(this.getUrl(),{method:"POST",headers:this.getHeaders(),body:JSON.stringify(this.buildReport(e)),signal:s.signal}),clearTimeout(a),"success"}getUrl(){var e;let t=null!=(e=Lt().proxyUrl)?e:aa;return t+=("/"===t.at(-1)?"":"/")+sa,t}getHeaders(){return{"Content-Type":"application/json"}}buildReport(e){const t=Lt();return{guid:this.uuid,...e,applicationId:t.appId,timestamp:Date.now(),proxyUrl:t.proxyUrl,source:t.sourceType}}}const zt="3.0.4",jr=class{};jr.updates={transformer_new:"New transformer",transformer_null:"Null transformer"},jr.errors={transformer_none:"No transformers provided",transformer_start:"Cannot start transformer",transformer_transform:"Cannot transform frame",transformer_flush:"Cannot flush transformer",readable_null:"Readable is null",writable_null:"Writable is null"};let Ee=jr;function ka(e){return"object"==typeof e&&null!==e&&"message"in e&&"string"==typeof e.message}function Ra(e){if(ka(e))return e;try{return new Error(JSON.stringify(e))}catch{return new Error(String(e))}}function Dr(e){return Ra(e).message}class Pa{constructor(e,t){this.config=e,this.frameTransformedCount=0,this.frameFromSourceCount=0,this.startAt=0,this.reporter=new un(e,t)}async onFrameFromSource(){this.frameFromSourceCount++}get fps(){const{startAt:e,frameFromSourceCount:t}=this;return t/((Date.now()-e)/1e3)}async onFrameTransformed(e={},t=!1){0===this.startAt&&(this.startAt=Date.now()),this.frameTransformedCount++;const{startAt:r,frameTransformedCount:n,frameFromSourceCount:i}=this,o=Date.now(),s=(o-r)/1e3,a=n/s,c=i/s;return t||this.frameTransformedCount>=this.config.loggingIntervalFrameCount?(this.frameFromSourceCount=0,this.frameTransformedCount=0,this.startAt=o,this.reporter.config=this.config,this.reporter.send({...this.config.report,variation:"QoS",fps:c,transformedFps:a,framesTransformed:n,...e})):"success"}}var Fa=(e=>(e.FPS_DROP="fps_drop",e))(Fa||{}),Oa=(e=>(e.start="start",e.transform="transform",e.flush="flush",e))(Oa||{}),Vr=(e=>(e.pipeline_ended="pipeline_ended",e.pipeline_ended_with_error="pipeline_ended_with_error",e.pipeline_started="pipeline_started",e.pipeline_started_with_error="pipeline_started_with_error",e.pipeline_restarted="pipeline_restarted",e.pipeline_restarted_with_error="pipeline_restarted_with_error",e))(Vr||{});const Ma=500,Ca=.8;class Da extends Qe{constructor(e,t){super(),this.reporter_=new un,this.reporterQos_=new Pa({loggingIntervalFrameCount:Ma,report:{version:zt}}),this.index_=t,this.transformer_=e,this.shouldStop_=!1,this.isFlashed_=!1,this.mediaTransformerQosReportStartTimestamp_=0,this.videoHeight_=0,this.videoWidth_=0,this.trackExpectedRate_=-1,this.transformerType_="Custom","getTransformerType"in e&&(this.transformerType_=e.getTransformerType()),this.report({variation:"Create"})}setTrackExpectedRate(e){this.trackExpectedRate_=e}async start(e){if(this.controller_=e,this.transformer_&&"function"==typeof this.transformer_.start)try{await this.transformer_.start(e)}catch(e){this.report({message:Ee.errors.transformer_start,variation:"Error",error:Dr(e)});const t={eventMetaData:{transformerIndex:this.index_},error:e,function:"start"};this.emit("error",t)}}async transform(e,t){if(0===this.mediaTransformerQosReportStartTimestamp_&&(this.mediaTransformerQosReportStartTimestamp_=Date.now()),e instanceof VideoFrame&&(this.videoHeight_=e?.displayHeight??0,this.videoWidth_=e?.displayWidth??0),this.reporterQos_.onFrameFromSource(),this.transformer_)if(this.shouldStop_)console.warn("[Pipeline] flush from transform"),e.close(),this.flush(t),t.terminate();else{try{await(this.transformer_.transform?.(e,t)),this.reportQos()}catch(e){this.report({message:Ee.errors.transformer_transform,variation:"Error",error:Dr(e)});const t={eventMetaData:{transformerIndex:this.index_},error:e,function:"transform"};this.emit("error",t)}if(-1!=this.trackExpectedRate_&&this.trackExpectedRate_*Ca>this.reporterQos_.fps){const e={eventMetaData:{transformerIndex:this.index_},warningType:"fps_drop",dropInfo:{requested:this.trackExpectedRate_,current:this.reporterQos_.fps}};this.emit("warn",e)}}}async flush(e){if(this.transformer_&&"function"==typeof this.transformer_.flush&&!this.isFlashed_){this.isFlashed_=!0;try{await this.transformer_.flush(e)}catch(e){this.report({message:Ee.errors.transformer_flush,variation:"Error",error:Dr(e)});const t={eventMetaData:{transformerIndex:this.index_},error:e,function:"flush"};this.emit("error",t)}}this.reportQos(!0),this.report({variation:"Delete"})}stop(){console.log("[Pipeline] Stop stream."),this.controller_&&(this.flush(this.controller_),this.controller_.terminate()),this.shouldStop_=!0}report(e){this.reporter_.send({version:zt,action:"MediaTransformer",transformerType:this.transformerType_,...e})}reportQos(e=!1){this.reporterQos_.config={...this.reporterQos_.config},this.reporterQos_.onFrameTransformed({version:zt,action:"MediaTransformer",transformerType:this.transformerType_,videoWidth:this.videoWidth_,videoHeight:this.videoHeight_},e)}}class Ba extends Qe{constructor(e){super(),this.transformers_=[],this.trackExpectedRate_=-1;for(let t=0;t<e.length;t++){let r=new Da(e[t],t);r.on("error",e=>{this.emit("error",e)}),r.on("warn",e=>{this.emit("warn",e)}),this.transformers_.push(r)}}setTrackExpectedRate(e){this.trackExpectedRate_=e;for(let e of this.transformers_)e.setTrackExpectedRate(this.trackExpectedRate_)}async start(e,t){if(this.transformers_&&0!==this.transformers_.length){try{let r=e;for(let t of this.transformers_)e=e.pipeThrough(new TransformStream(t));e.pipeTo(t).then(async()=>{console.log("[Pipeline] Setup."),await t.abort(),await r.cancel(),this.emit("pipelineInfo","pipeline_ended")}).catch(async n=>{e.cancel().then(()=>{console.log("[Pipeline] Shutting down streams after abort.")}).catch(e=>{console.error("[Pipeline] Error from stream transform:",e)}),await t.abort(n),await r.cancel(n),this.emit("pipelineInfo","pipeline_ended_with_error")})}catch{return this.emit("pipelineInfo","pipeline_started_with_error"),void this.destroy()}this.emit("pipelineInfo","pipeline_started"),console.log("[Pipeline] Pipeline started.")}else console.log("[Pipeline] No transformers.")}async destroy(){console.log("[Pipeline] Destroying Pipeline.");for(let e of this.transformers_)e.stop()}}class Wi extends Qe{constructor(){super(),this.reporter_=new un,this.trackExpectedRate_=-1,this.report({variation:"Create"})}setTrackExpectedRate(e){this.trackExpectedRate_=e,this.pipeline_&&this.pipeline_.setTrackExpectedRate(this.trackExpectedRate_)}async transform(e,t){if(this.isTrack(e)){if("video"===e.kind){const t=new MediaStreamTrackProcessor({track:e}),r=new VideoTrackGenerator;return this.readable_=t.readable,this.writable_=r.writable,await this.transformInternal(),r.track}throw Error("Cannot process audio tracks inside a web worker when passing a track to transform")}return this.readable_=e,this.writable_=t,this.transformInternal()}transformInternal(){return new Promise(async(e,t)=>{if(!this.transformers_||0===this.transformers_.length)return this.report({message:Ee.errors.transformer_none,variation:"Error"}),void t("[MediaProcessor] Need to set transformers.");if(!this.readable_)return this.report({variation:"Error",message:Ee.errors.readable_null}),void t("[MediaProcessor] Readable is null.");if(!this.writable_)return this.report({variation:"Error",message:Ee.errors.writable_null}),void t("[MediaProcessor] Writable is null.");let r=!1;this.pipeline_&&(r=!0,this.pipeline_.clearListeners(),this.pipeline_.destroy()),this.pipeline_=new Ba(this.transformers_),this.pipeline_.on("warn",e=>{this.emit("warn",e)}),this.pipeline_.on("error",e=>{this.emit("error",e)}),this.pipeline_.on("pipelineInfo",e=>{r&&("pipeline_started"===e?e=Vr.pipeline_restarted:"pipeline_started_with_error"===e&&(e=Vr.pipeline_restarted_with_error)),this.emit("pipelineInfo",e)}),-1!=this.trackExpectedRate_&&this.pipeline_.setTrackExpectedRate(this.trackExpectedRate_),this.pipeline_.start(this.readable_,this.writable_).then(()=>{e()}).catch(e=>{t(e)})})}setTransformers(e){return this.report({variation:"Update",message:Ee.updates.transformer_new}),this.transformers_=e,this.readable_&&this.writable_?this.transformInternal():Promise.resolve()}destroy(){return new Promise(async e=>{this.pipeline_&&this.pipeline_.destroy(),this.report({variation:"Delete"}),e()})}report(e){this.reporter_.send({version:zt,action:"MediaProcessor",...e})}isTrack(e){return"kind"in e}}class La{constructor({kind:e}){if("video"==e){const e=document.createElement("canvas"),t=e.getContext("2d",{desynchronized:!0}),r=e.captureStream().getVideoTracks()[0];return r.writable=new WritableStream({write(n){e.width=n.displayWidth,e.height=n.displayHeight,t.drawImage(n,0,0,e.width,e.height),n.close(),"function"==typeof r.requestFrame&&r.requestFrame()}}),r}if("audio"==e){const e=new AudioContext,t=e.createMediaStreamDestination(),[r]=t.stream.getAudioTracks();return r.writable=new WritableStream({async start(n){return this.arrays=[],await e.audioWorklet.addModule(`data:text/javascript,(${function(){registerProcessor("mstg-shim",class extends AudioWorkletProcessor{constructor(){super(),this.arrays=[],this.arrayOffset=0,this.port.onmessage=({data:e})=>this.arrays.push(e),this.emptyArray=new Float32Array(0)}process(e,[[t]]){for(let e=0;e<t.length;e++)(!this.array||this.arrayOffset>=this.array.length)&&(this.array=this.arrays.shift()||this.emptyArray,this.arrayOffset=0),t[e]=this.array[this.arrayOffset++]||0;return!0}})}.toString()})()`),this.node=new AudioWorkletNode(e,"mstg-shim"),this.node.connect(t),r},write(e){const t=new Float32Array(e.numberOfFrames*e.numberOfChannels);e.copyTo(t,{planeIndex:0}),this.node.port.postMessage(t,[t.buffer]),e.close()}}),r}}}function za(){return self.MediaStreamTrackGenerator?self.MediaStreamTrackGenerator:La}class Ua{constructor(e){const t=e.track??e;"video"==t.kind?this.readable=new ReadableStream({async start(e){t.addEventListener("ended",()=>{try{e.close()}catch{}},{once:!0}),this.video=document.createElement("video"),this.video.setAttribute("playsinline",""),this.video.srcObject=new MediaStream([t]),await Promise.all([this.video.play(),new Promise(e=>this.video.onloadedmetadata=e)]),this.track=t,this.canvas=new OffscreenCanvas(this.video.videoWidth,this.video.videoHeight),this.ctx=this.canvas.getContext("2d",{desynchronized:!0}),this.t1=performance.now()},async pull(e){if("ended"==t.readyState){try{e.close()}catch{}return}const r=t.getSettings().frameRate||30;for(;performance.now()-this.t1<1e3/r;)if(await new Promise(e=>requestAnimationFrame(e)),"ended"==t.readyState){try{e.close()}catch{}return}this.canvas.width=this.video.videoWidth,this.canvas.height=this.video.videoHeight,this.t1=performance.now(),this.ctx.drawImage(this.video,0,0),e.enqueue(new VideoFrame(this.canvas,{timestamp:this.t1}))}}):"audio"==t.kind&&(this.readable=new ReadableStream({async start(e){t.addEventListener("ended",()=>{try{e.close()}catch{}},{once:!0}),this.ac=new AudioContext,this.arrays=[],await this.ac.audioWorklet.addModule(`data:text/javascript,(${function(){registerProcessor("mstp-shim",class extends AudioWorkletProcessor{process(e){return this.port.postMessage(e),!0}})}.toString()})()`),this.node=new AudioWorkletNode(this.ac,"mstp-shim"),this.ac.createMediaStreamSource(new MediaStream([t])).connect(this.node),this.node.port.addEventListener("message",({data:e})=>e[0][0]&&this.arrays.push(e))},async pull(e){if("ended"==t.readyState){try{e.close()}catch{}return}for(;!this.arrays.length;)if(await new Promise(e=>this.node.port.onmessage=e),"ended"==t.readyState){try{e.close()}catch{}return}const[r]=this.arrays.shift(),n=new Float32Array(r.reduce((e,t)=>e+t.length,0));r.reduce((e,t)=>(n.set(t,e),e+t.length),0),e.enqueue(new AudioData({format:"f32-planar",sampleRate:this.ac.sampleRate,numberOfFrames:r[0].length,numberOfChannels:r.length,timestamp:1e6*this.ac.currentTime|0,data:n,transfer:[n.buffer]}))}}))}}function Na(){return self.MediaStreamTrackProcessor?self.MediaStreamTrackProcessor:Ua}class $a{constructor(){this.processor_=null,this.generator_=null}init(e){return new Promise((t,r)=>{try{const t=Na();this.processor_=new t(e)}catch(e){console.log(`[InsertableStreamHelper] MediaStreamTrackProcessor failed: ${e}`),r(e)}try{const t=za();"audio"===e.kind?this.generator_=new t({kind:"audio"}):"video"===e.kind?this.generator_=new t({kind:"video"}):r("kind not supported")}catch(e){console.log(`[InsertableStreamHelper] MediaStreamTrackGenerator failed: ${e}`),r(e)}t()})}getReadable(){return this.processor_.readable}getWriteable(){return this.generator_.writable}getProccesorTrack(){return this.generator_}}class Wa{constructor(e){this.mediaProcessor_=e}async setTrack(e){if(!(this.mediaProcessor_ instanceof Wi)&&await Ui()){if("audio"===e.kind)throw Error("Cannot process audio tracks inside a web worker when passing a track to transform");return await this.mediaProcessor_.transform(e)}if(zi()){const t=new $a;return await t.init(e),await this.mediaProcessor_.transform(t.getReadable(),t.getWriteable()),t.getProccesorTrack()}throw Error("MediaStreamTrack API for Insertable Streams of Media is not supported")}destroy(){return new Promise((e,t)=>{this.mediaProcessor_?this.mediaProcessor_.destroy().then(()=>{e()}).catch(e=>{t(e)}):t("no processor")})}}var Ut=(e=>(e.Low="Low",e.High="High",e))(Ut||{}),Ga=(e=>(e.BackgroundBlur="BackgroundBlur",e.VirtualBackground="VirtualBackground",e.VideoBackground="VideoBackground",e.SilhouetteBlur="SilhouetteBlur",e))(Ga||{}),Hr=(e=>(e.FAST="FAST",e.PRECISE="PRECISE",e))(Hr||{}),Jt=(e=>(e.CANVAS="CANVAS",e.WEBGL="WEBGL",e))(Jt||{});const ja=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11]));async function kh(){const{wasm:e,insertableStreams:t,simd:r,webgl:n}=await Va();if(!e.supported)throw e.message;if(!t.supported)throw t.message;if(!r.supported)throw r.message;if(!n.supported)throw n.message}async function Va(){const e={wasm:{supported:"object"==typeof WebAssembly&&"function"==typeof WebAssembly.instantiate,message:"Your browser does not support WebAssembly features."},simd:{supported:await ja(),message:"Your browser does not support simd features."},insertableStreams:{supported:!0},gpu:{message:"Your browser does not support gpu features.",supported:!0},webgl:Ha(),performance:Gi()};try{await Zs()}catch(t){e.insertableStreams.supported=!1,e.insertableStreams.message=t}return e}function Ha(){if(!OffscreenCanvas)return{supported:!1,message:"Your browser does not support offscreen canvas"};const e=new OffscreenCanvas(0,0).getContext("webgl2");if(!e)return{supported:!1,message:"Your browser does not support webgl 2"};{const t=e?.getExtension("WEBGL_lose_context");t&&t.loseContext()}return{supported:!0}}function Gi(){const e=new OffscreenCanvas(0,0).getContext("webgl2",{failIfMajorPerformanceCaveat:!0});if(!e)return{supported:!1,message:"Your hardware does not perform good enough to run the library efficiently"};{const t=e?.getExtension("WEBGL_lose_context");t&&t.loseContext()}return{supported:!0}}const ne=new WeakMap,be=new WeakMap,J=new WeakMap,Zt=Symbol("anyProducer"),oi=Promise.resolve(),er=Symbol("listenerAdded"),tr=Symbol("listenerRemoved");let rr=!1,Br=!1;const nr=e=>"string"==typeof e||"symbol"==typeof e||"number"==typeof e;function Oe(e){if(!nr(e))throw new TypeError("`eventName` must be a string, symbol, or number")}function St(e){if("function"!=typeof e)throw new TypeError("listener must be a function")}function Me(e,t){const r=be.get(e);if(r.has(t))return r.get(t)}function nt(e,t){const r=nr(t)?t:Zt,n=J.get(e);if(n.has(r))return n.get(r)}function si(e,t,r){const n=J.get(e);if(n.has(t))for(const e of n.get(t))e.enqueue(r);if(n.has(Zt)){const e=Promise.all([t,r]);for(const t of n.get(Zt))t.enqueue(e)}}function ai(e,t){t=Array.isArray(t)?t:[t];let r=!1,n=()=>{},i=[];const o={enqueue(e){i.push(e),n()},finish(){r=!0,n()}};for(const r of t){let t=nt(e,r);t||(t=new Set,J.get(e).set(r,t)),t.add(o)}return{async next(){return i?0===i.length?r?(i=void 0,this.next()):(await new Promise(e=>{n=e}),this.next()):{done:!1,value:await i.shift()}:{done:!0}},async return(r){i=void 0;for(const r of t){const t=nt(e,r);t&&(t.delete(o),0===t.size&&J.get(e).delete(r))}return n(),arguments.length>0?{done:!0,value:await r}:{done:!0}},[Symbol.asyncIterator](){return this}}}function ci(e){if(void 0===e)return ui;if(!Array.isArray(e))throw new TypeError("`methodNames` must be an array of strings");for(const t of e)if(!ui.includes(t))throw"string"!=typeof t?new TypeError("`methodNames` element must be a string"):new Error(`${t} is not Emittery method`);return e}const we=e=>e===er||e===tr;function It(e,t,r){if(we(t))try{rr=!0,e.emit(t,r)}finally{rr=!1}}let ft=class e{static mixin(t,r){return r=ci(r),n=>{if("function"!=typeof n)throw new TypeError("`target` must be function");for(const e of r)if(void 0!==n.prototype[e])throw new Error(`The property \`${e}\` already exists on \`target\``);Object.defineProperty(n.prototype,t,{enumerable:!1,get:function(){return Object.defineProperty(this,t,{enumerable:!1,value:new e}),this[t]}});const i=e=>function(...r){return this[t][e](...r)};for(const e of r)Object.defineProperty(n.prototype,e,{enumerable:!1,value:i(e)});return n}}static get isDebugEnabled(){if("object"!=typeof globalThis.process?.env)return Br;const{env:e}=globalThis.process??{env:{}};return"emittery"===e.DEBUG||"*"===e.DEBUG||Br}static set isDebugEnabled(e){Br=e}constructor(e={}){ne.set(this,new Set),be.set(this,new Map),J.set(this,new Map),J.get(this).set(Zt,new Set),this.debug=e.debug??{},void 0===this.debug.enabled&&(this.debug.enabled=!1),this.debug.logger||(this.debug.logger=(e,t,r,n)=>{try{n=JSON.stringify(n)}catch{n=`Object with the following keys failed to stringify: ${Object.keys(n).join(",")}`}("symbol"==typeof r||"number"==typeof r)&&(r=r.toString());const i=new Date,o=`${i.getHours()}:${i.getMinutes()}:${i.getSeconds()}.${i.getMilliseconds()}`;console.log(`[${o}][emittery:${e}][${t}] Event Name: ${r}\n\tdata: ${n}`)})}logIfDebugEnabled(t,r,n){(e.isDebugEnabled||this.debug.enabled)&&this.debug.logger(t,this.debug.name,r,n)}on(e,t,{signal:r}={}){St(t),e=Array.isArray(e)?e:[e];for(const r of e){Oe(r);let e=Me(this,r);e||(e=new Set,be.get(this).set(r,e)),e.add(t),this.logIfDebugEnabled("subscribe",r,void 0),we(r)||It(this,er,{eventName:r,listener:t})}const n=()=>{this.off(e,t),r?.removeEventListener("abort",n)};return r?.addEventListener("abort",n,{once:!0}),r?.aborted&&n(),n}off(e,t){St(t),e=Array.isArray(e)?e:[e];for(const r of e){Oe(r);const e=Me(this,r);e&&(e.delete(t),0===e.size&&be.get(this).delete(r)),this.logIfDebugEnabled("unsubscribe",r,void 0),we(r)||It(this,tr,{eventName:r,listener:t})}}once(e,t){if(void 0!==t&&"function"!=typeof t)throw new TypeError("predicate must be a function");let r;const n=new Promise(n=>{r=this.on(e,e=>{t&&!t(e)||(r(),n(e))})});return n.off=r,n}events(e){e=Array.isArray(e)?e:[e];for(const t of e)Oe(t);return ai(this,e)}async emit(e,t){if(Oe(e),we(e)&&!rr)throw new TypeError("`eventName` cannot be meta event `listenerAdded` or `listenerRemoved`");this.logIfDebugEnabled("emit",e,t),si(this,e,t);const r=Me(this,e)??new Set,n=ne.get(this),i=[...r],o=we(e)?[]:[...n];await oi,await Promise.all([...i.map(async e=>{if(r.has(e))return e(t)}),...o.map(async r=>{if(n.has(r))return r(e,t)})])}async emitSerial(e,t){if(Oe(e),we(e)&&!rr)throw new TypeError("`eventName` cannot be meta event `listenerAdded` or `listenerRemoved`");this.logIfDebugEnabled("emitSerial",e,t),si(this,e,t);const r=Me(this,e)??new Set,n=ne.get(this),i=[...r],o=we(e)?[]:[...n];await oi;for(const e of i)r.has(e)&&await e(t);for(const r of o)n.has(r)&&await r(e,t)}onAny(e,{signal:t}={}){St(e),this.logIfDebugEnabled("subscribeAny",void 0,void 0),ne.get(this).add(e),It(this,er,{listener:e});const r=()=>{this.offAny(e),t?.removeEventListener("abort",r)};return t?.addEventListener("abort",r,{once:!0}),t?.aborted&&r(),r}anyEvent(){return ai(this)}offAny(e){St(e),this.logIfDebugEnabled("unsubscribeAny",void 0,void 0),It(this,tr,{listener:e}),ne.get(this).delete(e)}clearListeners(e){e=Array.isArray(e)?e:[e];for(const t of e)if(this.logIfDebugEnabled("clear",t,void 0),nr(t)){const e=Me(this,t);e&&e.clear();const r=nt(this,t);if(r){for(const e of r)e.finish();r.clear()}}else{ne.get(this).clear();for(const[e,t]of be.get(this).entries())t.clear(),be.get(this).delete(e);for(const[e,t]of J.get(this).entries()){for(const e of t)e.finish();t.clear(),J.get(this).delete(e)}}}listenerCou