@4players/odin-common
Version:
Commonly used type definitions and utility functions across ODIN web projects
2 lines (1 loc) • 9.67 kB
JavaScript
var H=-758.596,D;(t=>{let e;(s=>(s[s.InvalidPassword=-1]="InvalidPassword",s[s.Unknown=0]="Unknown",s[s.Unencrypted=1]="Unencrypted",s[s.Encrypted=2]="Encrypted"))(e=t.PeerCipherStatus||={})})(D||={});var z={bytesSent:0,bytesReceived:0,packetsSent:0,packetsReceived:0,rtt:0,packetLoss:0},Z={packetsBuffered:0,packetsSeen:0,packetsProcessed:0,packetsTooEarly:0,packetsTooLate:0,packetsDropped:0,packetsInvalid:0,packetsRepeated:0,packetsLost:0},q={voiceActivity:{attackThreshold:.9,releaseThreshold:.8},volumeGate:{attackThreshold:-30,releaseThreshold:-40}},Y={echoCanceller:!0,highPassFilter:!1,noiseSuppression:"Moderate",transientSuppressor:!1,gainController:!0};function g(e,t){e||h(t)}function h(e){throw new Error(e)}function o(e){return{type:"Success",value:e}}function u(e){return{type:"Failure",reason:e}}function K(e){return e.type==="Failure"&&h(e.reason),e.value}function x(e,t){return e.type==="Success"?e.value:t}function te(e){try{let t=atob(e),r=Uint8Array.from(t,a=>a.codePointAt(0)),n=new TextDecoder("utf8");return o(n.decode(r))}catch(t){return u(String(t))}}function re(e){try{let t=atob(e.replace(/-/g,"+").replace(/_/g,"/")),r=Uint8Array.from(t,a=>a.codePointAt(0)),n=new TextDecoder("utf8");return o(n.decode(r))}catch(t){return u(String(t))}}function ie(e){try{g(e!==void 0,"undefined cannot be converted to byte array"),g(e!==null,"null cannot be converted to byte array");let t=JSON.stringify(e),r=new TextEncoder;return o(r.encode(t))}catch(t){return u(String(t))}}function se(e){try{g(e.length>0,"empty byte array cannot be converted to value");let t=new TextDecoder().decode(e),r=JSON.parse(t);return o(r)}catch(t){return u(String(t))}}var I=["VP8","VP9","AV1","H264"],R=class{constructor(t){this.codec=t}channels=0;clockRate=9e4;isValid(){return I.includes(this.codec)}isSupported(){if(typeof RTCRtpReceiver>"u"||typeof RTCRtpReceiver.getCapabilities>"u")return null;let t=x(this.getMimeType(),"").toLowerCase(),r=new Set(x(this.getSdpFmtpLine(),"").split(";").map(n=>n.trim().toLowerCase()));return RTCRtpReceiver.getCapabilities("video")?.codecs?.find(n=>{let a=n.mimeType.toLowerCase(),i=new Set((n.sdpFmtpLine??"").split(";").map(s=>s.trim().toLowerCase()));if(t!==a||r.size!==i.size)return!1;for(let s of r)if(!i.has(s))return!1;return!0})??null}getPayloadType(){switch(this.codec){case"VP8":return o(96);case"VP9":return o(98);case"AV1":return o(41);case"H264":return o(102);default:return u("invalid video codec")}}getMimeType(){switch(this.codec){case"VP8":return o("video/VP8");case"VP9":return o("video/VP9");case"AV1":return o("video/AV1");case"H264":return o("video/H264");default:return u("invalid video codec")}}getSdpFmtpLine(){switch(this.codec){case"VP8":return o("");case"VP9":return o("profile-id=0");case"AV1":return o("level-idx=5;profile=0;tier=0");case"H264":return o("level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f");default:return u("invalid video codec")}}};function le(e,t){for(let r of e)if(t(r))return r}function pe(){return typeof AudioContext<"u"&&typeof Worker<"u"}function ge(){return typeof SharedArrayBuffer<"u"}function E(){return/(apple)?webkit\/537\.36/i.test(globalThis.navigator.userAgent)}function fe(){return/electron/i.test(globalThis.navigator.userAgent)}function me(){return/firefox|iceweasel|fxios/i.test(globalThis.navigator.userAgent)}function ye(){return E()?!1:/safari|applewebkit/i.test(globalThis.navigator.userAgent)}function be(e){return JSON.parse(JSON.stringify(e))}var k=class e{constructor(t){this._Generators=t;this._Futures=t.map(e.addIndex)}_Futures;async next(){let[t,r]=await Promise.race(this._Futures);return this._Futures[r]=e.addIndex(this._Generators[r],r),t}static async addIndex(t,r){return[await t(),r]}};function he(e,t){return e<=0?Promise.resolve(t):new Promise(r=>setTimeout(()=>r(t),e))}function Re(e,t){return t.aborted?Promise.resolve("aborted"):new Promise(r=>{let n=setTimeout(()=>{t.removeEventListener("abort",a),r(void 0)},e),a=()=>{clearTimeout(n),r("aborted")};t.addEventListener("abort",a,{once:!0})})}function ke(){return new Promise(e=>setTimeout(e,0))}var T=class{_Tasks=[];_Running=!1;_Values;constructor(...t){this._Values=t}enqueue(t){return new Promise((r,n)=>{let a=async()=>{try{let i=await t(...this._Values);r(i)}catch(i){n(i)}};this._Tasks.push(a),this._Running||this.execute()})}async execute(){for(this._Running=!0;;){let t=this._Tasks.shift();if(t===void 0)break;await t()}this._Running=!1}};function we(e){let t=e.trim();t.indexOf("://")===-1&&(t=`https://${t}`);try{return o(new URL(t))}catch(r){return u(String(r))}}function Pe(e,t){let r=e.pathname;r.endsWith("/")===!1&&(r+="/");try{return o(new URL(r+t,e))}catch(n){return u(String(n))}}var U=/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;function Ve(){return crypto.randomUUID()}function Oe(e){return U.test(e)}function Be(e,t){return t in e}function De(e){return typeof e=="function"}function Ie(e){return typeof e=="object"&&e===null}function Ee(e){return typeof e=="number"}function Ue(e){return typeof e=="object"}function Ne(e){return typeof e=="string"}function Me(e){return typeof e>"u"}function je(e){return e.type==="Failure"}function _e(e){return e.type==="Success"}var{Deno:C}=globalThis,N=typeof C?.noColor=="boolean"?C.noColor:!1,M=!N;function b(e,t){return{open:`\x1B[${e.join(";")}m`,close:`\x1B[${t}m`,regexp:new RegExp(`\\x1b\\[${t}m`,"g")}}function v(e,t){return M?`${t.open}${e.replace(t.regexp,t.open)}${t.close}`:e}function f(e){return v(e,b([0],0))}function L(e){return v(e,b([1],22))}function S(e){return v(e,b([2],22))}var Ge=new RegExp(["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TXZcf-nq-uy=><~]))"].join("|"),"g");var _=new Date,d=(i=>(i[i.CRITICAL=0]="CRITICAL",i[i.ERROR=1]="ERROR",i[i.WARN=2]="WARN",i[i.INFO=3]="INFO",i[i.DEBUG=4]="DEBUG",i))(d||{}),O={0:"\u{1F4A5}",1:"\u{1F534}",2:"\u{1F7E1}",3:"\u{1F535}",4:"\u{1F7E3}"},$={4:S,3:f,2:f,1:L,0:L};function Je(e){for(let t of Object.keys(d))if(isNaN(Number(t))!==!1&&t.localeCompare(e,void 0,{sensitivity:"accent"})===0)return d[t]}function G({message:e}){return String(e)}function w(e){return JSON.stringify({timestamp:e.date.toISOString(),level:d[e.level],message:e.message,extra:e.extra})}function P(e){function t(s,l){return[Math.floor(s/l),s%l]}function r(){let s,l=e.date.valueOf()-_.valueOf();[l,s]=t(l,1e3);let[F,B]=t(l,60);return`${F.toString().padStart(4,"0")}:${B.toString().padStart(2,"0")}.${s.toString().padStart(3,"0")}`}function n(){return e.extra===void 0?"":typeof Deno=="object"?" "+Deno.inspect(e.extra,{compact:!1,colors:!0,trailingComma:!0}).trimStart():" "+JSON.stringify(e.extra)}let a=O[e.level],i=e.logger.name!==void 0?`@${e.logger.name}`:"";return`${f(r())}${i} ${a} ${$[e.level](String(e.message))}${n()}`}function J(e){let t=`[${e.date.toISOString()}]`,r=`[${d[e.level]}]`,n=e.logger.name!==void 0?`[${e.logger.name}] `:"",a=O[e.level];return`${t} ${a} ${r.padEnd(7," ")} ${n}${e.message}`}function W(){return typeof Deno=="object"&&Deno.stdout.isTerminal()}var m=class{static sparse=G;static json=w;static pretty=P;static structured=J;static default=W()?P:w;constructor(){}},y=class{formatter;consoleObject;filter;constructor(t=m.default,r=4,n=console){this.filter=r,this.formatter=t,this.consoleObject=n}handle(t){let r=this.formatter(t);switch(t.level){case 0:case 1:this.consoleObject.error(r);break;case 2:this.consoleObject.warn(r);break;case 3:this.consoleObject.info(r);break;case 4:this.consoleObject.debug(r);break}}},A=class extends y{handle(t){let r=this.formatter(t),n=t.extra!==void 0?[r,t.extra]:[r];switch(t.level){case 0:case 1:this.consoleObject.error(...n);break;case 2:this.consoleObject.warn(...n);break;case 3:this.consoleObject.info(...n);break;case 4:this.consoleObject.debug(...n);break}}},V=class{formatter;cb;filter;constructor(t,r=m.default,n=4){this.cb=t,this.formatter=r,this.filter=n}handle(t){let r=this.formatter(t);this.cb(r,t)}},c=class{#e;sinks;filter;parent;get name(){return this.#e}constructor(t,r=void 0,n=[],a=void 0){this.#e=r,this.sinks=n,this.filter=t,this.parent=a}log(t,r,n=void 0){let i={date:new Date,level:t,logger:this,message:r,extra:n};this.filter<t||this.insert(i)}insert(t){if(!(this.filter<t.level)){for(let r of this.sinks)r.filter>=t.level&&r.handle(t);this.parent!==void 0&&this.parent.insert(t)}}error=this.log.bind(this,1);warn=this.log.bind(this,2);info=this.log.bind(this,3);debug=this.log.bind(this,4)},p=new c(3,void 0,[new y]),We=c.prototype.log.bind(p,1),He=c.prototype.log.bind(p,2),ze=c.prototype.log.bind(p,3),Ze=c.prototype.log.bind(p,4),qe=c.prototype.log.bind(p);export{Y as APM_DEFAULTS,D as Backend,z as CONNECTION_STATS_INITIAL,V as CallbackSink,y as ConsoleSink,m as Formatter,p as GLOBAL_LOGGER,A as InteractiveConsoleSink,Z as JITTER_STATS_INITIAL,d as LogLevel,O as LogSymbols,c as Logger,H as MinDBFS,k as Selector,T as Strand,q as VAD_DEFAULTS,R as VideoCodec,Re as abortableSleep,g as assert,Ze as debug,We as error,Pe as extendUrl,h as fail,u as failure,le as find,te as fromBase64,re as fromBase64Url,se as fromBytes,Ve as generateUUID,ze as info,pe as isAudioCapable,E as isBlinkBrowser,fe as isElectronBrowser,je as isFailure,me as isFirefoxBrowser,De as isFunction,Ie as isNull,Ee as isNumber,Ue as isObject,Be as isProperty,ye as isSafariBrowser,ge as isSharedArrayBufferCapable,Ne as isString,_e as isSuccess,Me as isUndefined,qe as log,ke as nextTick,we as normalizeUrl,he as sleep,o as success,ie as toBytes,be as toRaw,Je as tryParseLogLevel,K as unwrap,x as unwrapOr,Oe as validateUUID,He as warn};