UNPKG

logbeacon

Version:

浏览器端日志采集与上报工具,支持多种日志服务后端,包括阿里云日志服务(SLS)和Grafana Loki

3 lines (2 loc) 18.8 kB
import crypto from"crypto";var u8=Uint8Array,u16=Uint16Array,i32=Int32Array,fleb=new u8([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),fdeb=new u8([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),clim=new u8([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),freb=function(eb,start){for(var b=new u16(31),i=0;i<31;++i)b[i]=start+=1<<eb[i-1];var r=new i32(b[30]);for(i=1;i<30;++i)for(var j=b[i];j<b[i+1];++j)r[j]=j-b[i]<<5|i;return{b:b,r:r}},_a=freb(fleb,2),fl=_a.b,revfl=_a.r;fl[28]=258,revfl[258]=28;for(var fd=freb(fdeb,0).b,rev=new u16(32768),i=0;i<32768;++i){var x=(43690&i)>>1|(21845&i)<<1;x=(61680&(x=(52428&x)>>2|(13107&x)<<2))>>4|(3855&x)<<4,rev[i]=((65280&x)>>8|(255&x)<<8)>>1}var hMap=function(cd,mb,r){for(var s=cd.length,i=0,l=new u16(mb);i<s;++i)cd[i]&&++l[cd[i]-1];var co,le=new u16(mb);for(i=1;i<mb;++i)le[i]=le[i-1]+l[i-1]<<1;if(r){co=new u16(1<<mb);var rvb=15-mb;for(i=0;i<s;++i)if(cd[i])for(var sv=i<<4|cd[i],r_1=mb-cd[i],v=le[cd[i]-1]++<<r_1,m=v|(1<<r_1)-1;v<=m;++v)co[rev[v]>>rvb]=sv}else for(co=new u16(s),i=0;i<s;++i)cd[i]&&(co[i]=rev[le[cd[i]-1]++]>>15-cd[i]);return co},flt=new u8(288);for(i=0;i<144;++i)flt[i]=8;for(i=144;i<256;++i)flt[i]=9;for(i=256;i<280;++i)flt[i]=7;for(i=280;i<288;++i)flt[i]=8;var fdt=new u8(32);for(i=0;i<32;++i)fdt[i]=5;var flrm=hMap(flt,9,1),fdrm=hMap(fdt,5,1),max=function(a){for(var m=a[0],i=1;i<a.length;++i)a[i]>m&&(m=a[i]);return m},bits=function(d,p,m){var o=p/8|0;return(d[o]|d[o+1]<<8)>>(7&p)&m},bits16=function(d,p){var o=p/8|0;return(d[o]|d[o+1]<<8|d[o+2]<<16)>>(7&p)},ec=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],err=function(ind,msg,nt){var e=new Error(msg||ec[ind]);if(e.code=ind,Error.captureStackTrace&&Error.captureStackTrace(e,err),!nt)throw e;return e},inflt=function(dat,st,buf,dict){var sl=dat.length,dl=dict?dict.length:0;if(!sl||st.f&&!st.l)return buf||new u8(0);var noBuf=!buf,resize=noBuf||2!=st.i,noSt=st.i;noBuf&&(buf=new u8(3*sl));var cbuf=function(l){var bl=buf.length;if(l>bl){var nbuf=new u8(Math.max(2*bl,l));nbuf.set(buf),buf=nbuf}},final=st.f||0,pos=st.p||0,bt=st.b||0,lm=st.l,dm=st.d,lbt=st.m,dbt=st.n,tbts=8*sl;do{if(!lm){final=bits(dat,pos,1);var type=bits(dat,pos+1,3);if(pos+=3,!type){var l=dat[(s=4+((pos+7)/8|0))-4]|dat[s-3]<<8,t=s+l;if(t>sl){noSt&&err(0);break}resize&&cbuf(bt+l),buf.set(dat.subarray(s,t),bt),st.b=bt+=l,st.p=pos=8*t,st.f=final;continue}if(1==type)lm=flrm,dm=fdrm,lbt=9,dbt=5;else if(2==type){var hLit=bits(dat,pos,31)+257,hcLen=bits(dat,pos+10,15)+4,tl=hLit+bits(dat,pos+5,31)+1;pos+=14;for(var ldt=new u8(tl),clt=new u8(19),i=0;i<hcLen;++i)clt[clim[i]]=bits(dat,pos+3*i,7);pos+=3*hcLen;var clb=max(clt),clbmsk=(1<<clb)-1,clm=hMap(clt,clb,1);for(i=0;i<tl;){var s,r=clm[bits(dat,pos,clbmsk)];if(pos+=15&r,(s=r>>4)<16)ldt[i++]=s;else{var c=0,n=0;for(16==s?(n=3+bits(dat,pos,3),pos+=2,c=ldt[i-1]):17==s?(n=3+bits(dat,pos,7),pos+=3):18==s&&(n=11+bits(dat,pos,127),pos+=7);n--;)ldt[i++]=c}}var lt=ldt.subarray(0,hLit),dt=ldt.subarray(hLit);lbt=max(lt),dbt=max(dt),lm=hMap(lt,lbt,1),dm=hMap(dt,dbt,1)}else err(1);if(pos>tbts){noSt&&err(0);break}}resize&&cbuf(bt+131072);for(var lms=(1<<lbt)-1,dms=(1<<dbt)-1,lpos=pos;;lpos=pos){var sym=(c=lm[bits16(dat,pos)&lms])>>4;if((pos+=15&c)>tbts){noSt&&err(0);break}if(c||err(2),sym<256)buf[bt++]=sym;else{if(256==sym){lpos=pos,lm=null;break}var add=sym-254;if(sym>264){var b=fleb[i=sym-257];add=bits(dat,pos,(1<<b)-1)+fl[i],pos+=b}var d=dm[bits16(dat,pos)&dms],dsym=d>>4;d||err(3),pos+=15&d;dt=fd[dsym];if(dsym>3){b=fdeb[dsym];dt+=bits16(dat,pos)&(1<<b)-1,pos+=b}if(pos>tbts){noSt&&err(0);break}resize&&cbuf(bt+131072);var end=bt+add;if(bt<dt){var shift=dl-dt,dend=Math.min(dt,end);for(shift+bt<0&&err(3);bt<dend;++bt)buf[bt]=dict[shift+bt]}for(;bt<end;++bt)buf[bt]=buf[bt-dt]}}st.l=lm,st.p=lpos,st.b=bt,st.f=final,lm&&(final=1,st.m=lbt,st.d=dm,st.n=dbt)}while(!final);return bt!=buf.length&&noBuf?function(v,s,e){return(null==s||s<0)&&(s=0),(null==e||e>v.length)&&(e=v.length),new u8(v.subarray(s,e))}(buf,0,bt):buf.subarray(0,bt)},et=new u8(0);function gunzipSync(data,opts){var d,l,st=function(d){31==d[0]&&139==d[1]&&8==d[2]||err(6,"invalid gzip data");var flg=d[3],st=10;4&flg&&(st+=2+(d[10]|d[11]<<8));for(var zs=(flg>>3&1)+(flg>>4&1);zs>0;zs-=!d[st++]);return st+(2&flg)}(data);return st+8>data.length&&err(6,"invalid gzip data"),inflt(data.subarray(st,-8),{i:2},opts&&opts.out||new u8((l=(d=data).length,(d[l-4]|d[l-3]<<8|d[l-2]<<16|d[l-1]<<24)>>>0)),opts&&opts.dictionary)}var td="undefined"!=typeof TextDecoder&&new TextDecoder;try{td.decode(et,{stream:!0})}catch(e){}const utf8TextDecoder="undefined"==typeof TextDecoder?null:new TextDecoder("utf-8");class Pbf{constructor(buf=new Uint8Array(16)){this.buf=ArrayBuffer.isView(buf)?buf:new Uint8Array(buf),this.dataView=new DataView(this.buf.buffer),this.pos=0,this.type=0,this.length=this.buf.length}readFields(readField,result,end=this.length){for(;this.pos<end;){const val=this.readVarint(),tag=val>>3,startPos=this.pos;this.type=7&val,readField(tag,result,this),this.pos===startPos&&this.skip(val)}return result}readMessage(readField,result){return this.readFields(readField,result,this.readVarint()+this.pos)}readFixed32(){const val=this.dataView.getUint32(this.pos,!0);return this.pos+=4,val}readSFixed32(){const val=this.dataView.getInt32(this.pos,!0);return this.pos+=4,val}readFixed64(){const val=this.dataView.getUint32(this.pos,!0)+4294967296*this.dataView.getUint32(this.pos+4,!0);return this.pos+=8,val}readSFixed64(){const val=this.dataView.getUint32(this.pos,!0)+4294967296*this.dataView.getInt32(this.pos+4,!0);return this.pos+=8,val}readFloat(){const val=this.dataView.getFloat32(this.pos,!0);return this.pos+=4,val}readDouble(){const val=this.dataView.getFloat64(this.pos,!0);return this.pos+=8,val}readVarint(isSigned){const buf=this.buf;let val,b;return b=buf[this.pos++],val=127&b,b<128?val:(b=buf[this.pos++],val|=(127&b)<<7,b<128?val:(b=buf[this.pos++],val|=(127&b)<<14,b<128?val:(b=buf[this.pos++],val|=(127&b)<<21,b<128?val:(b=buf[this.pos],val|=(15&b)<<28,function(l,s,p){const buf=p.buf;let h,b;if(b=buf[p.pos++],h=(112&b)>>4,b<128)return toNum(l,h,s);if(b=buf[p.pos++],h|=(127&b)<<3,b<128)return toNum(l,h,s);if(b=buf[p.pos++],h|=(127&b)<<10,b<128)return toNum(l,h,s);if(b=buf[p.pos++],h|=(127&b)<<17,b<128)return toNum(l,h,s);if(b=buf[p.pos++],h|=(127&b)<<24,b<128)return toNum(l,h,s);if(b=buf[p.pos++],h|=(1&b)<<31,b<128)return toNum(l,h,s);throw new Error("Expected varint not more than 10 bytes")}(val,isSigned,this)))))}readVarint64(){return this.readVarint(!0)}readSVarint(){const num=this.readVarint();return num%2==1?(num+1)/-2:num/2}readBoolean(){return Boolean(this.readVarint())}readString(){const end=this.readVarint()+this.pos,pos=this.pos;return this.pos=end,end-pos>=12&&utf8TextDecoder?utf8TextDecoder.decode(this.buf.subarray(pos,end)):function(buf,pos,end){let str="",i=pos;for(;i<end;){const b0=buf[i];let b1,b2,b3,c=null,bytesPerSequence=b0>239?4:b0>223?3:b0>191?2:1;if(i+bytesPerSequence>end)break;1===bytesPerSequence?b0<128&&(c=b0):2===bytesPerSequence?(b1=buf[i+1],128==(192&b1)&&(c=(31&b0)<<6|63&b1,c<=127&&(c=null))):3===bytesPerSequence?(b1=buf[i+1],b2=buf[i+2],128==(192&b1)&&128==(192&b2)&&(c=(15&b0)<<12|(63&b1)<<6|63&b2,(c<=2047||c>=55296&&c<=57343)&&(c=null))):4===bytesPerSequence&&(b1=buf[i+1],b2=buf[i+2],b3=buf[i+3],128==(192&b1)&&128==(192&b2)&&128==(192&b3)&&(c=(15&b0)<<18|(63&b1)<<12|(63&b2)<<6|63&b3,(c<=65535||c>=1114112)&&(c=null))),null===c?(c=65533,bytesPerSequence=1):c>65535&&(c-=65536,str+=String.fromCharCode(c>>>10&1023|55296),c=56320|1023&c),str+=String.fromCharCode(c),i+=bytesPerSequence}return str}(this.buf,pos,end)}readBytes(){const end=this.readVarint()+this.pos,buffer=this.buf.subarray(this.pos,end);return this.pos=end,buffer}readPackedVarint(arr=[],isSigned){const end=this.readPackedEnd();for(;this.pos<end;)arr.push(this.readVarint(isSigned));return arr}readPackedSVarint(arr=[]){const end=this.readPackedEnd();for(;this.pos<end;)arr.push(this.readSVarint());return arr}readPackedBoolean(arr=[]){const end=this.readPackedEnd();for(;this.pos<end;)arr.push(this.readBoolean());return arr}readPackedFloat(arr=[]){const end=this.readPackedEnd();for(;this.pos<end;)arr.push(this.readFloat());return arr}readPackedDouble(arr=[]){const end=this.readPackedEnd();for(;this.pos<end;)arr.push(this.readDouble());return arr}readPackedFixed32(arr=[]){const end=this.readPackedEnd();for(;this.pos<end;)arr.push(this.readFixed32());return arr}readPackedSFixed32(arr=[]){const end=this.readPackedEnd();for(;this.pos<end;)arr.push(this.readSFixed32());return arr}readPackedFixed64(arr=[]){const end=this.readPackedEnd();for(;this.pos<end;)arr.push(this.readFixed64());return arr}readPackedSFixed64(arr=[]){const end=this.readPackedEnd();for(;this.pos<end;)arr.push(this.readSFixed64());return arr}readPackedEnd(){return 2===this.type?this.readVarint()+this.pos:this.pos+1}skip(val){const type=7&val;if(0===type)for(;this.buf[this.pos++]>127;);else if(2===type)this.pos=this.readVarint()+this.pos;else if(5===type)this.pos+=4;else{if(1!==type)throw new Error(`Unimplemented type: ${type}`);this.pos+=8}}writeTag(tag,type){this.writeVarint(tag<<3|type)}realloc(min){let length=this.length||16;for(;length<this.pos+min;)length*=2;if(length!==this.length){const buf=new Uint8Array(length);buf.set(this.buf),this.buf=buf,this.dataView=new DataView(buf.buffer),this.length=length}}finish(){return this.length=this.pos,this.pos=0,this.buf.subarray(0,this.length)}writeFixed32(val){this.realloc(4),this.dataView.setInt32(this.pos,val,!0),this.pos+=4}writeSFixed32(val){this.realloc(4),this.dataView.setInt32(this.pos,val,!0),this.pos+=4}writeFixed64(val){this.realloc(8),this.dataView.setInt32(this.pos,-1&val,!0),this.dataView.setInt32(this.pos+4,Math.floor(2.3283064365386963e-10*val),!0),this.pos+=8}writeSFixed64(val){this.realloc(8),this.dataView.setInt32(this.pos,-1&val,!0),this.dataView.setInt32(this.pos+4,Math.floor(2.3283064365386963e-10*val),!0),this.pos+=8}writeVarint(val){(val=+val||0)>268435455||val<0?function(val,pbf){let low,high;val>=0?(low=val%4294967296|0,high=val/4294967296|0):(low=~(-val%4294967296),high=~(-val/4294967296),4294967295^low?low=low+1|0:(low=0,high=high+1|0));if(val>=0x10000000000000000||val<-0x10000000000000000)throw new Error("Given varint doesn't fit into 10 bytes");pbf.realloc(10),function(low,high,pbf){pbf.buf[pbf.pos++]=127&low|128,low>>>=7,pbf.buf[pbf.pos++]=127&low|128,low>>>=7,pbf.buf[pbf.pos++]=127&low|128,low>>>=7,pbf.buf[pbf.pos++]=127&low|128,low>>>=7,pbf.buf[pbf.pos]=127&low}(low,0,pbf),function(high,pbf){const lsb=(7&high)<<4;if(pbf.buf[pbf.pos++]|=lsb|((high>>>=3)?128:0),!high)return;if(pbf.buf[pbf.pos++]=127&high|((high>>>=7)?128:0),!high)return;if(pbf.buf[pbf.pos++]=127&high|((high>>>=7)?128:0),!high)return;if(pbf.buf[pbf.pos++]=127&high|((high>>>=7)?128:0),!high)return;if(pbf.buf[pbf.pos++]=127&high|((high>>>=7)?128:0),!high)return;pbf.buf[pbf.pos++]=127&high}(high,pbf)}(val,this):(this.realloc(4),this.buf[this.pos++]=127&val|(val>127?128:0),val<=127||(this.buf[this.pos++]=127&(val>>>=7)|(val>127?128:0),val<=127||(this.buf[this.pos++]=127&(val>>>=7)|(val>127?128:0),val<=127||(this.buf[this.pos++]=val>>>7&127))))}writeSVarint(val){this.writeVarint(val<0?2*-val-1:2*val)}writeBoolean(val){this.writeVarint(+val)}writeString(str){str=String(str),this.realloc(4*str.length),this.pos++;const startPos=this.pos;this.pos=function(buf,str,pos){for(let c,lead,i=0;i<str.length;i++){if(c=str.charCodeAt(i),c>55295&&c<57344){if(!lead){c>56319||i+1===str.length?(buf[pos++]=239,buf[pos++]=191,buf[pos++]=189):lead=c;continue}if(c<56320){buf[pos++]=239,buf[pos++]=191,buf[pos++]=189,lead=c;continue}c=lead-55296<<10|c-56320|65536,lead=null}else lead&&(buf[pos++]=239,buf[pos++]=191,buf[pos++]=189,lead=null);c<128?buf[pos++]=c:(c<2048?buf[pos++]=c>>6|192:(c<65536?buf[pos++]=c>>12|224:(buf[pos++]=c>>18|240,buf[pos++]=c>>12&63|128),buf[pos++]=c>>6&63|128),buf[pos++]=63&c|128)}return pos}(this.buf,str,this.pos);const len=this.pos-startPos;len>=128&&makeRoomForExtraLength(startPos,len,this),this.pos=startPos-1,this.writeVarint(len),this.pos+=len}writeFloat(val){this.realloc(4),this.dataView.setFloat32(this.pos,val,!0),this.pos+=4}writeDouble(val){this.realloc(8),this.dataView.setFloat64(this.pos,val,!0),this.pos+=8}writeBytes(buffer){const len=buffer.length;this.writeVarint(len),this.realloc(len);for(let i=0;i<len;i++)this.buf[this.pos++]=buffer[i]}writeRawMessage(fn,obj){this.pos++;const startPos=this.pos;fn(obj,this);const len=this.pos-startPos;len>=128&&makeRoomForExtraLength(startPos,len,this),this.pos=startPos-1,this.writeVarint(len),this.pos+=len}writeMessage(tag,fn,obj){this.writeTag(tag,2),this.writeRawMessage(fn,obj)}writePackedVarint(tag,arr){arr.length&&this.writeMessage(tag,writePackedVarint,arr)}writePackedSVarint(tag,arr){arr.length&&this.writeMessage(tag,writePackedSVarint,arr)}writePackedBoolean(tag,arr){arr.length&&this.writeMessage(tag,writePackedBoolean,arr)}writePackedFloat(tag,arr){arr.length&&this.writeMessage(tag,writePackedFloat,arr)}writePackedDouble(tag,arr){arr.length&&this.writeMessage(tag,writePackedDouble,arr)}writePackedFixed32(tag,arr){arr.length&&this.writeMessage(tag,writePackedFixed32,arr)}writePackedSFixed32(tag,arr){arr.length&&this.writeMessage(tag,writePackedSFixed32,arr)}writePackedFixed64(tag,arr){arr.length&&this.writeMessage(tag,writePackedFixed64,arr)}writePackedSFixed64(tag,arr){arr.length&&this.writeMessage(tag,writePackedSFixed64,arr)}writeBytesField(tag,buffer){this.writeTag(tag,2),this.writeBytes(buffer)}writeFixed32Field(tag,val){this.writeTag(tag,5),this.writeFixed32(val)}writeSFixed32Field(tag,val){this.writeTag(tag,5),this.writeSFixed32(val)}writeFixed64Field(tag,val){this.writeTag(tag,1),this.writeFixed64(val)}writeSFixed64Field(tag,val){this.writeTag(tag,1),this.writeSFixed64(val)}writeVarintField(tag,val){this.writeTag(tag,0),this.writeVarint(val)}writeSVarintField(tag,val){this.writeTag(tag,0),this.writeSVarint(val)}writeStringField(tag,str){this.writeTag(tag,2),this.writeString(str)}writeFloatField(tag,val){this.writeTag(tag,5),this.writeFloat(val)}writeDoubleField(tag,val){this.writeTag(tag,1),this.writeDouble(val)}writeBooleanField(tag,val){this.writeVarintField(tag,+val)}}function toNum(low,high,isSigned){return isSigned?4294967296*high+(low>>>0):4294967296*(high>>>0)+(low>>>0)}function makeRoomForExtraLength(startPos,len,pbf){const extraLen=len<=16383?1:len<=2097151?2:len<=268435455?3:Math.floor(Math.log(len)/(7*Math.LN2));pbf.realloc(extraLen);for(let i=pbf.pos-1;i>=startPos;i--)pbf.buf[i+extraLen]=pbf.buf[i]}function writePackedVarint(arr,pbf){for(let i=0;i<arr.length;i++)pbf.writeVarint(arr[i])}function writePackedSVarint(arr,pbf){for(let i=0;i<arr.length;i++)pbf.writeSVarint(arr[i])}function writePackedFloat(arr,pbf){for(let i=0;i<arr.length;i++)pbf.writeFloat(arr[i])}function writePackedDouble(arr,pbf){for(let i=0;i<arr.length;i++)pbf.writeDouble(arr[i])}function writePackedBoolean(arr,pbf){for(let i=0;i<arr.length;i++)pbf.writeBoolean(arr[i])}function writePackedFixed32(arr,pbf){for(let i=0;i<arr.length;i++)pbf.writeFixed32(arr[i])}function writePackedSFixed32(arr,pbf){for(let i=0;i<arr.length;i++)pbf.writeSFixed32(arr[i])}function writePackedFixed64(arr,pbf){for(let i=0;i<arr.length;i++)pbf.writeFixed64(arr[i])}function writePackedSFixed64(arr,pbf){for(let i=0;i<arr.length;i++)pbf.writeSFixed64(arr[i])}function readLogField(tag,obj,pbf){1===tag?obj.Time=pbf.readVarint():2===tag?obj.Contents.push(function(pbf,end){return pbf.readFields(readLogContentField,{Key:"",Value:""},end)}(pbf,pbf.readVarint()+pbf.pos)):4===tag&&(obj.TimeNs=pbf.readFixed32())}function readLogContentField(tag,obj,pbf){1===tag?obj.Key=pbf.readString():2===tag&&(obj.Value=pbf.readString())}function readLogTagField(tag,obj,pbf){1===tag?obj.Key=pbf.readString():2===tag&&(obj.Value=pbf.readString())}function readLogGroupField(tag,obj,pbf){1===tag?obj.Logs.push(function(pbf,end){return pbf.readFields(readLogField,{Time:0,Contents:[],TimeNs:0},end)}(pbf,pbf.readVarint()+pbf.pos)):2===tag?obj.Reserved=pbf.readString():3===tag?obj.Topic=pbf.readString():4===tag?obj.Source=pbf.readString():6===tag&&obj.LogTags.push(function(pbf,end){return pbf.readFields(readLogTagField,{Key:"",Value:""},end)}(pbf,pbf.readVarint()+pbf.pos))}const decodeLogs=payload=>{const body=gunzipSync(payload),logGroup=function(pbf,end){return pbf.readFields(readLogGroupField,{Logs:[],Reserved:"",Topic:"",Source:"",LogTags:[]},end)}(new Pbf(body));return logGroup},createLogClient=(endpoint,accessKeyId,accessKeySecret,projectName,logstoreName)=>{const credentials={accessKeyId:accessKeyId,accessKeySecret:accessKeySecret};const sign=(verb,path,queries,headers,credentials)=>{const contentMD5=headers["content-md5"]||"",contentType=headers["content-type"]||"",date=headers.date,canonicalizedHeaders=function(headers){const keys=Object.keys(headers),prefixKeys=[];for(let i=0;i<keys.length;i++){const key=keys[i];(key.startsWith("x-log-")||key.startsWith("x-acs-"))&&prefixKeys.push(key)}prefixKeys.sort();var result="";for(let i=0;i<prefixKeys.length;i++){const key=prefixKeys[i];result+=`${key}:${String(headers[key]).trim()}\n`}return result}(headers),canonicalizedResource=function(path,queries){var resource=`${path}`;const keys=Object.keys(queries),pairs=new Array(keys.length);for(var i=0;i<keys.length;i++){const key=keys[i];pairs[i]=`${key}=${value=queries[key],void 0===value?"":String(value)}`}var value;pairs.sort();const querystring=pairs.join("&");return querystring&&(resource+=`?${querystring}`),resource}(path,queries),signString=`${verb}\n${contentMD5}\n${contentType}\n${date}\n${canonicalizedHeaders}${canonicalizedResource}`,signature=crypto.createHmac("sha1",credentials.accessKeySecret).update(signString).digest("base64");return`LOG ${credentials.accessKeyId}:${signature}`};return async function(payload){const body=gunzipSync(payload),headers={"content-type":"application/x-protobuf",date:(new Date).toUTCString(),"x-log-apiversion":"0.6.0","x-log-signaturemethod":"hmac-sha1","x-log-bodyrawsize":body.length.toString(),"content-length":body.length.toString(),"content-md5":crypto.createHash("md5").update(body).digest("hex").toUpperCase()},path=`/logstores/${logstoreName}/shards/lb`,signature=sign("POST",path,{},headers,credentials);headers.authorization=signature;const url=`http://${projectName}.${endpoint}${path}`;return await fetch(url,{method:"POST",headers:headers,body:body})}};export{createLogClient,decodeLogs}; //# sourceMappingURL=slsClient.js.map