@4players/odin-common 9.0.0 → 9.0.1

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