UNPKG

@4players/odin-common

Version:

Commonly used type definitions and utility functions across ODIN web projects

2 lines (1 loc) 6.79 kB
import{enum as D,number as J,object as B,string as l}from"zod";import{array as z,boolean as ye,custom as le,lazy as ge,literal as A,null as xe,nullable as fe,number as w,record as Se,string as P,tuple as q,union as C,unknown as N}from"zod";var t=le(r=>r instanceof Uint8Array),M=ge(()=>C([C([P(),w(),ye(),xe()]),z(M),Se(P(),M)])),Ye=C([q([A(0),w(),P(),N()]),q([A(1),w(),fe(P()),N()]),q([A(2),P(),N()])]);function T(r){return C([r.transform(n=>[n]),z(r)])}var Pe=D(["sfu","gateway"]),Te=D(["connect","roomclose","roomupdate","roombanclient","roomsendmessage"]),oo=B({uid:l(),cid:l().optional(),rid:T(l()).refine(r=>r.length>=1,{message:"missing rid"}),nsp:l().optional(),adr:l().optional(),aud:T(Pe).optional(),sub:T(Te).optional(),exp:J().optional(),nbf:J().optional(),ups:l().optional(),tgs:T(l()).optional(),tsp:J().optional(),internal:B({server:l().optional()}).optional()});import{array as S,bigint as Ie,discriminatedUnion as ve,enum as E,literal as h,number as i,object as o,record as Ae,string as m,tuple as qe,union as Ne}from"zod";import{boolean as he,literal as G,number as ke,object as K,string as x,union as _e}from"zod";var d=ke(),Ze=K({kind:G("audio").optional(),uid:x().optional(),ref:x().optional(),customType:x().optional()}),Ce=K({kind:G("video"),codec:x().optional(),uid:x().optional(),ref:x().optional(),customType:x().optional()}),F=_e([Ze,Ce]),L=K({id:d,properties:F,paused:he()});import{array as Me,discriminatedUnion as be,literal as j,number as f,object as b,string as Re,tuple as Q,union as Ue}from"zod";var a=f(),R=Ue([Q([f(),f(),f()]),Q([f(),f()])]),H=b({id:a,user_id:Re(),user_data:t,medias:Me(L)}),X=be("kind",[b({kind:j("UserDataChanged"),peer_id:a,user_data:t}),b({kind:j("MediaStarted"),peer_id:a,media:L}),b({kind:j("MediaStopped"),peer_id:a,media_id:d})]);var U=m(),I;(y=>(y.RoomSchema=o({id:U,customer:m(),user_data:t,peers:S(H)}),y.RoomUpdateSchema=ve("kind",[o({kind:h("Joined"),room:y.RoomSchema,media_ids:S(d),own_peer_id:a}),o({kind:h("Left"),reason:E(["RoomClosing","ServerClosing","PeerKicked"])}),o({kind:h("PeerJoined"),peer:H}),o({kind:h("PeerLeft"),peer_id:a}),o({kind:h("UserDataChanged"),user_data:t.optional()})]),y.RoomUpdatesSchema=o({updates:S(y.RoomUpdateSchema)}),y.RoomStatusSchema=E(["Joining","Joined","Closed"]),y.RoomStatusChangedSchema=o({status:y.RoomStatusSchema,message:m().optional()})))(I||={});var we;(e=>{e.ParametersSchema=Ae(m(),M),e.PositionSchema=o({x:i(),y:i(),z:i(),channel:i()}),e.ChannelMaskSchema=Ie().nonnegative().lte(0xFFFFFFFFFFFFFFFFn),e.HelloRoomSchema=o({token:m(),room_id:U.optional(),user_data:t.optional(),parameters:e.ParametersSchema.optional(),channel_masks:S(qe([i(),e.ChannelMaskSchema])).optional(),positions:S(e.PositionSchema).optional()}),e.ClientHelloSchema=o({Room:e.HelloRoomSchema}),e.ServerHelloSchema=Ne([o({Ok:o({})}),o({Rejected:o({message:m()})})]);let Z=o({user_data:t.optional(),tags:S(m()).optional(),parameters:e.ParametersSchema.optional()});e.PeerPropertiesSchema=Z,e.PingSchema=o({Ping:o({id:i()})}),e.ChangeSelfSchema=o({ChangeSelf:Z.omit({tags:!0})}),e.SetAudioMaskSchema=o({SetAudioMask:o({peer_id:i(),mask:e.ChannelMaskSchema})}),e.SendMessageSchema=o({SendMessage:o({peer_ids:i().array().default([]),message:t})}),e.CallSchema=e.PingSchema.or(e.ChangeSelfSchema).or(e.SetAudioMaskSchema).or(e.SendMessageSchema),e.PongSchema=o({Pong:o({id:i()})}),e.JoinedSchema=o({Joined:o({own_peer_id:i(),room_id:m(),customer:m()})}),e.LeftSchema=o({Left:o({reason:E(["room_closing","server_closing","peer_kicked"])})}),e.PeerJoinedSchema=o({PeerJoined:Z.extend({peer_id:i(),user_id:m()})}),e.PeerLeftSchema=o({PeerLeft:o({peer_id:i()})}),e.PeerChangedSchema=o({PeerChanged:Z.extend({peer_id:i()})}),e.NewReconnectTokenSchema=o({NewReconnectToken:o({token:m()})}),e.MessageReceivedSchema=o({MessageReceived:o({sender_peer_id:i(),message:t})}),e.ServerErrorSchema=o({Error:o({message:m()})}),e.EventSchema=e.PongSchema.or(e.JoinedSchema).or(e.LeftSchema).or(e.PeerJoinedSchema).or(e.PeerLeftSchema).or(e.PeerChangedSchema).or(e.NewReconnectTokenSchema).or(e.MessageReceivedSchema).or(e.ServerErrorSchema)})(we||={});import{object as Je}from"zod";var Y=Je({sender_peer_id:a,message:t});import{array as Ke,discriminatedUnion as Fe,enum as Le,literal as W,null as je,number as He,object as O,string as k,tuple as Ee,union as We}from"zod";var v=Fe("kind",[O({kind:W("Sdp"),type:Le(["Answer","Offer"]),sdp:k(),media_map:Ke(Ee([d,k()]))}),O({kind:W("Trickle"),candidate:k(),spd_mid:k().optional(),spd_mline_index:He().optional(),username_fragment:We([k(),je()]).optional()}),O({kind:W("TrickleFinished")})]);import{array as ze,literal as V,null as u,number as Be,object as p,string as _}from"zod";function $(r,n){r||Oe(n)}function Oe(r){throw new Error(r)}function Io(r,n,c){let s=c[r];if(!s)return;let g=s.request.safeParse(n);return g.success?{name:r,request:g.data}:void 0}function vo(r,n,c){let s=c[r];return $(s!==void 0,"unknown command schema"),s.request.parse(n)}function Ao(r,n,c){let s=c[r]?.response.safeParse(n);return s?.success?s.data:void 0}var qo={Hello:{request:p({stream:V("main")}),response:u()},JoinRoom:{request:p({token:_(),room_id:U,user_data:t,position:R}),response:p({peer_id:a,stream_id:Be().optional(),token:_().optional()})},WebRtcUpdate:{request:v,response:u()},RequestReconnectToken:{request:p({peer_id:a.optional()}),response:_()},Ping:{request:p({}),response:u()}},No={Hello:{request:p({stream:V("room"),token:_(),room_id:_(),user_data:t,position:R}),response:u()},UpdatePeer:{request:p({user_data:t}),response:u()},StartMedia:{request:p({media_id:d,properties:F}),response:u()},StopMedia:{request:p({media_id:d}),response:u()},PauseMedia:{request:p({media_id:d}),response:u()},ResumeMedia:{request:p({media_id:d}),response:u()},SetPeerPosition:{request:p({position:R}),response:u()},SendMessage:{request:p({target_peer_ids:ze(a).optional(),message:t}),response:u()}};function jo(r,n,c){let s=c[r];if(!s)return;let g=s.safeParse(n);return g.success?{name:r,properties:g.data}:void 0}var Ho={WebRtcUpdate:v},Eo={RoomStatusChanged:I.RoomStatusChangedSchema,RoomUpdated:I.RoomUpdatesSchema,PeerUpdated:X,MessageReceived:Y};export{t as ByteArraySchema,M as JsonSchema,qo as MainCommandsRpc,Ho as MainNotificationsRpc,Ze as MediaAudioPropertiesSchema,d as MediaIdSchema,F as MediaPropertiesSchema,L as MediaSchema,Ce as MediaVideoPropertiesSchema,Ye as MessagePackRpcSchema,Y as MessageReceivedSchema,a as PeerIdSchema,R as PeerPositionSchema,H as PeerSchema,X as PeerUpdateSchema,No as RoomCommandsRpc,U as RoomIdSchema,Eo as RoomNotificationsRpc,I as RoomV1,we as RoomV2,Pe as TokenAudienceSchema,oo as TokenClaimsSchema,Te as TokenSubjectSchema,v as WebRtcUpdateSchema,T as oneOrMany,Io as parseCommand,jo as parseNotification,vo as parseRequest,Ao as parseResponse};