UNPKG

logbeacon

Version:

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

3 lines (2 loc) 5.29 kB
"use strict";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){}exports.createLogClient=(url,user,token)=>{const LOKI_AUTH="Basic "+Buffer.from(`${user}:${token}`).toString("base64");return function(payload){return fetch(`${url}/loki/api/v1/push`,{method:"POST",headers:{"Content-Type":"application/json","Content-Encoding":"gzip",Authorization:LOKI_AUTH},body:payload,duplex:"half"})}},exports.decodeLogs=payload=>{const decompressed=gunzipSync(payload),jsonString=(new TextDecoder).decode(decompressed);return JSON.parse(jsonString)}; //# sourceMappingURL=lokiClient.cjs.map