@ddunigma/node
Version:
1 lines • 4.29 kB
JavaScript
;var chunkZTGECGM2_cjs=require('./chunk-ZTGECGM2.cjs'),chunkJY2ZPBJK_cjs=require('./chunk-JY2ZPBJK.cjs'),chunkBCUBYE76_cjs=require('./chunk-BCUBYE76.cjs');var g=new Map;function m(n){if(n.buffer instanceof ArrayBuffer)return n.byteOffset===0&&n.byteLength===n.buffer.byteLength?n.buffer:n.buffer.slice(n.byteOffset,n.byteOffset+n.byteLength);let e=new Uint8Array(n.byteLength);return e.set(n),e.buffer}chunkBCUBYE76_cjs.a(m,"toArrayBuffer");function D(n){let e=g.get(n);if(e!==void 0)return e;if(typeof CompressionStream>"u"||typeof DecompressionStream>"u")return false;try{return new CompressionStream(n),new DecompressionStream(n),g.set(n,!0),!0}catch{return false}}chunkBCUBYE76_cjs.a(D,"supportsCompressionFormat");function f(n,e){if(!D(n)){let s=n==="brotli"?"Brotli":"Deflate raw";throw new chunkZTGECGM2_cjs.m(`[Ddu64 ${e}] ${s} ${e}ion is unsupported in the current runtime. CompressionStream/DecompressionStream does not support "${n}".`,e)}return n}chunkBCUBYE76_cjs.a(f,"requireCompressionFormat");var U=class{static{chunkBCUBYE76_cjs.a(this,"BrowserAdapter");}runtime;constructor(e="browser"){this.runtime=e;}async deriveKey(e,s){let r=new TextEncoder().encode(e);if(chunkJY2ZPBJK_cjs.a(s)==="pbkdf2"){let i=await crypto.subtle.importKey("raw",r,"PBKDF2",false,["deriveBits"]),a=await crypto.subtle.deriveBits({name:"PBKDF2",salt:chunkJY2ZPBJK_cjs.e(s?.salt),iterations:chunkJY2ZPBJK_cjs.b(s?.iterations),hash:chunkJY2ZPBJK_cjs.d(s?.hash)},i,256);return new Uint8Array(a)}let c=await crypto.subtle.digest("SHA-256",r);return new Uint8Array(c)}async encrypt(e,s,t){let r=crypto.getRandomValues(new Uint8Array(12)),c=await crypto.subtle.importKey("raw",m(s),{name:"AES-GCM"},false,["encrypt"]),i={name:"AES-GCM",iv:r,tagLength:128};t&&t.length>0&&(i.additionalData=m(t));let a=await crypto.subtle.encrypt(i,c,m(e)),o=new Uint8Array(a),y=o.subarray(0,o.length-16),d=o.subarray(o.length-16),p=new Uint8Array(28+y.length);return p.set(r,0),p.set(d,12),p.set(y,28),p}async decrypt(e,s,t){if(e.length<28)throw new Error("[Ddu64 decrypt] Encrypted data is invalid. Payload must be at least 28 bytes (12 IV + 16 authTag + ciphertext).");let r=e.subarray(0,12),c=e.subarray(12,28),i=e.subarray(28),a=new Uint8Array(i.length+16);a.set(i,0),a.set(c,i.length);let o=await crypto.subtle.importKey("raw",m(s),{name:"AES-GCM"},false,["decrypt"]);try{let y={name:"AES-GCM",iv:m(r),tagLength:128};t&&t.length>0&&(y.additionalData=m(t));let d=await crypto.subtle.decrypt(y,o,m(a));return new Uint8Array(d)}catch{throw new Error("[Ddu64 decrypt] Decryption failed: data tampering or incorrect key.")}}randomBytes(e){return crypto.getRandomValues(new Uint8Array(e))}async deflate(e,s){if(typeof CompressionStream>"u")throw new chunkZTGECGM2_cjs.m("[Ddu64 compress] Deflate compression is unsupported in the current runtime. CompressionStream API is not available.","compress");let t=this.getDeflateFormat("compress"),r=new CompressionStream(t);return this.writeAndReadStream(r,e)}async inflate(e,s){if(typeof DecompressionStream>"u")throw new chunkZTGECGM2_cjs.m("[Ddu64 decompress] Deflate decompression is unsupported in the current runtime. DecompressionStream API is not available.","decompress");let t=this.getDeflateFormat("decompress"),r=new DecompressionStream(t);return this.writeAndReadStream(r,e,s)}async brotliCompress(e,s){let t=f("brotli","compress"),r=new CompressionStream(t);return this.writeAndReadStream(r,e)}async brotliDecompress(e,s){let t=f("brotli","decompress"),r=new DecompressionStream(t);return this.writeAndReadStream(r,e,s)}getDeflateFormat(e){return f("deflate-raw",e)}async writeAndReadStream(e,s,t){let r=e.writable.getWriter(),c=e.readable.getReader(),i=(async()=>{await r.write(new Uint8Array(m(s))),await r.close();})(),a=this.readAllChunks(c,t);try{let[o]=await Promise.all([a,i]);return o}catch(o){throw await c.cancel(o).catch(()=>{}),await r.abort(o).catch(()=>{}),o}}async readAllChunks(e,s){let t=[],r=0;for(;;){let{done:a,value:o}=await e.read();if(a)break;if(r+=o.length,s!==void 0&&r>s)throw new Error(`[Ddu64 decompress] Decompressed size exceeds limit. Estimated ${r}+ bytes exceeds maximum of ${s} bytes.`);t.push(o);}if(t.length===1)return t[0];let c=new Uint8Array(r),i=0;for(let a of t)c.set(a,i),i+=a.length;return c}};exports.a=U;