UNPKG

byte-encodings

Version:

Utilities for encoding and decoding common formats like hex, base64, and varint. Ported from Deno's @std/encoding.

2 lines (1 loc) 4.55 kB
var m=Object.defineProperty;var k=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var B=Object.prototype.hasOwnProperty;var C=(t,e)=>{for(var s in e)m(t,s,{get:e[s],enumerable:!0})},p=(t,e,s,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let c of h(e))!B.call(t,c)&&c!==s&&m(t,c,{get:()=>e[c],enumerable:!(r=k(e,c))||r.enumerable});return t};var R=t=>p(m({},"__esModule",{value:!0}),t);var v={};C(v,{Base32DecoderStream:()=>E,Base32EncoderStream:()=>_});module.exports=R(v);var F={base32:new TextEncoder().encode("ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"),base32hex:new TextEncoder().encode("0123456789ABCDEFGHIJKLMNOPQRSTUV"),base32crockford:new TextEncoder().encode("0123456789ABCDEFGHJKMNPQRSTVWXYZ")},d={base32:new Uint8Array(128).fill(32),base32hex:new Uint8Array(128).fill(32),base32crockford:new Uint8Array(128).fill(32)};F.base32.forEach((t,e)=>d.base32[t]=e);F.base32hex.forEach((t,e)=>d.base32hex[t]=e);F.base32crockford.forEach((t,e)=>d.base32crockford[t]=e);function T(t){return((t+4)/5|0)*8}function g(t,e,s,r,c){for(e+=4;e<t.length;e+=5){let n=t[e-4]<<16|t[e-3]<<8|t[e-2];t[s++]=r[n>>19],t[s++]=r[n>>14&31],t[s++]=r[n>>9&31],t[s++]=r[n>>4&31],n=n<<16|t[e-1]<<8|t[e],t[s++]=r[n>>15&31],t[s++]=r[n>>10&31],t[s++]=r[n>>5&31],t[s++]=r[n&31]}switch(e){case t.length+3:{let n=t[e-4]<<16;t[s++]=r[n>>19],t[s++]=r[n>>14&31],t[s++]=c,t[s++]=c,t[s++]=c,t[s++]=c,t[s++]=c,t[s++]=c;break}case t.length+2:{let n=t[e-4]<<16|t[e-3]<<8;t[s++]=r[n>>19],t[s++]=r[n>>14&31],t[s++]=r[n>>9&31],t[s++]=r[n>>4&31],t[s++]=c,t[s++]=c,t[s++]=c,t[s++]=c;break}case t.length+1:{let n=t[e-4]<<16|t[e-3]<<8|t[e-2];t[s++]=r[n>>19],t[s++]=r[n>>14&31],t[s++]=r[n>>9&31],t[s++]=r[n>>4&31],n<<=16,t[s++]=r[n>>15&31],t[s++]=c,t[s++]=c,t[s++]=c;break}case t.length:{let n=t[e-4]<<16|t[e-3]<<8|t[e-2];t[s++]=r[n>>19],t[s++]=r[n>>14&31],t[s++]=r[n>>9&31],t[s++]=r[n>>4&31],n=n<<16|t[e-1]<<8,t[s++]=r[n>>15&31],t[s++]=r[n>>10&31],t[s++]=r[n>>5&31],t[s++]=c;break}}return s}function w(t,e,s,r,c){for(let n=t.length-6;n<t.length;++n)if(t[n]===c){for(let y=n+1;y<t.length;++y)if(t[y]!==c)throw new TypeError(`Cannot decode input as base32: Invalid character (${String.fromCharCode(t[y])})`);t=t.subarray(0,n);break}switch((t.length-s)%8){case 6:case 3:case 1:throw new RangeError(`Cannot decode input as base32: Length (${t.length-s}), excluding padding, must not have a remainder of 1, 3, or 6 when divided by 8`)}for(e+=7;e<t.length;e+=8){let n=x(t[e-7],r)<<19|x(t[e-6],r)<<14|x(t[e-5],r)<<9|x(t[e-4],r)<<4;t[s++]=n>>16,t[s++]=n>>8&255,n=n<<16|x(t[e-3],r)<<15|x(t[e-2],r)<<10|x(t[e-1],r)<<5|x(t[e],r),t[s++]=n>>16&255,t[s++]=n>>8&255,t[s++]=n&255}switch(e){case t.length+5:{let n=x(t[e-7],r)<<19|x(t[e-6],r)<<14;t[s++]=n>>16;break}case t.length+3:{let n=x(t[e-7],r)<<19|x(t[e-6],r)<<14|x(t[e-5],r)<<9|x(t[e-4],r)<<4;t[s++]=n>>16,t[s++]=n>>8&255;break}case t.length+2:{let n=x(t[e-7],r)<<19|x(t[e-6],r)<<14|x(t[e-5],r)<<9|x(t[e-4],r)<<4;t[s++]=n>>16,t[s++]=n>>8&255,n=n<<16|x(t[e-3],r)<<15,t[s++]=n>>16&255;break}case t.length:{let n=x(t[e-7],r)<<19|x(t[e-6],r)<<14|x(t[e-5],r)<<9|x(t[e-4],r)<<4;t[s++]=n>>16,t[s++]=n>>8&255,n=n<<16|x(t[e-3],r)<<15|x(t[e-2],r)<<10|x(t[e-1],r)<<5,t[s++]=n>>16&255,t[s++]=n>>8&255;break}}return s}function x(t,e){let s=e[t]??32;if(s===32)throw new TypeError(`Cannot decode input as base32: Invalid character (${String.fromCharCode(t)})`);return s}function i(t,e){let s=t.length;if(t.byteOffset){let r=new Uint8Array(t.buffer);r.set(t),t=r.subarray(0,s)}return t=new Uint8Array(t.buffer.transfer(e)),t.set(t.subarray(0,s),e-s),[t,e-s]}var S=new TextEncoder,q=new TextDecoder,_=class extends TransformStream{constructor(e={}){let s=F[e.alphabet??"base32"],r=function(){return e.output==="bytes"?y=>y:y=>q.decode(y)}(),c=new Uint8Array(4),n=0;super({transform(y,a){let[o,A]=i(y,T(n+y.length));n&&(A-=n,o.set(c.subarray(0,n),A)),n=(o.length-A)%5,n&&c.set(o.subarray(-n));let l=g(o.subarray(0,-n||void 0),A,0,s,61);a.enqueue(r(o.subarray(0,l)))},flush(y){if(n){let[a,o]=i(c.subarray(0,n),T(n));g(a,o,0,s,61),y.enqueue(r(a))}}})}},E=class extends TransformStream{constructor(e={}){let s=d[e.alphabet??"base32"],r=function(){return e.input==="bytes"?y=>y:y=>S.encode(y)}(),c=new Uint8Array(7),n=0;super({transform(y,a){let o=r(y);n&&(o=i(o,n+o.length)[0],o.set(c.subarray(0,n))),n=o.length%8,n&&c.set(o.subarray(-n));let A=w(o.subarray(0,-n||void 0),0,0,s,61);a.enqueue(o.subarray(0,A))},flush(y){if(n){let a=w(c.subarray(0,n),0,0,s,61);y.enqueue(c.subarray(0,a))}}})}};0&&(module.exports={Base32DecoderStream,Base32EncoderStream});