@4players/odin-common 9.5.1 → 9.6.0
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/api/schema/room.d.ts +13 -3
- package/cjs/api/mod.js +1 -1
- package/cjs/mod.js +1 -1
- package/esm/api/mod.js +1 -1
- package/esm/mod.js +1 -1
- package/package.json +1 -1
- package/utility/log.d.ts +8 -1
package/api/schema/room.d.ts
CHANGED
|
@@ -46,11 +46,22 @@ export declare namespace RoomV1 {
|
|
|
46
46
|
export declare namespace RoomV2 {
|
|
47
47
|
type Parameters = Record<string, JsonValue>;
|
|
48
48
|
const ParametersSchema: z.ZodType<Parameters>;
|
|
49
|
+
type ChannelPosition = {
|
|
50
|
+
x: number;
|
|
51
|
+
y: number;
|
|
52
|
+
z: number;
|
|
53
|
+
channel: number;
|
|
54
|
+
};
|
|
55
|
+
const PositionSchema: z.ZodType<ChannelPosition>;
|
|
56
|
+
type ChannelMask = bigint;
|
|
57
|
+
const ChannelMaskSchema: z.ZodType<ChannelMask>;
|
|
49
58
|
type HelloRoom = {
|
|
50
59
|
token: string;
|
|
51
60
|
room_id?: RoomId;
|
|
52
61
|
user_data?: Uint8Array;
|
|
53
62
|
parameters?: Parameters;
|
|
63
|
+
channel_masks?: Array<[number, ChannelMask]>;
|
|
64
|
+
positions?: ChannelPosition[];
|
|
54
65
|
};
|
|
55
66
|
const HelloRoomSchema: z.ZodType<HelloRoom>;
|
|
56
67
|
type ClientHello = {
|
|
@@ -68,8 +79,7 @@ export declare namespace RoomV2 {
|
|
|
68
79
|
type PeerProperties = {
|
|
69
80
|
user_data?: Uint8Array;
|
|
70
81
|
tags?: string[];
|
|
71
|
-
|
|
72
|
-
video_parameters?: Record<string, JsonValue>;
|
|
82
|
+
parameters?: Record<string, JsonValue>;
|
|
73
83
|
};
|
|
74
84
|
const PeerPropertiesSchema: z.ZodType<PeerProperties>;
|
|
75
85
|
type Ping = {
|
|
@@ -152,7 +162,7 @@ export declare namespace RoomV2 {
|
|
|
152
162
|
const MessageReceivedSchema: z.ZodType<MessageReceived>;
|
|
153
163
|
type ServerError = {
|
|
154
164
|
Error: {
|
|
155
|
-
message:
|
|
165
|
+
message: string;
|
|
156
166
|
};
|
|
157
167
|
};
|
|
158
168
|
const ServerErrorSchema: z.ZodType<ServerError>;
|
package/cjs/api/mod.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var
|
|
1
|
+
var M=Object.defineProperty;var X=Object.getOwnPropertyDescriptor;var Y=Object.getOwnPropertyNames;var $=Object.prototype.hasOwnProperty;var V=(o,i)=>{for(var m in i)M(o,m,{get:i[m],enumerable:!0})},ee=(o,i,m,p)=>{if(i&&typeof i=="object"||typeof i=="function")for(let y of Y(i))!$.call(o,y)&&y!==m&&M(o,y,{get:()=>i[y],enumerable:!(p=X(i,y))||p.enumerable});return o};var te=o=>ee(M({},"__esModule",{value:!0}),o);var le={};V(le,{ByteArraySchema:()=>d,JsonSchema:()=>f,MainCommandsRpc:()=>pe,MainNotificationsRpc:()=>ce,MediaAudioPropertiesSchema:()=>v,MediaIdSchema:()=>g,MediaPropertiesSchema:()=>_,MediaSchema:()=>z,MediaVideoPropertiesSchema:()=>A,MessagePackRpcSchema:()=>re,MessageReceivedSchema:()=>Z,PeerIdSchema:()=>l,PeerPositionSchema:()=>S,PeerSchema:()=>C,PeerUpdateSchema:()=>R,RoomCommandsRpc:()=>de,RoomIdSchema:()=>P,RoomNotificationsRpc:()=>ue,RoomV1:()=>T,RoomV2:()=>I,TokenAudienceSchema:()=>j,TokenClaimsSchema:()=>oe,TokenSubjectSchema:()=>U,WebRtcUpdateSchema:()=>h,oneOrMany:()=>b,parseCommand:()=>ie,parseNotification:()=>me,parseRequest:()=>se,parseResponse:()=>ae});module.exports=te(le);var c=require("zod");var n=require("zod"),d=n.z.custom(o=>o instanceof Uint8Array),f=n.z.lazy(()=>n.z.union([n.z.union([n.z.string(),n.z.number(),n.z.boolean(),n.z.null()]),n.z.array(f),n.z.record(n.z.string(),f)])),re=n.z.union([n.z.tuple([n.z.literal(0),n.z.number(),n.z.string(),n.z.unknown()]),n.z.tuple([n.z.literal(1),n.z.number(),n.z.nullable(n.z.string()),n.z.unknown()]),n.z.tuple([n.z.literal(2),n.z.string(),n.z.unknown()])]);function b(o){return n.z.union([o.transform(i=>[i]),n.z.array(o)])}var j=c.z.enum(["sfu","gateway"]),U=c.z.enum(["connect","roomclose","roomupdate","roombanclient","roomsendmessage"]),oe=c.z.object({uid:c.z.string(),cid:c.z.string().optional(),rid:b(c.z.string()).refine(o=>o.length>=1,{message:"missing rid"}),nsp:c.z.string().optional(),adr:c.z.string().optional(),aud:b(j).optional(),sub:b(U).optional(),exp:c.z.number().optional(),nbf:c.z.number().optional(),ups:c.z.string().optional(),tgs:b(c.z.string()).optional(),tsp:c.z.number().optional(),internal:c.z.object({server:c.z.string().optional()}).optional()});var e=require("zod");var u=require("zod"),g=u.z.number(),v=u.z.object({kind:u.z.literal("audio").optional(),uid:u.z.string().optional(),ref:u.z.string().optional(),customType:u.z.string().optional()}),A=u.z.object({kind:u.z.literal("video"),codec:u.z.string().optional(),uid:u.z.string().optional(),ref:u.z.string().optional(),customType:u.z.string().optional()}),_=u.z.union([v,A]),z=u.z.object({id:g,properties:_,paused:u.z.boolean()});var s=require("zod");var l=s.z.number(),S=s.z.union([s.z.tuple([s.z.number(),s.z.number(),s.z.number()]),s.z.tuple([s.z.number(),s.z.number()])]),C=s.z.object({id:l,user_id:s.z.string(),user_data:d,medias:s.z.array(z)}),R=s.z.discriminatedUnion("kind",[s.z.object({kind:s.z.literal("UserDataChanged"),peer_id:l,user_data:d}),s.z.object({kind:s.z.literal("MediaStarted"),peer_id:l,media:z}),s.z.object({kind:s.z.literal("MediaStopped"),peer_id:l,media_id:g})]);var P=e.z.string(),T;(x=>(x.RoomSchema=e.z.object({id:P,customer:e.z.string(),user_data:d,peers:e.z.array(C)}),x.RoomUpdateSchema=e.z.discriminatedUnion("kind",[e.z.object({kind:e.z.literal("Joined"),room:x.RoomSchema,media_ids:e.z.array(g),own_peer_id:l}),e.z.object({kind:e.z.literal("Left"),reason:e.z.enum(["RoomClosing","ServerClosing","PeerKicked"])}),e.z.object({kind:e.z.literal("PeerJoined"),peer:C}),e.z.object({kind:e.z.literal("PeerLeft"),peer_id:l}),e.z.object({kind:e.z.literal("UserDataChanged"),user_data:d.optional()})]),x.RoomUpdatesSchema=e.z.object({updates:e.z.array(x.RoomUpdateSchema)}),x.RoomStatusSchema=e.z.enum(["Joining","Joined","Closed"]),x.RoomStatusChangedSchema=e.z.object({status:x.RoomStatusSchema,message:e.z.string().optional()})))(T||={});var I;(t=>{t.ParametersSchema=e.z.record(e.z.string(),f),t.PositionSchema=e.z.object({x:e.z.number(),y:e.z.number(),z:e.z.number(),channel:e.z.number()}),t.ChannelMaskSchema=e.z.bigint().nonnegative().lte(0xFFFFFFFFFFFFFFFFn),t.HelloRoomSchema=e.z.object({token:e.z.string(),room_id:P.optional(),user_data:d.optional(),parameters:t.ParametersSchema.optional(),channel_masks:e.z.array(e.z.tuple([e.z.number(),t.ChannelMaskSchema])).optional(),positions:e.z.array(t.PositionSchema).optional()}),t.ClientHelloSchema=e.z.object({Room:t.HelloRoomSchema}),t.ServerHelloSchema=e.z.union([e.z.object({Ok:e.z.object({})}),e.z.object({Rejected:e.z.object({message:e.z.string()})})]);let k=e.z.object({user_data:d.optional(),tags:e.z.array(e.z.string()).optional(),parameters:t.ParametersSchema.optional()});t.PeerPropertiesSchema=k,t.PingSchema=e.z.object({Ping:e.z.object({id:e.z.number()})}),t.ChangeSelfSchema=e.z.object({ChangeSelf:k.omit({tags:!0})}),t.SetAudioMaskSchema=e.z.object({SetAudioMask:e.z.object({peer_id:e.z.number(),mask:t.ChannelMaskSchema})}),t.SendMessageSchema=e.z.object({SendMessage:e.z.object({peer_ids:e.z.number().array().default([]),message:d})}),t.CallSchema=t.PingSchema.or(t.ChangeSelfSchema).or(t.SetAudioMaskSchema).or(t.SendMessageSchema),t.PongSchema=e.z.object({Pong:e.z.object({id:e.z.number()})}),t.JoinedSchema=e.z.object({Joined:e.z.object({own_peer_id:e.z.number(),room_id:e.z.string(),customer:e.z.string()})}),t.LeftSchema=e.z.object({Left:e.z.object({reason:e.z.enum(["room_closing","server_closing","peer_kicked"])})}),t.PeerJoinedSchema=e.z.object({PeerJoined:k.extend({peer_id:e.z.number(),user_id:e.z.string()})}),t.PeerLeftSchema=e.z.object({PeerLeft:e.z.object({peer_id:e.z.number()})}),t.PeerChangedSchema=e.z.object({PeerChanged:k.extend({peer_id:e.z.number()})}),t.NewReconnectTokenSchema=e.z.object({NewReconnectToken:e.z.object({token:e.z.string()})}),t.MessageReceivedSchema=e.z.object({MessageReceived:e.z.object({sender_peer_id:e.z.number(),message:d})}),t.ServerErrorSchema=e.z.object({Error:e.z.object({message:e.z.string()})}),t.EventSchema=t.PongSchema.or(t.JoinedSchema).or(t.LeftSchema).or(t.PeerJoinedSchema).or(t.PeerLeftSchema).or(t.PeerChangedSchema).or(t.NewReconnectTokenSchema).or(t.MessageReceivedSchema).or(t.ServerErrorSchema)})(I||={});var q=require("zod");var Z=q.z.object({sender_peer_id:l,message:d});var a=require("zod");var h=a.z.discriminatedUnion("kind",[a.z.object({kind:a.z.literal("Sdp"),type:a.z.enum(["Answer","Offer"]),sdp:a.z.string(),media_map:a.z.array(a.z.tuple([g,a.z.string()]))}),a.z.object({kind:a.z.literal("Trickle"),candidate:a.z.string(),spd_mid:a.z.string().optional(),spd_mline_index:a.z.number().optional(),username_fragment:a.z.union([a.z.string(),a.z.null()]).optional()}),a.z.object({kind:a.z.literal("TrickleFinished")})]);var r=require("zod");function N(o,i){o||ne(i)}function ne(o){throw new Error(o)}function ie(o,i,m){let p=m[o];if(!p)return;let y=p.request.safeParse(i);return y.success?{name:o,request:y.data}:void 0}function se(o,i,m){let p=m[o];return N(p!==void 0,"unknown command schema"),p.request.parse(i)}function ae(o,i,m){let p=m[o]?.response.safeParse(i);return p?.success?p.data:void 0}var pe={Hello:{request:r.z.object({stream:r.z.literal("main")}),response:r.z.null()},JoinRoom:{request:r.z.object({token:r.z.string(),room_id:P,user_data:d,position:S}),response:r.z.object({peer_id:l,stream_id:r.z.number().optional(),token:r.z.string().optional()})},WebRtcUpdate:{request:h,response:r.z.null()},RequestReconnectToken:{request:r.z.object({peer_id:l.optional()}),response:r.z.string()},Ping:{request:r.z.object({}),response:r.z.null()}},de={Hello:{request:r.z.object({stream:r.z.literal("room"),token:r.z.string(),room_id:r.z.string(),user_data:d,position:S}),response:r.z.null()},UpdatePeer:{request:r.z.object({user_data:d}),response:r.z.null()},StartMedia:{request:r.z.object({media_id:g,properties:_}),response:r.z.null()},StopMedia:{request:r.z.object({media_id:g}),response:r.z.null()},PauseMedia:{request:r.z.object({media_id:g}),response:r.z.null()},ResumeMedia:{request:r.z.object({media_id:g}),response:r.z.null()},SetPeerPosition:{request:r.z.object({position:S}),response:r.z.null()},SendMessage:{request:r.z.object({target_peer_ids:r.z.array(l).optional(),message:d}),response:r.z.null()}};function me(o,i,m){let p=m[o];if(!p)return;let y=p.safeParse(i);return y.success?{name:o,properties:y.data}:void 0}var ce={WebRtcUpdate:h},ue={RoomStatusChanged:T.RoomStatusChangedSchema,RoomUpdated:T.RoomUpdatesSchema,PeerUpdated:R,MessageReceived:Z};0&&(module.exports={ByteArraySchema,JsonSchema,MainCommandsRpc,MainNotificationsRpc,MediaAudioPropertiesSchema,MediaIdSchema,MediaPropertiesSchema,MediaSchema,MediaVideoPropertiesSchema,MessagePackRpcSchema,MessageReceivedSchema,PeerIdSchema,PeerPositionSchema,PeerSchema,PeerUpdateSchema,RoomCommandsRpc,RoomIdSchema,RoomNotificationsRpc,RoomV1,RoomV2,TokenAudienceSchema,TokenClaimsSchema,TokenSubjectSchema,WebRtcUpdateSchema,oneOrMany,parseCommand,parseNotification,parseRequest,parseResponse});
|
package/cjs/mod.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var y=Object.defineProperty;var U=Object.getOwnPropertyDescriptor;var N=Object.getOwnPropertyNames;var M=Object.prototype.hasOwnProperty;var j=(e,t)=>{for(var r in t)y(e,r,{get:t[r],enumerable:!0})},_=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of N(t))!M.call(e,s)&&s!==r&&y(e,s,{get:()=>t[s],enumerable:!(n=U(t,s))||n.enumerable});return e};var $=e=>_(y({},"__esModule",{value:!0}),e);var Ue={};j(Ue,{APM_DEFAULTS:()=>H,Backend:()=>A,CONNECTION_STATS_INITIAL:()=>G,CallbackSink:()=>S,ConsoleSink:()=>f,Formatter:()=>P,GLOBAL_LOGGER:()=>p,InteractiveConsoleSink:()=>C,JITTER_STATS_INITIAL:()=>J,LogLevel:()=>d,LogSymbols:()=>w,Logger:()=>c,MinDBFS:()=>Me,Selector:()=>L,Strand:()=>h,VAD_DEFAULTS:()=>W,VideoCodec:()=>v,abortableSleep:()=>ae,assert:()=>g,debug:()=>Ie,error:()=>Fe,extendUrl:()=>le,fail:()=>b,failure:()=>u,find:()=>Q,fromBase64:()=>Z,fromBase64Url:()=>q,fromBytes:()=>X,generateUUID:()=>pe,info:()=>Be,isAudioCapable:()=>ee,isBlinkBrowser:()=>V,isElectronBrowser:()=>re,isFailure:()=>he,isFirefoxBrowser:()=>ne,isFunction:()=>me,isNull:()=>xe,isNumber:()=>ye,isObject:()=>be,isProperty:()=>fe,isSafariBrowser:()=>oe,isSharedArrayBufferCapable:()=>te,isString:()=>ve,isSuccess:()=>Re,isUndefined:()=>Le,log:()=>Ee,nextTick:()=>ue,normalizeUrl:()=>ce,sleep:()=>se,success:()=>o,toBytes:()=>Y,toRaw:()=>ie,tryParseLogLevel:()=>Pe,unwrap:()=>z,unwrapOr:()=>m,validateUUID:()=>ge,warn:()=>De});module.exports=$(Ue);var Me=-758.596,A;(t=>{let e;(a=>(a[a.InvalidPassword=-1]="InvalidPassword",a[a.Unknown=0]="Unknown",a[a.Unencrypted=1]="Unencrypted",a[a.Encrypted=2]="Encrypted"))(e=t.PeerCipherStatus||={})})(A||={});var G={bytesSent:0,bytesReceived:0,packetsSent:0,packetsReceived:0,rtt:0,packetLoss:0},J={packetsBuffered:0,packetsSeen:0,packetsProcessed:0,packetsTooEarly:0,packetsTooLate:0,packetsDropped:0,packetsInvalid:0,packetsRepeated:0,packetsLost:0},W={voiceActivity:{attackThreshold:.9,releaseThreshold:.8},volumeGate:{attackThreshold:-30,releaseThreshold:-40}},H={echoCanceller:!0,highPassFilter:!1,noiseSuppression:"Moderate",transientSuppressor:!1,gainController:!0};function g(e,t){e||b(t)}function b(e){throw new Error(e)}function o(e){return{type:"Success",value:e}}function u(e){return{type:"Failure",reason:e}}function z(e){return e.type==="Failure"&&b(e.reason),e.value}function m(e,t){return e.type==="Success"?e.value:t}function Z(e){try{let t=atob(e),r=Uint8Array.from(t,s=>s.codePointAt(0)),n=new TextDecoder("utf8");return o(n.decode(r))}catch(t){return u(String(t))}}function q(e){try{let t=atob(e.replace(/-/g,"+").replace(/_/g,"/")),r=Uint8Array.from(t,s=>s.codePointAt(0)),n=new TextDecoder("utf8");return o(n.decode(r))}catch(t){return u(String(t))}}function Y(e){try{g(e!==void 0,"undefined cannot be converted to byte array"),g(e!==null,"null cannot be converted to byte array");let t=JSON.stringify(e),r=new TextEncoder;return o(r.encode(t))}catch(t){return u(String(t))}}function X(e){try{g(e.length>0,"empty byte array cannot be converted to value");let t=new TextDecoder().decode(e),r=JSON.parse(t);return o(r)}catch(t){return u(String(t))}}var K=["VP8","VP9","AV1","H264"],v=class{constructor(t){this.codec=t}channels=0;clockRate=9e4;isValid(){return K.includes(this.codec)}isSupported(){if(typeof RTCRtpReceiver>"u"||typeof RTCRtpReceiver.getCapabilities>"u")return null;let t=m(this.getMimeType(),"").toLowerCase(),r=new Set(m(this.getSdpFmtpLine(),"").split(";").map(n=>n.trim().toLowerCase()));return RTCRtpReceiver.getCapabilities("video")?.codecs?.find(n=>{let s=n.mimeType.toLowerCase(),i=new Set((n.sdpFmtpLine??"").split(";").map(a=>a.trim().toLowerCase()));if(t!==s||r.size!==i.size)return!1;for(let a of r)if(!i.has(a))return!1;return!0})??null}getPayloadType(){switch(this.codec){case"VP8":return o(96);case"VP9":return o(98);case"AV1":return o(41);case"H264":return o(102);default:return u("invalid video codec")}}getMimeType(){switch(this.codec){case"VP8":return o("video/VP8");case"VP9":return o("video/VP9");case"AV1":return o("video/AV1");case"H264":return o("video/H264");default:return u("invalid video codec")}}getSdpFmtpLine(){switch(this.codec){case"VP8":return o("");case"VP9":return o("profile-id=2");case"AV1":return o("level-idx=5;profile=0;tier=0");case"H264":return o("level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f");default:return u("invalid video codec")}}};function Q(e,t){for(let r of e)if(t(r))return r}function ee(){return typeof AudioContext<"u"&&typeof Worker<"u"}function te(){return typeof SharedArrayBuffer<"u"}function V(){return/(apple)?webkit\/537\.36/i.test(globalThis.navigator.userAgent)}function re(){return/electron/i.test(globalThis.navigator.userAgent)}function ne(){return/firefox|iceweasel|fxios/i.test(globalThis.navigator.userAgent)}function oe(){return V()?!1:/safari|applewebkit/i.test(globalThis.navigator.userAgent)}function ie(e){return JSON.parse(JSON.stringify(e))}var L=class e{constructor(t){this._Generators=t;this._Futures=t.map(e.addIndex)}_Futures;async next(){let[t,r]=await Promise.race(this._Futures);return this._Futures[r]=e.addIndex(this._Generators[r],r),t}static async addIndex(t,r){return[await t(),r]}};function se(e,t){return e<=0?Promise.resolve(t):new Promise(r=>setTimeout(()=>r(t),e))}function ae(e,t){return t.aborted?Promise.resolve("aborted"):new Promise(r=>{let n=()=>r("aborted");t.addEventListener("abort",n,{once:!0}),setTimeout(()=>{t.removeEventListener("abort",n),r(void 0)},e)})}function ue(){return new Promise(e=>setTimeout(e,0))}var h=class{_Tasks=[];_Running=!1;_Values;constructor(...t){this._Values=t}enqueue(t){return new Promise((r,n)=>{let s=async()=>{try{let i=await t(...this._Values);r(i)}catch(i){n(i)}};this._Tasks.push(s),this._Running||this.execute()})}async execute(){for(this._Running=!0;;){let t=this._Tasks.shift();if(t===void 0)break;await t()}this._Running=!1}};function ce(e){let t=e.trim();e.indexOf("://")===-1&&(t=`https://${t}`);try{return o(new URL(t))}catch(r){return u(String(r))}}function le(e,t){let r=e.pathname;r.endsWith("/")===!1&&(r+="/");try{return o(new URL(r+t,e))}catch(n){return u(String(n))}}var de=/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;function pe(){return crypto.randomUUID()}function ge(e){return de.test(e)}function fe(e,t){return t in e}function me(e){return typeof e=="function"}function xe(e){return typeof e=="object"&&e===null}function ye(e){return typeof e=="number"}function be(e){return typeof e=="object"}function ve(e){return typeof e=="string"}function Le(e){return typeof e>"u"}function he(e){return e.type==="Failure"}function Re(e){return e.type==="Success"}var{Deno:O}=globalThis,ke=typeof O?.noColor=="boolean"?O.noColor:!1,Te=!ke;function R(e,t){return{open:`\x1B[${e.join(";")}m`,close:`\x1B[${t}m`,regexp:new RegExp(`\\x1b\\[${t}m`,"g")}}function k(e,t){return Te?`${t.open}${e.replace(t.regexp,t.open)}${t.close}`:e}function x(e){return k(e,R([0],0))}function T(e){return k(e,R([1],22))}function F(e){return k(e,R([2],22))}var ot=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 Se=new Date,d=(i=>(i[i.CRITICAL=0]="CRITICAL",i[i.ERROR=1]="ERROR",i[i.WARN=2]="WARN",i[i.INFO=3]="INFO",i[i.DEBUG=4]="DEBUG",i))(d||{}),w={0:"\u{1F4A5}",1:"\u{1F534}",2:"\u{1F7E1}",3:"\u{1F535}",4:"\u{1F7E3}"},we={4:F,3:x,2:x,1:T,0:T};function Pe(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 Ae({message:e}){return String(e)}function D(e){return JSON.stringify({timestamp:e.date.toISOString(),level:d[e.level],message:e.message,extra:e.extra})}function B(e){function t(a,l){return[Math.floor(a/l),a%l]}function r(){let a,l=e.date.valueOf()-Se.valueOf();[l,a]=t(l,1e3);let[I,E]=t(l,60);return`${I.toString().padStart(4,"0")}:${E.toString().padStart(2,"0")}.${a.toString().padStart(4,"0")}`}function n(){return e.extra===void 0?"":typeof Deno=="object"?" "+Deno.inspect(e.extra,{compact:!1,colors:!0,trailingComma:!0}).trimStart():" "+JSON.stringify(e.extra)}let s=w[e.level],i=e.logger.name!==void 0?`@${e.logger}`:"";return`${x(r())}${i} ${s} ${we[e.level](String(e.message))}${n()}`}function Ve(e){let t=`[${e.date.toISOString()}]`,r=`[${d[e.level]}]`,n=e.logger.name!==void 0?`[${e.logger.name}] `:"",s=w[e.level];return`${t} ${s} ${r.padEnd(7," ")} ${n}${e.message}`}function Oe(){return typeof Deno=="object"&&Deno.stdout.isTerminal()}var P={sparse:Ae,json:D,pretty:B,structured:Ve,default:Oe()?B:D},f=class{formatter;consoleObject;filter;constructor(t=P.default,r=4,n=console){this.filter=r,this.formatter=t,this.consoleObject=n}handle(t){let r=this.formatter(t);switch(t.level){case 1:this.consoleObject.error(r);break;case 2:this.consoleObject.warn(r);break;case 3:this.consoleObject.info(r);break;case 4:this.consoleObject.debug(r);break}}},C=class extends f{handle(t){let r=this.formatter(t),n=t.extra!==void 0?[r,t.extra]:[r];switch(t.level){case 0:case 1:this.consoleObject.error(...n);break;case 2:this.consoleObject.warn(...n);break;case 3:this.consoleObject.info(...n);break;case 4:this.consoleObject.debug(...n);break}}},S=class{formatter;cb;filter;constructor(t,r=P.default,n=4){this.cb=t,this.formatter=r,this.filter=n}handle(t){let r=this.formatter(t);this.cb(r,t)}},c=class{#e;sinks;filter;parent;get name(){return this.#e}constructor(t,r=void 0,n=[],s=void 0){this.#e=r,this.sinks=n,this.filter=t,this.parent=s}log(t,r,n=void 0){let i={date:new Date,level:t,logger:this,message:r,extra:n};this.filter<t||this.insert(i)}insert(t){if(!(this.filter<t.level)){for(let r of this.sinks)r.filter>=t.level&&r.handle(t);this.parent!==void 0&&this.parent.insert(t)}}error=this.log.bind(this,1);warn=this.log.bind(this,2);info=this.log.bind(this,3);debug=this.log.bind(this,4)},p=new c(3,void 0,[new f]),Fe=c.prototype.log.bind(p,1),De=c.prototype.log.bind(p,2),Be=c.prototype.log.bind(p,3),Ie=c.prototype.log.bind(p,4),Ee=c.prototype.log.bind(p);0&&(module.exports={APM_DEFAULTS,Backend,CONNECTION_STATS_INITIAL,CallbackSink,ConsoleSink,Formatter,GLOBAL_LOGGER,InteractiveConsoleSink,JITTER_STATS_INITIAL,LogLevel,LogSymbols,Logger,MinDBFS,Selector,Strand,VAD_DEFAULTS,VideoCodec,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,sleep,success,toBytes,toRaw,tryParseLogLevel,unwrap,unwrapOr,validateUUID,warn});
|
|
1
|
+
var b=Object.defineProperty;var U=Object.getOwnPropertyDescriptor;var N=Object.getOwnPropertyNames;var M=Object.prototype.hasOwnProperty;var j=(e,t)=>{for(var r in t)b(e,r,{get:t[r],enumerable:!0})},_=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of N(t))!M.call(e,s)&&s!==r&&b(e,s,{get:()=>t[s],enumerable:!(n=U(t,s))||n.enumerable});return e};var $=e=>_(b({},"__esModule",{value:!0}),e);var Ue={};j(Ue,{APM_DEFAULTS:()=>H,Backend:()=>A,CONNECTION_STATS_INITIAL:()=>G,CallbackSink:()=>w,ConsoleSink:()=>m,Formatter:()=>f,GLOBAL_LOGGER:()=>p,InteractiveConsoleSink:()=>S,JITTER_STATS_INITIAL:()=>J,LogLevel:()=>d,LogSymbols:()=>P,Logger:()=>c,MinDBFS:()=>Me,Selector:()=>h,Strand:()=>R,VAD_DEFAULTS:()=>W,VideoCodec:()=>L,abortableSleep:()=>ae,assert:()=>g,debug:()=>Ie,error:()=>Fe,extendUrl:()=>le,fail:()=>v,failure:()=>u,find:()=>Q,fromBase64:()=>Z,fromBase64Url:()=>q,fromBytes:()=>X,generateUUID:()=>pe,info:()=>Be,isAudioCapable:()=>ee,isBlinkBrowser:()=>V,isElectronBrowser:()=>re,isFailure:()=>he,isFirefoxBrowser:()=>ne,isFunction:()=>me,isNull:()=>xe,isNumber:()=>ye,isObject:()=>be,isProperty:()=>fe,isSafariBrowser:()=>oe,isSharedArrayBufferCapable:()=>te,isString:()=>ve,isSuccess:()=>Re,isUndefined:()=>Le,log:()=>Ee,nextTick:()=>ue,normalizeUrl:()=>ce,sleep:()=>se,success:()=>o,toBytes:()=>Y,toRaw:()=>ie,tryParseLogLevel:()=>Pe,unwrap:()=>z,unwrapOr:()=>x,validateUUID:()=>ge,warn:()=>De});module.exports=$(Ue);var Me=-758.596,A;(t=>{let e;(a=>(a[a.InvalidPassword=-1]="InvalidPassword",a[a.Unknown=0]="Unknown",a[a.Unencrypted=1]="Unencrypted",a[a.Encrypted=2]="Encrypted"))(e=t.PeerCipherStatus||={})})(A||={});var G={bytesSent:0,bytesReceived:0,packetsSent:0,packetsReceived:0,rtt:0,packetLoss:0},J={packetsBuffered:0,packetsSeen:0,packetsProcessed:0,packetsTooEarly:0,packetsTooLate:0,packetsDropped:0,packetsInvalid:0,packetsRepeated:0,packetsLost:0},W={voiceActivity:{attackThreshold:.9,releaseThreshold:.8},volumeGate:{attackThreshold:-30,releaseThreshold:-40}},H={echoCanceller:!0,highPassFilter:!1,noiseSuppression:"Moderate",transientSuppressor:!1,gainController:!0};function g(e,t){e||v(t)}function v(e){throw new Error(e)}function o(e){return{type:"Success",value:e}}function u(e){return{type:"Failure",reason:e}}function z(e){return e.type==="Failure"&&v(e.reason),e.value}function x(e,t){return e.type==="Success"?e.value:t}function Z(e){try{let t=atob(e),r=Uint8Array.from(t,s=>s.codePointAt(0)),n=new TextDecoder("utf8");return o(n.decode(r))}catch(t){return u(String(t))}}function q(e){try{let t=atob(e.replace(/-/g,"+").replace(/_/g,"/")),r=Uint8Array.from(t,s=>s.codePointAt(0)),n=new TextDecoder("utf8");return o(n.decode(r))}catch(t){return u(String(t))}}function Y(e){try{g(e!==void 0,"undefined cannot be converted to byte array"),g(e!==null,"null cannot be converted to byte array");let t=JSON.stringify(e),r=new TextEncoder;return o(r.encode(t))}catch(t){return u(String(t))}}function X(e){try{g(e.length>0,"empty byte array cannot be converted to value");let t=new TextDecoder().decode(e),r=JSON.parse(t);return o(r)}catch(t){return u(String(t))}}var K=["VP8","VP9","AV1","H264"],L=class{constructor(t){this.codec=t}channels=0;clockRate=9e4;isValid(){return K.includes(this.codec)}isSupported(){if(typeof RTCRtpReceiver>"u"||typeof RTCRtpReceiver.getCapabilities>"u")return null;let t=x(this.getMimeType(),"").toLowerCase(),r=new Set(x(this.getSdpFmtpLine(),"").split(";").map(n=>n.trim().toLowerCase()));return RTCRtpReceiver.getCapabilities("video")?.codecs?.find(n=>{let s=n.mimeType.toLowerCase(),i=new Set((n.sdpFmtpLine??"").split(";").map(a=>a.trim().toLowerCase()));if(t!==s||r.size!==i.size)return!1;for(let a of r)if(!i.has(a))return!1;return!0})??null}getPayloadType(){switch(this.codec){case"VP8":return o(96);case"VP9":return o(98);case"AV1":return o(41);case"H264":return o(102);default:return u("invalid video codec")}}getMimeType(){switch(this.codec){case"VP8":return o("video/VP8");case"VP9":return o("video/VP9");case"AV1":return o("video/AV1");case"H264":return o("video/H264");default:return u("invalid video codec")}}getSdpFmtpLine(){switch(this.codec){case"VP8":return o("");case"VP9":return o("profile-id=2");case"AV1":return o("level-idx=5;profile=0;tier=0");case"H264":return o("level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f");default:return u("invalid video codec")}}};function Q(e,t){for(let r of e)if(t(r))return r}function ee(){return typeof AudioContext<"u"&&typeof Worker<"u"}function te(){return typeof SharedArrayBuffer<"u"}function V(){return/(apple)?webkit\/537\.36/i.test(globalThis.navigator.userAgent)}function re(){return/electron/i.test(globalThis.navigator.userAgent)}function ne(){return/firefox|iceweasel|fxios/i.test(globalThis.navigator.userAgent)}function oe(){return V()?!1:/safari|applewebkit/i.test(globalThis.navigator.userAgent)}function ie(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,r]=await Promise.race(this._Futures);return this._Futures[r]=e.addIndex(this._Generators[r],r),t}static async addIndex(t,r){return[await t(),r]}};function se(e,t){return e<=0?Promise.resolve(t):new Promise(r=>setTimeout(()=>r(t),e))}function ae(e,t){return t.aborted?Promise.resolve("aborted"):new Promise(r=>{let n=()=>r("aborted");t.addEventListener("abort",n,{once:!0}),setTimeout(()=>{t.removeEventListener("abort",n),r(void 0)},e)})}function ue(){return new Promise(e=>setTimeout(e,0))}var R=class{_Tasks=[];_Running=!1;_Values;constructor(...t){this._Values=t}enqueue(t){return new Promise((r,n)=>{let s=async()=>{try{let i=await t(...this._Values);r(i)}catch(i){n(i)}};this._Tasks.push(s),this._Running||this.execute()})}async execute(){for(this._Running=!0;;){let t=this._Tasks.shift();if(t===void 0)break;await t()}this._Running=!1}};function ce(e){let t=e.trim();e.indexOf("://")===-1&&(t=`https://${t}`);try{return o(new URL(t))}catch(r){return u(String(r))}}function le(e,t){let r=e.pathname;r.endsWith("/")===!1&&(r+="/");try{return o(new URL(r+t,e))}catch(n){return u(String(n))}}var de=/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;function pe(){return crypto.randomUUID()}function ge(e){return de.test(e)}function fe(e,t){return t in e}function me(e){return typeof e=="function"}function xe(e){return typeof e=="object"&&e===null}function ye(e){return typeof e=="number"}function be(e){return typeof e=="object"}function ve(e){return typeof e=="string"}function Le(e){return typeof e>"u"}function he(e){return e.type==="Failure"}function Re(e){return e.type==="Success"}var{Deno:O}=globalThis,ke=typeof O?.noColor=="boolean"?O.noColor:!1,Te=!ke;function k(e,t){return{open:`\x1B[${e.join(";")}m`,close:`\x1B[${t}m`,regexp:new RegExp(`\\x1b\\[${t}m`,"g")}}function T(e,t){return Te?`${t.open}${e.replace(t.regexp,t.open)}${t.close}`:e}function y(e){return T(e,k([0],0))}function C(e){return T(e,k([1],22))}function F(e){return T(e,k([2],22))}var ot=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 Se=new Date,d=(i=>(i[i.CRITICAL=0]="CRITICAL",i[i.ERROR=1]="ERROR",i[i.WARN=2]="WARN",i[i.INFO=3]="INFO",i[i.DEBUG=4]="DEBUG",i))(d||{}),P={0:"\u{1F4A5}",1:"\u{1F534}",2:"\u{1F7E1}",3:"\u{1F535}",4:"\u{1F7E3}"},we={4:F,3:y,2:y,1:C,0:C};function Pe(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 Ae({message:e}){return String(e)}function D(e){return JSON.stringify({timestamp:e.date.toISOString(),level:d[e.level],message:e.message,extra:e.extra})}function B(e){function t(a,l){return[Math.floor(a/l),a%l]}function r(){let a,l=e.date.valueOf()-Se.valueOf();[l,a]=t(l,1e3);let[I,E]=t(l,60);return`${I.toString().padStart(4,"0")}:${E.toString().padStart(2,"0")}.${a.toString().padStart(4,"0")}`}function n(){return e.extra===void 0?"":typeof Deno=="object"?" "+Deno.inspect(e.extra,{compact:!1,colors:!0,trailingComma:!0}).trimStart():" "+JSON.stringify(e.extra)}let s=P[e.level],i=e.logger.name!==void 0?`@${e.logger}`:"";return`${y(r())}${i} ${s} ${we[e.level](String(e.message))}${n()}`}function Ve(e){let t=`[${e.date.toISOString()}]`,r=`[${d[e.level]}]`,n=e.logger.name!==void 0?`[${e.logger.name}] `:"",s=P[e.level];return`${t} ${s} ${r.padEnd(7," ")} ${n}${e.message}`}function Oe(){return typeof Deno=="object"&&Deno.stdout.isTerminal()}var f=class{static sparse=Ae;static json=D;static pretty=B;static structured=Ve;static default=Oe()?B:D;constructor(){}},m=class{formatter;consoleObject;filter;constructor(t=f.default,r=4,n=console){this.filter=r,this.formatter=t,this.consoleObject=n}handle(t){let r=this.formatter(t);switch(t.level){case 1:this.consoleObject.error(r);break;case 2:this.consoleObject.warn(r);break;case 3:this.consoleObject.info(r);break;case 4:this.consoleObject.debug(r);break}}},S=class extends m{handle(t){let r=this.formatter(t),n=t.extra!==void 0?[r,t.extra]:[r];switch(t.level){case 0:case 1:this.consoleObject.error(...n);break;case 2:this.consoleObject.warn(...n);break;case 3:this.consoleObject.info(...n);break;case 4:this.consoleObject.debug(...n);break}}},w=class{formatter;cb;filter;constructor(t,r=f.default,n=4){this.cb=t,this.formatter=r,this.filter=n}handle(t){let r=this.formatter(t);this.cb(r,t)}},c=class{#e;sinks;filter;parent;get name(){return this.#e}constructor(t,r=void 0,n=[],s=void 0){this.#e=r,this.sinks=n,this.filter=t,this.parent=s}log(t,r,n=void 0){let i={date:new Date,level:t,logger:this,message:r,extra:n};this.filter<t||this.insert(i)}insert(t){if(!(this.filter<t.level)){for(let r of this.sinks)r.filter>=t.level&&r.handle(t);this.parent!==void 0&&this.parent.insert(t)}}error=this.log.bind(this,1);warn=this.log.bind(this,2);info=this.log.bind(this,3);debug=this.log.bind(this,4)},p=new c(3,void 0,[new m]),Fe=c.prototype.log.bind(p,1),De=c.prototype.log.bind(p,2),Be=c.prototype.log.bind(p,3),Ie=c.prototype.log.bind(p,4),Ee=c.prototype.log.bind(p);0&&(module.exports={APM_DEFAULTS,Backend,CONNECTION_STATS_INITIAL,CallbackSink,ConsoleSink,Formatter,GLOBAL_LOGGER,InteractiveConsoleSink,JITTER_STATS_INITIAL,LogLevel,LogSymbols,Logger,MinDBFS,Selector,Strand,VAD_DEFAULTS,VideoCodec,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,sleep,success,toBytes,toRaw,tryParseLogLevel,unwrap,unwrapOr,validateUUID,warn});
|
package/esm/api/mod.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{z as
|
|
1
|
+
import{z as m}from"zod";import{z as o}from"zod";var a=o.custom(n=>n instanceof Uint8Array),S=o.lazy(()=>o.union([o.union([o.string(),o.number(),o.boolean(),o.null()]),o.array(S),o.record(o.string(),S)])),ee=o.union([o.tuple([o.literal(0),o.number(),o.string(),o.unknown()]),o.tuple([o.literal(1),o.number(),o.nullable(o.string()),o.unknown()]),o.tuple([o.literal(2),o.string(),o.unknown()])]);function b(n){return o.union([n.transform(p=>[p]),o.array(n)])}var W=m.enum(["sfu","gateway"]),E=m.enum(["connect","roomclose","roomupdate","roombanclient","roomsendmessage"]),ne=m.object({uid:m.string(),cid:m.string().optional(),rid:b(m.string()).refine(n=>n.length>=1,{message:"missing rid"}),nsp:m.string().optional(),adr:m.string().optional(),aud:b(W).optional(),sub:b(E).optional(),exp:m.number().optional(),nbf:m.number().optional(),ups:m.string().optional(),tgs:b(m.string()).optional(),tsp:m.number().optional(),internal:m.object({server:m.string().optional()}).optional()});import{z as e}from"zod";import{z as c}from"zod";var l=c.number(),O=c.object({kind:c.literal("audio").optional(),uid:c.string().optional(),ref:c.string().optional(),customType:c.string().optional()}),B=c.object({kind:c.literal("video"),codec:c.string().optional(),uid:c.string().optional(),ref:c.string().optional(),customType:c.string().optional()}),_=c.union([O,B]),z=c.object({id:l,properties:_,paused:c.boolean()});import{z as i}from"zod";var u=i.number(),P=i.union([i.tuple([i.number(),i.number(),i.number()]),i.tuple([i.number(),i.number()])]),C=i.object({id:u,user_id:i.string(),user_data:a,medias:i.array(z)}),M=i.discriminatedUnion("kind",[i.object({kind:i.literal("UserDataChanged"),peer_id:u,user_data:a}),i.object({kind:i.literal("MediaStarted"),peer_id:u,media:z}),i.object({kind:i.literal("MediaStopped"),peer_id:u,media_id:l})]);var T=e.string(),h;(g=>(g.RoomSchema=e.object({id:T,customer:e.string(),user_data:a,peers:e.array(C)}),g.RoomUpdateSchema=e.discriminatedUnion("kind",[e.object({kind:e.literal("Joined"),room:g.RoomSchema,media_ids:e.array(l),own_peer_id:u}),e.object({kind:e.literal("Left"),reason:e.enum(["RoomClosing","ServerClosing","PeerKicked"])}),e.object({kind:e.literal("PeerJoined"),peer:C}),e.object({kind:e.literal("PeerLeft"),peer_id:u}),e.object({kind:e.literal("UserDataChanged"),user_data:a.optional()})]),g.RoomUpdatesSchema=e.object({updates:e.array(g.RoomUpdateSchema)}),g.RoomStatusSchema=e.enum(["Joining","Joined","Closed"]),g.RoomStatusChangedSchema=e.object({status:g.RoomStatusSchema,message:e.string().optional()})))(h||={});var D;(t=>{t.ParametersSchema=e.record(e.string(),S),t.PositionSchema=e.object({x:e.number(),y:e.number(),z:e.number(),channel:e.number()}),t.ChannelMaskSchema=e.bigint().nonnegative().lte(0xFFFFFFFFFFFFFFFFn),t.HelloRoomSchema=e.object({token:e.string(),room_id:T.optional(),user_data:a.optional(),parameters:t.ParametersSchema.optional(),channel_masks:e.array(e.tuple([e.number(),t.ChannelMaskSchema])).optional(),positions:e.array(t.PositionSchema).optional()}),t.ClientHelloSchema=e.object({Room:t.HelloRoomSchema}),t.ServerHelloSchema=e.union([e.object({Ok:e.object({})}),e.object({Rejected:e.object({message:e.string()})})]);let f=e.object({user_data:a.optional(),tags:e.array(e.string()).optional(),parameters:t.ParametersSchema.optional()});t.PeerPropertiesSchema=f,t.PingSchema=e.object({Ping:e.object({id:e.number()})}),t.ChangeSelfSchema=e.object({ChangeSelf:f.omit({tags:!0})}),t.SetAudioMaskSchema=e.object({SetAudioMask:e.object({peer_id:e.number(),mask:t.ChannelMaskSchema})}),t.SendMessageSchema=e.object({SendMessage:e.object({peer_ids:e.number().array().default([]),message:a})}),t.CallSchema=t.PingSchema.or(t.ChangeSelfSchema).or(t.SetAudioMaskSchema).or(t.SendMessageSchema),t.PongSchema=e.object({Pong:e.object({id:e.number()})}),t.JoinedSchema=e.object({Joined:e.object({own_peer_id:e.number(),room_id:e.string(),customer:e.string()})}),t.LeftSchema=e.object({Left:e.object({reason:e.enum(["room_closing","server_closing","peer_kicked"])})}),t.PeerJoinedSchema=e.object({PeerJoined:f.extend({peer_id:e.number(),user_id:e.string()})}),t.PeerLeftSchema=e.object({PeerLeft:e.object({peer_id:e.number()})}),t.PeerChangedSchema=e.object({PeerChanged:f.extend({peer_id:e.number()})}),t.NewReconnectTokenSchema=e.object({NewReconnectToken:e.object({token:e.string()})}),t.MessageReceivedSchema=e.object({MessageReceived:e.object({sender_peer_id:e.number(),message:a})}),t.ServerErrorSchema=e.object({Error:e.object({message:e.string()})}),t.EventSchema=t.PongSchema.or(t.JoinedSchema).or(t.LeftSchema).or(t.PeerJoinedSchema).or(t.PeerLeftSchema).or(t.PeerChangedSchema).or(t.NewReconnectTokenSchema).or(t.MessageReceivedSchema).or(t.ServerErrorSchema)})(D||={});import{z as G}from"zod";var R=G.object({sender_peer_id:u,message:a});import{z 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([l,s.string()]))}),s.object({kind:s.literal("Trickle"),candidate:s.string(),spd_mid:s.string().optional(),spd_mline_index:s.number().optional(),username_fragment:s.union([s.string(),s.null()]).optional()}),s.object({kind:s.literal("TrickleFinished")})]);import{z as r}from"zod";function Z(n,p){n||Q(p)}function Q(n){throw new Error(n)}function ve(n,p,y){let d=y[n];if(!d)return;let x=d.request.safeParse(p);return x.success?{name:n,request:x.data}:void 0}function Ae(n,p,y){let d=y[n];return Z(d!==void 0,"unknown command schema"),d.request.parse(p)}function Ie(n,p,y){let d=y[n]?.response.safeParse(p);return d?.success?d.data:void 0}var qe={Hello:{request:r.object({stream:r.literal("main")}),response:r.null()},JoinRoom:{request:r.object({token:r.string(),room_id:T,user_data:a,position:P}),response:r.object({peer_id:u,stream_id:r.number().optional(),token:r.string().optional()})},WebRtcUpdate:{request:k,response:r.null()},RequestReconnectToken:{request:r.object({peer_id:u.optional()}),response:r.string()},Ping:{request:r.object({}),response:r.null()}},Ne={Hello:{request:r.object({stream:r.literal("room"),token:r.string(),room_id:r.string(),user_data:a,position:P}),response:r.null()},UpdatePeer:{request:r.object({user_data:a}),response:r.null()},StartMedia:{request:r.object({media_id:l,properties:_}),response:r.null()},StopMedia:{request:r.object({media_id:l}),response:r.null()},PauseMedia:{request:r.object({media_id:l}),response:r.null()},ResumeMedia:{request:r.object({media_id:l}),response:r.null()},SetPeerPosition:{request:r.object({position:P}),response:r.null()},SendMessage:{request:r.object({target_peer_ids:r.array(u).optional(),message:a}),response:r.null()}};function He(n,p,y){let d=y[n];if(!d)return;let x=d.safeParse(p);return x.success?{name:n,properties:x.data}:void 0}var We={WebRtcUpdate:k},Ee={RoomStatusChanged:h.RoomStatusChangedSchema,RoomUpdated:h.RoomUpdatesSchema,PeerUpdated:M,MessageReceived:R};export{a as ByteArraySchema,S as JsonSchema,qe as MainCommandsRpc,We as MainNotificationsRpc,O as MediaAudioPropertiesSchema,l as MediaIdSchema,_ as MediaPropertiesSchema,z as MediaSchema,B as MediaVideoPropertiesSchema,ee as MessagePackRpcSchema,R as MessageReceivedSchema,u as PeerIdSchema,P as PeerPositionSchema,C as PeerSchema,M as PeerUpdateSchema,Ne as RoomCommandsRpc,T as RoomIdSchema,Ee as RoomNotificationsRpc,h as RoomV1,D as RoomV2,W as TokenAudienceSchema,ne as TokenClaimsSchema,E as TokenSubjectSchema,k as WebRtcUpdateSchema,b as oneOrMany,ve as parseCommand,He as parseNotification,Ae as parseRequest,Ie as parseResponse};
|
package/esm/mod.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var H=-758.596,B;(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||={})})(B||={});var z={bytesSent:0,bytesReceived:0,packetsSent:0,packetsReceived:0,rtt:0,packetLoss:0},Z={packetsBuffered:0,packetsSeen:0,packetsProcessed:0,packetsTooEarly:0,packetsTooLate:0,packetsDropped:0,packetsInvalid:0,packetsRepeated:0,packetsLost:0},q={voiceActivity:{attackThreshold:.9,releaseThreshold:.8},volumeGate:{attackThreshold:-30,releaseThreshold:-40}},Y={echoCanceller:!0,highPassFilter:!1,noiseSuppression:"Moderate",transientSuppressor:!1,gainController:!0};function g(e,t){e||
|
|
1
|
+
var H=-758.596,B;(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||={})})(B||={});var z={bytesSent:0,bytesReceived:0,packetsSent:0,packetsReceived:0,rtt:0,packetLoss:0},Z={packetsBuffered:0,packetsSeen:0,packetsProcessed:0,packetsTooEarly:0,packetsTooLate:0,packetsDropped:0,packetsInvalid:0,packetsRepeated:0,packetsLost:0},q={voiceActivity:{attackThreshold:.9,releaseThreshold:.8},volumeGate:{attackThreshold:-30,releaseThreshold:-40}},Y={echoCanceller:!0,highPassFilter:!1,noiseSuppression:"Moderate",transientSuppressor:!1,gainController:!0};function g(e,t){e||h(t)}function h(e){throw new Error(e)}function o(e){return{type:"Success",value:e}}function u(e){return{type:"Failure",reason:e}}function K(e){return e.type==="Failure"&&h(e.reason),e.value}function y(e,t){return e.type==="Success"?e.value:t}function te(e){try{let t=atob(e),r=Uint8Array.from(t,a=>a.codePointAt(0)),n=new TextDecoder("utf8");return o(n.decode(r))}catch(t){return u(String(t))}}function re(e){try{let t=atob(e.replace(/-/g,"+").replace(/_/g,"/")),r=Uint8Array.from(t,a=>a.codePointAt(0)),n=new TextDecoder("utf8");return o(n.decode(r))}catch(t){return u(String(t))}}function ie(e){try{g(e!==void 0,"undefined cannot be converted to byte array"),g(e!==null,"null cannot be converted to byte array");let t=JSON.stringify(e),r=new TextEncoder;return o(r.encode(t))}catch(t){return u(String(t))}}function se(e){try{g(e.length>0,"empty byte array cannot be converted to value");let t=new TextDecoder().decode(e),r=JSON.parse(t);return o(r)}catch(t){return u(String(t))}}var I=["VP8","VP9","AV1","H264"],R=class{constructor(t){this.codec=t}channels=0;clockRate=9e4;isValid(){return I.includes(this.codec)}isSupported(){if(typeof RTCRtpReceiver>"u"||typeof RTCRtpReceiver.getCapabilities>"u")return null;let t=y(this.getMimeType(),"").toLowerCase(),r=new Set(y(this.getSdpFmtpLine(),"").split(";").map(n=>n.trim().toLowerCase()));return RTCRtpReceiver.getCapabilities("video")?.codecs?.find(n=>{let a=n.mimeType.toLowerCase(),i=new Set((n.sdpFmtpLine??"").split(";").map(s=>s.trim().toLowerCase()));if(t!==a||r.size!==i.size)return!1;for(let s of r)if(!i.has(s))return!1;return!0})??null}getPayloadType(){switch(this.codec){case"VP8":return o(96);case"VP9":return o(98);case"AV1":return o(41);case"H264":return o(102);default:return u("invalid video codec")}}getMimeType(){switch(this.codec){case"VP8":return o("video/VP8");case"VP9":return o("video/VP9");case"AV1":return o("video/AV1");case"H264":return o("video/H264");default:return u("invalid video codec")}}getSdpFmtpLine(){switch(this.codec){case"VP8":return o("");case"VP9":return o("profile-id=2");case"AV1":return o("level-idx=5;profile=0;tier=0");case"H264":return o("level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f");default:return u("invalid video codec")}}};function le(e,t){for(let r of e)if(t(r))return r}function pe(){return typeof AudioContext<"u"&&typeof Worker<"u"}function ge(){return typeof SharedArrayBuffer<"u"}function E(){return/(apple)?webkit\/537\.36/i.test(globalThis.navigator.userAgent)}function fe(){return/electron/i.test(globalThis.navigator.userAgent)}function me(){return/firefox|iceweasel|fxios/i.test(globalThis.navigator.userAgent)}function xe(){return E()?!1:/safari|applewebkit/i.test(globalThis.navigator.userAgent)}function be(e){return JSON.parse(JSON.stringify(e))}var k=class e{constructor(t){this._Generators=t;this._Futures=t.map(e.addIndex)}_Futures;async next(){let[t,r]=await Promise.race(this._Futures);return this._Futures[r]=e.addIndex(this._Generators[r],r),t}static async addIndex(t,r){return[await t(),r]}};function he(e,t){return e<=0?Promise.resolve(t):new Promise(r=>setTimeout(()=>r(t),e))}function Re(e,t){return t.aborted?Promise.resolve("aborted"):new Promise(r=>{let n=()=>r("aborted");t.addEventListener("abort",n,{once:!0}),setTimeout(()=>{t.removeEventListener("abort",n),r(void 0)},e)})}function ke(){return new Promise(e=>setTimeout(e,0))}var T=class{_Tasks=[];_Running=!1;_Values;constructor(...t){this._Values=t}enqueue(t){return new Promise((r,n)=>{let a=async()=>{try{let i=await t(...this._Values);r(i)}catch(i){n(i)}};this._Tasks.push(a),this._Running||this.execute()})}async execute(){for(this._Running=!0;;){let t=this._Tasks.shift();if(t===void 0)break;await t()}this._Running=!1}};function we(e){let t=e.trim();e.indexOf("://")===-1&&(t=`https://${t}`);try{return o(new URL(t))}catch(r){return u(String(r))}}function Pe(e,t){let r=e.pathname;r.endsWith("/")===!1&&(r+="/");try{return o(new URL(r+t,e))}catch(n){return u(String(n))}}var U=/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;function Ve(){return crypto.randomUUID()}function Oe(e){return U.test(e)}function De(e,t){return t in e}function Be(e){return typeof e=="function"}function Ie(e){return typeof e=="object"&&e===null}function Ee(e){return typeof e=="number"}function Ue(e){return typeof e=="object"}function Ne(e){return typeof e=="string"}function Me(e){return typeof e>"u"}function je(e){return e.type==="Failure"}function _e(e){return e.type==="Success"}var{Deno:C}=globalThis,N=typeof C?.noColor=="boolean"?C.noColor:!1,M=!N;function b(e,t){return{open:`\x1B[${e.join(";")}m`,close:`\x1B[${t}m`,regexp:new RegExp(`\\x1b\\[${t}m`,"g")}}function v(e,t){return M?`${t.open}${e.replace(t.regexp,t.open)}${t.close}`:e}function f(e){return v(e,b([0],0))}function L(e){return v(e,b([1],22))}function S(e){return v(e,b([2],22))}var Ge=new RegExp(["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TXZcf-nq-uy=><~]))"].join("|"),"g");var _=new Date,d=(i=>(i[i.CRITICAL=0]="CRITICAL",i[i.ERROR=1]="ERROR",i[i.WARN=2]="WARN",i[i.INFO=3]="INFO",i[i.DEBUG=4]="DEBUG",i))(d||{}),O={0:"\u{1F4A5}",1:"\u{1F534}",2:"\u{1F7E1}",3:"\u{1F535}",4:"\u{1F7E3}"},$={4:S,3:f,2:f,1:L,0:L};function Je(e){for(let t of Object.keys(d))if(isNaN(Number(t))!==!1&&t.localeCompare(e,void 0,{sensitivity:"accent"})===0)return d[t]}function G({message:e}){return String(e)}function w(e){return JSON.stringify({timestamp:e.date.toISOString(),level:d[e.level],message:e.message,extra:e.extra})}function P(e){function t(s,l){return[Math.floor(s/l),s%l]}function r(){let s,l=e.date.valueOf()-_.valueOf();[l,s]=t(l,1e3);let[F,D]=t(l,60);return`${F.toString().padStart(4,"0")}:${D.toString().padStart(2,"0")}.${s.toString().padStart(4,"0")}`}function n(){return e.extra===void 0?"":typeof Deno=="object"?" "+Deno.inspect(e.extra,{compact:!1,colors:!0,trailingComma:!0}).trimStart():" "+JSON.stringify(e.extra)}let a=O[e.level],i=e.logger.name!==void 0?`@${e.logger}`:"";return`${f(r())}${i} ${a} ${$[e.level](String(e.message))}${n()}`}function J(e){let t=`[${e.date.toISOString()}]`,r=`[${d[e.level]}]`,n=e.logger.name!==void 0?`[${e.logger.name}] `:"",a=O[e.level];return`${t} ${a} ${r.padEnd(7," ")} ${n}${e.message}`}function W(){return typeof Deno=="object"&&Deno.stdout.isTerminal()}var m=class{static sparse=G;static json=w;static pretty=P;static structured=J;static default=W()?P:w;constructor(){}},x=class{formatter;consoleObject;filter;constructor(t=m.default,r=4,n=console){this.filter=r,this.formatter=t,this.consoleObject=n}handle(t){let r=this.formatter(t);switch(t.level){case 1:this.consoleObject.error(r);break;case 2:this.consoleObject.warn(r);break;case 3:this.consoleObject.info(r);break;case 4:this.consoleObject.debug(r);break}}},A=class extends x{handle(t){let r=this.formatter(t),n=t.extra!==void 0?[r,t.extra]:[r];switch(t.level){case 0:case 1:this.consoleObject.error(...n);break;case 2:this.consoleObject.warn(...n);break;case 3:this.consoleObject.info(...n);break;case 4:this.consoleObject.debug(...n);break}}},V=class{formatter;cb;filter;constructor(t,r=m.default,n=4){this.cb=t,this.formatter=r,this.filter=n}handle(t){let r=this.formatter(t);this.cb(r,t)}},c=class{#e;sinks;filter;parent;get name(){return this.#e}constructor(t,r=void 0,n=[],a=void 0){this.#e=r,this.sinks=n,this.filter=t,this.parent=a}log(t,r,n=void 0){let i={date:new Date,level:t,logger:this,message:r,extra:n};this.filter<t||this.insert(i)}insert(t){if(!(this.filter<t.level)){for(let r of this.sinks)r.filter>=t.level&&r.handle(t);this.parent!==void 0&&this.parent.insert(t)}}error=this.log.bind(this,1);warn=this.log.bind(this,2);info=this.log.bind(this,3);debug=this.log.bind(this,4)},p=new c(3,void 0,[new x]),We=c.prototype.log.bind(p,1),He=c.prototype.log.bind(p,2),ze=c.prototype.log.bind(p,3),Ze=c.prototype.log.bind(p,4),qe=c.prototype.log.bind(p);export{Y as APM_DEFAULTS,B as Backend,z as CONNECTION_STATS_INITIAL,V as CallbackSink,x as ConsoleSink,m as Formatter,p as GLOBAL_LOGGER,A as InteractiveConsoleSink,Z as JITTER_STATS_INITIAL,d as LogLevel,O as LogSymbols,c as Logger,H as MinDBFS,k as Selector,T as Strand,q as VAD_DEFAULTS,R as VideoCodec,Re as abortableSleep,g as assert,Ze as debug,We as error,Pe as extendUrl,h as fail,u as failure,le as find,te as fromBase64,re as fromBase64Url,se as fromBytes,Ve as generateUUID,ze as info,pe as isAudioCapable,E as isBlinkBrowser,fe as isElectronBrowser,je as isFailure,me as isFirefoxBrowser,Be as isFunction,Ie as isNull,Ee as isNumber,Ue as isObject,De as isProperty,xe as isSafariBrowser,ge as isSharedArrayBufferCapable,Ne as isString,_e as isSuccess,Me as isUndefined,qe as log,ke as nextTick,we as normalizeUrl,he as sleep,o as success,ie as toBytes,be as toRaw,Je as tryParseLogLevel,K as unwrap,y as unwrapOr,Oe as validateUUID,He as warn};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@4players/odin-common",
|
|
3
|
-
"version": "9.
|
|
3
|
+
"version": "9.6.0",
|
|
4
4
|
"description": "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
|
@@ -15,7 +15,14 @@ export interface LogSink {
|
|
|
15
15
|
}
|
|
16
16
|
export type ConsoleObject = Pick<typeof console, 'error' | 'warn' | 'info' | 'debug'>;
|
|
17
17
|
export type LogFormatter = (record: LogRecord) => string;
|
|
18
|
-
export declare
|
|
18
|
+
export declare class Formatter {
|
|
19
|
+
static readonly sparse: LogFormatter;
|
|
20
|
+
static readonly json: LogFormatter;
|
|
21
|
+
static readonly pretty: LogFormatter;
|
|
22
|
+
static readonly structured: LogFormatter;
|
|
23
|
+
static readonly default: LogFormatter;
|
|
24
|
+
private constructor();
|
|
25
|
+
}
|
|
19
26
|
export declare class ConsoleSink implements LogSink {
|
|
20
27
|
protected formatter: LogFormatter;
|
|
21
28
|
protected consoleObject: ConsoleObject;
|