UNPKG

@etherna/sdk-js

Version:

Etherna SDKs for operations on the network

12 lines 138 kB
var $e={custom:2,gnosis:5,sepolia:2,goerli:15},si={OFF:0,MEDIUM:1,STRONG:2,INSANE:3,PARANOID:4},ni={NONE:0,DATA:1,PROX:2,RACE:3},Gt=22,Er=20,Ar="default",k="0x"+"0".repeat(40),ne="0".repeat(64),ae=new Uint8Array(32).fill(0),we="/",oe="website-index-document",ze="website-error-document",L="Content-Type",j="Filename",jt="swarm-feed-owner",Kt="swarm-feed-topic",Wt="swarm-feed-type",He="preview",K="details",Ge=8,ii=2**32-1,Ds=32,Ns=128,ai=Ds*Ns,Yt=4096,Ms=32,Jt=2*Ms,Ir=32,oi=1,ci=4096,Fs=0,Rr=Fs+Ge,je=32,Ke=65,be=0,xe=be+je,Ce=xe+Ke,We=Ce+Ge,di=64,pi=6,hi=66,li=64,ui=64,fi=128,mi=32,yi=64,Zt=16,Z=17,Qt=41,gi=1,wi=1e3,bi=16;import{etc as Ls}from"@noble/secp256k1";import{createPublicClient as Pr,http as kr}from"viem";import{mainnet as vr}from"viem/chains";import{normalize as Vs}from"viem/ens";function Ee(s){return/^0x[a-f0-9]{40}$/i.test(s)}function Ye(s){return/^[a-z0-9_\-\.]+\.eth$/i.test(s)}function Xt(s){return typeof s=="string"?`0x${s.replace(/^0x/,"").toLowerCase()}`:`0x${Ls.bytesToHex(s)}`}async function Je(s){return await Pr({chain:vr,transport:kr()}).getEnsAddress({name:Vs(s)})}async function Cr(s){return await Pr({chain:vr,transport:kr()}).getEnsName({address:s})}function ki(s,e){if(e<2)return[s];let t=[];for(let r=0;r<s.length;r+=e)t.push(s.slice(r,r+e));return t}var Si=s=>{let{utilization:e,depth:t,bucketDepth:r}=s,n=e/2**(t-r),i=2**t*4096,a=i*n,o=i-a;return{total:i,used:a,available:o}};function Ti(s,e=Z,t){let r=t??er(e),n=e;for(;r<s&&n<=Qt;)n++,r+=er(n)-er(n-1);return n}function er(s){return 2**(typeof s=="number"?s:s.depth)*4096}var Sr=s=>{let{utilization:e,depth:t,bucketDepth:r}=s;return e/2**(t-r)};function Bi(s){return{17:1e-4,18:.0061,19:.0509,20:.1565,21:.3027,22:.4499,23:.5803,24:.6848,25:.7677,26:.8294,27:.8671,28:.8837,29:.9288,30:.9481,31:.9606,32:.9701,33:.9765,34:.9811,35:.9844,36:.9867,37:.9883,38:.9891,39:.9896,40:.9898,41:.9911}[s]??0}var _i=s=>{if(s.batchTTL===-1)return"unlimited";let e=new Date;return e.setSeconds(e.getSeconds()+s.batchTTL),e},Ze=(s,e,t)=>BigInt(s)*BigInt(e)/BigInt(t),Ui=(s,e)=>BigInt(e)<=BigInt(0)||isNaN(s)||s<Z||s>Qt?null:{bzz:(BigInt(e)*BigInt(2**s)).toString()/10**16},qs=(s,e,t)=>Math.ceil(s/2**(t-e));function Tr(s,e,t,r){let n=typeof t=="number"&&t>s.batchTTL?t:s.batchTTL,i=r?.price??(typeof t=="object"?t.price:"1"),a=r?.blockTime??(typeof t=="object"?t.blockTime:$e.gnosis),o=qs(s.batchTTL,s.depth,e),d=Math.abs(n-o);return BigInt(Ze(d,i,a))}import{decode as zs,encode as Hs,isBlurhashValid as Gs}from"blurhash";function ue(s){return s.arrayBuffer()}async function Di(s){let e=await ue(s);return new Uint8Array(e)}function tr(s){if(typeof window<"u")return new Promise((e,t)=>{let r=new FileReader;r.onload=()=>{e(r.result)},r.onabort=t,r.onerror=t,r.readAsDataURL(s)});throw new Error("Not implemented")}function $s(s,e){return new Blob([s],{type:e})}function Qe(s){return tr($s(s))}function Br(s){return typeof window>"u"?Buffer.from(s).toString("base64"):window.btoa(s)}async function fe(s,e){let{FFmpeg:t}=await import("@ffmpeg.wasm/main"),r=await t.create({core:"@ffmpeg.wasm/core-mt"}),n=s instanceof File||s instanceof Blob?ue(s):Promise.resolve(s);return r.fs.writeFile(e,new Uint8Array(await n)),r}function qi(s){(!s||!Gs(s).result)&&(s="LEHV6nWB2yk8pyo0adR*.7kCMdnj");let e=zs(s,32,32);return js(e,32,32)}async function _r(s,e,t){let r=await Ys(s,e,t);return Hs(r,e,t,4,4)}function js(s,e,t){let r=[...s].map(a=>String.fromCharCode(a)).join(""),n=Ws(e,t,r);return"data:image/png;base64,"+(typeof Buffer<"u"?Buffer.from(Ks(n)).toString("base64"):window.btoa(n))}function Ks(s){let e=new Uint8Array(s.length);for(let t=0;t<s.length;t++)e[t]=s.charCodeAt(t);return e}function Ws(s,e,t){let r="x",n=[],i=`\x89PNG\r  `,a="\0",o,d,p;for(o=0;o<256;o++){for(d=o,p=0;p<8;p++)d&1?d=3988292384^d>>>1:d=d>>>1;n[o]=d}function f(b){let P="",S,z;for(let ve=0;ve<b.length;ve+=65535)S=b.length-ve,z="",S<=65535?z="":(S=65535,z="\0"),P+=z+String.fromCharCode(S&255,(S&65280)>>>8),P+=String.fromCharCode(~S&255,(~S&65280)>>>8),P+=b.substring(ve,ve+S);return P}function l(b){let P=1,S=0;for(let z=0;z<b.length;z++)P=(P+b.charCodeAt(z))%65521,S=(S+P)%65521;return S<<16|P}function u(b,F){let P=b,S;for(let z=0;z<F.length;z++)S=F.charCodeAt(z),P=n[(P^S)&255]^P>>>8;return P}function m(b){return u(4294967295,b)^4294967295}function y(b){return String.fromCharCode((b&4278190080)>>>24,(b&16711680)>>>16,(b&65280)>>>8,b&255)}function A(b,F,P){let S=m(F+P);return y(b)+F+P+y(S)}function v(b,F){let P=y(b)+y(F)+"\b\0\0\0";return A(13,"IHDR",P)}let le=A(0,"IEND",""),ke=v(s,e),Ht="",qe;for(let b=0;b<t.length;b+=s*4){if(qe=a,Array.isArray(t))for(let F=0;F<s*4;F++)qe+=String.fromCharCode(+t[b+F]&255);else qe+=t.substr(b,s*4);Ht+=qe}let xr=r+f(Ht)+y(l(Ht)),Os=A(xr.length,"IDAT",xr);return i+ke+Os+le}async function Ys(s,e,t){if(typeof window<"u"){let r=document.createElement("canvas");r.width=e,r.height=t;let n=r.getContext("2d"),i=await Js(s);return i&&n.drawImage(i,0,0),n.getImageData(0,0,e,t).data}else{let r=await fe(s,"image");await r.run("-i","image","-f","rawvideo","-pix_fmt","rgba","output");let n=r.fs.readFile("output");if(n.length!==e*t*4)throw new Error("Array length doesn't match width and height for RGBA data");return new Uint8ClampedArray(n.buffer,n.byteOffset,n.byteLength)}}async function Js(s){return new Promise((e,t)=>{let r=new Image;r.onload=()=>e(r),r.onerror=()=>t(null),r.src=URL.createObjectURL(new Blob([s]))})}import{keccak256 as Qs}from"js-sha3";import{etc as Ur}from"@noble/secp256k1";import{keccak256 as Zs}from"js-sha3";var{bytesToHex:W,hexToBytes:H}=Ur;function I(...s){let e=Zs.create();return s.forEach(t=>e.update(t)),Uint8Array.from(e.digest())}function me(s){let e=s.match(/.{1,2}/g);if(!e)throw new Error(`Invalid hex string: ${s}`);return Uint8Array.from(e.map(t=>parseInt(t,16)))}function Q(s){return s.reduce((e,t)=>e+t.toString(16).padStart(2,"0"),"")}function V(s){if(typeof s=="number")return s.toString(16);if(s instanceof Uint8Array)return Ur.bytesToHex(s);if(typeof s=="string")return s.replace(/^0x/,"");throw new TypeError("Not HexString compatible type!")}import{makeChunkedFile as Qi}from"@fairdatasociety/bmt-js";function Xe(s){let e=s.slice(0,8),t=s.slice(8),r=Xs(t),n=new Uint8Array([...e,...r]);return I(n)}function Xs(s){if(s.length>Yt)throw new c("INVALID_ARGUMENT","payload: invalid data length");let e=new Uint8Array([...s,...new Uint8Array(Yt-s.length)]);for(;e.length!==Ir;){let t=new Uint8Array(e.length/2);for(let r=0;r<e.length;r+=Jt){let n=Qs.array(e.slice(r,r+Jt));t.set(n,r/2)}e=t}return e}function Xi(s,e,t){if(!(s instanceof Uint8Array))throw new TypeError("Data has to an Uint8Array!");return s.slice(e,e+t).length===t}function et(s,e){for(let t=0;t<=s.length-e.length;t++){let r=0;for(;r<e.length&&s[t+r]===e[r++];);if(r===e.length)return t}return-1}function Or(s,e){let t=new Uint8Array(0);for(let r=0;r<s.length&&r<e.length&&s[r]===e[r];r++)t=new Uint8Array([...t,s[r]]);return t}function Se(s){return new Uint8Array(s)}function ye(...s){let e=s.reduce((n,i)=>n+i.length,0),t=new Uint8Array(e),r=0;return s.forEach(n=>{t.set(n,r),r+=n.length}),t}function q(s,e){return s.length===e.length&&s.every((t,r)=>t===e[r])}function en(s,e,t=0){if(s.length<e.length+t)throw new Error(`Cannot copy bytes because the base byte array length is lesser (${s.length}) than the others (${e.length})`);for(let r=0;r<e.length;r++){let n=e[r];n!==void 0&&(s[r+t]=n)}}function Dr(s){if(s.length===0)return new Uint8Array(0);let e=s.map(n=>n.length).reduce((n,i)=>n+=i),t=new Uint8Array(e),r=0;for(let n of s)en(t,n,r),r+=n.length;return t}function Nr(s,e){if(!(s instanceof Uint8Array))throw new Error("Cannot set given bytes, because is not an Uint8Array type");if(s.length!==32)throw new Error(`Cannot set given bytes, because it does not have ${e} length. Got ${s.length}`)}import{AES as Mr,enc as tn}from"crypto-ts";function Fr(s,e){try{return Mr.encrypt(s,e).toString()}catch(t){throw new c("ENCRYPTION_ERROR",`Encryption error: ${t.message}`)}}function Lr(s,e){try{return Mr.decrypt(s,e).toString(tn.Utf8)}catch{throw new c("DECRYPTION_ERROR","Cannot unlock playlist. Make sure the password is correct.")}}function rr(s,e,t=0,r){if(!q(s,new Uint8Array(32))){r||=e.length;for(let n=t;n<r;n+=s.length){let i=n+s.length,a=i<=e.length?i:e.length,o=e.slice(n,a);for(let d=0;d<o.length;d++)o[d]=Number(o[d])^Number(s[d%s.length]);e.set(o,n)}}}var sr=async(s,e)=>{if(!window.ethereum)throw new c("MISSING_WALLET","No wallet installed. Try installing MetaMask extension.");if(!window.ethereum.request)throw new c("OUTDATED_WALLET","You have an old version of your wallet. Try to update MetaMask.");let t=await window.ethereum.request({method:"eth_requestAccounts"});if(!t||!t.length)throw new c("LOCKED_WALLET","Unlock your wallet.");let r=s instanceof Uint8Array?W(s):s;return await window.ethereum.request({method:"personal_sign",params:[e,r]})},oa=s=>{let e=s.replace(/^0x/,"").match(/.{1,2}/g)??[];return new Uint8Array(e.map(t=>parseInt(t,16)))},ca=s=>/^(0x)?[0-9a-f]{40}$/i.test(s||""),da=s=>s?s.length<=5?s:`${s.substring(0,5)}...${s.substring(s.length-5,s.length)}`:"",pa=s=>{let{isFortmatic:e,isPortis:t,isWalletConnect:r,isSquarelink:n,isAuthereum:i}=s;return!(e||t||r||n||i)},ha=async()=>!window.ethereum||!window.ethereum.request?[]:await window.ethereum.request({method:"eth_requestAccounts"}),la=async s=>{if(!(!window.ethereum||!window.ethereum.request))return await window.ethereum.request({method:"wallet_requestPermissions",params:[{eth_accounts:{[s]:!0}}]})},ua=()=>!(!window.ethereum||!window.ethereum.request||window.ethereum._state?.accounts?.length||window.ethereum.selectedAddress),fa=s=>{if(!s)return"";switch(+s){case 1:return"Main";case 2:return"Morder";case 3:return"Ropsten";case 4:return"Rinkeby";case 42:return"Kovan";default:return"Unknown"}};async function Vr(s,e,t=90){if(typeof window<"u"){let r=await nn(s),n=e/r.width,i=Math.floor(e),a=Math.floor(r.height*n),o=document.createElement("canvas");o.width=i,o.height=a;let d=o.getContext("2d");if(d.fillStyle="white",d.fillRect(0,0,i,a),d.drawImage(r,0,0,r.width,r.height,0,0,i,a),URL.revokeObjectURL(r.src),typeof o.toBlob<"u")return new Promise(p=>o.toBlob(f=>p(f),s.type,t/100));if(typeof o.msToBlob<"u")return o.msToBlob();throw new c("SERVER_ERROR","Cannot create blob from canvas")}else{let r=await fe(s,"image");await r.run("-i","image","-vf",`"scale=${e}:-1"`,"output");let n=r.fs.readFile("output"),i=nr(n);return new Blob([n],{type:i})}}function ba(s){switch(s){case"jpeg":case"png":return!0;case"webp":return sn();case"avif":return rn();default:return!1}}async function qr(s){if(typeof window<"u")return new Promise((e,t)=>{Qe(s).then(r=>{let n=new Image;n.onload=function(){e({width:n.width,height:n.height,type:nr(s)})},n.onerror=t,n.src=r})});{let e=0,t=0,r=await fe(s,"image");if(r.setLogging(!0),r.setLogger((n,i)=>{if(!i||typeof i!="string")return;let a=i.match(/\d{3,}x\d{3,}/)?.[0];if(a){let[o,d]=a.split("x").map(Number);o&&d&&!isNaN(o)&&!isNaN(d)&&(t=d,e=o)}}),await r.run("-i","image","-f","null"),e&&t)return{width:e,height:t,type:nr(s)};throw new c("ENCODING_ERROR","Failed to load image metadata")}}function nr(s){let e={jpeg:[255,216,255],png:[137,80,78,71],gif:[71,73,70,56],avif:[0,0,0,24,97,118,105,102],webp:[82,73,70,70],svg:[60,115,118,103]},t=new Uint8Array(s instanceof ArrayBuffer?s:s.buffer,0,8),r=Array.from(t);for(let[n,i]of Object.entries(e))if(i.every((a,o)=>a===r[o]))return n;return"jpeg"}function rn(){return document.createElement("canvas").toDataURL("image/avif").indexOf("data:image/avif")===0}function sn(){return document.createElement("canvas").toDataURL("image/webp").indexOf("data:image/webp")===0}function nn(s){return new Promise((e,t)=>{let r=new Image;r.src=URL.createObjectURL(s),r.onload=()=>e(r),r.onerror=n=>t(n)})}import{makeChunkedFile as on}from"@fairdatasociety/bmt-js";import{etc as an}from"@noble/secp256k1";function X(s){return/^[0-9a-f]{64}$/.test(s)}function Y(s){return Array.from(s).every(e=>e==="0")}function Ra(s){return!X(s)||Y(s)}function ir(s){if(!(s instanceof Uint8Array))throw new c("INVALID_ARGUMENT","Given referennce is not an Uint8Array instance.");if(s.length!==32&&s.length!==64)throw new c("INVALID_ARGUMENT","Wrong reference length. Entry only can be 32 or 64 length in bytes")}function T(s){return me(s)}function w(s){return Q(s)}function $r(s){let e=V(s);return an.hexToBytes(e)}function Pa(s){if(X(s))return s;let e=s.match(/\/bzz\/([A-Fa-f0-9]{64})/)?.[1];if(!e)throw new c("INVALID_ARGUMENT",`Invalid bzz URL: ${s}`);return e}var cn=(s,e,t="")=>{if(s.type!==e.type)throw new Error(`Nodes do not have same type at prefix "${t}" a: ${s.type} <-> b: ${e.type}`);if(!s.metadata!=!e.metadata)throw new Error(`One of the nodes do not have metadata defined. a: ${s.metadata} b: ${e.metadata}`);if(s.metadata&&e.metadata){let n,i;try{n=JSON.stringify(s.metadata),i=JSON.stringify(e.metadata)}catch{throw new Error(`Either of the nodes has invalid JSON metadata. a: ${s.metadata} b: ${e.metadata}`)}if(n!==i)throw new Error(`The node's metadata are different. a: ${n} b: ${i}`)}if(s.entry===e.entry)throw new Error(`Nodes do not have same entries. a: ${s.entry} b: ${s.entry}`);if(!s.forks)return;let r=Object.keys(s.forks);if(!e.forks||r.length!==Object.keys(e.forks).length)throw new Error(`Nodes do not have same fork length on equality check at prefix ${t}`);for(let n of r){let i=s.forks[Number(n)],a=e.forks[Number(n)],o=i.prefix,d=new TextDecoder().decode(o);if(!q(o,a.prefix))throw new Error(`Nodes do not have same prefix under the same key "${n}" at prefix ${t}`);cn(i.node,a.node,t+d)}};function ee(s){let e=on(s);return Q(e.address())}function ar(s){return or(JSON.stringify(s))}function or(s){return T(ee(new TextEncoder().encode(s)))}function E(s){return new TextEncoder().encode(s)}function tt(s){return new TextDecoder().decode(s)}function cr(s){return typeof s=="string"?Array.from(s).every(e=>e==="0"):s.every(e=>e===0)}function rt(s){let e={};for(let t of Object.values(s.forks??{})){let r=tt(t.prefix);if(!t.node.forks||Object.keys(t.node.forks).length===0)e[r]=t.node;else{let i=rt(t.node);for(let[a,o]of Object.entries(i))e[r+a]=o}}return e}function zr(s,e){let t=rt(s);return Object.entries(t).filter(([n])=>n.startsWith(e)).map(([n,i])=>i)}function st(s){return I("mantaray"+":"+s).slice(0,31)}function Hr(s){let e=s.length;if(e!==32&&e!==64)throw new c("INVALID_ARGUMENT",`Wrong referenceLength. It can be only 32 or 64. Got: ${e}`);let t=new Uint8Array(1);return t[0]=e,t}function dn(s){for(let t of Object.values(s.forks??{}))if(t.prefix.some(n=>n===47)||dn(t.node))return!0;return!1}async function dr(s,e,t){try{let r=new B;if(await r.load(async d=>await e.bytes.download(Q(d),{signal:t}),T(s)),t?.aborted)return null;let n=r.getForkAtPath(E(we)),a=n?.node.metadata?.[oe];if(!n?.node.entry)throw new c("NOT_FOUND","No root fork found");let o=cr(n.node.entry);if(o&&!a)throw new c("NOT_FOUND","No root entry found");return{entry:o?T(a):n.node.entry,contentType:n.node.metadata?.[L]}}catch{return null}}function Gr(s){return new Promise((e,t)=>{let r=document.createElement("video");r.preload="metadata",r.onerror=n=>{t(n)},r.onloadedmetadata=()=>{try{window.URL.revokeObjectURL(r.src)}catch{}e({duration:r.duration,width:r.videoWidth,height:r.videoHeight})},r.src=s instanceof Uint8Array?URL.createObjectURL(new Blob([s],{type:"video/mp4"})):s})}function Oa(s,e){return Math.round(s*8/e)}var pn=(n=>(n[n.none=1]="none",n[n.low=2]="low",n[n.normal=4]="normal",n[n.high=8]="high",n))(pn||{});function jr(s,e,t=4){let r=s*e,n=Object.fromEntries([[0,145],[234,145],[360,365],[432,915],[540,2e3],[720,3750],[1080,6900]].map(([u,m])=>[u*u*16/9,m]));if(n[r])return n[r];let i=Object.keys(n).map(Number).sort((u,m)=>m-u),a=i[0];if(a<r){let u=n[a];return r*u/a}let o=i.find(u=>u<r),d=i.sort((u,m)=>u-m).find(u=>u>r),p=n[d],f=n[o],l=(p-f)*(r-o)/(d-o)+f;return Math.round(l/t)}function M(s){return JSON.parse(JSON.stringify(s))}import{bytesToHex as Kr}from"@noble/hashes/utils";import{etc as Te,getPublicKey as hn,signAsync as ln,Signature as un}from"@noble/secp256k1";var Wr=27;function Yr(s){let e=hn(s,!1),t=Qr(e);return{sign:r=>fn(r,H(s)),address:t}}function Jr(s){return{address:s,sign:async e=>{try{return await sr(e,s)}catch(t){if(t.code===-32602)return await sr(e,s);throw new Error}}}}async function fn(s,e){if(typeof window>"u"){let a=await import("@noble/hashes/hmac").then(p=>p.hmac),o=await import("@noble/hashes/sha256").then(p=>p.sha256),d=(p,...f)=>a(o,p,Te.concatBytes(...f));Te.hmacSha256Sync=d,Te.hmacSha256Async=(p,...f)=>Promise.resolve(d(p,...f))}let t=Xr(typeof s=="string"?new TextEncoder().encode(s):s),r=await ln(t,e,{}),n=r.toCompactRawBytes(),i=new Uint8Array([...n,r.recovery+Wr]);return Kr(i)}function Zr(s,e){let t=(s[64]??0)-Wr,r=Xr(e),n=Te.bytesToNumberBE(s.slice(0,32)),i=Te.bytesToNumberBE(s.slice(32,64)),o=new un(n,i,t).recoverPublicKey(r),d=V(Qr(o.toRawBytes(!1)));return H(d)}function Qr(s){let e=I(s.slice(1)).slice(12);return`0x${Kr(e).replace(/^0x/,"")}`}function Xr(s){let e=`Ethereum Signed Message: ${s.length}`,t=new TextEncoder().encode(e);return I(t,s)}function $a(s,e="-"){return s.toLowerCase().replace(/ +/g,e).normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(new RegExp(`[^a-z0-9${e}]`,"g"),"").replace(new RegExp(`${e}+`,"g"),e).replace(new RegExp(`^${e}|${e}$`,"g"),"")}function te(s){let e=new Date(s*1e3);return e.getFullYear()>5e3?new Date(s):e}function U(s){let e=s.getTime();return e<0||isNaN(e)?0:Math.floor(s.getTime()/1e3)}function nt(s){if(s.length===0)throw new Error("fromBigEndian got 0 length bytes");let e=[],t=s.length-1;for(let r=0;r<s.length;r++)e.push(s[t-r]<<8*r);return e.reduce((r,n)=>r|=n)>>>0}function es(s){if(s<0)throw new Error(`toBigEndianFromUint16 got lesser than 0 value: ${s}`);let e=65535;if(s>e)throw new Error(`toBigEndianFromUint16 got greater value then ${e}: ${s} `);let t=new ArrayBuffer(2);return new DataView(t).setUint16(0,s,!1),new Uint8Array(t)}function ja(s){if(s<0)throw new Error(`toBigEndianFromUint32 got lesser than 0 value: ${s}`);let e=new ArrayBuffer(4);return new DataView(e).setUint32(0,s,!1),new Uint8Array(e)}function ts(s){if(s<0)throw new Error(`toBigEndianFromBigInt64 got lesser than 0 value: ${s}`);let e=new ArrayBuffer(8);return new DataView(e).setBigUint64(0,s,!1),new Uint8Array(e)}function Ka(s,e=Se(8)){let t=new DataView(e.buffer),r=s&4294967295,n=!0;return t.setUint32(0,r,n),t.setUint32(4,0,n),e}function pr(s,e=Se(8)){let t=new DataView(e.buffer),r=s&4294967295;return t.setUint32(0,0),t.setUint32(4,r),e}function Wa(s){return new DataView(s.buffer).getUint32(4)}function rs(s,e){let t=new URL(s);return t.pathname=e??"",t.toString()}function hr(s,e){try{let t=s??"";return/https?:\/\//.test(t)||(t=`https://${t}`),new URL(e??"",t)}catch{return null}}function Ja(s,e){try{let t=s??"";return/https?:\/\//.test(t)||(t=`https://${t}`),new URL(e??"",t),!0}catch{return!1}}function Za(s){return hr(s)?.origin}function Qa(s){return hr(s)?.hostname}function Xa(s,e){return hr(s,e)?.href}var J=class s{bucketCollisions=new Map;dirtyCollisions=new Map;maxBucketCount=0;_isFresh=!0;constructor(e){e&&this.seed(e)}get minDepth(){return Math.max(Math.ceil(Math.log2(this.maxBucketCount))+Zt,Z)}get isFresh(){return this._isFresh}static getBucketId(e){let t=T(e);return nt(t.slice(0,4))>>>32-Zt}static merge(e,t){let r=new s;return r.seed(Object.fromEntries(e.bucketCollisions.entries())),t.bucketCollisions.forEach((n,i)=>{r.bucketCollisions.set(i,(r.bucketCollisions.get(i)??0)+n)}),r}seed(e){Array.isArray(e)?e.forEach(t=>{this.bucketCollisions.set(t.bucketID,t.collisions)}):(Object.entries(e).forEach(([t,r])=>{let n=Number(t);this.bucketCollisions.set(n,(this.bucketCollisions.get(n)??0)+r),this.dirtyCollisions.set(n,(this.dirtyCollisions.get(n)??0)+r)}),this._isFresh=!1)}merge(e){e.bucketCollisions.forEach((t,r)=>{this.bucketCollisions.set(r,(this.bucketCollisions.get(r)??0)+t)}),e.dirtyCollisions.forEach((t,r)=>{this.dirtyCollisions.set(r,(this.dirtyCollisions.get(r)??0)+t)})}add(e){let t=s.getBucketId(e),r=this.bucketCollisions.get(t)||0;this.bucketCollisions.set(t,r+1),this.dirtyCollisions.set(t,(this.dirtyCollisions.get(t)??0)+1),r>this.maxBucketCount&&(this.maxBucketCount=r)}remove(e){let t=s.getBucketId(e);this.bucketCollisions.has(t)&&this.bucketCollisions.set(t,(this.bucketCollisions.get(t)??0)-1),this.bucketCollisions.get(t)===0&&this.bucketCollisions.delete(t),this.maxBucketCount=0,this.bucketCollisions.forEach(r=>{r>this.maxBucketCount&&(this.maxBucketCount=r)})}};import{makeChunkedFile as mn}from"@fairdatasociety/bmt-js";import{AxiosError as ss}from"axios";import{ZodError as ns}from"zod";var Co=["NOT_FOUND","SERVER_ERROR","BAD_REQUEST","UNAUTHORIZED","PERMISSION_DENIED","DUPLICATE","JWT_MISSING_OR_EXPIRED","MISSING_FUNDS","MISSING_BATCH_ID","MISSING_REFERENCE","MISSING_SIGNER","MISSING_WALLET","OUTDATED_WALLET","LOCKED_WALLET","BUCKET_FILLED","ABORTED_BY_USER","INVALID_ARGUMENT","INVALID_API_KEY","NOT_IMPLEMENTED","UNSUPPORTED_OPERATION","TIMEOUT","VALIDATION_ERROR","ENCODING_ERROR","ENCRYPTION_ERROR","DECRYPTION_ERROR"],c=class extends Error{code;error;axiosError;zodError;constructor(e,t,r){super(t),this.name="EthernaSdkError",this.code=e,this.stack=r?.stack??this.stack,r instanceof ss?this.axiosError=r:r instanceof ns?this.zodError=r:r instanceof Error&&(this.error=r)}};function O(s){if(s instanceof c)return s;if(s instanceof ss){let e=s.response?.status??500,t=typeof s.response?.data=="string"?s.response?.data:typeof s.response?.data=="object"&&typeof s.response?.data?.message=="string"?s.response?.data?.message:typeof s.response?.data=="object"&&typeof s.response?.data?.error=="string"?s.response?.data?.error:s.message;switch(e){case 400:return new c("BAD_REQUEST",t,s);case 401:return new c("UNAUTHORIZED",t,s);case 402:return new c("MISSING_FUNDS",t,s);case 403:return new c("PERMISSION_DENIED",t,s);case 404:return new c("NOT_FOUND",t,s);default:return new c(e?"SERVER_ERROR":"BAD_REQUEST",t,s)}}if(s instanceof ns){let e=s.issues[0]?.message??"Validation error";return s.issues.length>1&&(e+=` (+${s.issues.length-1} others)`),new c("VALIDATION_ERROR",e,s)}return s instanceof Error?new c("SERVER_ERROR",s.message,s):new c("SERVER_ERROR",String(s))}function h(s){throw O(s)}var it=class{chunks=[];chunksCount=0;beeClient;concurrentChunks;tagReference;tag;activeTasks=0;uploadOptions;stop=!1;drainPromiseResolver;drainPromiseRejecter;progressListeners=[];errorListeners=[];doneListeners=[];constructor(e){this.beeClient=e.beeClient,this.concurrentChunks=e.concurrentChunks??10}on(e,t){switch(e){case"progress":this.progressListeners.push(t);break;case"error":this.errorListeners.push(t);break;case"done":this.doneListeners.push(t);break}return this}off(e,t){switch(e){case"progress":this.progressListeners=this.progressListeners.filter(r=>r!==t);break;case"error":this.errorListeners=this.errorListeners.filter(r=>r!==t);break;case"done":this.doneListeners=this.doneListeners.filter(r=>r!==t);break}return this}append(e,t){let r="payload"in e?e:mn(e),n=r.bmt().flat();t??="",n.forEach(a=>{a.key=t}),this.chunks.push(...n),this.chunksCount=this.chunks.length;let i=w(r.address());return this.tagReference=i,i}pop(e){let t=this.chunks.filter(r=>r.key===e);return this.chunks=this.chunks.filter(r=>r.key!==e),this.chunksCount=this.chunks.length,t}resume(e){this.uploadOptions=e,this._internal_resume()}_internal_resume(){if(!this.uploadOptions)throw new c("BAD_REQUEST","Call .resume() before .drain()");let{deferred:e,...t}=this.uploadOptions;if(this.beeClient.type==="etherna"){if(this.chunks.length===0||this.activeTasks>0||this.stop){this.chunks.length===0&&this.activeTasks===0&&(this.doneListeners.forEach(a=>a()),this.drainPromiseResolver?.());return}let n=[],i=this.concurrentChunks;for(;this.chunks.length>0&&n.length<i&&!this.stop;){let a=this.chunks.shift();a&&n.push(a)}if(n.length===0){this.chunks.length===0&&this.activeTasks===0&&(this.doneListeners.forEach(a=>a()),this.drainPromiseResolver?.());return}this.activeTasks++,this.beeClient.chunk.bulkUpload(n,t).then(()=>{let a=(this.chunksCount-this.chunks.length)/this.chunksCount*100;this.progressListeners.forEach(o=>o(a)),this.chunks.length>0?this._internal_resume():this.activeTasks===0&&(this.doneListeners.forEach(o=>o()),this.drainPromiseResolver?.())}).catch(a=>{this.stop=!0,this.chunks.unshift(...n);let o=O(a);this.errorListeners.forEach(d=>d(o)),this.drainPromiseRejecter?.(o)}).finally(()=>{this.activeTasks--,this.resume(t)});return}(e&&!this.tag?this.beeClient.tags.create(this.tagReference??ne).then(n=>n.uid):Promise.resolve(this.tag)).then(n=>{for(this.tag=n;this.activeTasks<this.concurrentChunks&&this.chunks.length>0&&!this.stop;){let i=this.chunks.shift();i&&(this.activeTasks++,this.beeClient.chunk.upload(Uint8Array.from([...i.span(),...i.payload]),{...t,tag:this.tag}).then(()=>{let a=(this.chunksCount-this.chunks.length)/this.chunksCount*100;this.progressListeners.forEach(o=>o(a))}).catch(a=>{this.stop=!0,this.chunks.unshift(i);let o=O(a);this.errorListeners.forEach(d=>d(o)),this.drainPromiseRejecter?.(o)}).finally(()=>{this.activeTasks--,this.resume(t)}))}this.chunks.length===0&&this.activeTasks===0&&(this.doneListeners.forEach(i=>i()),this.drainPromiseResolver?.())}).catch(n=>{let i=O(n);this.errorListeners.forEach(a=>a(i))})}drain(){return this.stop=!1,new Promise((e,t)=>{this.activeTasks===0&&this.chunks.length>0&&this._internal_resume(),this.chunks.length===0?e():(this.drainPromiseResolver=e,this.drainPromiseRejecter=t)})}};var _=class s{static maxLevel=32n;static minLevel=0n;static maxStart=2n**(this.maxLevel+1n)-1n;static maxUnixTimeStamp=(1n<<this.maxLevel+1n)-1n;static minUnixTimeStamp=0n;start;level;constructor(e,t){if(e>=1n<<s.maxLevel+1n)throw new c("INVALID_ARGUMENT","'start' is too big");if(BigInt(t)>s.maxLevel)throw new c("INVALID_ARGUMENT","'level' is too big");this.level=Number(t),this.start=e>>BigInt(t)<<BigInt(t)}get isLeft(){return(BigInt(this.start)&BigInt(this.length))===BigInt(0)}get isRight(){return!this.isLeft}get length(){return 1n<<BigInt(this.level)}get marshalBinary(){let e=ts(this.start),t=new Uint8Array([...e,this.level]);return I(t)}get left(){return this.isLeft?this:new s(this.start-this.length,this.level)}get right(){return this.isRight?this:new s(this.start+this.length,this.level)}static fromString(e){let[t,r]=e.split("/");if(!t||!r)throw new c("INVALID_ARGUMENT","Invalid epoch string");return new s(BigInt(t),Number(r))}containsTime(e){let t=e.toUnixTimestamp().normalized();return t>=this.start&&t<this.start+this.length}getChildAt(e){let t=e.toUnixTimestamp().normalized();if(this.level===0)throw new c("INVALID_ARGUMENT","'level' must be greater than 0");if(t<this.start)throw new c("INVALID_ARGUMENT","'at' is before start");if(t>=this.start+this.length)throw new c("INVALID_ARGUMENT","'at' is out of level");let r=this.start,n=this.length>>1n;return(t&n)>0&&(r|=n),new s(r,this.level-1)}getNext(e){let t=e.toUnixTimestamp().normalized();if(t<this.start)throw new c("INVALID_ARGUMENT","'at' must be greater or equal than 'start'");return this.start+this.length>t?this.getChildAt(e):s.lowestCommonAncestor(this.start,t).getChildAt(e)}getParent(){if(BigInt(this.level)===s.maxLevel)throw new c("INVALID_ARGUMENT","'level' is too big");let e=this.level+1,t=this.start>>BigInt(e)<<BigInt(e);return new s(t,e)}isEqual(e){return this.start===e.start&&this.level===e.level}static lowestCommonAncestor(e,t){let r=0;for(;e>>BigInt(r)!=t>>BigInt(r);)if(r++,BigInt(r)>s.maxLevel)throw new c("INVALID_ARGUMENT","Epochs are too far apart");let n=t>>BigInt(r)<<BigInt(r);return new s(n,r)}toString(){return`${this.start}/${this.level}`}};Uint8Array.prototype.toUnixTimestamp=function(){if(this.length!==$.TimeStampByteSize)throw new c("INVALID_ARGUMENT","Invalid date time byte array length");let s=new Uint8Array(this.length);return s.set(this,0),new DataView(new ArrayBuffer(1)).getUint8(0)===0&&s.reverse(),new DataView(s.buffer).getBigUint64(0,!0)*1000n};Uint8Array.prototype.toUnixDate=function(){return new Date(Number(this.toUnixTimestamp()))};Date.prototype.toBytes=function(){let s=BigInt(Math.floor(this.getTime()/1e3)),e=new Uint8Array($.TimeStampByteSize);return new DataView(e.buffer).setBigUint64(0,s,!0),new DataView(new ArrayBuffer(1)).getUint8(0)===0&&e.reverse(),e};Date.prototype.toUnixTimestamp=function(){return BigInt(this.getTime())};BigInt.prototype.toDate=function(){return new Date(Number(this))};BigInt.prototype.normalized=function(){return this.valueOf()/1000n};var $=class s{constructor(e,t,r){this.index=e;this.payload=t;this.reference=r;if(t.length<s.MinPayloadByteSize)throw new c("INVALID_ARGUMENT",`Payload can't be shorter than ${s.TimeStampByteSize} bytes`);if(t.length>s.MaxPayloadBytesSize)throw new c("INVALID_ARGUMENT",`Payload can't be longer than ${s.MaxPayloadBytesSize} bytes`);if(!s.ReferenceHashRegex.test(r))throw new c("INVALID_ARGUMENT","Not a valid swarm hash");let i=t.slice(0,s.TimeStampByteSize).toUnixDate();this.timestamp=isNaN(i.getTime())?null:i}static AccountBytesLength=20;static IdentifierBytesLength=32;static IndexBytesLength=32;static MaxPayloadBytesSize=3991;static ReferenceHashRegex=/^[A-Fa-f0-9]{64}$/;static TimeStampByteSize=8;static TopicBytesLength=32;static MinPayloadByteSize=this.TimeStampByteSize;static MaxContentPayloadBytesSize=this.MaxPayloadBytesSize-this.TimeStampByteSize;timestamp=null;isEqual(e){return this.reference===e.reference&&this.index.isEqual(e.index)&&q(this.payload,e.payload)}getContentPayload(){return this.payload.slice(s.TimeStampByteSize)}static buildChunkPayload(e,t){if(e.length>this.MaxContentPayloadBytesSize)throw new c("INVALID_ARGUMENT",`Content payload can't be longer than ${this.MaxContentPayloadBytesSize} bytes`);let r=t??new Date;return new Uint8Array([...r.toBytes(),...e])}static buildIdentifier(e,t){if(e.length!==this.TopicBytesLength)throw new c("INVALID_ARGUMENT","Invalid topic length");let r=new Uint8Array(this.TopicBytesLength+this.IndexBytesLength);return r.set(e,0),r.set(t.marshalBinary,e.length),I(r)}static buildReferenceHash(e,t,r){if(r)return this.buildReferenceHash(e,this.buildIdentifier(t,r));{if(!/^0x[0-9a-f]{40}$/i.test(e))throw new c("INVALID_ARGUMENT","Value is not a valid ethereum account");let n=me(e.replace(/^0x/,""));if(n.length!=this.AccountBytesLength)throw new c("INVALID_ARGUMENT","Invalid account length");if(t.length!=this.IdentifierBytesLength)throw new c("INVALID_ARGUMENT","Invalid identifier length");let i=new Uint8Array(this.IdentifierBytesLength+this.AccountBytesLength);return i.set(t,0),i.set(n,this.IdentifierBytesLength),Q(I(i))}}};var Be=class{constructor(e){this.beeClient=e}async createNextEpochFeedChunk(e,t,r,n){let i=new Date,a=await this.tryFindEpochFeed(e,t,i,n),o;a?o=a.index.getNext(i):(o=new _(0n,_.maxLevel),o.containsTime(i)||(o=o.right));let d=$.buildChunkPayload(r,i),p=$.buildReferenceHash(e,t,o);return new $(o,d,p)}async tryFindEpochFeed(e,t,r,n){let i=r.toUnixTimestamp().normalized();if(i<_.minUnixTimeStamp||i>_.maxUnixTimeStamp)throw new c("INVALID_ARGUMENT","Date is out of allowed range");let a=this.findStartingEpochOffline(n,r),o=await this.tryFindStartingEpochChunkOnline(e,t,r,a);return o?await this.findLastEpochChunkBeforeDate(e,t,r,o):null}async tryGetFeedChunk(e,t,r){if(t instanceof Uint8Array&&r){let n=t;return this.tryGetFeedChunk($.buildReferenceHash(e,n,r),r)}if(t instanceof _){r=t;let n=e;try{let a=(await this.beeClient.chunk.download(n)).slice(We);return new $(r,a,n)}catch{return null}}return null}async findLastEpochChunkBeforeDate(e,t,r,n){let i=n.index;if(BigInt(i.level)===_.minLevel)return n;i.containsTime(r)||(r=((i.right.start-1n)*1000n).toDate());let a=i.getChildAt(r),o=await this.tryGetFeedChunk(e,t,a);if(o&&o.timestamp&&o.timestamp<=r)return await this.findLastEpochChunkBeforeDate(e,t,r,o);if(a.isRight){let d=await this.tryGetFeedChunk(e,t,a.left);if(d)return await this.findLastEpochChunkBeforeDate(e,t,r,d)}return n}findStartingEpochOffline(e,t){let r=e;if(r){for(;BigInt(r.level)!=_.maxLevel&&!r.containsTime(t);)r=r.getParent();r.containsTime(t)||(r=void 0)}return r??=new _(0n,_.maxLevel),r.containsTime(t)||(r=r.right),r}async tryFindStartingEpochChunkOnline(e,t,r,n){let i=await this.tryGetFeedChunk(e,t,n);return i&&i.timestamp&&i.timestamp<=r?i:n.isRight?await this.tryFindStartingEpochChunkOnline(e,t,r,n.left):BigInt(n.level)!=_.maxLevel?await this.tryFindStartingEpochChunkOnline(e,t,r,n.getParent()):null}};import{AxiosError as gn}from"axios";var is=10,g=class s{constructor(e,t){this.prefix=e;this.node=t}static nodeForkSizes={nodeType:1,prefixLength:1,preReference:32,metadata:2,header:()=>s.nodeForkSizes.nodeType+s.nodeForkSizes.prefixLength,prefixMaxSize:()=>s.nodeForkSizes.preReference-s.nodeForkSizes.header()};static nodeHeaderSizes={obfuscationKey:32,versionHash:31,refBytes:1,full:()=>s.nodeHeaderSizes.obfuscationKey+s.nodeHeaderSizes.versionHash+s.nodeHeaderSizes.refBytes};createMetadataPadding(e){let t=new Uint8Array(0);if(e<s.nodeHeaderSizes.obfuscationKey){let r=s.nodeHeaderSizes.obfuscationKey-e;t=new Uint8Array(r);for(let n=0;n<t.length;n++)t[n]=is}else if(e>s.nodeHeaderSizes.obfuscationKey){let r=s.nodeHeaderSizes.obfuscationKey-e%s.nodeHeaderSizes.obfuscationKey;t=new Uint8Array(r);for(let n=0;n<t.length;n++)t[n]=is}return t}serialize(){let e=this.node.type,t=new Uint8Array(1);t[0]=this.prefix.length;let r=new Uint8Array(s.nodeForkSizes.prefixMaxSize());r.set(this.prefix);let n=this.node.contentAddress;if(!n)throw new Error("cannot serialize MantarayFork because it does not have contentAddress");let i=new Uint8Array([e,...t,...r,...n]);if(this.node.IsWithMetadataType()){let a=JSON.stringify(this.node.metadata),o=new TextEncoder().encode(a),d=o.length+s.nodeForkSizes.metadata,p=this.createMetadataPadding(d),f=es(o.length+p.length);return new Uint8Array([...i,...f,...o,...p])}return i}static deserialize(e,t,r){let n=e[0],i=e[1];if(i===0||i>s.nodeForkSizes.prefixMaxSize())throw new Error(`Prefix length of fork is greater than ${s.nodeForkSizes.prefixMaxSize()}. Got: ${i}`);let a=s.nodeForkSizes.header(),o=e.slice(a,a+i),d=new B;d.obfuscationKey=t;let p=r?.withMetadata;if(p){let{refBytesSize:f,metadataByteSize:l}=p;if(l>0){d.entry=e.slice(s.nodeForkSizes.preReference,s.nodeForkSizes.preReference+f);let u=s.nodeForkSizes.preReference+f+s.nodeForkSizes.metadata,m=e.slice(u,u+l),y=new TextDecoder().decode(m);d.metadata=JSON.parse(y)}}else d.entry=e.slice(s.nodeForkSizes.preReference);return d.type=n,new s(o,d)}};var _e=class{bytes;constructor(){this.bytes=new Uint8Array(32)}get getBytes(){return new Uint8Array([...this.bytes])}set setBytes(e){Nr(e,32),this.bytes=new Uint8Array([...e])}setByte(e){if(e>255)throw new Error(`IndexBytes setByte error: ${e} is greater than 255`);let t=Math.floor(e/8);this.bytes[t]!==void 0&&(this.bytes[t]|=1<<e%8)}checkBytePresent(e){let t=Math.floor(e/8);return this.bytes[t]!==void 0?(this.bytes[t]>>e%8&1)>0:!1}forEach(e){for(let t=0;t<=255;t++)this.checkBytePresent(t)&&e(t)}};var yn="/";var Ae=class extends Error{constructor(e,t){let r=new TextDecoder().decode(e),n=t?`Prefix on lookup: ${new TextDecoder().decode(t)}`:"No fork on the level";super(`Path has not found in the manifest. Remaining path on lookup: ${r}. ${n}`)}},B=class s{_type;_obfuscationKey;_contentAddress;_entry;_metadata;forks;get contentAddress(){return this._contentAddress}set contentAddress(e){ir(e),this._contentAddress=e}get entry(){return this._entry}set entry(e){ir(e),this._entry=e,q(e,new Uint8Array(e.length))||this.makeValue(),this.makeDirty()}get type(){if(this._type===void 0)throw new c("NOT_FOUND","Property 'type' does not exist in the object");if(this._type>255)throw new c("INVALID_ARGUMENT",'Property "type" in Node is greater than 255');return this._type}set type(e){if(e>255)throw new c("INVALID_ARGUMENT","Node type representation cannot be greater than 255");this._type=e}get obfuscationKey(){return this._obfuscationKey}set obfuscationKey(e){if(!(e instanceof Uint8Array))throw new c("INVALID_ARGUMENT","Given obfuscationKey is not an Uint8Array instance.");if(e.length!==32)throw new c("INVALID_ARGUMENT","Wrong obfuscationKey length. Entry only can be 32 length in bytes");this._obfuscationKey=e,this.makeDirty()}get metadata(){return this._metadata}set metadata(e){this._metadata=e,this.makeWithMetadata(),(e[oe]||e[ze])&&this.makeValue(),this.makeDirty()}get readable(){return{type:this._type,entry:this._entry?Q(this._entry):void 0,contentAddress:this._contentAddress?Q(this._contentAddress):void 0,metadata:this._metadata,forks:Object.keys(this.forks??{}).reduce((e,t)=>{let r=new Uint8Array([+t]),n=new TextDecoder().decode(r),i=this.forks?.[+t]??new g(new Uint8Array(0),new s);return{...e,[n]:{prefix:tt(i.prefix),node:i.node.readable}}},{})}}static fromReadable(e){let t=new s;return e.type!=null&&(t._type=e.type),e.entry&&(t._entry=me(e.entry)),e.contentAddress&&(t._contentAddress=me(e.contentAddress)),e.metadata&&(t._metadata=e.metadata),e.forks&&(t.forks=Object.keys(e.forks).reduce((r,n)=>{let i=new TextEncoder().encode(n)[0],a=e.forks[n];if(!a||!i)return r;let o=s.fromReadable(a.node);return{...r,[i]:new g(E(a.prefix),o)}},{})),t}isValueType(){if(!this._type)throw new c("NOT_FOUND","Property 'type' does not exist in the object");return(this._type&2)===2}isEdgeType(){if(!this._type)throw new c("NOT_FOUND","Property 'type' does not exist in the object");return(this._type&4)===4}isWithPathSeparatorType(){if(!this._type)throw new c("NOT_FOUND","Property 'type' does not exist in the object");return(this._type&8)===8}IsWithMetadataType(){if(!this._type)throw new c("NOT_FOUND","Property 'type' does not exist in the object");return(this._type&16)===16}makeValue(){this._type||(this._type=2),this._type|=2}makeEdge(){this._type||(this._type=4),this._type|=4}makeWithPathSeparator(){this._type||(this._type=8),this._type|=8}makeWithMetadata(){this._type||(this._type=16),this._type|=16}makeNotWithPathSeparator(){if(!this._type)throw new c("NOT_FOUND","Property 'type' does not exist in the object");this._type=247&this._type}updateWithPathSeparator(e){new TextDecoder().decode(e).slice(1).includes(yn)?this.makeWithPathSeparator():this.makeNotWithPathSeparator()}addFork(e,t,r={}){if(e.length===0){this.entry=t,Object.keys(r).length>0&&(this.metadata=r),this.makeDirty();return}if(this.isDirty()&&!this.forks&&(this.forks={}),!this.forks)throw new Error("Fork mapping is not defined in the manifest");let n=e[0];if(n==null)throw new Error("Path is empty");let i=this.forks[n];if(!i){let f=new s;if(this._obfuscationKey&&(f.obfuscationKey=this._obfuscationKey),e.length>g.nodeForkSizes.prefixMaxSize()){let l=e.slice(0,g.nodeForkSizes.prefixMaxSize()),u=e.slice(g.nodeForkSizes.prefixMaxSize());f.addFork(u,t,r),f.updateWithPathSeparator(l),this.forks[n]=new g(l,f),this.makeDirty(),this.makeEdge();return}f.entry=t,Object.keys(r).length>0&&(f.metadata=r),f.updateWithPathSeparator(e),this.forks[n]=new g(e,f),this.makeDirty(),this.makeEdge();return}let a=Or(i.prefix,e),o=i.prefix.slice(a.length),d=o[0],p=i.node;d&&(p=new s,p.obfuscationKey=this._obfuscationKey??new Uint8Array(32),i.node.updateWithPathSeparator(o),p.forks={},p.forks[d]=new g(o,i.node),p.makeEdge(),e.length===a.length&&p.makeValue()),p.updateWithPathSeparator(a),p.addFork(e.slice(a.length),t,r),this.forks[n]=new g(a,p),this.makeEdge(),this.makeDirty()}getForkAtPath(e){if(e.length===0)throw new c("INVALID_ARGUMENT","Path is empty");if(!this.forks)throw new Error("Fork mapping is not defined in the manifest");let t=e[0];if(t==null)throw new Error("Path is empty");let r=this.forks[t];if(!r)throw new Ae(e);if(et(e,r.prefix)===-1)throw new Ae(e,r.prefix);let i=e.slice(r.prefix.length);return i.length===0?r:r.node.getForkAtPath(i)}hasForkAtPath(e){let t=e[0];if(t==null)throw new c("INVALID_ARGUMENT","Path is empty");if(!this.forks)return!1;let r=this.forks[t];if(!r||et(e,r.prefix)===-1)return!1;let i=e.slice(r.prefix.length);return i.length===0?!0:r.node.hasForkAtPath(i)}getNodesWithPrefix(e){return zr(this,tt(e))}removePath(e){let t=e[0];if(t==null)throw new Error("Path is empty");if(!this.forks)throw new c("INVALID_ARGUMENT","Fork mapping is not defined in the manifest");let r=this.forks[t];if(!r)throw new Ae(e);if(et(e,r.prefix)===-1)throw new Ae(e,r.prefix);let i=e.slice(r.prefix.length);if(i.length===0){this.makeDirty(),delete this.forks[t];return}r.node.removePath(i)}async load(e,t){if(!t)throw new Error("Reference is undefined at manifest load");await this.recursiveLoad(e,t),this.contentAddress=t}async save(e){let{reference:t}=await this.recursiveSave(e);return t}isDirty(){return this._contentAddress===void 0}makeDirty(){this._contentAddress=void 0}serialize(){if(this._obfuscationKey||(this.obfuscationKey=new Uint8Array(32)),!this.forks){if(!this._entry)throw new c("NOT_FOUND","Field 'entry' is not defined in the object");this.forks={}}this._entry||(this._entry=new Uint8Array(32));let t=st("0.2"),r=Hr(this._entry),n=new _e;for(let p of Object.keys(this.forks))n.setByte(Number(p));let i=n.getBytes,a=[];n.forEach(p=>{let f=this.forks?.[p];if(!f)throw new Error(`Fork indexing error: fork has not found under ${p} index`);a.push(f.serialize())});let o=this._obfuscationKey??new Uint8Array(g.nodeHeaderSizes.obfuscationKey),d=new Uint8Array([...o,...t,...r,...this._entry,...i,...Dr(a)]);return rr(o,d,o.length),d}deserialize(e){let t=g.nodeHeaderSizes.full();if(e.length<t)throw new Error(`The serialised input is too short, received = ${e.length}, expected >= ${t}`);this._obfuscationKey=new Uint8Array(e.slice(0,g.nodeHeaderSizes.obfuscationKey)),rr(this._obfuscationKey,e,this._obfuscationKey.length);let r=e.slice(g.nodeHeaderSizes.obfuscationKey,g.nodeHeaderSizes.obfuscationKey+g.nodeHeaderSizes.versionHash);if(q(r,st("0.1")))throw new c("INVALID_ARGUMENT","Version 0.1 is not supported");if(q(r,st("0.2"))){let n=e[t-1]??0,i=e.slice(t,t+n);n===0&&(i=new Uint8Array(32)),this.entry=i;let a=t+n,o=e.slice(a,a+32);q(o,new Uint8Array(32))||this.makeEdge(),this.forks={};let d=new _e;d.setBytes=o,a+=32,d.forEach(p=>{let f;if(e.length<a+g.nodeForkSizes.nodeType)throw new Error(`There is not enough size to read nodeType of fork at offset ${a}`);let l=e.slice(a,a+g.nodeForkSizes.nodeType),u=g.nodeForkSizes.preReference+n,m=l[0];if(m==null)throw new Error("nodeType is not defined");let y=(m&16)===16,A=this._obfuscationKey??new Uint8Array(g.nodeHeaderSizes.obfuscationKey);if(y){if(e.length<a+g.nodeForkSizes.preReference+n+g.nodeForkSizes.metadata)throw new Error(`Not enough bytes for metadata node fork at byte ${p}`);let v=nt(e.slice(a+u,a+u+g.nodeForkSizes.metadata));u+=g.nodeForkSizes.metadata+v,f=g.deserialize(e.slice(a,a+u),A,{withMetadata:{refBytesSize:n,metadataByteSize:v}})}else{if(e.length<a+g.nodeForkSizes.preReference+n)throw new Error(`There is not enough size to read fork at offset ${a}`);f=g.deserialize(e.slice(a,a+u),A)}this.forks[p]=f,a+=u})}else throw new Error("Wrong mantaray version")}async recursiveLoad(e,t){let r=await e(t);if(this.deserialize(r),!this.forks)return this._entry;for(let n in this.forks){let i=this.forks[n];if(i==null)throw new Error("forkPath is not defined");let a=i.node._entry;if(!a)throw new Error("contentAddress is not defined");let o=await i.node.recursiveLoad(e,a);if(!o)throw new Error("entry is not defined");i.node.contentAddress=a,i.node.entry=o}return this._entry}async recursiveSave(e){let t=[];this.forks||(this.forks={});for(let a of Object.values(this.forks))t.push(a.node.recursiveSave(e));let r=await Promise.all(t);if(this._contentAddress&&r.every(a=>!a.changed))return{reference:this._contentAddress,changed:!1};let n=this.serialize(),i=await e(n);return this.contentAddress=i,{reference:i,changed:!0}}};var at=class{tasks=[];activeTasks=0;maxConcurrentTasks;drainMode;drainPromiseResolver;constructor(e){this.maxConcurrentTasks=e?.maxConcurrentTasks??1/0,this.drainMode=e?.drainMode??"background"}enqueue(e,t){this.tasks.push({task:e,key:t}),this.drainMode==="background"&&this.runTasks()}dequeue(e){this.tasks=this.tasks.filter(t=>t.key!==e)}async drain(e){if(this.tasks.length!==0)return this.drainMode==="manual"&&this.runTasks(e),new Promise(t=>{this.drainPromiseResolver=t})}runTasks(e){let t=e?this.tasks.filter(r=>r.key===e):this.tasks;if(t.length===0){this.drainPromiseResolver?.(),this.drainPromiseResolver=void 0;return}for(;this.activeTasks<this.maxConcurrentTasks&&t.length>0;){let{task:r}=t.shift()??{};r&&(this.activeTasks++,r().finally(()=>{this.activeTasks--,this.runTasks(e)}))}}};var as=class{constructor(e){this.config=e;this.queue=new at({maxConcurrentTasks:e.concurrentTasks??10})}node=new B;queue;bytesTotal=0;bytesProgress=0;abortController=new AbortController;errored=!1;onProgress;onEnqueueData;addFile(e,t,r,n){let i=this.enqueueData(e);this.node.addFork(E(r),i,{[j]:t,...n?{[L]:n}:{}})}async save(){let e={};this.config.indexDocument&&(e[oe]=this.config.indexDocument),this.config.errorDocument&&(e[ze]=this.config.errorDocument),Object.keys(e).length>0&&this.node.addFork(E(we),ae,e);let t=await this.node.save(async r=>this.enqueueData(r));if(await this.queue.drain(),this.errored)throw new c("SERVER_ERROR","Upload failed");return w(t)}enqueueData(e){if(this.onEnqueueData)return this.onEnqueueData(e,this.queue);let t=ee(e);return this.queue.enqueue(async()=>{if(!this.abortController.signal.aborted)try{await this.config.beeClient.bytes.upload(e,{batchId:this.config.batchId,signal:this.abortController.signal,onUploadProgress:r=>{this.bytesProgress+=r/100*e.length;let n=this.bytesTotal===0?0:this.bytesProgress/this.bytesTotal*100;this.onProgress?.(n)}})}catch(r){this.errored=!0,r instanceof gn&&(r.response?.status??400)>=400&&this.kill()}}),T(t)}kill(){this.abortController.abort()}};var os=class{reference;mantaray;entries=null;beeClient;constructor(e,t){e instanceof B?(this.mantaray=e,this.loadEntries()):(this.reference=e,this.mantaray=new B),this.beeClient=t.beeClient}async loadFolder(){if(!this.reference)throw new c("BAD_REQUEST","Load mantaray node directly or pass a reference as argument.");this.mantaray.isDirty()&&await this.mantaray.load(e=>this.beeClient.bytes.download(w(e)).catch(t=>{if(t instanceof c&&t.code==="NOT_FOUND")return this.beeClient.bytes.download(w(e));throw t}),T(this.reference)),this.loadEntries()}entriesAtPath(e){if(!this.entries)throw new c("BAD_REQUEST","Folder not loaded. Run FolderExplorer.loadFolder() or MantarayNode.load() first.");let t=e.split("/").filter(Boolean),r=this.entries;for(let[n,i]of t.entries()){if(n===t.length-1)return r.find(o=>o.name===i&&o.type==="directory")?.children;let a=r.find(o=>o.name===i&&o.type==="directory");if(!a)throw new c("NOT_FOUND",`Directory ${i} not found.`);r=a.children}return r}fileAtPath(e){if(!this.entries)throw new c("BAD_REQUEST","Folder not loaded. Run FolderExplorer.loadFolder() or MantarayNode.load() first.");let t=e.replace(/^\/+/,"").replace(/\/+$/,""),r=t.split("/").filter(Boolean);if(t==="")return this.entries.find(d=>d.type==="file"&&d.name===t);let n=r.slice(0,-1).join("/"),i=this.entriesAtPath(n)??[],a=r.pop();return a?i.find(d=>d.name===a&&d.type==="file"):void 0}loadEntries(){let e=[],t=rt(this.mantaray);Object.entries(t).forEach(([r,n])=>{let i=r.split("/"),a=e;i.forEach((o,d)=>{if(d===i.length-1)a.push({name:o,type:"file",metadata:n.metadata??{}});else{if(o==="")return;let p=a.find(f=>f.name===o&&f.type==="directory");p||(p={name:o,type:"directory",children:[]},a.push(p)),a=p.children}})}),this.entries=e}};import{makeChunkedFile as wn}from"@fairdatasociety/bmt-js";var ge=class{_reference=ne;_batchId;_isDirty=!1;beeClient;batchIdCollision;manifestBucketCalculator=new J;constructor(e,t){this.beeClient=t.beeClient}get reference(){return this._reference}get batchId(){return this._batchId}get isDirty(){return this._isDirty}download(e){return Promise.resolve()}upload(e){return Promise.resolve()}resume(e){return Promise.resolve()}async prepareForUpload(e,t){if(e!==this.batchId&&(this._batchId=e,this.batchIdCollision=void 0),this.batchId&&!this.batchIdCollision){let r=await this.beeClient.stamps.downloadBuckets(this.batchId).catch(a=>{if(a instanceof c&&a.code==="NOT_IMPLEMENTED")return null;throw a}),n=new J(r?.buckets),i=J.merge(n,this.manifestBucketCalculator);if(r&&i.minDepth>r.depth)throw new c("BUCKET_FILLED","Postage batch can't be used. All buckets are filled.");this.batchIdCollision=n.bucketCollisions}this.batchId||await this.loadBestBatchId({batchLabelQuery:t})}async loadBestBatchId(e){let t=await this.beeClient.stamps.fetchBestBatchId({minDepth:Z,collisions:this.manifestBucketCalculator.bucketCollisions,headers:e?.headers,labelQuery:e?.batchLabelQuery,signal:e?.signal,timeout:e?.timeout});if(!t)throw new c("MISSING_BATCH_ID","No usable postage batch found");return this._batchId=t,this.batchIdCollision=t.collisions,t}},ce=class extends ge{_node;_rootManifest=ne;_preview={};_details={};_hasLoadedPreview=!1;_hasLoadedDetails=!1;chunksUploader;constructor(e,t){super(e,t),this._node=new B,this.chunksUploader=new it({beeClient:t.beeClient,concurrentChunks:t.uploadConcurrentChunks})}get serialized(){return M({reference:this.reference,preview:this._preview,details:this._details})}get node(){return this._node}get rootManifest(){return this._rootManifest}get hasLoadedPreview(){return this._hasLoadedPreview}get hasLoadedDetails(){return this._hasLoadedDetails}download(e){return Promise.resolve()}async upload(e){await this.prepareForUpload(e?.batchId,e?.batchLabelQuery);let t=this.batchId;return this.updateNodeDefaultEntries(),this.enqueueData(new TextEncoder().encode(JSON.stringify(this._preview))),this.enqueueData(new TextEncoder().encode(JSON.stringify(this._details))),this._reference=await this.node.save(async r=>this.enqueueData(r)).then(w),this.chunksUploader.resume({batchId:t,...e}),await this.chunksUploader.drain(),this.reference}async loadNode(e){if(e){this._node=e;return}if(cr(this.reference))throw new c("MISSING_REFERENCE