@4players/odin-common 9.1.0 → 9.1.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/rpc/commands.d.ts +15 -3
- package/rpc/notifications.d.ts +9 -1
- package/schema/serialization.d.ts +4 -0
- package/schema/token.d.ts +1 -1
package/cjs/mod.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var ke=Object.create;var M=Object.defineProperty;var Re=Object.getOwnPropertyDescriptor;var Pe=Object.getOwnPropertyNames;var Te=Object.getPrototypeOf,Ce=Object.prototype.hasOwnProperty;var Ae=(e,t)=>{for(var n in t)M(e,n,{get:t[n],enumerable:!0})},ee=(e,t,n,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let m of Pe(t))!Ce.call(e,m)&&m!==n&&M(e,m,{get:()=>t[m],enumerable:!(s=Re(t,m))||s.enumerable});return e};var T=(e,t,n)=>(n=e!=null?ke(Te(e)):{},ee(t||!e||!e.__esModule?M(n,"default",{value:e,enumerable:!0}):n,e)),Le=e=>ee(M({},"__esModule",{value:!0}),e);var Mt={};Ae(Mt,{APM_DEFAULTS:()=>wt,Backend:()=>ye,ByteArraySchema:()=>b,CONNECTION_STATS_INITIAL:()=>Ct,ChannelSet:()=>N,ChannelSetSchema:()=>q,ConsoleSink:()=>J,Formatter:()=>ge,GLOBAL_LOGGER:()=>P,JITTER_STATS_INITIAL:()=>At,JsonSchema:()=>C,LogFilter:()=>F,LogLevel:()=>Q,LogSymbols:()=>fe,Logger:()=>k,MainCommandsRpc:()=>Ue,MainNotificationSchema:()=>Ie,MainNotificationsRpc:()=>Be,MediaAudioPropertiesSchema:()=>ne,MediaIdSchema:()=>S,MediaPropertiesSchema:()=>j,MediaSchema:()=>U,MediaVideoPropertiesSchema:()=>oe,MessagePackRpcSchema:()=>Me,MessageReceivedSchema:()=>O,MinDBFS:()=>Cr,PeerIdSchema:()=>x,PeerPositionSchema:()=>L,PeerSchema:()=>_,PeerUpdateSchema:()=>I,RoomCommandsRpc:()=>_e,RoomNotificationSchema:()=>Ne,RoomNotificationsRpc:()=>Oe,RoomV1:()=>z,RoomV2:()=>ae,Selector:()=>H,Strand:()=>Z,TokenAudienceSchema:()=>te,TokenClaimsSchema:()=>je,TokenSubjectSchema:()=>re,VAD_DEFAULTS:()=>Lt,VideoCodec:()=>$,WebRtcUpdateSchema:()=>R,abortableSleep:()=>Qe,assert:()=>w,debug:()=>Pt,error:()=>zt,extendUrl:()=>rt,fail:()=>G,failure:()=>h,find:()=>qe,fromBase64:()=>De,fromBase64Url:()=>Fe,fromBytes:()=>Ve,generateUUID:()=>ot,info:()=>Rt,isAudioCapable:()=>Ge,isBlinkBrowser:()=>pe,isElectronBrowser:()=>He,isFailure:()=>mt,isFirefoxBrowser:()=>Ze,isFunction:()=>st,isNull:()=>pt,isNumber:()=>ct,isObject:()=>ut,isProperty:()=>at,isSafariBrowser:()=>Ye,isSharedArrayBufferCapable:()=>$e,isString:()=>dt,isSuccess:()=>ft,isUndefined:()=>lt,log:()=>Tt,nextTick:()=>et,normalizeUrl:()=>tt,oneOrMany:()=>A,sleep:()=>Xe,success:()=>y,toBytes:()=>Je,toRaw:()=>Ke,tryParseLogFilter:()=>St,unwrap:()=>Ee,unwrapOr:()=>E,validateUUID:()=>it,warn:()=>kt});module.exports=Le(Mt);var d=require("zod"),b=d.z.custom(e=>e instanceof Uint8Array),we=d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.null()]),C=d.z.lazy(()=>d.z.union([we,d.z.array(C),d.z.record(d.z.string(),C)])),Me=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"),te=c.z.enum(["sfu","gateway"]),re=c.z.enum(["connect","roomclose","roomupdate","roombanclient","roomsendmessage"]),je=c.z.object({uid:c.z.string(),cid:c.z.optional(c.z.string()),rid:A(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(A(te)),sub:c.z.optional(A(re)),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(e){return c.z.union([e.transform(t=>[t]),c.z.array(e)])}var r=T(require("zod"));var u=T(require("zod")),S=u.number(),ne=u.object({kind:u.optional(u.literal("audio")),uid:u.optional(u.string()),customType:u.optional(u.string())}),oe=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())}),j=u.union([ne,oe]),U=u.object({id:S,properties:j,paused:u.boolean()});var l=T(require("zod"));var x=l.number(),L=l.union([l.tuple([l.number(),l.number(),l.number()]),l.tuple([l.number(),l.number()])]),_=l.object({id:x,user_id:l.string(),user_data:b,medias:l.array(U)}),I=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:U}),l.object({kind:l.literal("MediaStopped"),peer_id:x,media_id:S})]);var ie=T(require("zod")),N=class e{constructor(t=BigInt(0)){this.value=t}from(...t){let n=t.reduce((s,m)=>s|B(m),BigInt(0));return new e(n)}contains(t){return(this.value&B(t))!==BigInt(0)}insert(t){this.value|=B(t)}remove(t){this.value&=~B(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}}}}},q=ie.bigint().transform(e=>new N(e));function B(e){return BigInt(1)<<BigInt(e)}var z;(p=>(p.RoomIdSchema=r.string(),p.RoomSchema=r.object({id:p.RoomIdSchema,customer:r.string(),user_data:b,peers:r.array(_)}),p.RoomUpdateSchema=r.discriminatedUnion("kind",[r.object({kind:r.literal("Joined"),room:p.RoomSchema,media_ids:r.array(S),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:_}),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())})))(z||={});var ae;(i=>(i.ParametersSchema=r.record(r.string(),C),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:q})}),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)))(ae||={});var se=require("zod");var O=se.z.object({sender_peer_id:x,message:b});var a=T(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([S,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 Ue={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:b,position:L}),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()}},_e={Hello:{request:o.z.object({stream:o.z.literal("room"),token:o.z.string(),room_id:o.z.string(),user_data:b,position:L}),response:o.z.null()},UpdatePeer:{request:o.z.object({user_data:b}),response:o.z.null()},StartMedia:{request:o.z.object({media_id:S,properties:j}),response:o.z.null()},StopMedia:{request:o.z.object({media_id:S}),response:o.z.null()},PauseMedia:{request:o.z.object({media_id:S}),response:o.z.null()},ResumeMedia:{request:o.z.object({media_id:S}),response:o.z.null()},SetPeerPosition:{request:o.z.object({position:L}),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 v=require("zod");var Ie=v.z.object({name:v.z.literal("WebRtcUpdate"),properties:R}),Be={WebRtcUpdate:R},Ne=v.z.union([v.z.object({name:v.z.literal("RoomStatusChanged"),properties:z.RoomStatusChangedSchema}),v.z.object({name:v.z.literal("RoomUpdated"),properties:z.RoomUpdatesSchema}),v.z.object({name:v.z.literal("PeerUpdated"),properties:I}),v.z.object({name:v.z.literal("MessageReceived"),properties:O})]),Oe={RoomStatusChanged:z.RoomStatusChangedSchema,RoomUpdated:z.RoomUpdatesSchema,PeerUpdated:I,MessageReceived:O};function w(e,t){e||G(t)}function G(e){throw new Error(e)}function y(e){return{type:"Success",value:e}}function h(e){return{type:"Failure",reason:e}}function Ee(e){return e.type==="Failure"&&G(e.reason),e.value}function E(e,t){return e.type==="Success"?e.value:t}function De(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 h(String(t))}}function Fe(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 h(String(t))}}function Je(e){try{w(e!==void 0,"undefined cannot be converted to byte array"),w(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 h(String(t))}}function Ve(e){try{w(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 h(String(t))}}var We=["VP8","VP9","AV1","H264"],$=class{constructor(t){this.codec=t}channels=0;clockRate=9e4;isValid(){return We.includes(this.codec)}isSupported(){if(typeof RTCRtpReceiver>"u"||typeof RTCRtpReceiver.getCapabilities>"u")return null;let t=E(this.getMimeType(),"").toLowerCase(),n=new Set(E(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 h("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 h("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 h("invalid video codec")}}};function qe(e,t){for(let n of e)if(t(n))return n}function Ge(){return typeof AudioContext<"u"&&typeof Worker<"u"}function $e(){return typeof SharedArrayBuffer<"u"}function pe(){return/(apple)?webkit\/537\.36/i.test(globalThis.navigator.userAgent)}function He(){return/electron/i.test(globalThis.navigator.userAgent)}function Ze(){return/firefox|iceweasel|fxios/i.test(globalThis.navigator.userAgent)}function Ye(){return pe()?!1:/safari|applewebkit/i.test(globalThis.navigator.userAgent)}function Ke(e){return JSON.parse(JSON.stringify(e))}var H=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 Xe(e,t){return e<=0?Promise.resolve(t):new Promise(n=>setTimeout(()=>n(t),e))}function Qe(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 et(){return new Promise(e=>setTimeout(e,0))}var Z=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 tt(e){let t=e.trim();e.indexOf("://")===-1&&(t=`https://${t}`);try{return y(new URL(t))}catch(n){return h(String(n))}}function rt(e,t){let n=e.pathname;n.endsWith("/")===!1&&(n+="/");try{return y(new URL(n+t,e))}catch(s){return h(String(s))}}var nt=/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;function ot(){return crypto.randomUUID()}function it(e){return nt.test(e)}function at(e,t){return t in e}function st(e){return typeof e=="function"}function pt(e){return typeof e=="object"&&e===null}function ct(e){return typeof e=="number"}function ut(e){return typeof e=="object"}function dt(e){return typeof e=="string"}function lt(e){return typeof e>"u"}function mt(e){return e.type==="Failure"}function ft(e){return e.type==="Success"}var{Deno:ce}=globalThis,gt=typeof ce?.noColor=="boolean"?ce.noColor:!1,yt=!gt;function Y(e,t){return{open:`\x1B[${e.join(";")}m`,close:`\x1B[${t}m`,regexp:new RegExp(`\\x1b\\[${t}m`,"g")}}function K(e,t){return yt?`${t.open}${e.replace(t.regexp,t.open)}${t.close}`:e}function D(e){return K(e,Y([0],0))}function X(e){return K(e,Y([1],22))}function ue(e){return K(e,Y([2],22))}var Pr=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 F=(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))(F||{}),xt=new Date,Q=(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))(Q||{}),fe={1:"\u{1F4A5}",2:"\u{1F534}",3:"\u{1F7E1}",4:"\u{1F535}",5:"\u{1F7E3}"},ht={5:ue,4:D,3:D,2:X,1:X};function St(e){for(let t of Object.keys(F))if(isNaN(Number(t))!==!1&&t.localeCompare(e,void 0,{sensitivity:"accent"})===0)return F[t]}function vt({message:e}){return String(e)}function de(e){return JSON.stringify({timestamp:e.date.toISOString(),level:Q[e.level],message:e.message,extra:e.extra})}function le(e){function t(p,g){return[Math.floor(p/g),p%g]}function n(){let p,g=e.date.valueOf()-xt.valueOf();[g,p]=t(g,1e3);let[V,W]=t(g,60);return`${V.toString().padStart(4,"0")}:${W.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=fe[e.level],f=e.logger.name!==void 0?`@${e.logger}`:"";return`${D(n())}${f} ${m} ${ht[e.level](String(e.message))}${s()}`}var ge={sparse:vt,json:de,pretty:le,default:"Deno"in globalThis&&Deno.stdout.isTerminal()?le:de},J=class{#e;#t;filter;constructor(t=ge.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}}},k=class{#e;sinks;filter;get name(){return this.#e}constructor(t,n=void 0,s=[new J]){this.#e=n,this.sinks=s,this.filter=t}log(t,n,s=void 0){if(this.filter<t)return;let m=me;for(let f of this.sinks)f.filter<t||(m===me&&(m={date:new Date,level:t,logger:this,message:typeof n=="function"?n():n,extra:s}),f.handle(m))}error=this.log.bind(this,2);warn=this.log.bind(this,3);info=this.log.bind(this,4);debug=this.log.bind(this,5)},P=new k(4),zt=k.prototype.log.bind(P,2),kt=k.prototype.log.bind(P,3),Rt=k.prototype.log.bind(P,4),Pt=k.prototype.log.bind(P,5),Tt=k.prototype.log.bind(P),me=Symbol();var Cr=-758.596,ye;(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||={})})(ye||={});var Ct={bytesSent:0,bytesReceived:0,packetsSent:0,packetsReceived:0,rtt:0,packetLoss:0},At={packetsBuffered:0,packetsSeen:0,packetsProcessed:0,packetsTooEarly:0,packetsTooLate:0,packetsDropped:0,packetsInvalid:0,packetsRepeated:0,packetsLost:0},Lt={voiceActivity:{attackThreshold:.9,releaseThreshold:.8},volumeGate:{attackThreshold:-30,releaseThreshold:-40}},wt={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 Ce=Object.create;var M=Object.defineProperty;var ke=Object.getOwnPropertyDescriptor;var Re=Object.getOwnPropertyNames;var Pe=Object.getPrototypeOf,Te=Object.prototype.hasOwnProperty;var Ae=(e,t)=>{for(var n in t)M(e,n,{get:t[n],enumerable:!0})},ee=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let p of Re(t))!Te.call(e,p)&&p!==n&&M(e,p,{get:()=>t[p],enumerable:!(o=ke(t,p))||o.enumerable});return e};var P=(e,t,n)=>(n=e!=null?Ce(Pe(e)):{},ee(t||!e||!e.__esModule?M(n,"default",{value:e,enumerable:!0}):n,e)),Le=e=>ee(M({},"__esModule",{value:!0}),e);var _t={};Ae(_t,{APM_DEFAULTS:()=>Nt,Backend:()=>ye,ByteArraySchema:()=>x,CONNECTION_STATS_INITIAL:()=>Mt,ChannelSet:()=>B,ChannelSetSchema:()=>K,ConsoleSink:()=>V,Formatter:()=>ge,GLOBAL_LOGGER:()=>R,JITTER_STATS_INITIAL:()=>jt,JsonSchema:()=>T,LogFilter:()=>F,LogLevel:()=>Q,LogSymbols:()=>fe,Logger:()=>C,MainCommandsRpc:()=>Ie,MainNotificationSchema:()=>Ee,MainNotificationsRpc:()=>De,MediaAudioPropertiesSchema:()=>ne,MediaIdSchema:()=>S,MediaPropertiesSchema:()=>j,MediaSchema:()=>U,MediaVideoPropertiesSchema:()=>oe,MessagePackRpcSchema:()=>Me,MessageReceivedSchema:()=>O,MinDBFS:()=>Mr,PeerIdSchema:()=>b,PeerPositionSchema:()=>L,PeerSchema:()=>N,PeerUpdateSchema:()=>_,RoomCommandsRpc:()=>Be,RoomNotificationSchema:()=>Fe,RoomNotificationsRpc:()=>Ve,RoomV1:()=>z,RoomV2:()=>ae,Selector:()=>$,Strand:()=>H,TokenAudienceSchema:()=>te,TokenClaimsSchema:()=>je,TokenSubjectSchema:()=>re,VAD_DEFAULTS:()=>Ut,VideoCodec:()=>G,WebRtcUpdateSchema:()=>k,abortableSleep:()=>nt,assert:()=>w,debug:()=>Lt,error:()=>Pt,extendUrl:()=>at,fail:()=>W,failure:()=>h,find:()=>He,fromBase64:()=>qe,fromBase64Url:()=>Ke,fromBytes:()=>Ge,generateUUID:()=>pt,info:()=>At,isAudioCapable:()=>Ze,isBlinkBrowser:()=>pe,isElectronBrowser:()=>Xe,isFailure:()=>xt,isFirefoxBrowser:()=>Qe,isFunction:()=>dt,isNull:()=>mt,isNumber:()=>lt,isObject:()=>ft,isProperty:()=>ut,isSafariBrowser:()=>et,isSharedArrayBufferCapable:()=>Ye,isString:()=>gt,isSuccess:()=>bt,isUndefined:()=>yt,log:()=>wt,nextTick:()=>ot,normalizeUrl:()=>it,oneOrMany:()=>A,parseCommand:()=>Ue,parseNotification:()=>Oe,parseRequest:()=>Ne,parseResponse:()=>_e,sleep:()=>rt,success:()=>y,toBytes:()=>We,toRaw:()=>tt,tryParseLogFilter:()=>kt,unwrap:()=>Je,unwrapOr:()=>E,validateUUID:()=>ct,warn:()=>Tt});module.exports=Le(_t);var m=require("zod"),x=m.z.custom(e=>e instanceof Uint8Array),we=m.z.union([m.z.string(),m.z.number(),m.z.boolean(),m.z.null()]),T=m.z.lazy(()=>m.z.union([we,m.z.array(T),m.z.record(m.z.string(),T)])),Me=m.z.union([m.z.tuple([m.z.literal(0),m.z.number(),m.z.string(),m.z.unknown()]),m.z.tuple([m.z.literal(1),m.z.number(),m.z.nullable(m.z.string()),m.z.unknown()]),m.z.tuple([m.z.literal(2),m.z.string(),m.z.unknown()])]);var u=require("zod"),te=u.z.enum(["sfu","gateway"]),re=u.z.enum(["connect","roomclose","roomupdate","roombanclient","roomsendmessage"]),je=u.z.object({uid:u.z.string(),cid:u.z.optional(u.z.string()),rid:A(u.z.string()).refine(e=>e.length>=1,{message:"missing rid"}),nsp:u.z.optional(u.z.string()),adr:u.z.optional(u.z.string()),aud:u.z.optional(A(te)),sub:u.z.optional(A(re)),exp:u.z.optional(u.z.number()),nbf:u.z.optional(u.z.number()),ups:u.z.optional(u.z.string()),tgs:u.z.optional(A(u.z.string())),tsp:u.z.optional(u.z.number()),internal:u.z.optional(u.z.object({server:u.z.optional(u.z.string())}))});function A(e){return u.z.union([e.transform(t=>[t]),u.z.array(e)])}var r=P(require("zod"));var d=P(require("zod")),S=d.number(),ne=d.object({kind:d.optional(d.literal("audio")),uid:d.optional(d.string()),customType:d.optional(d.string())}),oe=d.object({kind:d.optional(d.literal("video")),codec:d.optional(d.string()),uid:d.optional(d.string()),customType:d.optional(d.string()),id:d.optional(d.string())}),j=d.union([ne,oe]),U=d.object({id:S,properties:j,paused:d.boolean()});var l=P(require("zod"));var b=l.number(),L=l.union([l.tuple([l.number(),l.number(),l.number()]),l.tuple([l.number(),l.number()])]),N=l.object({id:b,user_id:l.string(),user_data:x,medias:l.array(U)}),_=l.discriminatedUnion("kind",[l.object({kind:l.literal("UserDataChanged"),peer_id:b,user_data:x}),l.object({kind:l.literal("MediaStarted"),peer_id:b,media:U}),l.object({kind:l.literal("MediaStopped"),peer_id:b,media_id:S})]);var ie=P(require("zod")),B=class e{constructor(t=BigInt(0)){this.value=t}from(...t){let n=t.reduce((o,p)=>o|I(p),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}}}}},K=ie.bigint().transform(e=>new B(e));function I(e){return BigInt(1)<<BigInt(e)}var z;(c=>(c.RoomIdSchema=r.string(),c.RoomSchema=r.object({id:c.RoomIdSchema,customer:r.string(),user_data:x,peers:r.array(N)}),c.RoomUpdateSchema=r.discriminatedUnion("kind",[r.object({kind:r.literal("Joined"),room:c.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(x)}),r.object({kind:r.literal("PeerJoined"),peer:N}),r.object({kind:r.literal("PeerLeft"),peer_id:b})]),c.RoomUpdatesSchema=r.object({updates:r.array(c.RoomUpdateSchema)}),c.RoomStatusSchema=r.enum(["Joining","Joined","Closed"]),c.RoomStatusChangedSchema=r.object({status:c.RoomStatusSchema,message:r.optional(r.string())})))(z||={});var ae;(a=>(a.ParametersSchema=r.record(r.string(),T),a.PeerProperties=r.object({user_data:x.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:K})}),a.SendMessageSchema=r.object({SendMessage:r.object({peer_ids:r.number().array().default([]),message:x})}),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:x})}),a.ErrorSchema=r.object({Error:r.object({message:x})}),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)))(ae||={});var se=require("zod");var O=se.z.object({sender_peer_id:b,message:x});var s=P(require("zod"));var k=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")})]);var i=require("zod");function Ue(e,t,n){let o=n[e];if(!o)return;let p=o.request.safeParse(t);return p.success?{name:e,request:p.data}:void 0}function Ne(e,t,n){return n[e].request.parse(t)}function _e(e,t,n){let o=n[e].response.safeParse(t);return o.success?o.data:void 0}var Ie={Hello:{request:i.z.object({stream:i.z.literal("main")}),response:i.z.null()},JoinRoom:{request:i.z.object({token:i.z.string(),room_id:z.RoomIdSchema,user_data:x,position:L}),response:i.z.object({peer_id:b,stream_id:i.z.optional(i.z.number()),token:i.z.optional(i.z.string())})},WebRtcUpdate:{request:k,response:i.z.null()},RequestReconnectToken:{request:i.z.object({peer_id:i.z.optional(b)}),response:i.z.string()},Ping:{request:i.z.object({}),response:i.z.null()}},Be={Hello:{request:i.z.object({stream:i.z.literal("room"),token:i.z.string(),room_id:i.z.string(),user_data:x,position:L}),response:i.z.null()},UpdatePeer:{request:i.z.object({user_data:x}),response:i.z.null()},StartMedia:{request:i.z.object({media_id:S,properties:j}),response:i.z.null()},StopMedia:{request:i.z.object({media_id:S}),response:i.z.null()},PauseMedia:{request:i.z.object({media_id:S}),response:i.z.null()},ResumeMedia:{request:i.z.object({media_id:S}),response:i.z.null()},SetPeerPosition:{request:i.z.object({position:L}),response:i.z.null()},SendMessage:{request:i.z.object({target_peer_ids:i.z.optional(i.z.array(b)),message:x}),response:i.z.null()}};var v=require("zod");function Oe(e,t,n){let o=n[e];if(!o)return;let p=o.safeParse(t);return p.success?{name:e,properties:p.data}:void 0}var Ee=v.z.object({name:v.z.literal("WebRtcUpdate"),properties:k}),De={WebRtcUpdate:k},Fe=v.z.union([v.z.object({name:v.z.literal("RoomStatusChanged"),properties:z.RoomStatusChangedSchema}),v.z.object({name:v.z.literal("RoomUpdated"),properties:z.RoomUpdatesSchema}),v.z.object({name:v.z.literal("PeerUpdated"),properties:_}),v.z.object({name:v.z.literal("MessageReceived"),properties:O})]),Ve={RoomStatusChanged:z.RoomStatusChangedSchema,RoomUpdated:z.RoomUpdatesSchema,PeerUpdated:_,MessageReceived:O};function w(e,t){e||W(t)}function W(e){throw new Error(e)}function y(e){return{type:"Success",value:e}}function h(e){return{type:"Failure",reason:e}}function Je(e){return e.type==="Failure"&&W(e.reason),e.value}function E(e,t){return e.type==="Success"?e.value:t}function qe(e){try{let t=atob(e),n=Uint8Array.from(t,p=>p.codePointAt(0)),o=new TextDecoder("utf8");return y(o.decode(n))}catch(t){return h(String(t))}}function Ke(e){try{let t=atob(e.replace(/-/g,"+").replace(/_/g,"/")),n=Uint8Array.from(t,p=>p.codePointAt(0)),o=new TextDecoder("utf8");return y(o.decode(n))}catch(t){return h(String(t))}}function We(e){try{w(e!==void 0,"undefined cannot be converted to byte array"),w(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 h(String(t))}}function Ge(e){try{w(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 h(String(t))}}var $e=["VP8","VP9","AV1","H264"],G=class{constructor(t){this.codec=t}channels=0;clockRate=9e4;isValid(){return $e.includes(this.codec)}isSupported(){if(typeof RTCRtpReceiver>"u"||typeof RTCRtpReceiver.getCapabilities>"u")return null;let t=E(this.getMimeType(),"").toLowerCase(),n=new Set(E(this.getSdpFmtpLine(),"").split(";").map(o=>o.trim().toLowerCase()));return RTCRtpReceiver.getCapabilities("video")?.codecs?.find(o=>{let p=o.mimeType.toLowerCase(),f=new Set((o.sdpFmtpLine??"").split(";").map(c=>c.trim().toLowerCase()));if(t!==p||n.size!==f.size)return!1;for(let c of n)if(!f.has(c))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 h("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 h("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 h("invalid video codec")}}};function He(e,t){for(let n of e)if(t(n))return n}function Ze(){return typeof AudioContext<"u"&&typeof Worker<"u"}function Ye(){return typeof SharedArrayBuffer<"u"}function pe(){return/(apple)?webkit\/537\.36/i.test(globalThis.navigator.userAgent)}function Xe(){return/electron/i.test(globalThis.navigator.userAgent)}function Qe(){return/firefox|iceweasel|fxios/i.test(globalThis.navigator.userAgent)}function et(){return pe()?!1:/safari|applewebkit/i.test(globalThis.navigator.userAgent)}function tt(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 rt(e,t){return e<=0?Promise.resolve(t):new Promise(n=>setTimeout(()=>n(t),e))}function nt(e,t){return t.aborted?Promise.resolve("aborted"):new Promise(n=>{let o=()=>n("aborted");t.addEventListener("abort",o,{once:!0}),setTimeout(()=>{t.removeEventListener("abort",o),n(void 0)},e)})}function ot(){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,o)=>{let p=async()=>{try{let f=await t(...this._Values);n(f)}catch(f){o(f)}};this._Tasks.push(p),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 it(e){let t=e.trim();e.indexOf("://")===-1&&(t=`https://${t}`);try{return y(new URL(t))}catch(n){return h(String(n))}}function at(e,t){let n=e.pathname;n.endsWith("/")===!1&&(n+="/");try{return y(new URL(n+t,e))}catch(o){return h(String(o))}}var st=/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;function pt(){return crypto.randomUUID()}function ct(e){return st.test(e)}function ut(e,t){return t in e}function dt(e){return typeof e=="function"}function mt(e){return typeof e=="object"&&e===null}function lt(e){return typeof e=="number"}function ft(e){return typeof e=="object"}function gt(e){return typeof e=="string"}function yt(e){return typeof e>"u"}function xt(e){return e.type==="Failure"}function bt(e){return e.type==="Success"}var{Deno:ce}=globalThis,ht=typeof ce?.noColor=="boolean"?ce.noColor:!1,St=!ht;function Z(e,t){return{open:`\x1B[${e.join(";")}m`,close:`\x1B[${t}m`,regexp:new RegExp(`\\x1b\\[${t}m`,"g")}}function Y(e,t){return St?`${t.open}${e.replace(t.regexp,t.open)}${t.close}`:e}function D(e){return Y(e,Z([0],0))}function X(e){return Y(e,Z([1],22))}function ue(e){return Y(e,Z([2],22))}var Lr=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 F=(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))(F||{}),zt=new Date,Q=(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))(Q||{}),fe={1:"\u{1F4A5}",2:"\u{1F534}",3:"\u{1F7E1}",4:"\u{1F535}",5:"\u{1F7E3}"},Ct={5:ue,4:D,3:D,2:X,1:X};function kt(e){for(let t of Object.keys(F))if(isNaN(Number(t))!==!1&&t.localeCompare(e,void 0,{sensitivity:"accent"})===0)return F[t]}function Rt({message:e}){return String(e)}function de(e){return JSON.stringify({timestamp:e.date.toISOString(),level:Q[e.level],message:e.message,extra:e.extra})}function me(e){function t(c,g){return[Math.floor(c/g),c%g]}function n(){let c,g=e.date.valueOf()-zt.valueOf();[g,c]=t(g,1e3);let[J,q]=t(g,60);return`${J.toString().padStart(4,"0")}:${q.toString().padStart(2,"0")}.${c.toString().padStart(4,"0")}`}function o(){return e.extra===void 0?"":"Deno"in globalThis?" "+Deno.inspect(e.extra,{compact:!1,colors:!0,trailingComma:!0}).trimStart():" "+JSON.stringify(e.extra)}let p=fe[e.level],f=e.logger.name!==void 0?`@${e.logger}`:"";return`${D(n())}${f} ${p} ${Ct[e.level](String(e.message))}${o()}`}var ge={sparse:Rt,json:de,pretty:me,default:"Deno"in globalThis&&Deno.stdout.isTerminal()?me:de},V=class{#e;#t;filter;constructor(t=ge.default,n=6,o=console){this.filter=n,this.#e=t,this.#t=o}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}}},C=class{#e;sinks;filter;get name(){return this.#e}constructor(t,n=void 0,o=[new V]){this.#e=n,this.sinks=o,this.filter=t}log(t,n,o=void 0){if(this.filter<t)return;let p=le;for(let f of this.sinks)f.filter<t||(p===le&&(p={date:new Date,level:t,logger:this,message:typeof n=="function"?n():n,extra:o}),f.handle(p))}error=this.log.bind(this,2);warn=this.log.bind(this,3);info=this.log.bind(this,4);debug=this.log.bind(this,5)},R=new C(4),Pt=C.prototype.log.bind(R,2),Tt=C.prototype.log.bind(R,3),At=C.prototype.log.bind(R,4),Lt=C.prototype.log.bind(R,5),wt=C.prototype.log.bind(R),le=Symbol();var Mr=-758.596,ye;(t=>{let e;(c=>(c[c.InvalidPassword=-1]="InvalidPassword",c[c.Unknown=0]="Unknown",c[c.Unencrypted=1]="Unencrypted",c[c.Encrypted=2]="Encrypted"))(e=t.PeerCipherStatus||={})})(ye||={});var Mt={bytesSent:0,bytesReceived:0,packetsSent:0,packetsReceived:0,rtt:0,packetLoss:0},jt={packetsBuffered:0,packetsSeen:0,packetsProcessed:0,packetsTooEarly:0,packetsTooLate:0,packetsDropped:0,packetsInvalid:0,packetsRepeated:0,packetsLost:0},Ut={voiceActivity:{attackThreshold:.9,releaseThreshold:.8},volumeGate:{attackThreshold:-30,releaseThreshold:-40}},Nt={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,parseCommand,parseNotification,parseRequest,parseResponse,sleep,success,toBytes,toRaw,tryParseLogFilter,unwrap,unwrapOr,validateUUID,warn});
|
package/esm/mod.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{z as d}from"zod";var b=d.custom(e=>e instanceof Uint8Array),ue=d.union([d.string(),d.number(),d.boolean(),d.null()]),T=d.lazy(()=>d.union([ue,d.array(T),d.record(d.string(),T)])),Me=d.union([d.tuple([d.literal(0),d.number(),d.string(),d.unknown()]),d.tuple([d.literal(1),d.number(),d.nullable(d.string()),d.unknown()]),d.tuple([d.literal(2),d.string(),d.unknown()])]);import{z as p}from"zod";var de=p.enum(["sfu","gateway"]),le=p.enum(["connect","roomclose","roomupdate","roombanclient","roomsendmessage"]),_e=p.object({uid:p.string(),cid:p.optional(p.string()),rid:C(p.string()).refine(e=>e.length>=1,{message:"missing rid"}),nsp:p.optional(p.string()),adr:p.optional(p.string()),aud:p.optional(C(de)),sub:p.optional(C(le)),exp:p.optional(p.number()),nbf:p.optional(p.number()),ups:p.optional(p.string()),tgs:p.optional(C(p.string())),tsp:p.optional(p.number()),internal:p.optional(p.object({server:p.optional(p.string())}))});function C(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(),me=c.object({kind:c.optional(c.literal("audio")),uid:c.optional(c.string()),customType:c.optional(c.string())}),fe=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())}),_=c.union([me,fe]),I=c.object({id:S,properties:_,paused:c.boolean()});import*as l from"zod";var x=l.number(),A=l.union([l.tuple([l.number(),l.number(),l.number()]),l.tuple([l.number(),l.number()])]),B=l.object({id:x,user_id:l.string(),user_data:b,medias:l.array(I)}),N=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:I}),l.object({kind:l.literal("MediaStopped"),peer_id:x,media_id:S})]);import*as G from"zod";var O=class e{constructor(t=BigInt(0)){this.value=t}from(...t){let n=t.reduce((u,y)=>u|L(y),BigInt(0));return new e(n)}contains(t){return(this.value&L(t))!==BigInt(0)}insert(t){this.value|=L(t)}remove(t){this.value&=~L(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}}}}},$=G.bigint().transform(e=>new O(e));function L(e){return BigInt(1)<<BigInt(e)}var z;(s=>(s.RoomIdSchema=r.string(),s.RoomSchema=r.object({id:s.RoomIdSchema,customer:r.string(),user_data:b,peers:r.array(B)}),s.RoomUpdateSchema=r.discriminatedUnion("kind",[r.object({kind:r.literal("Joined"),room:s.RoomSchema,media_ids:r.array(S),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:B}),r.object({kind:r.literal("PeerLeft"),peer_id:x})]),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())})))(z||={});var ge;(i=>(i.ParametersSchema=r.record(r.string(),T),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:$})}),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)))(ge||={});import{z as ye}from"zod";var E=ye.object({sender_peer_id:x,message:b});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([S,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 ot={Hello:{request:o.object({stream:o.literal("main")}),response:o.null()},JoinRoom:{request:o.object({token:o.string(),room_id:z.RoomIdSchema,user_data:b,position:A}),response:o.object({peer_id:x,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(x)}),response:o.string()},Ping:{request:o.object({}),response:o.null()}},it={Hello:{request:o.object({stream:o.literal("room"),token:o.string(),room_id:o.string(),user_data:b,position:A}),response:o.null()},UpdatePeer:{request:o.object({user_data:b}),response:o.null()},StartMedia:{request:o.object({media_id:S,properties:_}),response:o.null()},StopMedia:{request:o.object({media_id:S}),response:o.null()},PauseMedia:{request:o.object({media_id:S}),response:o.null()},ResumeMedia:{request:o.object({media_id:S}),response:o.null()},SetPeerPosition:{request:o.object({position:A}),response:o.null()},SendMessage:{request:o.object({target_peer_ids:o.optional(o.array(x)),message:b}),response:o.null()}};import{z as v}from"zod";var lt=v.object({name:v.literal("WebRtcUpdate"),properties:R}),mt={WebRtcUpdate:R},ft=v.union([v.object({name:v.literal("RoomStatusChanged"),properties:z.RoomStatusChangedSchema}),v.object({name:v.literal("RoomUpdated"),properties:z.RoomUpdatesSchema}),v.object({name:v.literal("PeerUpdated"),properties:N}),v.object({name:v.literal("MessageReceived"),properties:E})]),gt={RoomStatusChanged:z.RoomStatusChangedSchema,RoomUpdated:z.RoomUpdatesSchema,PeerUpdated:N,MessageReceived:E};function w(e,t){e||H(t)}function H(e){throw new Error(e)}function g(e){return{type:"Success",value:e}}function h(e){return{type:"Failure",reason:e}}function bt(e){return e.type==="Failure"&&H(e.reason),e.value}function D(e,t){return e.type==="Success"?e.value:t}function St(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 h(String(t))}}function vt(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 h(String(t))}}function Rt(e){try{w(e!==void 0,"undefined cannot be converted to byte array"),w(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 h(String(t))}}function Pt(e){try{w(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 h(String(t))}}var be=["VP8","VP9","AV1","H264"],Z=class{constructor(t){this.codec=t}channels=0;clockRate=9e4;isValid(){return be.includes(this.codec)}isSupported(){if(typeof RTCRtpReceiver>"u"||typeof RTCRtpReceiver.getCapabilities>"u")return null;let t=D(this.getMimeType(),"").toLowerCase(),n=new Set(D(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 h("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 h("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 h("invalid video codec")}}};function Lt(e,t){for(let n of e)if(t(n))return n}function Mt(){return typeof AudioContext<"u"&&typeof Worker<"u"}function jt(){return typeof SharedArrayBuffer<"u"}function xe(){return/(apple)?webkit\/537\.36/i.test(globalThis.navigator.userAgent)}function Ut(){return/electron/i.test(globalThis.navigator.userAgent)}function _t(){return/firefox|iceweasel|fxios/i.test(globalThis.navigator.userAgent)}function It(){return xe()?!1:/safari|applewebkit/i.test(globalThis.navigator.userAgent)}function Nt(e){return JSON.parse(JSON.stringify(e))}var Y=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 Dt(e,t){return e<=0?Promise.resolve(t):new Promise(n=>setTimeout(()=>n(t),e))}function Ft(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 Jt(){return new Promise(e=>setTimeout(e,0))}var K=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 Gt(e){let t=e.trim();e.indexOf("://")===-1&&(t=`https://${t}`);try{return g(new URL(t))}catch(n){return h(String(n))}}function $t(e,t){let n=e.pathname;n.endsWith("/")===!1&&(n+="/");try{return g(new URL(n+t,e))}catch(u){return h(String(u))}}var he=/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;function Zt(){return crypto.randomUUID()}function Yt(e){return he.test(e)}function Xt(e,t){return t in e}function Qt(e){return typeof e=="function"}function er(e){return typeof e=="object"&&e===null}function tr(e){return typeof e=="number"}function rr(e){return typeof e=="object"}function nr(e){return typeof e=="string"}function or(e){return typeof e>"u"}function ir(e){return e.type==="Failure"}function ar(e){return e.type==="Success"}var{Deno:X}=globalThis,Se=typeof X?.noColor=="boolean"?X.noColor:!1,ve=!Se;function F(e,t){return{open:`\x1B[${e.join(";")}m`,close:`\x1B[${t}m`,regexp:new RegExp(`\\x1b\\[${t}m`,"g")}}function J(e,t){return ve?`${t.open}${e.replace(t.regexp,t.open)}${t.close}`:e}function M(e){return J(e,F([0],0))}function V(e){return J(e,F([1],22))}function Q(e){return J(e,F([2],22))}var pr=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 W=(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))(W||{}),ke=new Date,ne=(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))(ne||{}),Re={1:"\u{1F4A5}",2:"\u{1F534}",3:"\u{1F7E1}",4:"\u{1F535}",5:"\u{1F7E3}"},Pe={5:Q,4:M,3:M,2:V,1:V};function cr(e){for(let t of Object.keys(W))if(isNaN(Number(t))!==!1&&t.localeCompare(e,void 0,{sensitivity:"accent"})===0)return W[t]}function Te({message:e}){return String(e)}function ee(e){return JSON.stringify({timestamp:e.date.toISOString(),level:ne[e.level],message:e.message,extra:e.extra})}function te(e){function t(s,f){return[Math.floor(s/f),s%f]}function n(){let s,f=e.date.valueOf()-ke.valueOf();[f,s]=t(f,1e3);let[j,U]=t(f,60);return`${j.toString().padStart(4,"0")}:${U.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=Re[e.level],m=e.logger.name!==void 0?`@${e.logger}`:"";return`${M(n())}${m} ${y} ${Pe[e.level](String(e.message))}${u()}`}var Ce={sparse:Te,json:ee,pretty:te,default:"Deno"in globalThis&&Deno.stdout.isTerminal()?te:ee},q=class{#e;#t;filter;constructor(t=Ce.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}}},k=class{#e;sinks;filter;get name(){return this.#e}constructor(t,n=void 0,u=[new q]){this.#e=n,this.sinks=u,this.filter=t}log(t,n,u=void 0){if(this.filter<t)return;let y=re;for(let m of this.sinks)m.filter<t||(y===re&&(y={date:new Date,level:t,logger:this,message:typeof n=="function"?n():n,extra:u}),m.handle(y))}error=this.log.bind(this,2);warn=this.log.bind(this,3);info=this.log.bind(this,4);debug=this.log.bind(this,5)},P=new k(4),ur=k.prototype.log.bind(P,2),dr=k.prototype.log.bind(P,3),lr=k.prototype.log.bind(P,4),mr=k.prototype.log.bind(P,5),fr=k.prototype.log.bind(P),re=Symbol();var yr=-758.596,Ae;(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||={})})(Ae||={});var br={bytesSent:0,bytesReceived:0,packetsSent:0,packetsReceived:0,rtt:0,packetLoss:0},xr={packetsBuffered:0,packetsSeen:0,packetsProcessed:0,packetsTooEarly:0,packetsTooLate:0,packetsDropped:0,packetsInvalid:0,packetsRepeated:0,packetsLost:0},hr={voiceActivity:{attackThreshold:.9,releaseThreshold:.8},volumeGate:{attackThreshold:-30,releaseThreshold:-40}},Sr={echoCanceller:!0,highPassFilter:!1,noiseSuppression:"Moderate",transientSuppressor:!1,gainController:!0};export{Sr as APM_DEFAULTS,Ae as Backend,b as ByteArraySchema,br as CONNECTION_STATS_INITIAL,O as ChannelSet,$ as ChannelSetSchema,q as ConsoleSink,Ce as Formatter,P as GLOBAL_LOGGER,xr as JITTER_STATS_INITIAL,T as JsonSchema,W as LogFilter,ne as LogLevel,Re as LogSymbols,k as Logger,ot as MainCommandsRpc,lt as MainNotificationSchema,mt as MainNotificationsRpc,me as MediaAudioPropertiesSchema,S as MediaIdSchema,_ as MediaPropertiesSchema,I as MediaSchema,fe as MediaVideoPropertiesSchema,Me as MessagePackRpcSchema,E as MessageReceivedSchema,yr as MinDBFS,x as PeerIdSchema,A as PeerPositionSchema,B as PeerSchema,N as PeerUpdateSchema,it as RoomCommandsRpc,ft as RoomNotificationSchema,gt as RoomNotificationsRpc,z as RoomV1,ge as RoomV2,Y as Selector,K as Strand,de as TokenAudienceSchema,_e as TokenClaimsSchema,le as TokenSubjectSchema,hr as VAD_DEFAULTS,Z as VideoCodec,R as WebRtcUpdateSchema,Ft as abortableSleep,w as assert,mr as debug,ur as error,$t as extendUrl,H as fail,h as failure,Lt as find,St as fromBase64,vt as fromBase64Url,Pt as fromBytes,Zt as generateUUID,lr as info,Mt as isAudioCapable,xe as isBlinkBrowser,Ut as isElectronBrowser,ir as isFailure,_t as isFirefoxBrowser,Qt as isFunction,er as isNull,tr as isNumber,rr as isObject,Xt as isProperty,It as isSafariBrowser,jt as isSharedArrayBufferCapable,nr as isString,ar as isSuccess,or as isUndefined,fr as log,Jt as nextTick,Gt as normalizeUrl,C as oneOrMany,Dt as sleep,g as success,Rt as toBytes,Nt as toRaw,cr as tryParseLogFilter,bt as unwrap,D as unwrapOr,Yt as validateUUID,dr as warn};
|
|
1
|
+
import{z as d}from"zod";var x=d.custom(e=>e instanceof Uint8Array),ue=d.union([d.string(),d.number(),d.boolean(),d.null()]),P=d.lazy(()=>d.union([ue,d.array(P),d.record(d.string(),P)])),Me=d.union([d.tuple([d.literal(0),d.number(),d.string(),d.unknown()]),d.tuple([d.literal(1),d.number(),d.nullable(d.string()),d.unknown()]),d.tuple([d.literal(2),d.string(),d.unknown()])]);import{z as c}from"zod";var de=c.enum(["sfu","gateway"]),me=c.enum(["connect","roomclose","roomupdate","roombanclient","roomsendmessage"]),Ne=c.object({uid:c.string(),cid:c.optional(c.string()),rid:T(c.string()).refine(e=>e.length>=1,{message:"missing rid"}),nsp:c.optional(c.string()),adr:c.optional(c.string()),aud:c.optional(T(de)),sub:c.optional(T(me)),exp:c.optional(c.number()),nbf:c.optional(c.number()),ups:c.optional(c.string()),tgs:c.optional(T(c.string())),tsp:c.optional(c.number()),internal:c.optional(c.object({server:c.optional(c.string())}))});function T(e){return c.union([e.transform(t=>[t]),c.array(e)])}import*as r from"zod";import*as u from"zod";var S=u.number(),le=u.object({kind:u.optional(u.literal("audio")),uid:u.optional(u.string()),customType:u.optional(u.string())}),fe=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())}),N=u.union([le,fe]),_=u.object({id:S,properties:N,paused:u.boolean()});import*as m from"zod";var b=m.number(),A=m.union([m.tuple([m.number(),m.number(),m.number()]),m.tuple([m.number(),m.number()])]),I=m.object({id:b,user_id:m.string(),user_data:x,medias:m.array(_)}),B=m.discriminatedUnion("kind",[m.object({kind:m.literal("UserDataChanged"),peer_id:b,user_data:x}),m.object({kind:m.literal("MediaStarted"),peer_id:b,media:_}),m.object({kind:m.literal("MediaStopped"),peer_id:b,media_id:S})]);import*as W from"zod";var O=class e{constructor(t=BigInt(0)){this.value=t}from(...t){let n=t.reduce((o,l)=>o|L(l),BigInt(0));return new e(n)}contains(t){return(this.value&L(t))!==BigInt(0)}insert(t){this.value|=L(t)}remove(t){this.value&=~L(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}}}}},G=W.bigint().transform(e=>new O(e));function L(e){return BigInt(1)<<BigInt(e)}var z;(p=>(p.RoomIdSchema=r.string(),p.RoomSchema=r.object({id:p.RoomIdSchema,customer:r.string(),user_data:x,peers:r.array(I)}),p.RoomUpdateSchema=r.discriminatedUnion("kind",[r.object({kind:r.literal("Joined"),room:p.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(x)}),r.object({kind:r.literal("PeerJoined"),peer:I}),r.object({kind:r.literal("PeerLeft"),peer_id:b})]),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())})))(z||={});var ge;(a=>(a.ParametersSchema=r.record(r.string(),P),a.PeerProperties=r.object({user_data:x.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:G})}),a.SendMessageSchema=r.object({SendMessage:r.object({peer_ids:r.number().array().default([]),message:x})}),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:x})}),a.ErrorSchema=r.object({Error:r.object({message:x})}),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)))(ge||={});import{z as ye}from"zod";var E=ye.object({sender_peer_id:b,message:x});import*as s from"zod";var k=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";function ot(e,t,n){let o=n[e];if(!o)return;let l=o.request.safeParse(t);return l.success?{name:e,request:l.data}:void 0}function it(e,t,n){return n[e].request.parse(t)}function at(e,t,n){let o=n[e].response.safeParse(t);return o.success?o.data:void 0}var st={Hello:{request:i.object({stream:i.literal("main")}),response:i.null()},JoinRoom:{request:i.object({token:i.string(),room_id:z.RoomIdSchema,user_data:x,position:A}),response:i.object({peer_id:b,stream_id:i.optional(i.number()),token:i.optional(i.string())})},WebRtcUpdate:{request:k,response:i.null()},RequestReconnectToken:{request:i.object({peer_id:i.optional(b)}),response:i.string()},Ping:{request:i.object({}),response:i.null()}},pt={Hello:{request:i.object({stream:i.literal("room"),token:i.string(),room_id:i.string(),user_data:x,position:A}),response:i.null()},UpdatePeer:{request:i.object({user_data:x}),response:i.null()},StartMedia:{request:i.object({media_id:S,properties:N}),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:A}),response:i.null()},SendMessage:{request:i.object({target_peer_ids:i.optional(i.array(b)),message:x}),response:i.null()}};import{z as v}from"zod";function gt(e,t,n){let o=n[e];if(!o)return;let l=o.safeParse(t);return l.success?{name:e,properties:l.data}:void 0}var yt=v.object({name:v.literal("WebRtcUpdate"),properties:k}),xt={WebRtcUpdate:k},bt=v.union([v.object({name:v.literal("RoomStatusChanged"),properties:z.RoomStatusChangedSchema}),v.object({name:v.literal("RoomUpdated"),properties:z.RoomUpdatesSchema}),v.object({name:v.literal("PeerUpdated"),properties:B}),v.object({name:v.literal("MessageReceived"),properties:E})]),ht={RoomStatusChanged:z.RoomStatusChangedSchema,RoomUpdated:z.RoomUpdatesSchema,PeerUpdated:B,MessageReceived:E};function w(e,t){e||$(t)}function $(e){throw new Error(e)}function y(e){return{type:"Success",value:e}}function h(e){return{type:"Failure",reason:e}}function vt(e){return e.type==="Failure"&&$(e.reason),e.value}function D(e,t){return e.type==="Success"?e.value:t}function kt(e){try{let t=atob(e),n=Uint8Array.from(t,l=>l.codePointAt(0)),o=new TextDecoder("utf8");return y(o.decode(n))}catch(t){return h(String(t))}}function Rt(e){try{let t=atob(e.replace(/-/g,"+").replace(/_/g,"/")),n=Uint8Array.from(t,l=>l.codePointAt(0)),o=new TextDecoder("utf8");return y(o.decode(n))}catch(t){return h(String(t))}}function At(e){try{w(e!==void 0,"undefined cannot be converted to byte array"),w(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 h(String(t))}}function Lt(e){try{w(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 h(String(t))}}var xe=["VP8","VP9","AV1","H264"],H=class{constructor(t){this.codec=t}channels=0;clockRate=9e4;isValid(){return xe.includes(this.codec)}isSupported(){if(typeof RTCRtpReceiver>"u"||typeof RTCRtpReceiver.getCapabilities>"u")return null;let t=D(this.getMimeType(),"").toLowerCase(),n=new Set(D(this.getSdpFmtpLine(),"").split(";").map(o=>o.trim().toLowerCase()));return RTCRtpReceiver.getCapabilities("video")?.codecs?.find(o=>{let l=o.mimeType.toLowerCase(),f=new Set((o.sdpFmtpLine??"").split(";").map(p=>p.trim().toLowerCase()));if(t!==l||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 h("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 h("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 h("invalid video codec")}}};function Ut(e,t){for(let n of e)if(t(n))return n}function _t(){return typeof AudioContext<"u"&&typeof Worker<"u"}function It(){return typeof SharedArrayBuffer<"u"}function be(){return/(apple)?webkit\/537\.36/i.test(globalThis.navigator.userAgent)}function Bt(){return/electron/i.test(globalThis.navigator.userAgent)}function Ot(){return/firefox|iceweasel|fxios/i.test(globalThis.navigator.userAgent)}function Et(){return be()?!1:/safari|applewebkit/i.test(globalThis.navigator.userAgent)}function Ft(e){return JSON.parse(JSON.stringify(e))}var Z=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 qt(e,t){return e<=0?Promise.resolve(t):new Promise(n=>setTimeout(()=>n(t),e))}function Kt(e,t){return t.aborted?Promise.resolve("aborted"):new Promise(n=>{let o=()=>n("aborted");t.addEventListener("abort",o,{once:!0}),setTimeout(()=>{t.removeEventListener("abort",o),n(void 0)},e)})}function Wt(){return new Promise(e=>setTimeout(e,0))}var Y=class{_Tasks=[];_Running=!1;_Values;constructor(...t){this._Values=t}enqueue(t){return new Promise((n,o)=>{let l=async()=>{try{let f=await t(...this._Values);n(f)}catch(f){o(f)}};this._Tasks.push(l),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 Zt(e){let t=e.trim();e.indexOf("://")===-1&&(t=`https://${t}`);try{return y(new URL(t))}catch(n){return h(String(n))}}function Yt(e,t){let n=e.pathname;n.endsWith("/")===!1&&(n+="/");try{return y(new URL(n+t,e))}catch(o){return h(String(o))}}var he=/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;function Qt(){return crypto.randomUUID()}function er(e){return he.test(e)}function rr(e,t){return t in e}function nr(e){return typeof e=="function"}function or(e){return typeof e=="object"&&e===null}function ir(e){return typeof e=="number"}function ar(e){return typeof e=="object"}function sr(e){return typeof e=="string"}function pr(e){return typeof e>"u"}function cr(e){return e.type==="Failure"}function ur(e){return e.type==="Success"}var{Deno:X}=globalThis,Se=typeof X?.noColor=="boolean"?X.noColor:!1,ve=!Se;function F(e,t){return{open:`\x1B[${e.join(";")}m`,close:`\x1B[${t}m`,regexp:new RegExp(`\\x1b\\[${t}m`,"g")}}function V(e,t){return ve?`${t.open}${e.replace(t.regexp,t.open)}${t.close}`:e}function M(e){return V(e,F([0],0))}function J(e){return V(e,F([1],22))}function Q(e){return V(e,F([2],22))}var mr=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 q=(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))(q||{}),Ce=new Date,ne=(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))(ne||{}),ke={1:"\u{1F4A5}",2:"\u{1F534}",3:"\u{1F7E1}",4:"\u{1F535}",5:"\u{1F7E3}"},Re={5:Q,4:M,3:M,2:J,1:J};function lr(e){for(let t of Object.keys(q))if(isNaN(Number(t))!==!1&&t.localeCompare(e,void 0,{sensitivity:"accent"})===0)return q[t]}function Pe({message:e}){return String(e)}function ee(e){return JSON.stringify({timestamp:e.date.toISOString(),level:ne[e.level],message:e.message,extra:e.extra})}function te(e){function t(p,g){return[Math.floor(p/g),p%g]}function n(){let p,g=e.date.valueOf()-Ce.valueOf();[g,p]=t(g,1e3);let[j,U]=t(g,60);return`${j.toString().padStart(4,"0")}:${U.toString().padStart(2,"0")}.${p.toString().padStart(4,"0")}`}function o(){return e.extra===void 0?"":"Deno"in globalThis?" "+Deno.inspect(e.extra,{compact:!1,colors:!0,trailingComma:!0}).trimStart():" "+JSON.stringify(e.extra)}let l=ke[e.level],f=e.logger.name!==void 0?`@${e.logger}`:"";return`${M(n())}${f} ${l} ${Re[e.level](String(e.message))}${o()}`}var Te={sparse:Pe,json:ee,pretty:te,default:"Deno"in globalThis&&Deno.stdout.isTerminal()?te:ee},K=class{#e;#t;filter;constructor(t=Te.default,n=6,o=console){this.filter=n,this.#e=t,this.#t=o}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}}},C=class{#e;sinks;filter;get name(){return this.#e}constructor(t,n=void 0,o=[new K]){this.#e=n,this.sinks=o,this.filter=t}log(t,n,o=void 0){if(this.filter<t)return;let l=re;for(let f of this.sinks)f.filter<t||(l===re&&(l={date:new Date,level:t,logger:this,message:typeof n=="function"?n():n,extra:o}),f.handle(l))}error=this.log.bind(this,2);warn=this.log.bind(this,3);info=this.log.bind(this,4);debug=this.log.bind(this,5)},R=new C(4),fr=C.prototype.log.bind(R,2),gr=C.prototype.log.bind(R,3),yr=C.prototype.log.bind(R,4),xr=C.prototype.log.bind(R,5),br=C.prototype.log.bind(R),re=Symbol();var Sr=-758.596,Ae;(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||={})})(Ae||={});var vr={bytesSent:0,bytesReceived:0,packetsSent:0,packetsReceived:0,rtt:0,packetLoss:0},zr={packetsBuffered:0,packetsSeen:0,packetsProcessed:0,packetsTooEarly:0,packetsTooLate:0,packetsDropped:0,packetsInvalid:0,packetsRepeated:0,packetsLost:0},Cr={voiceActivity:{attackThreshold:.9,releaseThreshold:.8},volumeGate:{attackThreshold:-30,releaseThreshold:-40}},kr={echoCanceller:!0,highPassFilter:!1,noiseSuppression:"Moderate",transientSuppressor:!1,gainController:!0};export{kr as APM_DEFAULTS,Ae as Backend,x as ByteArraySchema,vr as CONNECTION_STATS_INITIAL,O as ChannelSet,G as ChannelSetSchema,K as ConsoleSink,Te as Formatter,R as GLOBAL_LOGGER,zr as JITTER_STATS_INITIAL,P as JsonSchema,q as LogFilter,ne as LogLevel,ke as LogSymbols,C as Logger,st as MainCommandsRpc,yt as MainNotificationSchema,xt as MainNotificationsRpc,le as MediaAudioPropertiesSchema,S as MediaIdSchema,N as MediaPropertiesSchema,_ as MediaSchema,fe as MediaVideoPropertiesSchema,Me as MessagePackRpcSchema,E as MessageReceivedSchema,Sr as MinDBFS,b as PeerIdSchema,A as PeerPositionSchema,I as PeerSchema,B as PeerUpdateSchema,pt as RoomCommandsRpc,bt as RoomNotificationSchema,ht as RoomNotificationsRpc,z as RoomV1,ge as RoomV2,Z as Selector,Y as Strand,de as TokenAudienceSchema,Ne as TokenClaimsSchema,me as TokenSubjectSchema,Cr as VAD_DEFAULTS,H as VideoCodec,k as WebRtcUpdateSchema,Kt as abortableSleep,w as assert,xr as debug,fr as error,Yt as extendUrl,$ as fail,h as failure,Ut as find,kt as fromBase64,Rt as fromBase64Url,Lt as fromBytes,Qt as generateUUID,yr as info,_t as isAudioCapable,be as isBlinkBrowser,Bt as isElectronBrowser,cr as isFailure,Ot as isFirefoxBrowser,nr as isFunction,or as isNull,ir as isNumber,ar as isObject,rr as isProperty,Et as isSafariBrowser,It as isSharedArrayBufferCapable,sr as isString,ur as isSuccess,pr as isUndefined,br as log,Wt as nextTick,Zt as normalizeUrl,T as oneOrMany,ot as parseCommand,gt as parseNotification,it as parseRequest,at as parseResponse,qt as sleep,y as success,At as toBytes,Ft as toRaw,lr as tryParseLogFilter,vt as unwrap,D as unwrapOr,er as validateUUID,gr as warn};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@4players/odin-common",
|
|
3
|
-
"version": "9.1.
|
|
3
|
+
"version": "9.1.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/rpc/commands.d.ts
CHANGED
|
@@ -1,10 +1,22 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
|
|
2
|
+
import { type RpcSchema } from '../schema/serialization.ts';
|
|
3
|
+
export type Infer<T extends RpcSchema> = z.output<T>;
|
|
3
4
|
export type CommandSchema = {
|
|
4
|
-
request:
|
|
5
|
-
response:
|
|
5
|
+
request: RpcSchema;
|
|
6
|
+
response: RpcSchema;
|
|
6
7
|
};
|
|
7
8
|
export type Commands = Record<string, CommandSchema>;
|
|
9
|
+
export type CommandRequest<C extends Commands, K extends keyof C> = z.infer<C[K]['request']>;
|
|
10
|
+
export type CommandResponse<C extends Commands, K extends keyof C> = z.infer<C[K]['response']>;
|
|
11
|
+
export type ParsedCommand<C extends Commands, K extends keyof C = keyof C> = {
|
|
12
|
+
[Name in K]: {
|
|
13
|
+
name: Name;
|
|
14
|
+
request: z.infer<C[Name]['request']>;
|
|
15
|
+
};
|
|
16
|
+
}[K];
|
|
17
|
+
export declare function parseCommand<C extends Commands, K extends keyof C>(name: K, request: unknown, schema: C): ParsedCommand<C, K> | undefined;
|
|
18
|
+
export declare function parseRequest<C extends Commands, K extends keyof C>(name: K, request: unknown, schema: C): CommandRequest<C, K>;
|
|
19
|
+
export declare function parseResponse<C extends Commands, K extends keyof C>(name: K, response: unknown, schema: C): CommandResponse<C, K> | undefined;
|
|
8
20
|
export declare const MainCommandsRpc: {
|
|
9
21
|
Hello: {
|
|
10
22
|
request: z.ZodObject<{
|
package/rpc/notifications.d.ts
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
|
|
2
|
+
import type { RpcSchema } from '../schema/serialization.ts';
|
|
3
|
+
export type Notifications = Record<string, RpcSchema>;
|
|
4
|
+
export type ParsedNotification<N extends Notifications, K extends keyof N = keyof N> = {
|
|
5
|
+
[Name in K]: {
|
|
6
|
+
name: Name;
|
|
7
|
+
properties: z.infer<N[Name]>;
|
|
8
|
+
};
|
|
9
|
+
}[K];
|
|
10
|
+
export declare function parseNotification<N extends Notifications, K extends keyof N>(name: K, properties: unknown, schema: N): ParsedNotification<N, K> | undefined;
|
|
3
11
|
export declare const MainNotificationSchema: z.ZodObject<{
|
|
4
12
|
name: z.ZodLiteral<"WebRtcUpdate">;
|
|
5
13
|
properties: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
export type RpcValue = Uint8Array | string | number | boolean | null | RpcValue[] | {
|
|
3
|
+
[key: string]: RpcValue;
|
|
4
|
+
};
|
|
5
|
+
export type RpcSchema = z.ZodType<RpcValue, unknown>;
|
|
2
6
|
export declare const ByteArraySchema: z.ZodCustom<Uint8Array, Uint8Array>;
|
|
3
7
|
export type ByteArray = z.infer<typeof ByteArraySchema>;
|
|
4
8
|
declare const LiteralSchema: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>;
|
package/schema/token.d.ts
CHANGED
|
@@ -28,4 +28,4 @@ export declare const TokenClaimsSchema: z.ZodObject<{
|
|
|
28
28
|
}, z.core.$strip>>;
|
|
29
29
|
}, z.core.$strip>;
|
|
30
30
|
export type TokenClaims = z.infer<typeof TokenClaimsSchema>;
|
|
31
|
-
export declare function oneOrMany<T extends z.
|
|
31
|
+
export declare function oneOrMany<T extends z.ZodType>(type: T): z.ZodType<z.infer<T>[]>;
|