@4players/odin-common 9.0.1 → 9.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/cjs/mod.js CHANGED
@@ -1 +1 @@
1
- var he=Object.create;var w=Object.defineProperty;var Se=Object.getOwnPropertyDescriptor;var ze=Object.getOwnPropertyNames;var ve=Object.getPrototypeOf,ke=Object.prototype.hasOwnProperty;var Re=(e,t)=>{for(var n in t)w(e,n,{get:t[n],enumerable:!0})},Y=(e,t,n,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let m of ze(t))!ke.call(e,m)&&m!==n&&w(e,m,{get:()=>t[m],enumerable:!(s=Se(t,m))||s.enumerable});return e};var k=(e,t,n)=>(n=e!=null?he(ve(e)):{},Y(t||!e||!e.__esModule?w(n,"default",{value:e,enumerable:!0}):n,e)),Pe=e=>Y(w({},"__esModule",{value:!0}),e);var Lt={};Re(Lt,{APM_DEFAULTS:()=>At,Backend:()=>le,ByteArraySchema:()=>b,CONNECTION_STATS_INITIAL:()=>Pt,ChannelSet:()=>B,ChannelSetSchema:()=>W,ConsoleSink:()=>E,Formatter:()=>ue,GLOBAL_LOGGER:()=>de,JITTER_STATS_INITIAL:()=>Tt,JsonSchema:()=>P,LogFilter:()=>D,LogLevel:()=>Z,Logger:()=>F,MainCommandsRpc:()=>Le,MainNotificationSchema:()=>Me,MainNotificationsRpc:()=>je,MediaAudioPropertiesSchema:()=>Q,MediaIdSchema:()=>z,MediaPropertiesSchema:()=>M,MediaSchema:()=>j,MediaVideoPropertiesSchema:()=>ee,MessagePackRpcSchema:()=>Ce,MessageReceivedSchema:()=>O,MinDBFS:()=>Pr,PeerIdSchema:()=>x,PeerPositionSchema:()=>C,PeerSchema:()=>U,PeerUpdateSchema:()=>_,RoomCommandsRpc:()=>we,RoomNotificationSchema:()=>Ue,RoomNotificationsRpc:()=>_e,RoomV1:()=>v,RoomV2:()=>re,Selector:()=>G,Strand:()=>H,TokenAudienceSchema:()=>K,TokenClaimsSchema:()=>Ae,TokenSubjectSchema:()=>X,VAD_DEFAULTS:()=>Ct,VideoCodec:()=>$,WebRtcUpdateSchema:()=>R,abortableSleep:()=>Ze,assert:()=>A,debug:()=>Rt,error:()=>zt,extendUrl:()=>Xe,fail:()=>q,failure:()=>S,find:()=>Fe,fromBase64:()=>Be,fromBase64Url:()=>Oe,fromBytes:()=>De,generateUUID:()=>et,info:()=>kt,isAudioCapable:()=>Je,isBlinkBrowser:()=>oe,isElectronBrowser:()=>We,isFailure:()=>ct,isFirefoxBrowser:()=>qe,isFunction:()=>nt,isNull:()=>ot,isNumber:()=>it,isObject:()=>at,isProperty:()=>rt,isSafariBrowser:()=>$e,isSharedArrayBufferCapable:()=>Ve,isString:()=>st,isSuccess:()=>ut,isUndefined:()=>pt,log:()=>L,nextTick:()=>Ye,normalizeUrl:()=>Ke,oneOrMany:()=>T,sleep:()=>He,success:()=>y,toBytes:()=>Ne,toRaw:()=>Ge,tryParseLogFilter:()=>ht,unwrap:()=>Ie,unwrapOr:()=>N,validateUUID:()=>tt,warn:()=>vt});module.exports=Pe(Lt);var d=require("zod"),b=d.z.custom(e=>e instanceof Uint8Array),Te=d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.null()]),P=d.z.lazy(()=>d.z.union([Te,d.z.array(P),d.z.record(P)])),Ce=d.z.union([d.z.tuple([d.z.literal(0),d.z.number(),d.z.string(),d.z.unknown()]),d.z.tuple([d.z.literal(1),d.z.number(),d.z.nullable(d.z.string()),d.z.unknown()]),d.z.tuple([d.z.literal(2),d.z.string(),d.z.unknown()])]);var c=require("zod"),K=c.z.enum(["sfu","gateway"]),X=c.z.enum(["connect","roomclose","roomupdate","roombanclient","roomsendmessage"]),Ae=c.z.object({uid:c.z.string(),cid:c.z.optional(c.z.string()),rid:T(c.z.string()).refine(e=>e.length>=1,{message:"missing rid"}),nsp:c.z.optional(c.z.string()),adr:c.z.optional(c.z.string()),aud:c.z.optional(T(K)),sub:c.z.optional(T(X)),exp:c.z.optional(c.z.number()),nbf:c.z.optional(c.z.number()),ups:c.z.optional(c.z.string()),tgs:c.z.optional(T(c.z.string())),tsp:c.z.optional(c.z.number()),internal:c.z.optional(c.z.object({server:c.z.optional(c.z.string())}))});function T(e){return c.z.union([e.transform(t=>[t]),c.z.array(e)])}var r=k(require("zod"));var u=k(require("zod")),z=u.number(),Q=u.object({kind:u.optional(u.literal("audio")),uid:u.optional(u.string()),customType:u.optional(u.string())}),ee=u.object({kind:u.optional(u.literal("video")),codec:u.optional(u.string()),uid:u.optional(u.string()),customType:u.optional(u.string()),id:u.optional(u.string())}),M=u.union([Q,ee]),j=u.object({id:z,properties:M,paused:u.boolean()});var l=k(require("zod"));var x=l.number(),C=l.union([l.tuple([l.number(),l.number(),l.number()]),l.tuple([l.number(),l.number()])]),U=l.object({id:x,user_id:l.string(),user_data:b,medias:l.array(j)}),_=l.discriminatedUnion("kind",[l.object({kind:l.literal("UserDataChanged"),peer_id:x,user_data:b}),l.object({kind:l.literal("MediaStarted"),peer_id:x,media:j}),l.object({kind:l.literal("MediaStopped"),peer_id:x,media_id:z})]);var te=k(require("zod")),B=class e{constructor(t=BigInt(0)){this.value=t}from(...t){let n=t.reduce((s,m)=>s|I(m),BigInt(0));return new e(n)}contains(t){return(this.value&I(t))!==BigInt(0)}insert(t){this.value|=I(t)}remove(t){this.value&=~I(t)}[Symbol.iterator](){let t=-1,n=new e(this.value);return{next(){for(;t<63;)if(t+=1,n.contains(t))return{value:t,done:!1};return{value:void 0,done:!0}}}}},W=te.bigint().transform(e=>new B(e));function I(e){return BigInt(1)<<BigInt(e)}var v;(p=>(p.RoomIdSchema=r.string(),p.RoomSchema=r.object({id:p.RoomIdSchema,customer:r.string(),user_data:b,peers:r.array(U)}),p.RoomUpdateSchema=r.discriminatedUnion("kind",[r.object({kind:r.literal("Joined"),room:p.RoomSchema,media_ids:r.array(z),own_peer_id:x}),r.object({kind:r.literal("Left"),reason:r.enum(["RoomClosing","ServerClosing","PeerKicked"])}),r.object({kind:r.literal("UserDataChanged"),user_data:r.optional(b)}),r.object({kind:r.literal("PeerJoined"),peer:U}),r.object({kind:r.literal("PeerLeft"),peer_id:x})]),p.RoomUpdatesSchema=r.object({updates:r.array(p.RoomUpdateSchema)}),p.RoomStatusSchema=r.enum(["Joining","Joined","Closed"]),p.RoomStatusChangedSchema=r.object({status:p.RoomStatusSchema,message:r.optional(r.string())})))(v||={});var re;(i=>(i.ParametersSchema=r.record(P),i.PeerProperties=r.object({user_data:b.optional(),tags:r.array(r.string()).optional(),audio_parameters:i.ParametersSchema.optional(),video_parameters:i.ParametersSchema.optional()}),i.PingSchema=r.object({Ping:r.object({id:r.number()})}),i.ChangeSelfSchema=r.object({ChangeSelf:i.PeerProperties.omit({tags:!0})}),i.SetAudioMaskSchema=r.object({SetAudioMask:r.object({peer_id:r.number(),mask:W})}),i.SendMessageSchema=r.object({SendMessage:r.object({peer_ids:r.number().array().default([]),message:b})}),i.CallSchema=i.PingSchema.or(i.ChangeSelfSchema).or(i.SetAudioMaskSchema).or(i.SendMessageSchema),i.PongSchema=r.object({Pong:r.object({id:r.number()})}),i.JoinedSchema=r.object({Joined:r.object({own_peer_id:r.number(),room_id:r.string(),customer:r.string()})}),i.LeftSchema=r.object({Left:r.object({reason:r.enum(["room_closing","server_closing","peer_kicked"])})}),i.PeerJoinedSchema=r.object({PeerJoined:i.PeerProperties.extend({peer_id:r.number(),user_id:r.string()})}),i.PeerLeftSchema=r.object({PeerLeft:r.object({peer_id:r.number()})}),i.PeerChangedSchema=r.object({PeerChanged:i.PeerProperties.extend({peer_id:r.number()})}),i.NewReconnectTokenSchema=r.object({NewReconnectToken:r.object({token:r.string()})}),i.MessageReceivedSchema=r.object({MessageReceived:r.object({sender_peer_id:r.number(),message:b})}),i.ErrorSchema=r.object({Error:r.object({message:b})}),i.EventSchema=i.PongSchema.or(i.JoinedSchema).or(i.LeftSchema).or(i.PeerJoinedSchema).or(i.PeerLeftSchema).or(i.PeerChangedSchema).or(i.NewReconnectTokenSchema).or(i.MessageReceivedSchema).or(i.ErrorSchema)))(re||={});var ne=require("zod");var O=ne.z.object({sender_peer_id:x,message:b});var a=k(require("zod"));var R=a.discriminatedUnion("kind",[a.object({kind:a.literal("Sdp"),type:a.enum(["Answer","Offer"]),sdp:a.string(),media_map:a.array(a.tuple([z,a.string()]))}),a.object({kind:a.literal("Trickle"),candidate:a.string(),spd_mid:a.optional(a.string()),spd_mline_index:a.optional(a.number()),username_fragment:a.optional(a.union([a.string(),a.null()]))}),a.object({kind:a.literal("TrickleFinished")})]);var o=require("zod");var Le={Hello:{request:o.z.object({stream:o.z.literal("main")}),response:o.z.null()},JoinRoom:{request:o.z.object({token:o.z.string(),room_id:v.RoomIdSchema,user_data:b,position:C}),response:o.z.object({peer_id:x,stream_id:o.z.optional(o.z.number()),token:o.z.optional(o.z.string())})},WebRtcUpdate:{request:R,response:o.z.null()},RequestReconnectToken:{request:o.z.object({peer_id:o.z.optional(x)}),response:o.z.string()},Ping:{request:o.z.object({}),response:o.z.null()}},we={Hello:{request:o.z.object({stream:o.z.literal("room"),token:o.z.string(),room_id:o.z.string(),user_data:b,position:C}),response:o.z.null()},UpdatePeer:{request:o.z.object({user_data:b}),response:o.z.null()},StartMedia:{request:o.z.object({media_id:z,properties:M}),response:o.z.null()},StopMedia:{request:o.z.object({media_id:z}),response:o.z.null()},PauseMedia:{request:o.z.object({media_id:z}),response:o.z.null()},ResumeMedia:{request:o.z.object({media_id:z}),response:o.z.null()},SetPeerPosition:{request:o.z.object({position:C}),response:o.z.null()},SendMessage:{request:o.z.object({target_peer_ids:o.z.optional(o.z.array(x)),message:b}),response:o.z.null()}};var h=k(require("zod"));var Me=h.object({name:h.literal("WebRtcUpdate"),properties:R}),je={WebRtcUpdate:R},Ue=h.union([h.object({name:h.literal("RoomStatusChanged"),properties:v.RoomStatusChangedSchema}),h.object({name:h.literal("RoomUpdated"),properties:v.RoomUpdatesSchema}),h.object({name:h.literal("PeerUpdated"),properties:_}),h.object({name:h.literal("MessageReceived"),properties:O})]),_e={RoomStatusChanged:v.RoomStatusChangedSchema,RoomUpdated:v.RoomUpdatesSchema,PeerUpdated:_,MessageReceived:O};function A(e,t){e||q(t)}function q(e){throw new Error(e)}function y(e){return{type:"Success",value:e}}function S(e){return{type:"Failure",reason:e}}function Ie(e){return e.type==="Failure"&&q(e.reason),e.value}function N(e,t){return e.type==="Success"?e.value:t}function Be(e){try{let t=atob(e),n=Uint8Array.from(t,m=>m.codePointAt(0)),s=new TextDecoder("utf8");return y(s.decode(n))}catch(t){return S(String(t))}}function Oe(e){try{let t=atob(e.replace(/-/g,"+").replace(/_/g,"/")),n=Uint8Array.from(t,m=>m.codePointAt(0)),s=new TextDecoder("utf8");return y(s.decode(n))}catch(t){return S(String(t))}}function Ne(e){try{A(e!==void 0,"undefined cannot be converted to byte array"),A(e!==null,"null cannot be converted to byte array");let t=JSON.stringify(e),n=new TextEncoder;return y(n.encode(t))}catch(t){return S(String(t))}}function De(e){try{A(e.length>0,"empty byte array cannot be converted to value");let t=new TextDecoder().decode(e),n=JSON.parse(t);return y(n)}catch(t){return S(String(t))}}var Ee=["VP8","VP9","AV1","H264"],$=class{constructor(t){this.codec=t}channels=0;clockRate=9e4;isValid(){return Ee.includes(this.codec)}isSupported(){if(typeof RTCRtpReceiver>"u"||typeof RTCRtpReceiver.getCapabilities>"u")return null;let t=N(this.getMimeType(),"").toLowerCase(),n=new Set(N(this.getSdpFmtpLine(),"").split(";").map(s=>s.trim().toLowerCase()));return RTCRtpReceiver.getCapabilities("video")?.codecs?.find(s=>{let m=s.mimeType.toLowerCase(),f=new Set((s.sdpFmtpLine??"").split(";").map(p=>p.trim().toLowerCase()));if(t!==m||n.size!==f.size)return!1;for(let p of n)if(!f.has(p))return!1;return!0})??null}getPayloadType(){switch(this.codec){case"VP8":return y(96);case"VP9":return y(98);case"AV1":return y(41);case"H264":return y(102);default:return S("invalid video codec")}}getMimeType(){switch(this.codec){case"VP8":return y("video/VP8");case"VP9":return y("video/VP9");case"AV1":return y("video/AV1");case"H264":return y("video/H264");default:return S("invalid video codec")}}getSdpFmtpLine(){switch(this.codec){case"VP8":return y("");case"VP9":return y("profile-id=2");case"AV1":return y("level-idx=5;profile=0;tier=0");case"H264":return y("level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f");default:return S("invalid video codec")}}};function Fe(e,t){for(let n of e)if(t(n))return n}function Je(){return typeof AudioContext<"u"&&typeof Worker<"u"}function Ve(){return typeof SharedArrayBuffer<"u"}function oe(){return/(apple)?webkit\/537\.36/i.test(globalThis.navigator.userAgent)}function We(){return/electron/i.test(globalThis.navigator.userAgent)}function qe(){return/firefox|iceweasel|fxios/i.test(globalThis.navigator.userAgent)}function $e(){return oe()?!1:/safari|applewebkit/i.test(globalThis.navigator.userAgent)}function Ge(e){return JSON.parse(JSON.stringify(e))}var G=class e{constructor(t){this._Generators=t;this._Futures=t.map(e.addIndex)}_Futures;async next(){let[t,n]=await Promise.race(this._Futures);return this._Futures[n]=e.addIndex(this._Generators[n],n),t}static async addIndex(t,n){return[await t(),n]}};function He(e,t){return e<=0?Promise.resolve(t):new Promise(n=>setTimeout(()=>n(t),e))}function Ze(e,t){return t.aborted?Promise.resolve("aborted"):new Promise(n=>{let s=()=>n("aborted");t.addEventListener("abort",s,{once:!0}),setTimeout(()=>{t.removeEventListener("abort",s),n(void 0)},e)})}function Ye(){return new Promise(e=>setTimeout(e,0))}var H=class{_Tasks=[];_Running=!1;_Values;constructor(...t){this._Values=t}enqueue(t){return new Promise((n,s)=>{let m=async()=>{try{let f=await t(...this._Values);n(f)}catch(f){s(f)}};this._Tasks.push(m),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 Ke(e){let t=e.trim();e.indexOf("://")===-1&&(t=`https://${t}`);try{return y(new URL(t))}catch(n){return S(String(n))}}function Xe(e,t){let n=e.pathname;n.endsWith("/")===!1&&(n+="/");try{return y(new URL(n+t,e))}catch(s){return S(String(s))}}var Qe=/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;function et(){return crypto.randomUUID()}function tt(e){return Qe.test(e)}function rt(e,t){return t in e}function nt(e){return typeof e=="function"}function ot(e){return typeof e=="object"&&e===null}function it(e){return typeof e=="number"}function at(e){return typeof e=="object"}function st(e){return typeof e=="string"}function pt(e){return typeof e>"u"}function ct(e){return e.type==="Failure"}function ut(e){return e.type==="Success"}var{Deno:ie}=globalThis,dt=typeof ie?.noColor=="boolean"?ie.noColor:!1,lt=!dt;function mt(e,t){return{open:`\x1B[${e.join(";")}m`,close:`\x1B[${t}m`,regexp:new RegExp(`\\x1b\\[${t}m`,"g")}}function ft(e,t){return lt?`${t.open}${e.replace(t.regexp,t.open)}${t.close}`:e}function ae(e){return ft(e,mt([0],0))}var kr=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 D=(g=>(g[g.Nothing=0]="Nothing",g[g.CRITICAL=1]="CRITICAL",g[g.ERROR=2]="ERROR",g[g.WARN=3]="WARN",g[g.INFO=4]="INFO",g[g.DEBUG=5]="DEBUG",g[g.Everything=6]="Everything",g))(D||{}),yt=new Date,Z=(f=>(f[f.CRITICAL=1]="CRITICAL",f[f.ERROR=2]="ERROR",f[f.WARN=3]="WARN",f[f.INFO=4]="INFO",f[f.DEBUG=5]="DEBUG",f))(Z||{}),bt={1:"\u{1F4A5}",2:"\u{1F534}",3:"\u{1F7E1}",4:"\u{1F535}",5:"\u{1F7E3}"},xt={5:e=>e,4:e=>e,3:e=>e,2:e=>e,1:e=>e};function ht(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 St({message:e}){return String(e)}function se(e){return JSON.stringify({timestamp:e.date.toISOString(),level:Z[e.level],message:e.message,extra:e.extra})}function pe(e){function t(p,g){return[Math.floor(p/g),p%g]}function n(){let p,g=e.date.valueOf()-yt.valueOf();[g,p]=t(g,1e3);let[J,V]=t(g,60);return`${J.toString().padStart(4,"0")}:${V.toString().padStart(2,"0")}.${p.toString().padStart(4,"0")}`}function s(){return e.extra===void 0?"":"Deno"in globalThis?" "+Deno.inspect(e.extra,{compact:!1,colors:!0,trailingComma:!0}).trimStart():" "+JSON.stringify(e.extra)}let m=bt[e.level],f=e.logger.name!==void 0?`@${e.logger}`:"";return`${ae(n())}${f} ${m} ${xt[e.level](String(e.message))}${s()}`}var ue={sparse:St,json:se,pretty:pe,default:Deno.stdout.isTerminal()?pe:se},E=class{#e;#t;filter;constructor(t=ue.default,n=6,s=console){this.filter=n,this.#e=t,this.#t=s}handle(t){let n=this.#e(t);switch(t.level){case 2:this.#t.error(n);break;case 3:this.#t.warn(n);break;case 4:this.#t.info(n);break;case 5:this.#t.debug(n);break}}},F=class{#e;sinks;filter;get name(){return this.#e}constructor(t,n=void 0,s=[new E]){this.#e=n,this.sinks=s,this.filter=t}log(t,n,s=void 0){if(this.filter<t)return;let m=ce;for(let f of this.sinks)f.filter<t||(m===ce&&(m={date:new Date,level:t,logger:this,message:typeof n=="function"?n():n,extra:s}),f.handle(m))}},de=new F(4);function L(e,t,n){de.log(e,t,n)}var zt=L.bind(void 0,2),vt=L.bind(void 0,3),kt=L.bind(void 0,4),Rt=L.bind(void 0,5),ce=Symbol();var Pr=-758.596,le;(t=>{let e;(p=>(p[p.InvalidPassword=-1]="InvalidPassword",p[p.Unknown=0]="Unknown",p[p.Unencrypted=1]="Unencrypted",p[p.Encrypted=2]="Encrypted"))(e=t.PeerCipherStatus||={})})(le||={});var Pt={bytesSent:0,bytesReceived:0,packetsSent:0,packetsReceived:0,rtt:0,packetLoss:0},Tt={packetsBuffered:0,packetsSeen:0,packetsProcessed:0,packetsTooEarly:0,packetsTooLate:0,packetsDropped:0,packetsInvalid:0,packetsRepeated:0,packetsLost:0},Ct={voiceActivity:{attackThreshold:.9,releaseThreshold:.8},volumeGate:{attackThreshold:-30,releaseThreshold:-40}},At={echoCanceller:!0,highPassFilter:!1,noiseSuppression:"Moderate",transientSuppressor:!1,gainController:!0};0&&(module.exports={APM_DEFAULTS,Backend,ByteArraySchema,CONNECTION_STATS_INITIAL,ChannelSet,ChannelSetSchema,ConsoleSink,Formatter,GLOBAL_LOGGER,JITTER_STATS_INITIAL,JsonSchema,LogFilter,LogLevel,Logger,MainCommandsRpc,MainNotificationSchema,MainNotificationsRpc,MediaAudioPropertiesSchema,MediaIdSchema,MediaPropertiesSchema,MediaSchema,MediaVideoPropertiesSchema,MessagePackRpcSchema,MessageReceivedSchema,MinDBFS,PeerIdSchema,PeerPositionSchema,PeerSchema,PeerUpdateSchema,RoomCommandsRpc,RoomNotificationSchema,RoomNotificationsRpc,RoomV1,RoomV2,Selector,Strand,TokenAudienceSchema,TokenClaimsSchema,TokenSubjectSchema,VAD_DEFAULTS,VideoCodec,WebRtcUpdateSchema,abortableSleep,assert,debug,error,extendUrl,fail,failure,find,fromBase64,fromBase64Url,fromBytes,generateUUID,info,isAudioCapable,isBlinkBrowser,isElectronBrowser,isFailure,isFirefoxBrowser,isFunction,isNull,isNumber,isObject,isProperty,isSafariBrowser,isSharedArrayBufferCapable,isString,isSuccess,isUndefined,log,nextTick,normalizeUrl,oneOrMany,sleep,success,toBytes,toRaw,tryParseLogFilter,unwrap,unwrapOr,validateUUID,warn});
1
+ var he=Object.create;var w=Object.defineProperty;var Se=Object.getOwnPropertyDescriptor;var ze=Object.getOwnPropertyNames;var ve=Object.getPrototypeOf,ke=Object.prototype.hasOwnProperty;var Re=(e,t)=>{for(var n in t)w(e,n,{get:t[n],enumerable:!0})},Y=(e,t,n,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let m of ze(t))!ke.call(e,m)&&m!==n&&w(e,m,{get:()=>t[m],enumerable:!(s=Se(t,m))||s.enumerable});return e};var k=(e,t,n)=>(n=e!=null?he(ve(e)):{},Y(t||!e||!e.__esModule?w(n,"default",{value:e,enumerable:!0}):n,e)),Pe=e=>Y(w({},"__esModule",{value:!0}),e);var Lt={};Re(Lt,{APM_DEFAULTS:()=>At,Backend:()=>le,ByteArraySchema:()=>b,CONNECTION_STATS_INITIAL:()=>Pt,ChannelSet:()=>B,ChannelSetSchema:()=>W,ConsoleSink:()=>E,Formatter:()=>ue,GLOBAL_LOGGER:()=>de,JITTER_STATS_INITIAL:()=>Tt,JsonSchema:()=>P,LogFilter:()=>D,LogLevel:()=>Z,Logger:()=>F,MainCommandsRpc:()=>Le,MainNotificationSchema:()=>Me,MainNotificationsRpc:()=>je,MediaAudioPropertiesSchema:()=>Q,MediaIdSchema:()=>z,MediaPropertiesSchema:()=>M,MediaSchema:()=>j,MediaVideoPropertiesSchema:()=>ee,MessagePackRpcSchema:()=>Ce,MessageReceivedSchema:()=>O,MinDBFS:()=>Pr,PeerIdSchema:()=>x,PeerPositionSchema:()=>C,PeerSchema:()=>U,PeerUpdateSchema:()=>_,RoomCommandsRpc:()=>we,RoomNotificationSchema:()=>Ue,RoomNotificationsRpc:()=>_e,RoomV1:()=>v,RoomV2:()=>re,Selector:()=>G,Strand:()=>H,TokenAudienceSchema:()=>K,TokenClaimsSchema:()=>Ae,TokenSubjectSchema:()=>X,VAD_DEFAULTS:()=>Ct,VideoCodec:()=>$,WebRtcUpdateSchema:()=>R,abortableSleep:()=>Ze,assert:()=>A,debug:()=>Rt,error:()=>zt,extendUrl:()=>Xe,fail:()=>q,failure:()=>S,find:()=>Fe,fromBase64:()=>Be,fromBase64Url:()=>Oe,fromBytes:()=>De,generateUUID:()=>et,info:()=>kt,isAudioCapable:()=>Je,isBlinkBrowser:()=>oe,isElectronBrowser:()=>We,isFailure:()=>ct,isFirefoxBrowser:()=>qe,isFunction:()=>nt,isNull:()=>ot,isNumber:()=>it,isObject:()=>at,isProperty:()=>rt,isSafariBrowser:()=>$e,isSharedArrayBufferCapable:()=>Ve,isString:()=>st,isSuccess:()=>ut,isUndefined:()=>pt,log:()=>L,nextTick:()=>Ye,normalizeUrl:()=>Ke,oneOrMany:()=>T,sleep:()=>He,success:()=>y,toBytes:()=>Ne,toRaw:()=>Ge,tryParseLogFilter:()=>ht,unwrap:()=>Ie,unwrapOr:()=>N,validateUUID:()=>tt,warn:()=>vt});module.exports=Pe(Lt);var d=require("zod"),b=d.z.custom(e=>e instanceof Uint8Array),Te=d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.null()]),P=d.z.lazy(()=>d.z.union([Te,d.z.array(P),d.z.record(P)])),Ce=d.z.union([d.z.tuple([d.z.literal(0),d.z.number(),d.z.string(),d.z.unknown()]),d.z.tuple([d.z.literal(1),d.z.number(),d.z.nullable(d.z.string()),d.z.unknown()]),d.z.tuple([d.z.literal(2),d.z.string(),d.z.unknown()])]);var c=require("zod"),K=c.z.enum(["sfu","gateway"]),X=c.z.enum(["connect","roomclose","roomupdate","roombanclient","roomsendmessage"]),Ae=c.z.object({uid:c.z.string(),cid:c.z.optional(c.z.string()),rid:T(c.z.string()).refine(e=>e.length>=1,{message:"missing rid"}),nsp:c.z.optional(c.z.string()),adr:c.z.optional(c.z.string()),aud:c.z.optional(T(K)),sub:c.z.optional(T(X)),exp:c.z.optional(c.z.number()),nbf:c.z.optional(c.z.number()),ups:c.z.optional(c.z.string()),tgs:c.z.optional(T(c.z.string())),tsp:c.z.optional(c.z.number()),internal:c.z.optional(c.z.object({server:c.z.optional(c.z.string())}))});function T(e){return c.z.union([e.transform(t=>[t]),c.z.array(e)])}var r=k(require("zod"));var u=k(require("zod")),z=u.number(),Q=u.object({kind:u.optional(u.literal("audio")),uid:u.optional(u.string()),customType:u.optional(u.string())}),ee=u.object({kind:u.optional(u.literal("video")),codec:u.optional(u.string()),uid:u.optional(u.string()),customType:u.optional(u.string()),id:u.optional(u.string())}),M=u.union([Q,ee]),j=u.object({id:z,properties:M,paused:u.boolean()});var l=k(require("zod"));var x=l.number(),C=l.union([l.tuple([l.number(),l.number(),l.number()]),l.tuple([l.number(),l.number()])]),U=l.object({id:x,user_id:l.string(),user_data:b,medias:l.array(j)}),_=l.discriminatedUnion("kind",[l.object({kind:l.literal("UserDataChanged"),peer_id:x,user_data:b}),l.object({kind:l.literal("MediaStarted"),peer_id:x,media:j}),l.object({kind:l.literal("MediaStopped"),peer_id:x,media_id:z})]);var te=k(require("zod")),B=class e{constructor(t=BigInt(0)){this.value=t}from(...t){let n=t.reduce((s,m)=>s|I(m),BigInt(0));return new e(n)}contains(t){return(this.value&I(t))!==BigInt(0)}insert(t){this.value|=I(t)}remove(t){this.value&=~I(t)}[Symbol.iterator](){let t=-1,n=new e(this.value);return{next(){for(;t<63;)if(t+=1,n.contains(t))return{value:t,done:!1};return{value:void 0,done:!0}}}}},W=te.bigint().transform(e=>new B(e));function I(e){return BigInt(1)<<BigInt(e)}var v;(p=>(p.RoomIdSchema=r.string(),p.RoomSchema=r.object({id:p.RoomIdSchema,customer:r.string(),user_data:b,peers:r.array(U)}),p.RoomUpdateSchema=r.discriminatedUnion("kind",[r.object({kind:r.literal("Joined"),room:p.RoomSchema,media_ids:r.array(z),own_peer_id:x}),r.object({kind:r.literal("Left"),reason:r.enum(["RoomClosing","ServerClosing","PeerKicked"])}),r.object({kind:r.literal("UserDataChanged"),user_data:r.optional(b)}),r.object({kind:r.literal("PeerJoined"),peer:U}),r.object({kind:r.literal("PeerLeft"),peer_id:x})]),p.RoomUpdatesSchema=r.object({updates:r.array(p.RoomUpdateSchema)}),p.RoomStatusSchema=r.enum(["Joining","Joined","Closed"]),p.RoomStatusChangedSchema=r.object({status:p.RoomStatusSchema,message:r.optional(r.string())})))(v||={});var re;(i=>(i.ParametersSchema=r.record(P),i.PeerProperties=r.object({user_data:b.optional(),tags:r.array(r.string()).optional(),audio_parameters:i.ParametersSchema.optional(),video_parameters:i.ParametersSchema.optional()}),i.PingSchema=r.object({Ping:r.object({id:r.number()})}),i.ChangeSelfSchema=r.object({ChangeSelf:i.PeerProperties.omit({tags:!0})}),i.SetAudioMaskSchema=r.object({SetAudioMask:r.object({peer_id:r.number(),mask:W})}),i.SendMessageSchema=r.object({SendMessage:r.object({peer_ids:r.number().array().default([]),message:b})}),i.CallSchema=i.PingSchema.or(i.ChangeSelfSchema).or(i.SetAudioMaskSchema).or(i.SendMessageSchema),i.PongSchema=r.object({Pong:r.object({id:r.number()})}),i.JoinedSchema=r.object({Joined:r.object({own_peer_id:r.number(),room_id:r.string(),customer:r.string()})}),i.LeftSchema=r.object({Left:r.object({reason:r.enum(["room_closing","server_closing","peer_kicked"])})}),i.PeerJoinedSchema=r.object({PeerJoined:i.PeerProperties.extend({peer_id:r.number(),user_id:r.string()})}),i.PeerLeftSchema=r.object({PeerLeft:r.object({peer_id:r.number()})}),i.PeerChangedSchema=r.object({PeerChanged:i.PeerProperties.extend({peer_id:r.number()})}),i.NewReconnectTokenSchema=r.object({NewReconnectToken:r.object({token:r.string()})}),i.MessageReceivedSchema=r.object({MessageReceived:r.object({sender_peer_id:r.number(),message:b})}),i.ErrorSchema=r.object({Error:r.object({message:b})}),i.EventSchema=i.PongSchema.or(i.JoinedSchema).or(i.LeftSchema).or(i.PeerJoinedSchema).or(i.PeerLeftSchema).or(i.PeerChangedSchema).or(i.NewReconnectTokenSchema).or(i.MessageReceivedSchema).or(i.ErrorSchema)))(re||={});var ne=require("zod");var O=ne.z.object({sender_peer_id:x,message:b});var a=k(require("zod"));var R=a.discriminatedUnion("kind",[a.object({kind:a.literal("Sdp"),type:a.enum(["Answer","Offer"]),sdp:a.string(),media_map:a.array(a.tuple([z,a.string()]))}),a.object({kind:a.literal("Trickle"),candidate:a.string(),spd_mid:a.optional(a.string()),spd_mline_index:a.optional(a.number()),username_fragment:a.optional(a.union([a.string(),a.null()]))}),a.object({kind:a.literal("TrickleFinished")})]);var o=require("zod");var Le={Hello:{request:o.z.object({stream:o.z.literal("main")}),response:o.z.null()},JoinRoom:{request:o.z.object({token:o.z.string(),room_id:v.RoomIdSchema,user_data:b,position:C}),response:o.z.object({peer_id:x,stream_id:o.z.optional(o.z.number()),token:o.z.optional(o.z.string())})},WebRtcUpdate:{request:R,response:o.z.null()},RequestReconnectToken:{request:o.z.object({peer_id:o.z.optional(x)}),response:o.z.string()},Ping:{request:o.z.object({}),response:o.z.null()}},we={Hello:{request:o.z.object({stream:o.z.literal("room"),token:o.z.string(),room_id:o.z.string(),user_data:b,position:C}),response:o.z.null()},UpdatePeer:{request:o.z.object({user_data:b}),response:o.z.null()},StartMedia:{request:o.z.object({media_id:z,properties:M}),response:o.z.null()},StopMedia:{request:o.z.object({media_id:z}),response:o.z.null()},PauseMedia:{request:o.z.object({media_id:z}),response:o.z.null()},ResumeMedia:{request:o.z.object({media_id:z}),response:o.z.null()},SetPeerPosition:{request:o.z.object({position:C}),response:o.z.null()},SendMessage:{request:o.z.object({target_peer_ids:o.z.optional(o.z.array(x)),message:b}),response:o.z.null()}};var h=k(require("zod"));var Me=h.object({name:h.literal("WebRtcUpdate"),properties:R}),je={WebRtcUpdate:R},Ue=h.union([h.object({name:h.literal("RoomStatusChanged"),properties:v.RoomStatusChangedSchema}),h.object({name:h.literal("RoomUpdated"),properties:v.RoomUpdatesSchema}),h.object({name:h.literal("PeerUpdated"),properties:_}),h.object({name:h.literal("MessageReceived"),properties:O})]),_e={RoomStatusChanged:v.RoomStatusChangedSchema,RoomUpdated:v.RoomUpdatesSchema,PeerUpdated:_,MessageReceived:O};function A(e,t){e||q(t)}function q(e){throw new Error(e)}function y(e){return{type:"Success",value:e}}function S(e){return{type:"Failure",reason:e}}function Ie(e){return e.type==="Failure"&&q(e.reason),e.value}function N(e,t){return e.type==="Success"?e.value:t}function Be(e){try{let t=atob(e),n=Uint8Array.from(t,m=>m.codePointAt(0)),s=new TextDecoder("utf8");return y(s.decode(n))}catch(t){return S(String(t))}}function Oe(e){try{let t=atob(e.replace(/-/g,"+").replace(/_/g,"/")),n=Uint8Array.from(t,m=>m.codePointAt(0)),s=new TextDecoder("utf8");return y(s.decode(n))}catch(t){return S(String(t))}}function Ne(e){try{A(e!==void 0,"undefined cannot be converted to byte array"),A(e!==null,"null cannot be converted to byte array");let t=JSON.stringify(e),n=new TextEncoder;return y(n.encode(t))}catch(t){return S(String(t))}}function De(e){try{A(e.length>0,"empty byte array cannot be converted to value");let t=new TextDecoder().decode(e),n=JSON.parse(t);return y(n)}catch(t){return S(String(t))}}var Ee=["VP8","VP9","AV1","H264"],$=class{constructor(t){this.codec=t}channels=0;clockRate=9e4;isValid(){return Ee.includes(this.codec)}isSupported(){if(typeof RTCRtpReceiver>"u"||typeof RTCRtpReceiver.getCapabilities>"u")return null;let t=N(this.getMimeType(),"").toLowerCase(),n=new Set(N(this.getSdpFmtpLine(),"").split(";").map(s=>s.trim().toLowerCase()));return RTCRtpReceiver.getCapabilities("video")?.codecs?.find(s=>{let m=s.mimeType.toLowerCase(),f=new Set((s.sdpFmtpLine??"").split(";").map(p=>p.trim().toLowerCase()));if(t!==m||n.size!==f.size)return!1;for(let p of n)if(!f.has(p))return!1;return!0})??null}getPayloadType(){switch(this.codec){case"VP8":return y(96);case"VP9":return y(98);case"AV1":return y(41);case"H264":return y(102);default:return S("invalid video codec")}}getMimeType(){switch(this.codec){case"VP8":return y("video/VP8");case"VP9":return y("video/VP9");case"AV1":return y("video/AV1");case"H264":return y("video/H264");default:return S("invalid video codec")}}getSdpFmtpLine(){switch(this.codec){case"VP8":return y("");case"VP9":return y("profile-id=2");case"AV1":return y("level-idx=5;profile=0;tier=0");case"H264":return y("level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f");default:return S("invalid video codec")}}};function Fe(e,t){for(let n of e)if(t(n))return n}function Je(){return typeof AudioContext<"u"&&typeof Worker<"u"}function Ve(){return typeof SharedArrayBuffer<"u"}function oe(){return/(apple)?webkit\/537\.36/i.test(globalThis.navigator.userAgent)}function We(){return/electron/i.test(globalThis.navigator.userAgent)}function qe(){return/firefox|iceweasel|fxios/i.test(globalThis.navigator.userAgent)}function $e(){return oe()?!1:/safari|applewebkit/i.test(globalThis.navigator.userAgent)}function Ge(e){return JSON.parse(JSON.stringify(e))}var G=class e{constructor(t){this._Generators=t;this._Futures=t.map(e.addIndex)}_Futures;async next(){let[t,n]=await Promise.race(this._Futures);return this._Futures[n]=e.addIndex(this._Generators[n],n),t}static async addIndex(t,n){return[await t(),n]}};function He(e,t){return e<=0?Promise.resolve(t):new Promise(n=>setTimeout(()=>n(t),e))}function Ze(e,t){return t.aborted?Promise.resolve("aborted"):new Promise(n=>{let s=()=>n("aborted");t.addEventListener("abort",s,{once:!0}),setTimeout(()=>{t.removeEventListener("abort",s),n(void 0)},e)})}function Ye(){return new Promise(e=>setTimeout(e,0))}var H=class{_Tasks=[];_Running=!1;_Values;constructor(...t){this._Values=t}enqueue(t){return new Promise((n,s)=>{let m=async()=>{try{let f=await t(...this._Values);n(f)}catch(f){s(f)}};this._Tasks.push(m),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 Ke(e){let t=e.trim();e.indexOf("://")===-1&&(t=`https://${t}`);try{return y(new URL(t))}catch(n){return S(String(n))}}function Xe(e,t){let n=e.pathname;n.endsWith("/")===!1&&(n+="/");try{return y(new URL(n+t,e))}catch(s){return S(String(s))}}var Qe=/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;function et(){return crypto.randomUUID()}function tt(e){return Qe.test(e)}function rt(e,t){return t in e}function nt(e){return typeof e=="function"}function ot(e){return typeof e=="object"&&e===null}function it(e){return typeof e=="number"}function at(e){return typeof e=="object"}function st(e){return typeof e=="string"}function pt(e){return typeof e>"u"}function ct(e){return e.type==="Failure"}function ut(e){return e.type==="Success"}var{Deno:ie}=globalThis,dt=typeof ie?.noColor=="boolean"?ie.noColor:!1,lt=!dt;function mt(e,t){return{open:`\x1B[${e.join(";")}m`,close:`\x1B[${t}m`,regexp:new RegExp(`\\x1b\\[${t}m`,"g")}}function ft(e,t){return lt?`${t.open}${e.replace(t.regexp,t.open)}${t.close}`:e}function ae(e){return ft(e,mt([0],0))}var kr=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 D=(g=>(g[g.Nothing=0]="Nothing",g[g.CRITICAL=1]="CRITICAL",g[g.ERROR=2]="ERROR",g[g.WARN=3]="WARN",g[g.INFO=4]="INFO",g[g.DEBUG=5]="DEBUG",g[g.Everything=6]="Everything",g))(D||{}),yt=new Date,Z=(f=>(f[f.CRITICAL=1]="CRITICAL",f[f.ERROR=2]="ERROR",f[f.WARN=3]="WARN",f[f.INFO=4]="INFO",f[f.DEBUG=5]="DEBUG",f))(Z||{}),bt={1:"\u{1F4A5}",2:"\u{1F534}",3:"\u{1F7E1}",4:"\u{1F535}",5:"\u{1F7E3}"},xt={5:e=>e,4:e=>e,3:e=>e,2:e=>e,1:e=>e};function ht(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 St({message:e}){return String(e)}function se(e){return JSON.stringify({timestamp:e.date.toISOString(),level:Z[e.level],message:e.message,extra:e.extra})}function pe(e){function t(p,g){return[Math.floor(p/g),p%g]}function n(){let p,g=e.date.valueOf()-yt.valueOf();[g,p]=t(g,1e3);let[J,V]=t(g,60);return`${J.toString().padStart(4,"0")}:${V.toString().padStart(2,"0")}.${p.toString().padStart(4,"0")}`}function s(){return e.extra===void 0?"":"Deno"in globalThis?" "+Deno.inspect(e.extra,{compact:!1,colors:!0,trailingComma:!0}).trimStart():" "+JSON.stringify(e.extra)}let m=bt[e.level],f=e.logger.name!==void 0?`@${e.logger}`:"";return`${ae(n())}${f} ${m} ${xt[e.level](String(e.message))}${s()}`}var ue={sparse:St,json:se,pretty:pe,default:Deno.stdout.isTerminal()?pe:se},E=class{#e;#t;filter;constructor(t=ue.default,n=6,s=console){this.filter=n,this.#e=t,this.#t=s}handle(t){let n=this.#e(t);switch(t.level){case 2:this.#t.error(n);break;case 3:this.#t.warn(n);break;case 4:this.#t.info(n);break;case 5:this.#t.debug(n);break}}},F=class{#e;sinks;filter;get name(){return this.#e}constructor(t,n=void 0,s=[new E]){this.#e=n,this.sinks=s,this.filter=t}log(t,n,s=void 0){if(this.filter<t)return;let m=ce;for(let f of this.sinks)f.filter<t||(m===ce&&(m={date:new Date,level:t,logger:this,message:typeof n=="function"?n():n,extra:s}),f.handle(m))}},de=new F(4);function L(e,t,n=void 0){de.log(e,t,n)}var zt=L.bind(void 0,2),vt=L.bind(void 0,3),kt=L.bind(void 0,4),Rt=L.bind(void 0,5),ce=Symbol();var Pr=-758.596,le;(t=>{let e;(p=>(p[p.InvalidPassword=-1]="InvalidPassword",p[p.Unknown=0]="Unknown",p[p.Unencrypted=1]="Unencrypted",p[p.Encrypted=2]="Encrypted"))(e=t.PeerCipherStatus||={})})(le||={});var Pt={bytesSent:0,bytesReceived:0,packetsSent:0,packetsReceived:0,rtt:0,packetLoss:0},Tt={packetsBuffered:0,packetsSeen:0,packetsProcessed:0,packetsTooEarly:0,packetsTooLate:0,packetsDropped:0,packetsInvalid:0,packetsRepeated:0,packetsLost:0},Ct={voiceActivity:{attackThreshold:.9,releaseThreshold:.8},volumeGate:{attackThreshold:-30,releaseThreshold:-40}},At={echoCanceller:!0,highPassFilter:!1,noiseSuppression:"Moderate",transientSuppressor:!1,gainController:!0};0&&(module.exports={APM_DEFAULTS,Backend,ByteArraySchema,CONNECTION_STATS_INITIAL,ChannelSet,ChannelSetSchema,ConsoleSink,Formatter,GLOBAL_LOGGER,JITTER_STATS_INITIAL,JsonSchema,LogFilter,LogLevel,Logger,MainCommandsRpc,MainNotificationSchema,MainNotificationsRpc,MediaAudioPropertiesSchema,MediaIdSchema,MediaPropertiesSchema,MediaSchema,MediaVideoPropertiesSchema,MessagePackRpcSchema,MessageReceivedSchema,MinDBFS,PeerIdSchema,PeerPositionSchema,PeerSchema,PeerUpdateSchema,RoomCommandsRpc,RoomNotificationSchema,RoomNotificationsRpc,RoomV1,RoomV2,Selector,Strand,TokenAudienceSchema,TokenClaimsSchema,TokenSubjectSchema,VAD_DEFAULTS,VideoCodec,WebRtcUpdateSchema,abortableSleep,assert,debug,error,extendUrl,fail,failure,find,fromBase64,fromBase64Url,fromBytes,generateUUID,info,isAudioCapable,isBlinkBrowser,isElectronBrowser,isFailure,isFirefoxBrowser,isFunction,isNull,isNumber,isObject,isProperty,isSafariBrowser,isSharedArrayBufferCapable,isString,isSuccess,isUndefined,log,nextTick,normalizeUrl,oneOrMany,sleep,success,toBytes,toRaw,tryParseLogFilter,unwrap,unwrapOr,validateUUID,warn});
package/esm/mod.js CHANGED
@@ -1 +1 @@
1
- import{z as l}from"zod";var b=l.custom(e=>e instanceof Uint8Array),ae=l.union([l.string(),l.number(),l.boolean(),l.null()]),R=l.lazy(()=>l.union([ae,l.array(R),l.record(R)])),we=l.union([l.tuple([l.literal(0),l.number(),l.string(),l.unknown()]),l.tuple([l.literal(1),l.number(),l.nullable(l.string()),l.unknown()]),l.tuple([l.literal(2),l.string(),l.unknown()])]);import{z as p}from"zod";var se=p.enum(["sfu","gateway"]),pe=p.enum(["connect","roomclose","roomupdate","roombanclient","roomsendmessage"]),Ue=p.object({uid:p.string(),cid:p.optional(p.string()),rid:P(p.string()).refine(e=>e.length>=1,{message:"missing rid"}),nsp:p.optional(p.string()),adr:p.optional(p.string()),aud:p.optional(P(se)),sub:p.optional(P(pe)),exp:p.optional(p.number()),nbf:p.optional(p.number()),ups:p.optional(p.string()),tgs:p.optional(P(p.string())),tsp:p.optional(p.number()),internal:p.optional(p.object({server:p.optional(p.string())}))});function P(e){return p.union([e.transform(t=>[t]),p.array(e)])}import*as r from"zod";import*as c from"zod";var z=c.number(),ce=c.object({kind:c.optional(c.literal("audio")),uid:c.optional(c.string()),customType:c.optional(c.string())}),ue=c.object({kind:c.optional(c.literal("video")),codec:c.optional(c.string()),uid:c.optional(c.string()),customType:c.optional(c.string()),id:c.optional(c.string())}),j=c.union([ce,ue]),U=c.object({id:z,properties:j,paused:c.boolean()});import*as d from"zod";var h=d.number(),T=d.union([d.tuple([d.number(),d.number(),d.number()]),d.tuple([d.number(),d.number()])]),_=d.object({id:h,user_id:d.string(),user_data:b,medias:d.array(U)}),I=d.discriminatedUnion("kind",[d.object({kind:d.literal("UserDataChanged"),peer_id:h,user_data:b}),d.object({kind:d.literal("MediaStarted"),peer_id:h,media:U}),d.object({kind:d.literal("MediaStopped"),peer_id:h,media_id:z})]);import*as J from"zod";var B=class e{constructor(t=BigInt(0)){this.value=t}from(...t){let n=t.reduce((u,y)=>u|C(y),BigInt(0));return new e(n)}contains(t){return(this.value&C(t))!==BigInt(0)}insert(t){this.value|=C(t)}remove(t){this.value&=~C(t)}[Symbol.iterator](){let t=-1,n=new e(this.value);return{next(){for(;t<63;)if(t+=1,n.contains(t))return{value:t,done:!1};return{value:void 0,done:!0}}}}},V=J.bigint().transform(e=>new B(e));function C(e){return BigInt(1)<<BigInt(e)}var v;(s=>(s.RoomIdSchema=r.string(),s.RoomSchema=r.object({id:s.RoomIdSchema,customer:r.string(),user_data:b,peers:r.array(_)}),s.RoomUpdateSchema=r.discriminatedUnion("kind",[r.object({kind:r.literal("Joined"),room:s.RoomSchema,media_ids:r.array(z),own_peer_id:h}),r.object({kind:r.literal("Left"),reason:r.enum(["RoomClosing","ServerClosing","PeerKicked"])}),r.object({kind:r.literal("UserDataChanged"),user_data:r.optional(b)}),r.object({kind:r.literal("PeerJoined"),peer:_}),r.object({kind:r.literal("PeerLeft"),peer_id:h})]),s.RoomUpdatesSchema=r.object({updates:r.array(s.RoomUpdateSchema)}),s.RoomStatusSchema=r.enum(["Joining","Joined","Closed"]),s.RoomStatusChangedSchema=r.object({status:s.RoomStatusSchema,message:r.optional(r.string())})))(v||={});var de;(i=>(i.ParametersSchema=r.record(R),i.PeerProperties=r.object({user_data:b.optional(),tags:r.array(r.string()).optional(),audio_parameters:i.ParametersSchema.optional(),video_parameters:i.ParametersSchema.optional()}),i.PingSchema=r.object({Ping:r.object({id:r.number()})}),i.ChangeSelfSchema=r.object({ChangeSelf:i.PeerProperties.omit({tags:!0})}),i.SetAudioMaskSchema=r.object({SetAudioMask:r.object({peer_id:r.number(),mask:V})}),i.SendMessageSchema=r.object({SendMessage:r.object({peer_ids:r.number().array().default([]),message:b})}),i.CallSchema=i.PingSchema.or(i.ChangeSelfSchema).or(i.SetAudioMaskSchema).or(i.SendMessageSchema),i.PongSchema=r.object({Pong:r.object({id:r.number()})}),i.JoinedSchema=r.object({Joined:r.object({own_peer_id:r.number(),room_id:r.string(),customer:r.string()})}),i.LeftSchema=r.object({Left:r.object({reason:r.enum(["room_closing","server_closing","peer_kicked"])})}),i.PeerJoinedSchema=r.object({PeerJoined:i.PeerProperties.extend({peer_id:r.number(),user_id:r.string()})}),i.PeerLeftSchema=r.object({PeerLeft:r.object({peer_id:r.number()})}),i.PeerChangedSchema=r.object({PeerChanged:i.PeerProperties.extend({peer_id:r.number()})}),i.NewReconnectTokenSchema=r.object({NewReconnectToken:r.object({token:r.string()})}),i.MessageReceivedSchema=r.object({MessageReceived:r.object({sender_peer_id:r.number(),message:b})}),i.ErrorSchema=r.object({Error:r.object({message:b})}),i.EventSchema=i.PongSchema.or(i.JoinedSchema).or(i.LeftSchema).or(i.PeerJoinedSchema).or(i.PeerLeftSchema).or(i.PeerChangedSchema).or(i.NewReconnectTokenSchema).or(i.MessageReceivedSchema).or(i.ErrorSchema)))(de||={});import{z as le}from"zod";var O=le.object({sender_peer_id:h,message:b});import*as a from"zod";var k=a.discriminatedUnion("kind",[a.object({kind:a.literal("Sdp"),type:a.enum(["Answer","Offer"]),sdp:a.string(),media_map:a.array(a.tuple([z,a.string()]))}),a.object({kind:a.literal("Trickle"),candidate:a.string(),spd_mid:a.optional(a.string()),spd_mline_index:a.optional(a.number()),username_fragment:a.optional(a.union([a.string(),a.null()]))}),a.object({kind:a.literal("TrickleFinished")})]);import{z as o}from"zod";var nt={Hello:{request:o.object({stream:o.literal("main")}),response:o.null()},JoinRoom:{request:o.object({token:o.string(),room_id:v.RoomIdSchema,user_data:b,position:T}),response:o.object({peer_id:h,stream_id:o.optional(o.number()),token:o.optional(o.string())})},WebRtcUpdate:{request:k,response:o.null()},RequestReconnectToken:{request:o.object({peer_id:o.optional(h)}),response:o.string()},Ping:{request:o.object({}),response:o.null()}},ot={Hello:{request:o.object({stream:o.literal("room"),token:o.string(),room_id:o.string(),user_data:b,position:T}),response:o.null()},UpdatePeer:{request:o.object({user_data:b}),response:o.null()},StartMedia:{request:o.object({media_id:z,properties:j}),response:o.null()},StopMedia:{request:o.object({media_id:z}),response:o.null()},PauseMedia:{request:o.object({media_id:z}),response:o.null()},ResumeMedia:{request:o.object({media_id:z}),response:o.null()},SetPeerPosition:{request:o.object({position:T}),response:o.null()},SendMessage:{request:o.object({target_peer_ids:o.optional(o.array(h)),message:b}),response:o.null()}};import*as x from"zod";var ut=x.object({name:x.literal("WebRtcUpdate"),properties:k}),dt={WebRtcUpdate:k},lt=x.union([x.object({name:x.literal("RoomStatusChanged"),properties:v.RoomStatusChangedSchema}),x.object({name:x.literal("RoomUpdated"),properties:v.RoomUpdatesSchema}),x.object({name:x.literal("PeerUpdated"),properties:I}),x.object({name:x.literal("MessageReceived"),properties:O})]),mt={RoomStatusChanged:v.RoomStatusChangedSchema,RoomUpdated:v.RoomUpdatesSchema,PeerUpdated:I,MessageReceived:O};function A(e,t){e||W(t)}function W(e){throw new Error(e)}function g(e){return{type:"Success",value:e}}function S(e){return{type:"Failure",reason:e}}function gt(e){return e.type==="Failure"&&W(e.reason),e.value}function N(e,t){return e.type==="Success"?e.value:t}function xt(e){try{let t=atob(e),n=Uint8Array.from(t,y=>y.codePointAt(0)),u=new TextDecoder("utf8");return g(u.decode(n))}catch(t){return S(String(t))}}function ht(e){try{let t=atob(e.replace(/-/g,"+").replace(/_/g,"/")),n=Uint8Array.from(t,y=>y.codePointAt(0)),u=new TextDecoder("utf8");return g(u.decode(n))}catch(t){return S(String(t))}}function vt(e){try{A(e!==void 0,"undefined cannot be converted to byte array"),A(e!==null,"null cannot be converted to byte array");let t=JSON.stringify(e),n=new TextEncoder;return g(n.encode(t))}catch(t){return S(String(t))}}function kt(e){try{A(e.length>0,"empty byte array cannot be converted to value");let t=new TextDecoder().decode(e),n=JSON.parse(t);return g(n)}catch(t){return S(String(t))}}var me=["VP8","VP9","AV1","H264"],q=class{constructor(t){this.codec=t}channels=0;clockRate=9e4;isValid(){return me.includes(this.codec)}isSupported(){if(typeof RTCRtpReceiver>"u"||typeof RTCRtpReceiver.getCapabilities>"u")return null;let t=N(this.getMimeType(),"").toLowerCase(),n=new Set(N(this.getSdpFmtpLine(),"").split(";").map(u=>u.trim().toLowerCase()));return RTCRtpReceiver.getCapabilities("video")?.codecs?.find(u=>{let y=u.mimeType.toLowerCase(),m=new Set((u.sdpFmtpLine??"").split(";").map(s=>s.trim().toLowerCase()));if(t!==y||n.size!==m.size)return!1;for(let s of n)if(!m.has(s))return!1;return!0})??null}getPayloadType(){switch(this.codec){case"VP8":return g(96);case"VP9":return g(98);case"AV1":return g(41);case"H264":return g(102);default:return S("invalid video codec")}}getMimeType(){switch(this.codec){case"VP8":return g("video/VP8");case"VP9":return g("video/VP9");case"AV1":return g("video/AV1");case"H264":return g("video/H264");default:return S("invalid video codec")}}getSdpFmtpLine(){switch(this.codec){case"VP8":return g("");case"VP9":return g("profile-id=2");case"AV1":return g("level-idx=5;profile=0;tier=0");case"H264":return g("level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f");default:return S("invalid video codec")}}};function Ct(e,t){for(let n of e)if(t(n))return n}function Lt(){return typeof AudioContext<"u"&&typeof Worker<"u"}function wt(){return typeof SharedArrayBuffer<"u"}function fe(){return/(apple)?webkit\/537\.36/i.test(globalThis.navigator.userAgent)}function Mt(){return/electron/i.test(globalThis.navigator.userAgent)}function jt(){return/firefox|iceweasel|fxios/i.test(globalThis.navigator.userAgent)}function Ut(){return fe()?!1:/safari|applewebkit/i.test(globalThis.navigator.userAgent)}function It(e){return JSON.parse(JSON.stringify(e))}var $=class e{constructor(t){this._Generators=t;this._Futures=t.map(e.addIndex)}_Futures;async next(){let[t,n]=await Promise.race(this._Futures);return this._Futures[n]=e.addIndex(this._Generators[n],n),t}static async addIndex(t,n){return[await t(),n]}};function Nt(e,t){return e<=0?Promise.resolve(t):new Promise(n=>setTimeout(()=>n(t),e))}function Dt(e,t){return t.aborted?Promise.resolve("aborted"):new Promise(n=>{let u=()=>n("aborted");t.addEventListener("abort",u,{once:!0}),setTimeout(()=>{t.removeEventListener("abort",u),n(void 0)},e)})}function Et(){return new Promise(e=>setTimeout(e,0))}var G=class{_Tasks=[];_Running=!1;_Values;constructor(...t){this._Values=t}enqueue(t){return new Promise((n,u)=>{let y=async()=>{try{let m=await t(...this._Values);n(m)}catch(m){u(m)}};this._Tasks.push(y),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 Wt(e){let t=e.trim();e.indexOf("://")===-1&&(t=`https://${t}`);try{return g(new URL(t))}catch(n){return S(String(n))}}function qt(e,t){let n=e.pathname;n.endsWith("/")===!1&&(n+="/");try{return g(new URL(n+t,e))}catch(u){return S(String(u))}}var ge=/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;function Gt(){return crypto.randomUUID()}function Ht(e){return ge.test(e)}function Yt(e,t){return t in e}function Kt(e){return typeof e=="function"}function Xt(e){return typeof e=="object"&&e===null}function Qt(e){return typeof e=="number"}function er(e){return typeof e=="object"}function tr(e){return typeof e=="string"}function rr(e){return typeof e>"u"}function nr(e){return e.type==="Failure"}function or(e){return e.type==="Success"}var{Deno:H}=globalThis,ye=typeof H?.noColor=="boolean"?H.noColor:!1,be=!ye;function xe(e,t){return{open:`\x1B[${e.join(";")}m`,close:`\x1B[${t}m`,regexp:new RegExp(`\\x1b\\[${t}m`,"g")}}function he(e,t){return be?`${t.open}${e.replace(t.regexp,t.open)}${t.close}`:e}function Z(e){return he(e,xe([0],0))}var ar=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 D=(f=>(f[f.Nothing=0]="Nothing",f[f.CRITICAL=1]="CRITICAL",f[f.ERROR=2]="ERROR",f[f.WARN=3]="WARN",f[f.INFO=4]="INFO",f[f.DEBUG=5]="DEBUG",f[f.Everything=6]="Everything",f))(D||{}),ze=new Date,Q=(m=>(m[m.CRITICAL=1]="CRITICAL",m[m.ERROR=2]="ERROR",m[m.WARN=3]="WARN",m[m.INFO=4]="INFO",m[m.DEBUG=5]="DEBUG",m))(Q||{}),ve={1:"\u{1F4A5}",2:"\u{1F534}",3:"\u{1F7E1}",4:"\u{1F535}",5:"\u{1F7E3}"},ke={5:e=>e,4:e=>e,3:e=>e,2:e=>e,1:e=>e};function sr(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 Re({message:e}){return String(e)}function Y(e){return JSON.stringify({timestamp:e.date.toISOString(),level:Q[e.level],message:e.message,extra:e.extra})}function K(e){function t(s,f){return[Math.floor(s/f),s%f]}function n(){let s,f=e.date.valueOf()-ze.valueOf();[f,s]=t(f,1e3);let[w,M]=t(f,60);return`${w.toString().padStart(4,"0")}:${M.toString().padStart(2,"0")}.${s.toString().padStart(4,"0")}`}function u(){return e.extra===void 0?"":"Deno"in globalThis?" "+Deno.inspect(e.extra,{compact:!1,colors:!0,trailingComma:!0}).trimStart():" "+JSON.stringify(e.extra)}let y=ve[e.level],m=e.logger.name!==void 0?`@${e.logger}`:"";return`${Z(n())}${m} ${y} ${ke[e.level](String(e.message))}${u()}`}var Pe={sparse:Re,json:Y,pretty:K,default:Deno.stdout.isTerminal()?K:Y},E=class{#e;#t;filter;constructor(t=Pe.default,n=6,u=console){this.filter=n,this.#e=t,this.#t=u}handle(t){let n=this.#e(t);switch(t.level){case 2:this.#t.error(n);break;case 3:this.#t.warn(n);break;case 4:this.#t.info(n);break;case 5:this.#t.debug(n);break}}},F=class{#e;sinks;filter;get name(){return this.#e}constructor(t,n=void 0,u=[new E]){this.#e=n,this.sinks=u,this.filter=t}log(t,n,u=void 0){if(this.filter<t)return;let y=X;for(let m of this.sinks)m.filter<t||(y===X&&(y={date:new Date,level:t,logger:this,message:typeof n=="function"?n():n,extra:u}),m.handle(y))}},Te=new F(4);function L(e,t,n){Te.log(e,t,n)}var pr=L.bind(void 0,2),cr=L.bind(void 0,3),ur=L.bind(void 0,4),dr=L.bind(void 0,5),X=Symbol();var mr=-758.596,Ce;(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||={})})(Ce||={});var fr={bytesSent:0,bytesReceived:0,packetsSent:0,packetsReceived:0,rtt:0,packetLoss:0},gr={packetsBuffered:0,packetsSeen:0,packetsProcessed:0,packetsTooEarly:0,packetsTooLate:0,packetsDropped:0,packetsInvalid:0,packetsRepeated:0,packetsLost:0},yr={voiceActivity:{attackThreshold:.9,releaseThreshold:.8},volumeGate:{attackThreshold:-30,releaseThreshold:-40}},br={echoCanceller:!0,highPassFilter:!1,noiseSuppression:"Moderate",transientSuppressor:!1,gainController:!0};export{br as APM_DEFAULTS,Ce as Backend,b as ByteArraySchema,fr as CONNECTION_STATS_INITIAL,B as ChannelSet,V as ChannelSetSchema,E as ConsoleSink,Pe as Formatter,Te as GLOBAL_LOGGER,gr as JITTER_STATS_INITIAL,R as JsonSchema,D as LogFilter,Q as LogLevel,F as Logger,nt as MainCommandsRpc,ut as MainNotificationSchema,dt as MainNotificationsRpc,ce as MediaAudioPropertiesSchema,z as MediaIdSchema,j as MediaPropertiesSchema,U as MediaSchema,ue as MediaVideoPropertiesSchema,we as MessagePackRpcSchema,O as MessageReceivedSchema,mr as MinDBFS,h as PeerIdSchema,T as PeerPositionSchema,_ as PeerSchema,I as PeerUpdateSchema,ot as RoomCommandsRpc,lt as RoomNotificationSchema,mt as RoomNotificationsRpc,v as RoomV1,de as RoomV2,$ as Selector,G as Strand,se as TokenAudienceSchema,Ue as TokenClaimsSchema,pe as TokenSubjectSchema,yr as VAD_DEFAULTS,q as VideoCodec,k as WebRtcUpdateSchema,Dt as abortableSleep,A as assert,dr as debug,pr as error,qt as extendUrl,W as fail,S as failure,Ct as find,xt as fromBase64,ht as fromBase64Url,kt as fromBytes,Gt as generateUUID,ur as info,Lt as isAudioCapable,fe as isBlinkBrowser,Mt as isElectronBrowser,nr as isFailure,jt as isFirefoxBrowser,Kt as isFunction,Xt as isNull,Qt as isNumber,er as isObject,Yt as isProperty,Ut as isSafariBrowser,wt as isSharedArrayBufferCapable,tr as isString,or as isSuccess,rr as isUndefined,L as log,Et as nextTick,Wt as normalizeUrl,P as oneOrMany,Nt as sleep,g as success,vt as toBytes,It as toRaw,sr as tryParseLogFilter,gt as unwrap,N as unwrapOr,Ht as validateUUID,cr as warn};
1
+ import{z as l}from"zod";var b=l.custom(e=>e instanceof Uint8Array),ae=l.union([l.string(),l.number(),l.boolean(),l.null()]),R=l.lazy(()=>l.union([ae,l.array(R),l.record(R)])),we=l.union([l.tuple([l.literal(0),l.number(),l.string(),l.unknown()]),l.tuple([l.literal(1),l.number(),l.nullable(l.string()),l.unknown()]),l.tuple([l.literal(2),l.string(),l.unknown()])]);import{z as p}from"zod";var se=p.enum(["sfu","gateway"]),pe=p.enum(["connect","roomclose","roomupdate","roombanclient","roomsendmessage"]),Ue=p.object({uid:p.string(),cid:p.optional(p.string()),rid:P(p.string()).refine(e=>e.length>=1,{message:"missing rid"}),nsp:p.optional(p.string()),adr:p.optional(p.string()),aud:p.optional(P(se)),sub:p.optional(P(pe)),exp:p.optional(p.number()),nbf:p.optional(p.number()),ups:p.optional(p.string()),tgs:p.optional(P(p.string())),tsp:p.optional(p.number()),internal:p.optional(p.object({server:p.optional(p.string())}))});function P(e){return p.union([e.transform(t=>[t]),p.array(e)])}import*as r from"zod";import*as c from"zod";var z=c.number(),ce=c.object({kind:c.optional(c.literal("audio")),uid:c.optional(c.string()),customType:c.optional(c.string())}),ue=c.object({kind:c.optional(c.literal("video")),codec:c.optional(c.string()),uid:c.optional(c.string()),customType:c.optional(c.string()),id:c.optional(c.string())}),j=c.union([ce,ue]),U=c.object({id:z,properties:j,paused:c.boolean()});import*as d from"zod";var h=d.number(),T=d.union([d.tuple([d.number(),d.number(),d.number()]),d.tuple([d.number(),d.number()])]),_=d.object({id:h,user_id:d.string(),user_data:b,medias:d.array(U)}),I=d.discriminatedUnion("kind",[d.object({kind:d.literal("UserDataChanged"),peer_id:h,user_data:b}),d.object({kind:d.literal("MediaStarted"),peer_id:h,media:U}),d.object({kind:d.literal("MediaStopped"),peer_id:h,media_id:z})]);import*as J from"zod";var B=class e{constructor(t=BigInt(0)){this.value=t}from(...t){let n=t.reduce((u,y)=>u|C(y),BigInt(0));return new e(n)}contains(t){return(this.value&C(t))!==BigInt(0)}insert(t){this.value|=C(t)}remove(t){this.value&=~C(t)}[Symbol.iterator](){let t=-1,n=new e(this.value);return{next(){for(;t<63;)if(t+=1,n.contains(t))return{value:t,done:!1};return{value:void 0,done:!0}}}}},V=J.bigint().transform(e=>new B(e));function C(e){return BigInt(1)<<BigInt(e)}var v;(s=>(s.RoomIdSchema=r.string(),s.RoomSchema=r.object({id:s.RoomIdSchema,customer:r.string(),user_data:b,peers:r.array(_)}),s.RoomUpdateSchema=r.discriminatedUnion("kind",[r.object({kind:r.literal("Joined"),room:s.RoomSchema,media_ids:r.array(z),own_peer_id:h}),r.object({kind:r.literal("Left"),reason:r.enum(["RoomClosing","ServerClosing","PeerKicked"])}),r.object({kind:r.literal("UserDataChanged"),user_data:r.optional(b)}),r.object({kind:r.literal("PeerJoined"),peer:_}),r.object({kind:r.literal("PeerLeft"),peer_id:h})]),s.RoomUpdatesSchema=r.object({updates:r.array(s.RoomUpdateSchema)}),s.RoomStatusSchema=r.enum(["Joining","Joined","Closed"]),s.RoomStatusChangedSchema=r.object({status:s.RoomStatusSchema,message:r.optional(r.string())})))(v||={});var de;(i=>(i.ParametersSchema=r.record(R),i.PeerProperties=r.object({user_data:b.optional(),tags:r.array(r.string()).optional(),audio_parameters:i.ParametersSchema.optional(),video_parameters:i.ParametersSchema.optional()}),i.PingSchema=r.object({Ping:r.object({id:r.number()})}),i.ChangeSelfSchema=r.object({ChangeSelf:i.PeerProperties.omit({tags:!0})}),i.SetAudioMaskSchema=r.object({SetAudioMask:r.object({peer_id:r.number(),mask:V})}),i.SendMessageSchema=r.object({SendMessage:r.object({peer_ids:r.number().array().default([]),message:b})}),i.CallSchema=i.PingSchema.or(i.ChangeSelfSchema).or(i.SetAudioMaskSchema).or(i.SendMessageSchema),i.PongSchema=r.object({Pong:r.object({id:r.number()})}),i.JoinedSchema=r.object({Joined:r.object({own_peer_id:r.number(),room_id:r.string(),customer:r.string()})}),i.LeftSchema=r.object({Left:r.object({reason:r.enum(["room_closing","server_closing","peer_kicked"])})}),i.PeerJoinedSchema=r.object({PeerJoined:i.PeerProperties.extend({peer_id:r.number(),user_id:r.string()})}),i.PeerLeftSchema=r.object({PeerLeft:r.object({peer_id:r.number()})}),i.PeerChangedSchema=r.object({PeerChanged:i.PeerProperties.extend({peer_id:r.number()})}),i.NewReconnectTokenSchema=r.object({NewReconnectToken:r.object({token:r.string()})}),i.MessageReceivedSchema=r.object({MessageReceived:r.object({sender_peer_id:r.number(),message:b})}),i.ErrorSchema=r.object({Error:r.object({message:b})}),i.EventSchema=i.PongSchema.or(i.JoinedSchema).or(i.LeftSchema).or(i.PeerJoinedSchema).or(i.PeerLeftSchema).or(i.PeerChangedSchema).or(i.NewReconnectTokenSchema).or(i.MessageReceivedSchema).or(i.ErrorSchema)))(de||={});import{z as le}from"zod";var O=le.object({sender_peer_id:h,message:b});import*as a from"zod";var k=a.discriminatedUnion("kind",[a.object({kind:a.literal("Sdp"),type:a.enum(["Answer","Offer"]),sdp:a.string(),media_map:a.array(a.tuple([z,a.string()]))}),a.object({kind:a.literal("Trickle"),candidate:a.string(),spd_mid:a.optional(a.string()),spd_mline_index:a.optional(a.number()),username_fragment:a.optional(a.union([a.string(),a.null()]))}),a.object({kind:a.literal("TrickleFinished")})]);import{z as o}from"zod";var nt={Hello:{request:o.object({stream:o.literal("main")}),response:o.null()},JoinRoom:{request:o.object({token:o.string(),room_id:v.RoomIdSchema,user_data:b,position:T}),response:o.object({peer_id:h,stream_id:o.optional(o.number()),token:o.optional(o.string())})},WebRtcUpdate:{request:k,response:o.null()},RequestReconnectToken:{request:o.object({peer_id:o.optional(h)}),response:o.string()},Ping:{request:o.object({}),response:o.null()}},ot={Hello:{request:o.object({stream:o.literal("room"),token:o.string(),room_id:o.string(),user_data:b,position:T}),response:o.null()},UpdatePeer:{request:o.object({user_data:b}),response:o.null()},StartMedia:{request:o.object({media_id:z,properties:j}),response:o.null()},StopMedia:{request:o.object({media_id:z}),response:o.null()},PauseMedia:{request:o.object({media_id:z}),response:o.null()},ResumeMedia:{request:o.object({media_id:z}),response:o.null()},SetPeerPosition:{request:o.object({position:T}),response:o.null()},SendMessage:{request:o.object({target_peer_ids:o.optional(o.array(h)),message:b}),response:o.null()}};import*as x from"zod";var ut=x.object({name:x.literal("WebRtcUpdate"),properties:k}),dt={WebRtcUpdate:k},lt=x.union([x.object({name:x.literal("RoomStatusChanged"),properties:v.RoomStatusChangedSchema}),x.object({name:x.literal("RoomUpdated"),properties:v.RoomUpdatesSchema}),x.object({name:x.literal("PeerUpdated"),properties:I}),x.object({name:x.literal("MessageReceived"),properties:O})]),mt={RoomStatusChanged:v.RoomStatusChangedSchema,RoomUpdated:v.RoomUpdatesSchema,PeerUpdated:I,MessageReceived:O};function A(e,t){e||W(t)}function W(e){throw new Error(e)}function g(e){return{type:"Success",value:e}}function S(e){return{type:"Failure",reason:e}}function gt(e){return e.type==="Failure"&&W(e.reason),e.value}function N(e,t){return e.type==="Success"?e.value:t}function xt(e){try{let t=atob(e),n=Uint8Array.from(t,y=>y.codePointAt(0)),u=new TextDecoder("utf8");return g(u.decode(n))}catch(t){return S(String(t))}}function ht(e){try{let t=atob(e.replace(/-/g,"+").replace(/_/g,"/")),n=Uint8Array.from(t,y=>y.codePointAt(0)),u=new TextDecoder("utf8");return g(u.decode(n))}catch(t){return S(String(t))}}function vt(e){try{A(e!==void 0,"undefined cannot be converted to byte array"),A(e!==null,"null cannot be converted to byte array");let t=JSON.stringify(e),n=new TextEncoder;return g(n.encode(t))}catch(t){return S(String(t))}}function kt(e){try{A(e.length>0,"empty byte array cannot be converted to value");let t=new TextDecoder().decode(e),n=JSON.parse(t);return g(n)}catch(t){return S(String(t))}}var me=["VP8","VP9","AV1","H264"],q=class{constructor(t){this.codec=t}channels=0;clockRate=9e4;isValid(){return me.includes(this.codec)}isSupported(){if(typeof RTCRtpReceiver>"u"||typeof RTCRtpReceiver.getCapabilities>"u")return null;let t=N(this.getMimeType(),"").toLowerCase(),n=new Set(N(this.getSdpFmtpLine(),"").split(";").map(u=>u.trim().toLowerCase()));return RTCRtpReceiver.getCapabilities("video")?.codecs?.find(u=>{let y=u.mimeType.toLowerCase(),m=new Set((u.sdpFmtpLine??"").split(";").map(s=>s.trim().toLowerCase()));if(t!==y||n.size!==m.size)return!1;for(let s of n)if(!m.has(s))return!1;return!0})??null}getPayloadType(){switch(this.codec){case"VP8":return g(96);case"VP9":return g(98);case"AV1":return g(41);case"H264":return g(102);default:return S("invalid video codec")}}getMimeType(){switch(this.codec){case"VP8":return g("video/VP8");case"VP9":return g("video/VP9");case"AV1":return g("video/AV1");case"H264":return g("video/H264");default:return S("invalid video codec")}}getSdpFmtpLine(){switch(this.codec){case"VP8":return g("");case"VP9":return g("profile-id=2");case"AV1":return g("level-idx=5;profile=0;tier=0");case"H264":return g("level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f");default:return S("invalid video codec")}}};function Ct(e,t){for(let n of e)if(t(n))return n}function Lt(){return typeof AudioContext<"u"&&typeof Worker<"u"}function wt(){return typeof SharedArrayBuffer<"u"}function fe(){return/(apple)?webkit\/537\.36/i.test(globalThis.navigator.userAgent)}function Mt(){return/electron/i.test(globalThis.navigator.userAgent)}function jt(){return/firefox|iceweasel|fxios/i.test(globalThis.navigator.userAgent)}function Ut(){return fe()?!1:/safari|applewebkit/i.test(globalThis.navigator.userAgent)}function It(e){return JSON.parse(JSON.stringify(e))}var $=class e{constructor(t){this._Generators=t;this._Futures=t.map(e.addIndex)}_Futures;async next(){let[t,n]=await Promise.race(this._Futures);return this._Futures[n]=e.addIndex(this._Generators[n],n),t}static async addIndex(t,n){return[await t(),n]}};function Nt(e,t){return e<=0?Promise.resolve(t):new Promise(n=>setTimeout(()=>n(t),e))}function Dt(e,t){return t.aborted?Promise.resolve("aborted"):new Promise(n=>{let u=()=>n("aborted");t.addEventListener("abort",u,{once:!0}),setTimeout(()=>{t.removeEventListener("abort",u),n(void 0)},e)})}function Et(){return new Promise(e=>setTimeout(e,0))}var G=class{_Tasks=[];_Running=!1;_Values;constructor(...t){this._Values=t}enqueue(t){return new Promise((n,u)=>{let y=async()=>{try{let m=await t(...this._Values);n(m)}catch(m){u(m)}};this._Tasks.push(y),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 Wt(e){let t=e.trim();e.indexOf("://")===-1&&(t=`https://${t}`);try{return g(new URL(t))}catch(n){return S(String(n))}}function qt(e,t){let n=e.pathname;n.endsWith("/")===!1&&(n+="/");try{return g(new URL(n+t,e))}catch(u){return S(String(u))}}var ge=/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;function Gt(){return crypto.randomUUID()}function Ht(e){return ge.test(e)}function Yt(e,t){return t in e}function Kt(e){return typeof e=="function"}function Xt(e){return typeof e=="object"&&e===null}function Qt(e){return typeof e=="number"}function er(e){return typeof e=="object"}function tr(e){return typeof e=="string"}function rr(e){return typeof e>"u"}function nr(e){return e.type==="Failure"}function or(e){return e.type==="Success"}var{Deno:H}=globalThis,ye=typeof H?.noColor=="boolean"?H.noColor:!1,be=!ye;function xe(e,t){return{open:`\x1B[${e.join(";")}m`,close:`\x1B[${t}m`,regexp:new RegExp(`\\x1b\\[${t}m`,"g")}}function he(e,t){return be?`${t.open}${e.replace(t.regexp,t.open)}${t.close}`:e}function Z(e){return he(e,xe([0],0))}var ar=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 D=(f=>(f[f.Nothing=0]="Nothing",f[f.CRITICAL=1]="CRITICAL",f[f.ERROR=2]="ERROR",f[f.WARN=3]="WARN",f[f.INFO=4]="INFO",f[f.DEBUG=5]="DEBUG",f[f.Everything=6]="Everything",f))(D||{}),ze=new Date,Q=(m=>(m[m.CRITICAL=1]="CRITICAL",m[m.ERROR=2]="ERROR",m[m.WARN=3]="WARN",m[m.INFO=4]="INFO",m[m.DEBUG=5]="DEBUG",m))(Q||{}),ve={1:"\u{1F4A5}",2:"\u{1F534}",3:"\u{1F7E1}",4:"\u{1F535}",5:"\u{1F7E3}"},ke={5:e=>e,4:e=>e,3:e=>e,2:e=>e,1:e=>e};function sr(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 Re({message:e}){return String(e)}function Y(e){return JSON.stringify({timestamp:e.date.toISOString(),level:Q[e.level],message:e.message,extra:e.extra})}function K(e){function t(s,f){return[Math.floor(s/f),s%f]}function n(){let s,f=e.date.valueOf()-ze.valueOf();[f,s]=t(f,1e3);let[w,M]=t(f,60);return`${w.toString().padStart(4,"0")}:${M.toString().padStart(2,"0")}.${s.toString().padStart(4,"0")}`}function u(){return e.extra===void 0?"":"Deno"in globalThis?" "+Deno.inspect(e.extra,{compact:!1,colors:!0,trailingComma:!0}).trimStart():" "+JSON.stringify(e.extra)}let y=ve[e.level],m=e.logger.name!==void 0?`@${e.logger}`:"";return`${Z(n())}${m} ${y} ${ke[e.level](String(e.message))}${u()}`}var Pe={sparse:Re,json:Y,pretty:K,default:Deno.stdout.isTerminal()?K:Y},E=class{#e;#t;filter;constructor(t=Pe.default,n=6,u=console){this.filter=n,this.#e=t,this.#t=u}handle(t){let n=this.#e(t);switch(t.level){case 2:this.#t.error(n);break;case 3:this.#t.warn(n);break;case 4:this.#t.info(n);break;case 5:this.#t.debug(n);break}}},F=class{#e;sinks;filter;get name(){return this.#e}constructor(t,n=void 0,u=[new E]){this.#e=n,this.sinks=u,this.filter=t}log(t,n,u=void 0){if(this.filter<t)return;let y=X;for(let m of this.sinks)m.filter<t||(y===X&&(y={date:new Date,level:t,logger:this,message:typeof n=="function"?n():n,extra:u}),m.handle(y))}},Te=new F(4);function L(e,t,n=void 0){Te.log(e,t,n)}var pr=L.bind(void 0,2),cr=L.bind(void 0,3),ur=L.bind(void 0,4),dr=L.bind(void 0,5),X=Symbol();var mr=-758.596,Ce;(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||={})})(Ce||={});var fr={bytesSent:0,bytesReceived:0,packetsSent:0,packetsReceived:0,rtt:0,packetLoss:0},gr={packetsBuffered:0,packetsSeen:0,packetsProcessed:0,packetsTooEarly:0,packetsTooLate:0,packetsDropped:0,packetsInvalid:0,packetsRepeated:0,packetsLost:0},yr={voiceActivity:{attackThreshold:.9,releaseThreshold:.8},volumeGate:{attackThreshold:-30,releaseThreshold:-40}},br={echoCanceller:!0,highPassFilter:!1,noiseSuppression:"Moderate",transientSuppressor:!1,gainController:!0};export{br as APM_DEFAULTS,Ce as Backend,b as ByteArraySchema,fr as CONNECTION_STATS_INITIAL,B as ChannelSet,V as ChannelSetSchema,E as ConsoleSink,Pe as Formatter,Te as GLOBAL_LOGGER,gr as JITTER_STATS_INITIAL,R as JsonSchema,D as LogFilter,Q as LogLevel,F as Logger,nt as MainCommandsRpc,ut as MainNotificationSchema,dt as MainNotificationsRpc,ce as MediaAudioPropertiesSchema,z as MediaIdSchema,j as MediaPropertiesSchema,U as MediaSchema,ue as MediaVideoPropertiesSchema,we as MessagePackRpcSchema,O as MessageReceivedSchema,mr as MinDBFS,h as PeerIdSchema,T as PeerPositionSchema,_ as PeerSchema,I as PeerUpdateSchema,ot as RoomCommandsRpc,lt as RoomNotificationSchema,mt as RoomNotificationsRpc,v as RoomV1,de as RoomV2,$ as Selector,G as Strand,se as TokenAudienceSchema,Ue as TokenClaimsSchema,pe as TokenSubjectSchema,yr as VAD_DEFAULTS,q as VideoCodec,k as WebRtcUpdateSchema,Dt as abortableSleep,A as assert,dr as debug,pr as error,qt as extendUrl,W as fail,S as failure,Ct as find,xt as fromBase64,ht as fromBase64Url,kt as fromBytes,Gt as generateUUID,ur as info,Lt as isAudioCapable,fe as isBlinkBrowser,Mt as isElectronBrowser,nr as isFailure,jt as isFirefoxBrowser,Kt as isFunction,Xt as isNull,Qt as isNumber,er as isObject,Yt as isProperty,Ut as isSafariBrowser,wt as isSharedArrayBufferCapable,tr as isString,or as isSuccess,rr as isUndefined,L as log,Et as nextTick,Wt as normalizeUrl,P as oneOrMany,Nt as sleep,g as success,vt as toBytes,It as toRaw,sr as tryParseLogFilter,gt as unwrap,N as unwrapOr,Ht as validateUUID,cr as warn};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@4players/odin-common",
3
- "version": "9.0.1",
3
+ "version": "9.0.2",
4
4
  "description": "A collection of commonly used type definitions and utility functions across ODIN web projects",
5
5
  "author": "Josho Bleicker <josho.bleicker@4players.io> (https://www.4players.io)",
6
6
  "homepage": "https://www.4players.io",
package/utility/log.d.ts CHANGED
@@ -46,11 +46,11 @@ export declare class Logger {
46
46
  }
47
47
  export declare const GLOBAL_LOGGER: Logger;
48
48
  export type LogMessage = string | (() => unknown);
49
- export declare function log(level: LogLevel, message: LogMessage, extra: Record<string, unknown> | undefined): void;
50
- export declare const error: (message: LogMessage, extra: Record<string, unknown> | undefined) => void;
51
- export declare const warn: (message: LogMessage, extra: Record<string, unknown> | undefined) => void;
52
- export declare const info: (message: LogMessage, extra: Record<string, unknown> | undefined) => void;
53
- export declare const debug: (message: LogMessage, extra: Record<string, unknown> | undefined) => void;
49
+ export declare function log(level: LogLevel, message: LogMessage, extra?: Record<string, unknown> | undefined): void;
50
+ export declare const error: (message: LogMessage, extra?: Record<string, unknown> | undefined) => void;
51
+ export declare const warn: (message: LogMessage, extra?: Record<string, unknown> | undefined) => void;
52
+ export declare const info: (message: LogMessage, extra?: Record<string, unknown> | undefined) => void;
53
+ export declare const debug: (message: LogMessage, extra?: Record<string, unknown> | undefined) => void;
54
54
  export interface LogRecord {
55
55
  readonly date: Date;
56
56
  readonly level: LogLevel;