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