UNPKG

rsocket-frames-ts

Version:

RSocket frame codec implemented with Uint8Array. Supports full spec, metadata extensions, and browser compatibility.

2 lines 17.5 kB
var l=(p=>(p[p.RESERVED=0]="RESERVED",p[p.SETUP=1]="SETUP",p[p.LEASE=2]="LEASE",p[p.KEEPALIVE=3]="KEEPALIVE",p[p.REQUEST_RESPONSE=4]="REQUEST_RESPONSE",p[p.REQUEST_FNF=5]="REQUEST_FNF",p[p.REQUEST_STREAM=6]="REQUEST_STREAM",p[p.REQUEST_CHANNEL=7]="REQUEST_CHANNEL",p[p.REQUEST_N=8]="REQUEST_N",p[p.CANCEL=9]="CANCEL",p[p.PAYLOAD=10]="PAYLOAD",p[p.ERROR=11]="ERROR",p[p.METADATA_PUSH=12]="METADATA_PUSH",p[p.RESUME=13]="RESUME",p[p.RESUME_OK=14]="RESUME_OK",p[p.EXT=63]="EXT",p))(l||{});(t=>{function o(e){return Array.from(Object.entries(t)).filter(([r,i])=>Number.isNaN(Number(r))).filter(([r,i])=>(e&i)==i).map(([r,i])=>i).reverse().shift()}t.fromByte=o})(l||(l={}));var E=class{};var h=class o extends E{constructor(e,r,i){super();this.frameType=e;this.streamId=r;this.flags=i}static from(e){let r=e.i32(),i=e.i16(),n=l.fromByte(i>>10),c=i&1023;return new o(n,r,c)}isFlagSet(e){return(this.flags&e)==e}write(e){e.i31(this.streamId),e.i16(this.frameType<<10|this.flags)}};var f=class extends E{constructor(e,r){super();this.mimeType=e;this.payload=r}toUint8Array(){return this.payload}write(e,r=!0){let i=this.toUint8Array();r&&e.i24(i.length),e.write(i)}};var O=class extends E{constructor(e,r){super();this.mimeType=e;this.payload=r}toUint8Array(){return this.payload}write(e){e.write(this.toUint8Array())}};var ue=(r=>(r[r.NONE=0]="NONE",r[r.IGNORE=512]="IGNORE",r[r.METADATA=256]="METADATA",r))(ue||{}),y=Object.assign({combine:(...o)=>o.reduce((t,e)=>t|e,0)},ue),de=(t=>(t[t.RESPOND=128]="RESPOND",t))(de||{}),ne=Object.assign({},de,y),le=(u=>(u[u.EXT_1=128]="EXT_1",u[u.EXT_2=64]="EXT_2",u[u.EXT_3=32]="EXT_3",u[u.EXT_4=16]="EXT_4",u[u.EXT_5=8]="EXT_5",u[u.EXT_6=4]="EXT_6",u[u.EXT_7=2]="EXT_7",u[u.EXT_8=1]="EXT_8",u))(le||{}),fe=Object.assign({},le,y),ye=(e=>(e[e.RESUME=128]="RESUME",e[e.LEASE=64]="LEASE",e))(ye||{}),T=Object.assign({},ye,y),se=(t=>(t[t.FOLLOWS=128]="FOLLOWS",t))(se||{}),U=Object.assign({},se,y),N=U,me=N,be=(t=>(t[t.COMPLETE=64]="COMPLETE",t))(be||{}),xe=(t=>(t[t.NEXT=32]="NEXT",t))(xe||{}),w=Object.assign({},se,be,y),_=Object.assign({},xe,w);import Se from"bebyte";var m=class extends E{constructor(e,r,i=y.NONE,n,c){super();this.metadata=n;this.payload=c;this.header=new h(e,r,y.combine(i,this.metadata!=null?y.METADATA:y.NONE))}get type(){return this.header.frameType}isFlagSet(e){return this.header.isFlagSet(e)}canBeIgnored(){return this.isFlagSet(y.IGNORE)}hasMetadata(){return this.isFlagSet(y.METADATA)}toUint8Array(){let e=Se.writer();return this.header.write(e),this.write(e),this.metadata?.write?.(e,this.type!=2&&this.type!=12),this.payload?.write?.(e),e.toUint8Array()}};import Pe from"bebyte";var v=class o extends m{constructor(t){throw super(0,t,y.IGNORE),new Error("Reserved frame could not be created!")}static from(t,e,r,i){return new o(t.streamId)}write(t){}};var he=new TextEncoder,Fe=new TextDecoder;function b(o){return he.encode(o)}function x(o){return Fe.decode(o)}import Ae from"bebyte";var F=class F{constructor(t,e){this.mimeType=t;this.identifier=e;F._values.set(t,this)}get isWellKnown(){return this.identifier!=null}serializeMetadata(t){return new f(this,t)}deserializeMetadata(t,e=!0){return new f(this,e?t.read(t.i24()):t.readRemaining())}toMetadata(t,e=!0){return t instanceof Uint8Array?this.deserializeMetadata(Ae.reader(t),e):typeof t.i8=="function"?this.deserializeMetadata(t,e):this.serializeMetadata(t)}serializePayload(t){return new O(this,t)}deserializePayload(t){return new O(this,t.readRemaining())}toPayload(t){return t instanceof Uint8Array?this.deserializePayload(Ae.reader(t)):typeof t.i8=="function"?this.deserializePayload(t):this.serializePayload(t)}static valueOf(t){return Array.from(F._values.values()).find(e=>t==(typeof t=="string"?e.mimeType:e.identifier))||new class extends F{constructor(r){super(r),console.warn(`An unknown MimeType#${r} has been detected. Please register it before using it`)}}(String(t))}};F._values=new Map;var a=F;var D=class o extends m{constructor(e,r,i,n,c,A=1,u=0,g=T.NONE,S,I){g=T.combine(g,c!=null?T.RESUME:T.NONE);super(1,0,g,S,I);this.keepalive=e;this.lifetime=r;this.metadataType=i;this.dataType=n;this.resumeToken=c;this.majorVersion=A;this.minorVersion=u}static from(e,r,i,n){let c=r.i16(),A=r.i16(),u=r.i32(),g=r.i32(),S=e.isFlagSet(T.RESUME)?x(r.read(r.i16())):void 0,I=a.valueOf(x(r.read(r.i8()))),d=a.valueOf(x(r.read(r.i8()))),pe=e.isFlagSet(T.METADATA)?I.toMetadata(r):void 0,ce=d.toPayload(r);return new o(u,g,I,d,S,c,A,e.flags,pe,ce)}write(e){if(e.i16(this.majorVersion),e.i16(this.minorVersion),e.i31(this.keepalive),e.i31(this.lifetime),this.hasResume()){let n=b(this.resumeToken);e.i16(n.length),e.write(n)}let r=b(this.metadataType.mimeType);e.i8(r.length),e.write(r);let i=b(this.dataType.mimeType);e.i8(i.length),e.write(i)}canBeIgnored(){return!1}hasResume(){return this.isFlagSet(T.RESUME)}isRespectLease(){return this.isFlagSet(T.LEASE)}};var L=class o extends m{constructor(e,r,i){super(2,0,y.NONE,i,void 0);this.ttl=e;this.requestLimit=r}static from(e,r,i,n){return new o(r.i32(),r.i32(),e.isFlagSet(y.METADATA)?i.toMetadata(r,!1):void 0)}write(e){e.i31(this.ttl),e.i31(this.requestLimit)}canBeIgnored(){return!1}};var C=class o extends m{constructor(e=ne.NONE,r=0n,i){super(3,0,e,void 0,i);this.lastReceivedPosition=r}static from(e,r,i,n){return new o(e.flags,r.i64(),n.toPayload(r))}isFlagSet(e){return super.isFlagSet(e)}write(e){e.i63(this.lastReceivedPosition)}canBeIgnored(){return!1}hasMetadata(){return!1}isRequireRespond(){return this.isFlagSet(ne.RESPOND)}};var H=class o extends m{constructor(t,e,r,i){super(4,t,e,r,i)}static from(t,e,r,i){return new o(t.streamId,t.flags,t.isFlagSet(N.METADATA)?r.toMetadata(e):void 0,i.toPayload(e))}write(t){}isFlagSet(t){return super.isFlagSet(t)}canBeIgnored(){return!1}hasFollows(){return this.isFlagSet(N.FOLLOWS)}};var k=class o extends m{constructor(t,e,r,i){super(5,t,e,r,i)}static from(t,e,r,i){return new o(t.streamId,t.flags,t.isFlagSet(U.METADATA)?r.toMetadata(e):void 0,i.toPayload(e))}write(t){}isFlagSet(t){return super.isFlagSet(t)}canBeIgnored(){return!1}hasFollows(){return this.isFlagSet(U.FOLLOWS)}};var q=class o extends m{constructor(e,r,i,n,c){super(6,e,r,n,c);this.request=i}static from(e,r,i,n){return new o(e.streamId,e.flags,r.i32(),e.isFlagSet(me.METADATA)?i.toMetadata(r):void 0,n.toPayload(r))}write(e){e.i31(this.request)}isFlagSet(e){return super.isFlagSet(e)}canBeIgnored(){return!1}hasFollows(){return this.isFlagSet(me.FOLLOWS)}};var z=class o extends m{constructor(e,r,i,n,c){super(7,e,r,n,c);this.request=i}static from(e,r,i,n){return new o(e.streamId,e.flags,r.i32(),e.isFlagSet(w.METADATA)?i.toMetadata(r):void 0,n.toPayload(r))}write(e){e.i31(this.request)}isFlagSet(e){return super.isFlagSet(e)}canBeIgnored(){return!1}hasFollows(){return this.isFlagSet(w.FOLLOWS)}isComplete(){return this.isFlagSet(w.COMPLETE)}};var G=class o extends m{constructor(e,r){super(8,e);this.request=r}static from(e,r,i,n){return new o(e.streamId,r.i32())}write(e){e.i31(this.request)}canBeIgnored(){return!1}hasMetadata(){return!1}};var V=class o extends m{constructor(t){super(9,t)}static from(t,e,r,i){return new o(t.streamId)}write(t){}canBeIgnored(){return!1}hasMetadata(){return!1}};var j=class o extends m{constructor(t,e,r,i){super(10,t,e,r,i)}static from(t,e,r,i){return new o(t.streamId,t.flags,t.isFlagSet(_.METADATA)?r.toMetadata(e):void 0,i.toPayload(e))}write(t){}isFlagSet(t){return super.isFlagSet(t)}canBeIgnored(){return!1}hasFollows(){return this.isFlagSet(_.FOLLOWS)}isComplete(){return this.isFlagSet(_.COMPLETE)}isNext(){return this.isFlagSet(_.NEXT)}};var M=(d=>(d[d.RESERVED_ZERO=0]="RESERVED_ZERO",d[d.INVALID_SETUP=1]="INVALID_SETUP",d[d.UNSUPPORTED_SETUP=2]="UNSUPPORTED_SETUP",d[d.REJECTED_SETUP=3]="REJECTED_SETUP",d[d.REJECTED_RESUME=4]="REJECTED_RESUME",d[d.CONNECTION_ERROR=257]="CONNECTION_ERROR",d[d.CONNECTION_CLOSE=258]="CONNECTION_CLOSE",d[d.APPLICATION_ERROR=513]="APPLICATION_ERROR",d[d.REJECTED=514]="REJECTED",d[d.CANCELED=515]="CANCELED",d[d.INVALID=516]="INVALID",d[d.RESERVED_ONE=4294967295]="RESERVED_ONE",d))(M||{});(t=>{function o(e){return Array.from(Object.entries(t)).filter(([r,i])=>Number.isNaN(Number(r))).filter(([r,i])=>(e&i)==i).map(([r,i])=>i).reverse().shift()}t.fromByte=o})(M||(M={}));var X=class o extends m{constructor(e,r,i){super(11,e,y.NONE,void 0,i);this.code=r}static from(e,r,i,n){return new o(e.streamId,M.fromByte(r.i32()),n.toPayload(r.readRemaining()))}write(e){e.i32(this.code)}canBeIgnored(){return!1}hasMetadata(){return!1}};var Q=class o extends m{constructor(t){super(12,0,y.METADATA,t,void 0)}static from(t,e,r,i){return new o(r.toMetadata(e,!1))}write(t){}canBeIgnored(){return!1}hasMetadata(){return!0}};var Z=class o extends m{constructor(e,r,i,n=1,c=0){super(13,0);this.resumeToken=e;this.lastReceivedServerPosition=r;this.firstAvailableClientPosition=i;this.majorVersion=n;this.minorVersion=c}static from(e,r,i,n){let c=r.i16(),A=r.i16(),u=x(r.read(r.i16())),g=r.i64(),S=r.i64();return new o(u,g,S,c,A)}write(e){e.i16(this.majorVersion),e.i16(this.minorVersion);let r=b(this.resumeToken);e.i16(r.length),e.write(r),e.i63(this.lastReceivedServerPosition),e.i63(this.firstAvailableClientPosition)}canBeIgnored(){return!1}hasMetadata(){return!1}};var W=class o extends m{constructor(e){super(14,0);this.lastReceivedClientPosition=e}static from(e,r,i,n){return new o(r.i64())}write(e){e.i63(this.lastReceivedClientPosition)}canBeIgnored(){return!1}hasMetadata(){return!1}};var J=class o extends m{constructor(e,r,i,n,c){super(63,e,r,n,c);this.extendedType=i}static from(e,r,i,n){return new o(e.streamId,e.flags,M.fromByte(r.i32()),e.isFlagSet(fe.METADATA)?i.toMetadata(r):void 0,n.toPayload(r))}isFlagSet(e){return super.isFlagSet(e)}write(e){e.i31(this.extendedType)}};function Be(o,t,e){let r=Pe.reader(o),i=h.from(r);switch(i.frameType){case 0:return v.from(i,r,t,e);case 1:return D.from(i,r,t,e);case 2:return L.from(i,r,t,e);case 3:return C.from(i,r,t,e);case 4:return H.from(i,r,t,e);case 5:return k.from(i,r,t,e);case 6:return q.from(i,r,t,e);case 7:return z.from(i,r,t,e);case 8:return G.from(i,r,t,e);case 9:return V.from(i,r,t,e);case 10:return j.from(i,r,t,e);case 11:return X.from(i,r,t,e);case 12:return Q.from(i,r,t,e);case 13:return Z.from(i,r,t,e);case 14:return W.from(i,r,t,e);case 63:return J.from(i,r,t,e);default:throw new Error("Unknown frame type")}}var ci={deserialize:(o,t,e)=>Object.assign(Be(o,t,e),{toUint8Array:()=>o})};import Y from"bebyte";var $=class extends a{serializeMetadata(t){return new class extends f{toUint8Array(){let r=Y.writer();if(t.isWellKnown)r.i8(128|t.identifier);else{let i=b(t.mimeType);r.i7(i.length),r.write(i)}return r.toUint8Array()}}(this,t)}deserializeMetadata(t,e=!0){let r=e?t.read(t.i24()):t.readRemaining(),i=Y.reader(r),n=i.i8(),c=n&127;return new f(this,n>>7?a.valueOf(c):new a(x(i.read(c))))}},K=class extends a{serializeMetadata(t){return new class extends f{toUint8Array(){return t.reduce((r,i)=>{if(i.isWellKnown)r.i8(128|i.identifier);else{let n=b(i.mimeType);r.i7(n.length),r.write(n)}return r},Y.writer()).toUint8Array()}}(this,t)}deserializeMetadata(t,e=!0){let r=e?t.read(t.i24()):t.readRemaining(),i=Y.reader(r),n=[];for(;i.offset<r.length;){let c=i.i8(),A=c&127;n.push(c>>7?a.valueOf(A):new a(x(i.read(A))))}return new f(this,n)}};import ge from"bebyte";var ee=class extends a{serializeMetadata(t){return new class extends f{toUint8Array(){return t.reduce((r,i)=>{let n=b(i);return r.i8(n.length),r.write(n),r},ge.writer()).toUint8Array()}}(this,t)}deserializeMetadata(t,e=!0){let r=e?t.read(t.i24()):t.readRemaining(),i=ge.reader(r),n=[];for(;i.offset<r.length;)n.push(x(i.read(i.i8())));return new f(this,n)}};import Ee from"bebyte";var te=class extends a{serializeMetadata(t){return new class extends f{toUint8Array(){return t.reduce((r,i)=>{if(i.mimeType.isWellKnown)r.i8(128|i.mimeType.identifier);else{let n=b(i.mimeType.mimeType);r.i7(n.length),r.write(n)}return i.write(r,!0),r},Ee.writer()).toUint8Array()}}(this,t)}deserializeMetadata(t,e=!0){let r=e?t.read(t.i24()):t.readRemaining(),i=Ee.reader(r),n=[];for(;i.offset<r.length;){let c=i.i8(),A=c&127,u=c>>7?a.valueOf(A):a.valueOf(x(i.read(A)));n.push(u.toMetadata(i,!0))}return new f(this,n)}};import Te from"bebyte";var re=class extends a{serializeMetadata(t){return new class extends f{toUint8Array(){let e=Te.writer(),r=0;if(t.flags.idsSet&&(r|=128),t.flags.debug&&(r|=64),t.flags.sampled&&(r|=32),t.flags.notSampled&&(r|=16),t.flags.traceId128&&(r|=8),t.flags.hasParent&&(r|=4),e.i8(r),t.flags.traceId128&&Array.isArray(t.traceId))e.i64(t.traceId[0]),e.i64(t.traceId[1]);else if(!Array.isArray(t.traceId))e.i64(t.traceId);else throw new Error("Invalid traceId format");return e.i64(t.spanId),t.flags.hasParent&&t.parentSpanId!=null&&e.i64(t.parentSpanId),e.toUint8Array()}}(this,t)}deserializeMetadata(t,e=!0){let r=e?t.read(t.i24()):t.readRemaining(),i=Te.reader(r),n=i.i8(),c={idsSet:(n&128)==128,debug:(n&64)==64,sampled:(n&32)==32,notSampled:(n&16)==16,traceId128:(n&8)==8,hasParent:(n&4)==4},A;c.traceId128?A=[i.i64(),i.i64()]:A=i.i64();let u=i.i64(),g;return c.hasParent&&(g=i.i64()),new f(this,{flags:c,traceId:A,spanId:u,parentSpanId:g})}};import Re from"bebyte";var P=class P{constructor(t,e){this.authType=t;this.identifier=e;P._values.set(t,this)}get isWellKnown(){return this.identifier!=null}auth(t){return{authType:this,data:t}}static valueOf(t){return Array.from(P._values.values()).find(e=>t==(typeof t=="string"?e.authType:e.identifier))||new class extends P{read(r){return r.readRemaining()}write(r,i){r.write(i)}}(String(t))}};P._values=new Map;var R=P;var ie=class extends R{read(t){return{username:x(t.read(t.i16())),password:x(t.readRemaining())}}write(t,e){let r=b(e.username);t.i16(r.length),t.write(r),t.write(b(e.password))}};var ae=class extends R{read(t){return x(t.readRemaining())}write(t,e){t.write(b(e))}};var B;(r=>(r.SIMPLE=new ie("simple",0),r.BEARER=new ae("bearer",1),r.valueOf=R.valueOf))(B||(B={}));var oe=class extends a{serializeMetadata(t){return new class extends f{toUint8Array(){let r=Re.writer();if(t.authType.isWellKnown)r.i8(128|t.authType.identifier);else{let i=b(t.authType.authType);r.i7(i.length),r.write(i)}return t.authType.write(r,t.data),r.toUint8Array()}}(this,t)}deserializeMetadata(t,e=!0){let r=e?t.read(t.i24()):t.readRemaining(),i=Re.reader(r),n=i.i8(),c=n&127,A=n>>7?B.valueOf(c):B.valueOf(x(i.read(c))),u=A.read(i);return new f(this,{authType:A,data:u})}};var Me;(s=>(s.APPLICATION_AVRO=new a("application/avro",0),s.APPLICATION_CBOR=new a("application/cbor",1),s.APPLICATION_GRAPHQL=new a("application/graphql",2),s.APPLICATION_GZIP=new a("application/gzip",3),s.APPLICATION_JAVASCRIPT=new a("application/javascript",4),s.APPLICATION_JSON=new a("application/json",5),s.APPLICATION_OCTET_STREAM=new a("application/octet-stream",6),s.APPLICATION_PDF=new a("application/pdf",7),s.APPLICATION_THRIFT=new a("application/vnd.apache.thrift.binary",8),s.APPLICATION_PROTOBUF=new a("application/vnd.google.protobuf",9),s.APPLICATION_XML=new a("application/xml",10),s.APPLICATION_ZIP=new a("application/zip",11),s.AUDIO_AAC=new a("audio/aac",12),s.AUDIO_MP3=new a("audio/mp3",13),s.AUDIO_MP4=new a("audio/mp4",14),s.AUDIO_MPEG3=new a("audio/mpeg3",15),s.AUDIO_MPEG=new a("audio/mpeg",16),s.AUDIO_OGG=new a("audio/ogg",17),s.AUDIO_OPUS=new a("audio/opus",18),s.AUDIO_VORBIS=new a("audio/vorbis",19),s.IMAGE_BMP=new a("image/bmp",20),s.IMAGE_GIF=new a("image/gif",21),s.IMAGE_HEIC_SEQUENCE=new a("image/heic-sequence",22),s.IMAGE_HEIC=new a("image/heic",23),s.IMAGE_HEIF_SEQUENCE=new a("image/heif-sequence",24),s.IMAGE_HEIF=new a("image/heif",25),s.IMAGE_JPEG=new a("image/jpeg",26),s.IMAGE_PNG=new a("image/png",27),s.IMAGE_TIFF=new a("image/tiff",28),s.MULTIPART_MIXED=new a("multipart/mixed",29),s.TEXT_CSS=new a("text/css",30),s.TEXT_CSV=new a("text/csv",31),s.TEXT_HTML=new a("text/html",32),s.TEXT_PLAIN=new a("text/plain",33),s.TEXT_XML=new a("text/xml",34),s.VIDEO_H264=new a("video/H264",35),s.VIDEO_H265=new a("video/H265",36),s.VIDEO_VP8=new a("video/VP8",37),s.APPLICATION_HESSIAN=new a("application/x-hessian",38),s.APPLICATION_JAVA_OBJECT=new a("application/x-java-object",39),s.APPLICATION_CLOUDEVENTS_JSON=new a("application/cloudevents+json",40),s.MESSAGE_RSOCKET_MIMETYPE=new $("message/x.rsocket.mime-type.v0",122),s.MESSAGE_RSOCKET_ACCEPT_MIMETYPES=new K("message/x.rsocket.accept-mime-types.v0",123),s.MESSAGE_RSOCKET_AUTHENTICATION=new oe("message/x.rsocket.authentication.v0",124),s.MESSAGE_RSOCKET_TRACING_ZIPKIN=new re("message/x.rsocket.tracing-zipkin.v0",125),s.MESSAGE_RSOCKET_ROUTING=new ee("message/x.rsocket.routing.v0",126),s.MESSAGE_RSOCKET_COMPOSITE_METADATA=new te("message/x.rsocket.composite-metadata.v0",127)))(Me||(Me={}));export{R as AuthType,V as CancelFrame,X as ErrorFrame,fe as ExtensionFlag,J as ExtensionFrame,U as FireAndForgetFlag,m as Frame,ci as FrameDeserializer,y as FrameFlag,l as FrameType,h as Header,ne as KeepaliveFlag,C as KeepaliveFrame,L as LeaseFrame,f as Metadata,Q as MetadataPushFrame,a as MimeType,O as Payload,_ as PayloadFlag,j as PayloadFrame,w as RequestChannelFlag,z as RequestChannelFrame,k as RequestFireAndForgetFrame,G as RequestNFrame,N as RequestResponseFlag,H as RequestResponseFrame,me as RequestStreamFlag,q as RequestStreamFrame,v as ReservedFrame,Z as ResumeFrame,W as ResumeOkFrame,T as SetupFlag,D as SetupFrame,B as WellKnownAuthType,Me as WellKnownMimeType}; //# sourceMappingURL=index.mjs.map