UNPKG

lean-qr

Version:
2 lines (1 loc) 1.07 kB
import{deflateSync as e}from"node:zlib";const f=Buffer.from([137,80,78,71,13,10,26,10]),r=Buffer.from([]),t=(t,{on:o=[0,0,0],off:a=[0,0,0,0],padX:l=4,padY:u=4,scale:s=1}={})=>{const B=(t.size+2*l)*s,c=(t.size+2*u)*s,p=B+15>>3,d=Buffer.alloc(c*p);for(let e=0;e<c;++e)for(let f=0;f<B;++f)t.get((f/s|0)-l,(e/s|0)-u)&&(d[e*p+1+(f>>3)]|=128>>(7&f));const i=a[3]??255,b=o[3]??255,m=(i&b)<255,g=a[0]|a[1]|a[2]|(o[0]&o[1]&o[2])<255|m,v=Buffer.alloc(13);return v.writeUInt32BE(B,0),v.writeUInt32BE(c,4),v[8]=1,v[9]=g?3:0,Buffer.concat([f,n(1229472850,v),g?n(1347179589,[a[0],a[1],a[2],o[0],o[1],o[2]]):r,m?n(1951551059,[i,b]):r,n(1229209940,e(d,{level:9})),n(1229278788,[])])},o=(e,f)=>"data:image/png;base64,"+t(e,f).toString("base64"),n=(e,f)=>{const r=f.length,t=Buffer.alloc(12+r);return t.writeUInt32BE(r,0),t.writeUInt32BE(e,4),t.set(f,8),t.writeUInt32BE(~t.subarray(4,8+r).reduce(((e,f)=>a[255&(e^f)]^e>>>8),-1)>>>0,8+r),t},a=new Uint32Array(256);for(let e=0;e<256;++e){let f=e;for(let e=0;e<8;++e)f=3988292384*(1&f)^f>>>1;a[e]=f}export{t as toPngBuffer,o as toPngDataURL};