@helia/car 2.0.1 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.min.js CHANGED
@@ -1,3 +1,3 @@
1
1
  (function (root, factory) {(typeof module === 'object' && module.exports) ? module.exports = factory() : root.HeliaCar = factory()}(typeof self !== 'undefined' ? self : this, function () {
2
- "use strict";var HeliaCar=(()=>{var jr=Object.create;var ve=Object.defineProperty;var Rr=Object.getOwnPropertyDescriptor;var Hr=Object.getOwnPropertyNames;var Gr=Object.getPrototypeOf,qr=Object.prototype.hasOwnProperty;var Wr=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),Kr=(t,e)=>{for(var r in e)ve(t,r,{get:e[r],enumerable:!0})},ct=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of Hr(e))!qr.call(t,o)&&o!==r&&ve(t,o,{get:()=>e[o],enumerable:!(n=Rr(e,o))||n.enumerable});return t};var Jr=(t,e,r)=>(r=t!=null?jr(Gr(t)):{},ct(e||!t||!t.__esModule?ve(r,"default",{value:t,enumerable:!0}):r,t)),Qr=t=>ct(ve({},"__esModule",{value:!0}),t);var lt=Wr((ko,Oe)=>{"use strict";var rn=Object.prototype.hasOwnProperty,k="~";function se(){}Object.create&&(se.prototype=Object.create(null),new se().__proto__||(k=!1));function nn(t,e,r){this.fn=t,this.context=e,this.once=r||!1}function ht(t,e,r,n,o){if(typeof r!="function")throw new TypeError("The listener must be a function");var i=new nn(r,n||t,o),a=k?k+e:e;return t._events[a]?t._events[a].fn?t._events[a]=[t._events[a],i]:t._events[a].push(i):(t._events[a]=i,t._eventsCount++),t}function ke(t,e){--t._eventsCount===0?t._events=new se:delete t._events[e]}function b(){this._events=new se,this._eventsCount=0}b.prototype.eventNames=function(){var e=[],r,n;if(this._eventsCount===0)return e;for(n in r=this._events)rn.call(r,n)&&e.push(k?n.slice(1):n);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(r)):e};b.prototype.listeners=function(e){var r=k?k+e:e,n=this._events[r];if(!n)return[];if(n.fn)return[n.fn];for(var o=0,i=n.length,a=new Array(i);o<i;o++)a[o]=n[o].fn;return a};b.prototype.listenerCount=function(e){var r=k?k+e:e,n=this._events[r];return n?n.fn?1:n.length:0};b.prototype.emit=function(e,r,n,o,i,a){var c=k?k+e:e;if(!this._events[c])return!1;var f=this._events[c],m=arguments.length,l,p;if(f.fn){switch(f.once&&this.removeListener(e,f.fn,void 0,!0),m){case 1:return f.fn.call(f.context),!0;case 2:return f.fn.call(f.context,r),!0;case 3:return f.fn.call(f.context,r,n),!0;case 4:return f.fn.call(f.context,r,n,o),!0;case 5:return f.fn.call(f.context,r,n,o,i),!0;case 6:return f.fn.call(f.context,r,n,o,i,a),!0}for(p=1,l=new Array(m-1);p<m;p++)l[p-1]=arguments[p];f.fn.apply(f.context,l)}else{var v=f.length,q;for(p=0;p<v;p++)switch(f[p].once&&this.removeListener(e,f[p].fn,void 0,!0),m){case 1:f[p].fn.call(f[p].context);break;case 2:f[p].fn.call(f[p].context,r);break;case 3:f[p].fn.call(f[p].context,r,n);break;case 4:f[p].fn.call(f[p].context,r,n,o);break;default:if(!l)for(q=1,l=new Array(m-1);q<m;q++)l[q-1]=arguments[q];f[p].fn.apply(f[p].context,l)}}return!0};b.prototype.on=function(e,r,n){return ht(this,e,r,n,!1)};b.prototype.once=function(e,r,n){return ht(this,e,r,n,!0)};b.prototype.removeListener=function(e,r,n,o){var i=k?k+e:e;if(!this._events[i])return this;if(!r)return ke(this,i),this;var a=this._events[i];if(a.fn)a.fn===r&&(!o||a.once)&&(!n||a.context===n)&&ke(this,i);else{for(var c=0,f=[],m=a.length;c<m;c++)(a[c].fn!==r||o&&!a[c].once||n&&a[c].context!==n)&&f.push(a[c]);f.length?this._events[i]=f.length===1?f[0]:f:ke(this,i)}return this};b.prototype.removeAllListeners=function(e){var r;return e?(r=k?k+e:e,this._events[r]&&ke(this,r)):(this._events=new se,this._eventsCount=0),this};b.prototype.off=b.prototype.removeListener;b.prototype.addListener=b.prototype.on;b.prefixed=k;b.EventEmitter=b;typeof Oe<"u"&&(Oe.exports=b)});var mo={};Kr(mo,{car:()=>po});function Xr(t){return t[Symbol.asyncIterator]!=null}function Yr(t){if(Xr(t))return(async()=>{for await(let e of t);})();for(let e of t);}var ft=Yr;function Zr(t){let[e,r]=t[Symbol.asyncIterator]!=null?[t[Symbol.asyncIterator](),Symbol.asyncIterator]:[t[Symbol.iterator](),Symbol.iterator],n=[];return{peek:()=>e.next(),push:o=>{n.push(o)},next:()=>n.length>0?{done:!1,value:n.shift()}:e.next(),[r](){return this}}}var ut=Zr;function en(t){return t[Symbol.asyncIterator]!=null}function tn(t,e){if(en(t))return async function*(){for await(let c of t)yield e(c)}();let r=ut(t),{value:n,done:o}=r.next();if(o===!0)return function*(){}();let i=e(n);if(typeof i.then=="function")return async function*(){yield await i;for await(let c of r)yield e(c)}();let a=e;return function*(){yield i;for(let c of r)yield a(c)}()}var dt=tn;function Le(){let t={};return t.promise=new Promise((e,r)=>{t.resolve=e,t.reject=r}),t}var Me=Jr(lt(),1);var ae=class extends Error{constructor(e){super(e),this.name="TimeoutError"}},Fe=class extends Error{constructor(e){super(),this.name="AbortError",this.message=e}},pt=t=>globalThis.DOMException===void 0?new Fe(t):new DOMException(t),mt=t=>{let e=t.reason===void 0?pt("This operation was aborted."):t.reason;return e instanceof Error?e:pt(e)};function Ve(t,e){let{milliseconds:r,fallback:n,message:o,customTimers:i={setTimeout,clearTimeout}}=e,a,f=new Promise((m,l)=>{if(typeof r!="number"||Math.sign(r)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${r}\``);if(e.signal){let{signal:v}=e;v.aborted&&l(mt(v)),v.addEventListener("abort",()=>{l(mt(v))})}if(r===Number.POSITIVE_INFINITY){t.then(m,l);return}let p=new ae;a=i.setTimeout.call(void 0,()=>{if(n){try{m(n())}catch(v){l(v)}return}typeof t.cancel=="function"&&t.cancel(),o===!1?m():o instanceof Error?l(o):(p.message=o??`Promise timed out after ${r} milliseconds`,l(p))},r),(async()=>{try{m(await t)}catch(v){l(v)}})()}).finally(()=>{f.clear()});return f.clear=()=>{i.clearTimeout.call(void 0,a),a=void 0},f}function je(t,e,r){let n=0,o=t.length;for(;o>0;){let i=Math.trunc(o/2),a=n+i;r(t[a],e)<=0?(n=++a,o-=i+1):o=i}return n}var ce=class{#e=[];enqueue(e,r){r={priority:0,...r};let n={priority:r.priority,run:e};if(this.size&&this.#e[this.size-1].priority>=r.priority){this.#e.push(n);return}let o=je(this.#e,n,(i,a)=>a.priority-i.priority);this.#e.splice(o,0,n)}dequeue(){return this.#e.shift()?.run}filter(e){return this.#e.filter(r=>r.priority===e.priority).map(r=>r.run)}get size(){return this.#e.length}};var fe=class extends Me.default{#e;#s;#i=0;#l;#a;#p=0;#r;#c;#t;#m;#n=0;#f;#o;#y;timeout;constructor(e){if(super(),e={carryoverConcurrencyCount:!1,intervalCap:Number.POSITIVE_INFINITY,interval:0,concurrency:Number.POSITIVE_INFINITY,autoStart:!0,queueClass:ce,...e},!(typeof e.intervalCap=="number"&&e.intervalCap>=1))throw new TypeError(`Expected \`intervalCap\` to be a number from 1 and up, got \`${e.intervalCap?.toString()??""}\` (${typeof e.intervalCap})`);if(e.interval===void 0||!(Number.isFinite(e.interval)&&e.interval>=0))throw new TypeError(`Expected \`interval\` to be a finite number >= 0, got \`${e.interval?.toString()??""}\` (${typeof e.interval})`);this.#e=e.carryoverConcurrencyCount,this.#s=e.intervalCap===Number.POSITIVE_INFINITY||e.interval===0,this.#l=e.intervalCap,this.#a=e.interval,this.#t=new e.queueClass,this.#m=e.queueClass,this.concurrency=e.concurrency,this.timeout=e.timeout,this.#y=e.throwOnTimeout===!0,this.#o=e.autoStart===!1}get#g(){return this.#s||this.#i<this.#l}get#b(){return this.#n<this.#f}#v(){this.#n--,this.#u(),this.emit("next")}#k(){this.#w(),this.#x(),this.#c=void 0}get#E(){let e=Date.now();if(this.#r===void 0){let r=this.#p-e;if(r<0)this.#i=this.#e?this.#n:0;else return this.#c===void 0&&(this.#c=setTimeout(()=>{this.#k()},r)),!0}return!1}#u(){if(this.#t.size===0)return this.#r&&clearInterval(this.#r),this.#r=void 0,this.emit("empty"),this.#n===0&&this.emit("idle"),!1;if(!this.#o){let e=!this.#E;if(this.#g&&this.#b){let r=this.#t.dequeue();return r?(this.emit("active"),r(),e&&this.#x(),!0):!1}}return!1}#x(){this.#s||this.#r!==void 0||(this.#r=setInterval(()=>{this.#w()},this.#a),this.#p=Date.now()+this.#a)}#w(){this.#i===0&&this.#n===0&&this.#r&&(clearInterval(this.#r),this.#r=void 0),this.#i=this.#e?this.#n:0,this.#d()}#d(){for(;this.#u(););}get concurrency(){return this.#f}set concurrency(e){if(!(typeof e=="number"&&e>=1))throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${e}\` (${typeof e})`);this.#f=e,this.#d()}async#T(e){return new Promise((r,n)=>{e.addEventListener("abort",()=>{n(e.reason)},{once:!0})})}async add(e,r={}){return r={timeout:this.timeout,throwOnTimeout:this.#y,...r},new Promise((n,o)=>{this.#t.enqueue(async()=>{this.#n++,this.#i++;try{r.signal?.throwIfAborted();let i=e({signal:r.signal});r.timeout&&(i=Ve(Promise.resolve(i),{milliseconds:r.timeout})),r.signal&&(i=Promise.race([i,this.#T(r.signal)]));let a=await i;n(a),this.emit("completed",a)}catch(i){if(i instanceof ae&&!r.throwOnTimeout){n();return}o(i),this.emit("error",i)}finally{this.#v()}},r),this.emit("add"),this.#u()})}async addAll(e,r){return Promise.all(e.map(async n=>this.add(n,r)))}start(){return this.#o?(this.#o=!1,this.#d(),this):this}pause(){this.#o=!0}clear(){this.#t=new this.#m}async onEmpty(){this.#t.size!==0&&await this.#h("empty")}async onSizeLessThan(e){this.#t.size<e||await this.#h("next",()=>this.#t.size<e)}async onIdle(){this.#n===0&&this.#t.size===0||await this.#h("idle")}async#h(e,r){return new Promise(n=>{let o=()=>{r&&!r()||(this.off(e,o),n())};this.on(e,o)})}get size(){return this.#t.size}sizeBy(e){return this.#t.filter(e).length}get pending(){return this.#n}get isPaused(){return this.#o}};var Co=new Uint8Array(0);function yt(t,e){if(t===e)return!0;if(t.byteLength!==e.byteLength)return!1;for(let r=0;r<t.byteLength;r++)if(t[r]!==e[r])return!1;return!0}function K(t){if(t instanceof Uint8Array&&t.constructor.name==="Uint8Array")return t;if(t instanceof ArrayBuffer)return new Uint8Array(t);if(ArrayBuffer.isView(t))return new Uint8Array(t.buffer,t.byteOffset,t.byteLength);throw new Error("Unknown type, must be binary type")}function on(t,e){if(t.length>=255)throw new TypeError("Alphabet too long");for(var r=new Uint8Array(256),n=0;n<r.length;n++)r[n]=255;for(var o=0;o<t.length;o++){var i=t.charAt(o),a=i.charCodeAt(0);if(r[a]!==255)throw new TypeError(i+" is ambiguous");r[a]=o}var c=t.length,f=t.charAt(0),m=Math.log(c)/Math.log(256),l=Math.log(256)/Math.log(c);function p(x){if(x instanceof Uint8Array||(ArrayBuffer.isView(x)?x=new Uint8Array(x.buffer,x.byteOffset,x.byteLength):Array.isArray(x)&&(x=Uint8Array.from(x))),!(x instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(x.length===0)return"";for(var T=0,W=0,C=0,P=x.length;C!==P&&x[C]===0;)C++,T++;for(var L=(P-C)*l+1>>>0,S=new Uint8Array(L);C!==P;){for(var O=x[C],j=0,$=L-1;(O!==0||j<W)&&$!==-1;$--,j++)O+=256*S[$]>>>0,S[$]=O%c>>>0,O=O/c>>>0;if(O!==0)throw new Error("Non-zero carry");W=j,C++}for(var M=L-W;M!==L&&S[M]===0;)M++;for(var be=f.repeat(T);M<L;++M)be+=t.charAt(S[M]);return be}function v(x){if(typeof x!="string")throw new TypeError("Expected String");if(x.length===0)return new Uint8Array;var T=0;if(x[T]!==" "){for(var W=0,C=0;x[T]===f;)W++,T++;for(var P=(x.length-T)*m+1>>>0,L=new Uint8Array(P);x[T];){var S=r[x.charCodeAt(T)];if(S===255)return;for(var O=0,j=P-1;(S!==0||O<C)&&j!==-1;j--,O++)S+=c*L[j]>>>0,L[j]=S%256>>>0,S=S/256>>>0;if(S!==0)throw new Error("Non-zero carry");C=O,T++}if(x[T]!==" "){for(var $=P-C;$!==P&&L[$]===0;)$++;for(var M=new Uint8Array(W+(P-$)),be=W;$!==P;)M[be++]=L[$++];return M}}}function q(x){var T=v(x);if(T)return T;throw new Error(`Non-${e} character`)}return{encode:p,decodeUnsafe:v,decode:q}}var sn=on,an=sn,xt=an;var Re=class{name;prefix;baseEncode;constructor(e,r,n){this.name=e,this.prefix=r,this.baseEncode=n}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}},He=class{name;prefix;baseDecode;prefixCodePoint;constructor(e,r,n){if(this.name=e,this.prefix=r,r.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=r.codePointAt(0),this.baseDecode=n}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return wt(this,e)}},Ge=class{decoders;constructor(e){this.decoders=e}or(e){return wt(this,e)}decode(e){let r=e[0],n=this.decoders[r];if(n!=null)return n.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}};function wt(t,e){return new Ge({...t.decoders??{[t.prefix]:t},...e.decoders??{[e.prefix]:e}})}var qe=class{name;prefix;baseEncode;baseDecode;encoder;decoder;constructor(e,r,n,o){this.name=e,this.prefix=r,this.baseEncode=n,this.baseDecode=o,this.encoder=new Re(e,r,n),this.decoder=new He(e,r,o)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}};function gt({name:t,prefix:e,encode:r,decode:n}){return new qe(t,e,r,n)}function We({name:t,prefix:e,alphabet:r}){let{encode:n,decode:o}=xt(r,t);return gt({prefix:e,name:t,encode:n,decode:i=>K(o(i))})}function cn(t,e,r,n){let o={};for(let l=0;l<e.length;++l)o[e[l]]=l;let i=t.length;for(;t[i-1]==="=";)--i;let a=new Uint8Array(i*r/8|0),c=0,f=0,m=0;for(let l=0;l<i;++l){let p=o[t[l]];if(p===void 0)throw new SyntaxError(`Non-${n} character`);f=f<<r|p,c+=r,c>=8&&(c-=8,a[m++]=255&f>>c)}if(c>=r||255&f<<8-c)throw new SyntaxError("Unexpected end of data");return a}function fn(t,e,r){let n=e[e.length-1]==="=",o=(1<<r)-1,i="",a=0,c=0;for(let f=0;f<t.length;++f)for(c=c<<8|t[f],a+=8;a>r;)a-=r,i+=e[o&c>>a];if(a!==0&&(i+=e[o&c<<r-a]),n)for(;i.length*r&7;)i+="=";return i}function E({name:t,prefix:e,bitsPerChar:r,alphabet:n}){return gt({prefix:e,name:t,encode(o){return fn(o,n,r)},decode(o){return cn(o,n,r,t)}})}var ue=E({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),Mo=E({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),Fo=E({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),Vo=E({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),jo=E({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),Ro=E({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),Ho=E({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),Go=E({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),qo=E({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var F=We({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),Jo=We({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var un=kt,bt=128,dn=127,hn=~dn,ln=Math.pow(2,31);function kt(t,e,r){e=e||[],r=r||0;for(var n=r;t>=ln;)e[r++]=t&255|bt,t/=128;for(;t&hn;)e[r++]=t&255|bt,t>>>=7;return e[r]=t|0,kt.bytes=r-n+1,e}var pn=Ke,mn=128,vt=127;function Ke(t,n){var r=0,n=n||0,o=0,i=n,a,c=t.length;do{if(i>=c)throw Ke.bytes=0,new RangeError("Could not decode varint");a=t[i++],r+=o<28?(a&vt)<<o:(a&vt)*Math.pow(2,o),o+=7}while(a>=mn);return Ke.bytes=i-n,r}var yn=Math.pow(2,7),xn=Math.pow(2,14),wn=Math.pow(2,21),gn=Math.pow(2,28),bn=Math.pow(2,35),vn=Math.pow(2,42),kn=Math.pow(2,49),En=Math.pow(2,56),Tn=Math.pow(2,63),_n=function(t){return t<yn?1:t<xn?2:t<wn?3:t<gn?4:t<bn?5:t<vn?6:t<kn?7:t<En?8:t<Tn?9:10},An={encode:un,decode:pn,encodingLength:_n},In=An,de=In;function he(t,e=0){return[de.decode(t,e),de.decode.bytes]}function Q(t,e,r=0){return de.encode(t,e,r),e}function X(t){return de.encodingLength(t)}function Tt(t,e){let r=e.byteLength,n=X(t),o=n+X(r),i=new Uint8Array(o+r);return Q(t,i,0),Q(r,i,n),i.set(e,o),new Y(t,r,e,i)}function _t(t){let e=K(t),[r,n]=he(e),[o,i]=he(e.subarray(n)),a=e.subarray(n+i);if(a.byteLength!==o)throw new Error("Incorrect length");return new Y(r,o,a,e)}function At(t,e){if(t===e)return!0;{let r=e;return t.code===r.code&&t.size===r.size&&r.bytes instanceof Uint8Array&&yt(t.bytes,r.bytes)}}var Y=class{code;size;digest;bytes;constructor(e,r,n,o){this.code=e,this.size=r,this.digest=n,this.bytes=o}};function It(t,e){let{bytes:r,version:n}=t;switch(n){case 0:return Un(r,Je(t),e??F.encoder);default:return Nn(r,Je(t),e??ue.encoder)}}var Bt=new WeakMap;function Je(t){let e=Bt.get(t);if(e==null){let r=new Map;return Bt.set(t,r),r}return e}var R=class t{code;version;multihash;bytes;"/";constructor(e,r,n,o){this.code=r,this.version=e,this.multihash=n,this.bytes=o,this["/"]=o}get asCID(){return this}get byteOffset(){return this.bytes.byteOffset}get byteLength(){return this.bytes.byteLength}toV0(){switch(this.version){case 0:return this;case 1:{let{code:e,multihash:r}=this;if(e!==le)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(r.code!==Cn)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return t.createV0(r)}default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}toV1(){switch(this.version){case 0:{let{code:e,digest:r}=this.multihash,n=Tt(e,r);return t.createV1(this.code,n)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`)}}equals(e){return t.equals(this,e)}static equals(e,r){let n=r;return n!=null&&e.code===n.code&&e.version===n.version&&At(e.multihash,n.multihash)}toString(e){return It(this,e)}toJSON(){return{"/":It(this)}}link(){return this}[Symbol.toStringTag]="CID";[Symbol.for("nodejs.util.inspect.custom")](){return`CID(${this.toString()})`}static asCID(e){if(e==null)return null;let r=e;if(r instanceof t)return r;if(r["/"]!=null&&r["/"]===r.bytes||r.asCID===r){let{version:n,code:o,multihash:i,bytes:a}=r;return new t(n,o,i,a??St(n,o,i.bytes))}else if(r[$n]===!0){let{version:n,multihash:o,code:i}=r,a=_t(o);return t.create(n,i,a)}else return null}static create(e,r,n){if(typeof r!="number")throw new Error("String codecs are no longer supported");if(!(n.bytes instanceof Uint8Array))throw new Error("Invalid digest");switch(e){case 0:{if(r!==le)throw new Error(`Version 0 CID must use dag-pb (code: ${le}) block encoding`);return new t(e,r,n,n.bytes)}case 1:{let o=St(e,r,n.bytes);return new t(e,r,n,o)}default:throw new Error("Invalid version")}}static createV0(e){return t.create(0,le,e)}static createV1(e,r){return t.create(1,e,r)}static decode(e){let[r,n]=t.decodeFirst(e);if(n.length!==0)throw new Error("Incorrect length");return r}static decodeFirst(e){let r=t.inspectBytes(e),n=r.size-r.multihashSize,o=K(e.subarray(n,n+r.multihashSize));if(o.byteLength!==r.multihashSize)throw new Error("Incorrect length");let i=o.subarray(r.multihashSize-r.digestSize),a=new Y(r.multihashCode,r.digestSize,i,o);return[r.version===0?t.createV0(a):t.createV1(r.codec,a),e.subarray(r.size)]}static inspectBytes(e){let r=0,n=()=>{let[p,v]=he(e.subarray(r));return r+=v,p},o=n(),i=le;if(o===18?(o=0,r=0):i=n(),o!==0&&o!==1)throw new RangeError(`Invalid CID version ${o}`);let a=r,c=n(),f=n(),m=r+f,l=m-a;return{version:o,codec:i,multihashCode:c,digestSize:f,multihashSize:l,size:m}}static parse(e,r){let[n,o]=Sn(e,r),i=t.decode(o);if(i.version===0&&e[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return Je(i).set(n,e),i}};function Sn(t,e){switch(t[0]){case"Q":{let r=e??F;return[F.prefix,r.decode(`${F.prefix}${t}`)]}case F.prefix:{let r=e??F;return[F.prefix,r.decode(t)]}case ue.prefix:{let r=e??ue;return[ue.prefix,r.decode(t)]}default:{if(e==null)throw Error("To parse non base32 or base58btc encoded CID multibase decoder must be provided");return[t[0],e.decode(t)]}}}function Un(t,e,r){let{prefix:n}=r;if(n!==F.prefix)throw Error(`Cannot string encode V0 in ${r.name} encoding`);let o=e.get(n);if(o==null){let i=r.encode(t).slice(1);return e.set(n,i),i}else return o}function Nn(t,e,r){let{prefix:n}=r,o=e.get(n);if(o==null){let i=r.encode(t);return e.set(n,i),i}else return o}var le=112,Cn=18;function St(t,e,r){let n=X(t),o=n+X(e),i=new Uint8Array(o+r.byteLength);return Q(t,i,0),Q(e,i,n),i.set(r,o),i}var $n=Symbol.for("@ipld/js-cid/CID");var Dn=new TextDecoder;function Qe(t,e){let r=0;for(let n=0;;n+=7){if(n>=64)throw new Error("protobuf: varint overflow");if(e>=t.length)throw new Error("protobuf: unexpected end of data");let o=t[e++];if(r+=n<28?(o&127)<<n:(o&127)*2**n,o<128)break}return[r,e]}function Ee(t,e){let r;[r,e]=Qe(t,e);let n=e+r;if(r<0||n<0)throw new Error("protobuf: invalid length");if(n>t.length)throw new Error("protobuf: unexpected end of data");return[t.subarray(e,n),n]}function Ut(t,e){let r;return[r,e]=Qe(t,e),[r&7,r>>3,e]}function zn(t){let e={},r=t.length,n=0;for(;n<r;){let o,i;if([o,i,n]=Ut(t,n),i===1){if(e.Hash)throw new Error("protobuf: (PBLink) duplicate Hash section");if(o!==2)throw new Error(`protobuf: (PBLink) wrong wireType (${o}) for Hash`);if(e.Name!==void 0)throw new Error("protobuf: (PBLink) invalid order, found Name before Hash");if(e.Tsize!==void 0)throw new Error("protobuf: (PBLink) invalid order, found Tsize before Hash");[e.Hash,n]=Ee(t,n)}else if(i===2){if(e.Name!==void 0)throw new Error("protobuf: (PBLink) duplicate Name section");if(o!==2)throw new Error(`protobuf: (PBLink) wrong wireType (${o}) for Name`);if(e.Tsize!==void 0)throw new Error("protobuf: (PBLink) invalid order, found Tsize before Name");let a;[a,n]=Ee(t,n),e.Name=Dn.decode(a)}else if(i===3){if(e.Tsize!==void 0)throw new Error("protobuf: (PBLink) duplicate Tsize section");if(o!==0)throw new Error(`protobuf: (PBLink) wrong wireType (${o}) for Tsize`);[e.Tsize,n]=Qe(t,n)}else throw new Error(`protobuf: (PBLink) invalid fieldNumber, expected 1, 2 or 3, got ${i}`)}if(n>r)throw new Error("protobuf: (PBLink) unexpected end of data");return e}function Nt(t){let e=t.length,r=0,n,o=!1,i;for(;r<e;){let c,f;if([c,f,r]=Ut(t,r),c!==2)throw new Error(`protobuf: (PBNode) invalid wireType, expected 2, got ${c}`);if(f===1){if(i)throw new Error("protobuf: (PBNode) duplicate Data section");[i,r]=Ee(t,r),n&&(o=!0)}else if(f===2){if(o)throw new Error("protobuf: (PBNode) duplicate Links section");n||(n=[]);let m;[m,r]=Ee(t,r),n.push(zn(m))}else throw new Error(`protobuf: (PBNode) invalid fieldNumber, expected 1 or 2, got ${f}`)}if(r>e)throw new Error("protobuf: (PBNode) unexpected end of data");let a={};return i&&(a.Data=i),a.Links=n||[],a}var si=new TextEncoder,ai=2**32,ci=2**31;var di=new TextEncoder;var Ct=112;function $t(t){let e=Nt(t),r={};return e.Data&&(r.Data=e.Data),e.Links&&(r.Links=e.Links.map(n=>{let o={};try{o.Hash=R.decode(n.Hash)}catch{}if(!o.Hash)throw new Error("Invalid Hash field found in link, expected CID");return n.Name!==void 0&&(o.Name=n.Name),n.Tsize!==void 0&&(o.Tsize=n.Tsize),o})),r}var Ln=["string","number","bigint","symbol"],On=["Function","Generator","AsyncGenerator","GeneratorFunction","AsyncGeneratorFunction","AsyncFunction","Observable","Array","Buffer","Object","RegExp","Date","Error","Map","Set","WeakMap","WeakSet","ArrayBuffer","SharedArrayBuffer","DataView","Promise","URL","HTMLElement","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigInt64Array","BigUint64Array"];function Dt(t){if(t===null)return"null";if(t===void 0)return"undefined";if(t===!0||t===!1)return"boolean";let e=typeof t;if(Ln.includes(e))return e;if(e==="function")return"Function";if(Array.isArray(t))return"Array";if(Mn(t))return"Buffer";let r=Fn(t);return r||"Object"}function Mn(t){return t&&t.constructor&&t.constructor.isBuffer&&t.constructor.isBuffer.call(null,t)}function Fn(t){let e=Object.prototype.toString.call(t).slice(8,-1);if(On.includes(e))return e}var s=class{constructor(e,r,n){this.major=e,this.majorEncoded=e<<5,this.name=r,this.terminal=n}toString(){return`Type[${this.major}].${this.name}`}compare(e){return this.major<e.major?-1:this.major>e.major?1:0}};s.uint=new s(0,"uint",!0);s.negint=new s(1,"negint",!0);s.bytes=new s(2,"bytes",!0);s.string=new s(3,"string",!0);s.array=new s(4,"array",!1);s.map=new s(5,"map",!1);s.tag=new s(6,"tag",!1);s.float=new s(7,"float",!0);s.false=new s(7,"false",!0);s.true=new s(7,"true",!0);s.null=new s(7,"null",!0);s.undefined=new s(7,"undefined",!0);s.break=new s(7,"break",!0);var u=class{constructor(e,r,n){this.type=e,this.value=r,this.encodedLength=n,this.encodedBytes=void 0,this.byteValue=void 0}toString(){return`Token[${this.type}].${this.value}`}};var Z=globalThis.process&&!globalThis.process.browser&&globalThis.Buffer&&typeof globalThis.Buffer.isBuffer=="function",Vn=new TextDecoder,jn=new TextEncoder;function Te(t){return Z&&globalThis.Buffer.isBuffer(t)}function _e(t){return t instanceof Uint8Array?Te(t)?new Uint8Array(t.buffer,t.byteOffset,t.byteLength):t:Uint8Array.from(t)}var Ot=Z?(t,e,r)=>r-e>64?globalThis.Buffer.from(t.subarray(e,r)).toString("utf8"):Pt(t,e,r):(t,e,r)=>r-e>64?Vn.decode(t.subarray(e,r)):Pt(t,e,r),Ae=Z?t=>t.length>64?globalThis.Buffer.from(t):zt(t):t=>t.length>64?jn.encode(t):zt(t);var ee=Z?(t,e,r)=>Te(t)?new Uint8Array(t.subarray(e,r)):t.slice(e,r):(t,e,r)=>t.slice(e,r),Mt=Z?(t,e)=>(t=t.map(r=>r instanceof Uint8Array?r:globalThis.Buffer.from(r)),_e(globalThis.Buffer.concat(t,e))):(t,e)=>{let r=new Uint8Array(e),n=0;for(let o of t)n+o.length>r.length&&(o=o.subarray(0,r.length-n)),r.set(o,n),n+=o.length;return r},Ft=Z?t=>globalThis.Buffer.allocUnsafe(t):t=>new Uint8Array(t);function Vt(t,e){if(Te(t)&&Te(e))return t.compare(e);for(let r=0;r<t.length;r++)if(t[r]!==e[r])return t[r]<e[r]?-1:1;return 0}function zt(t){let e=[],r=0;for(let n=0;n<t.length;n++){let o=t.charCodeAt(n);o<128?e[r++]=o:o<2048?(e[r++]=o>>6|192,e[r++]=o&63|128):(o&64512)===55296&&n+1<t.length&&(t.charCodeAt(n+1)&64512)===56320?(o=65536+((o&1023)<<10)+(t.charCodeAt(++n)&1023),e[r++]=o>>18|240,e[r++]=o>>12&63|128,e[r++]=o>>6&63|128,e[r++]=o&63|128):(e[r++]=o>>12|224,e[r++]=o>>6&63|128,e[r++]=o&63|128)}return e}function Pt(t,e,r){let n=[];for(;e<r;){let o=t[e],i=null,a=o>239?4:o>223?3:o>191?2:1;if(e+a<=r){let c,f,m,l;switch(a){case 1:o<128&&(i=o);break;case 2:c=t[e+1],(c&192)===128&&(l=(o&31)<<6|c&63,l>127&&(i=l));break;case 3:c=t[e+1],f=t[e+2],(c&192)===128&&(f&192)===128&&(l=(o&15)<<12|(c&63)<<6|f&63,l>2047&&(l<55296||l>57343)&&(i=l));break;case 4:c=t[e+1],f=t[e+2],m=t[e+3],(c&192)===128&&(f&192)===128&&(m&192)===128&&(l=(o&15)<<18|(c&63)<<12|(f&63)<<6|m&63,l>65535&&l<1114112&&(i=l))}}i===null?(i=65533,a=1):i>65535&&(i-=65536,n.push(i>>>10&1023|55296),i=56320|i&1023),n.push(i),e+=a}return Xe(n)}var Lt=4096;function Xe(t){let e=t.length;if(e<=Lt)return String.fromCharCode.apply(String,t);let r="",n=0;for(;n<e;)r+=String.fromCharCode.apply(String,t.slice(n,n+=Lt));return r}var Rn=256,Ie=class{constructor(e=Rn){this.chunkSize=e,this.cursor=0,this.maxCursor=-1,this.chunks=[],this._initReuseChunk=null}reset(){this.cursor=0,this.maxCursor=-1,this.chunks.length&&(this.chunks=[]),this._initReuseChunk!==null&&(this.chunks.push(this._initReuseChunk),this.maxCursor=this._initReuseChunk.length-1)}push(e){let r=this.chunks[this.chunks.length-1];if(this.cursor+e.length<=this.maxCursor+1){let o=r.length-(this.maxCursor-this.cursor)-1;r.set(e,o)}else{if(r){let o=r.length-(this.maxCursor-this.cursor)-1;o<r.length&&(this.chunks[this.chunks.length-1]=r.subarray(0,o),this.maxCursor=this.cursor-1)}e.length<64&&e.length<this.chunkSize?(r=Ft(this.chunkSize),this.chunks.push(r),this.maxCursor+=r.length,this._initReuseChunk===null&&(this._initReuseChunk=r),r.set(e,0)):(this.chunks.push(e),this.maxCursor+=e.length)}this.cursor+=e.length}toBytes(e=!1){let r;if(this.chunks.length===1){let n=this.chunks[0];e&&this.cursor>n.length/2?(r=this.cursor===n.length?n:n.subarray(0,this.cursor),this._initReuseChunk=null,this.chunks=[]):r=ee(n,0,this.cursor)}else r=Mt(this.chunks,this.cursor);return e&&this.reset(),r}};var h="CBOR decode error:",te="CBOR encode error:",pe=[];pe[23]=1;pe[24]=2;pe[25]=3;pe[26]=5;pe[27]=9;function V(t,e,r){if(t.length-e<r)throw new Error(`${h} not enough data for type`)}var w=[24,256,65536,4294967296,BigInt("18446744073709551616")];function _(t,e,r){V(t,e,1);let n=t[e];if(r.strict===!0&&n<w[0])throw new Error(`${h} integer encoded in more bytes than necessary (strict decode)`);return n}function A(t,e,r){V(t,e,2);let n=t[e]<<8|t[e+1];if(r.strict===!0&&n<w[1])throw new Error(`${h} integer encoded in more bytes than necessary (strict decode)`);return n}function I(t,e,r){V(t,e,4);let n=t[e]*16777216+(t[e+1]<<16)+(t[e+2]<<8)+t[e+3];if(r.strict===!0&&n<w[2])throw new Error(`${h} integer encoded in more bytes than necessary (strict decode)`);return n}function B(t,e,r){V(t,e,8);let n=t[e]*16777216+(t[e+1]<<16)+(t[e+2]<<8)+t[e+3],o=t[e+4]*16777216+(t[e+5]<<16)+(t[e+6]<<8)+t[e+7],i=(BigInt(n)<<BigInt(32))+BigInt(o);if(r.strict===!0&&i<w[3])throw new Error(`${h} integer encoded in more bytes than necessary (strict decode)`);if(i<=Number.MAX_SAFE_INTEGER)return Number(i);if(r.allowBigInt===!0)return i;throw new Error(`${h} integers outside of the safe integer range are not supported`)}function jt(t,e,r,n){return new u(s.uint,_(t,e+1,n),2)}function Rt(t,e,r,n){return new u(s.uint,A(t,e+1,n),3)}function Ht(t,e,r,n){return new u(s.uint,I(t,e+1,n),5)}function Gt(t,e,r,n){return new u(s.uint,B(t,e+1,n),9)}function U(t,e){return g(t,0,e.value)}function g(t,e,r){if(r<w[0]){let n=Number(r);t.push([e|n])}else if(r<w[1]){let n=Number(r);t.push([e|24,n])}else if(r<w[2]){let n=Number(r);t.push([e|25,n>>>8,n&255])}else if(r<w[3]){let n=Number(r);t.push([e|26,n>>>24&255,n>>>16&255,n>>>8&255,n&255])}else{let n=BigInt(r);if(n<w[4]){let o=[e|27,0,0,0,0,0,0,0],i=Number(n&BigInt(4294967295)),a=Number(n>>BigInt(32)&BigInt(4294967295));o[8]=i&255,i=i>>8,o[7]=i&255,i=i>>8,o[6]=i&255,i=i>>8,o[5]=i&255,o[4]=a&255,a=a>>8,o[3]=a&255,a=a>>8,o[2]=a&255,a=a>>8,o[1]=a&255,t.push(o)}else throw new Error(`${h} encountered BigInt larger than allowable range`)}}U.encodedSize=function(e){return g.encodedSize(e.value)};g.encodedSize=function(e){return e<w[0]?1:e<w[1]?2:e<w[2]?3:e<w[3]?5:9};U.compareTokens=function(e,r){return e.value<r.value?-1:e.value>r.value?1:0};function qt(t,e,r,n){return new u(s.negint,-1-_(t,e+1,n),2)}function Wt(t,e,r,n){return new u(s.negint,-1-A(t,e+1,n),3)}function Kt(t,e,r,n){return new u(s.negint,-1-I(t,e+1,n),5)}var Ye=BigInt(-1),Jt=BigInt(1);function Qt(t,e,r,n){let o=B(t,e+1,n);if(typeof o!="bigint"){let i=-1-o;if(i>=Number.MIN_SAFE_INTEGER)return new u(s.negint,i,9)}if(n.allowBigInt!==!0)throw new Error(`${h} integers outside of the safe integer range are not supported`);return new u(s.negint,Ye-BigInt(o),9)}function Be(t,e){let r=e.value,n=typeof r=="bigint"?r*Ye-Jt:r*-1-1;g(t,e.type.majorEncoded,n)}Be.encodedSize=function(e){let r=e.value,n=typeof r=="bigint"?r*Ye-Jt:r*-1-1;return n<w[0]?1:n<w[1]?2:n<w[2]?3:n<w[3]?5:9};Be.compareTokens=function(e,r){return e.value<r.value?1:e.value>r.value?-1:0};function me(t,e,r,n){V(t,e,r+n);let o=ee(t,e+r,e+r+n);return new u(s.bytes,o,r+n)}function Xt(t,e,r,n){return me(t,e,1,r)}function Yt(t,e,r,n){return me(t,e,2,_(t,e+1,n))}function Zt(t,e,r,n){return me(t,e,3,A(t,e+1,n))}function er(t,e,r,n){return me(t,e,5,I(t,e+1,n))}function tr(t,e,r,n){let o=B(t,e+1,n);if(typeof o=="bigint")throw new Error(`${h} 64-bit integer bytes lengths not supported`);return me(t,e,9,o)}function Se(t){return t.encodedBytes===void 0&&(t.encodedBytes=t.type===s.string?Ae(t.value):t.value),t.encodedBytes}function re(t,e){let r=Se(e);g(t,e.type.majorEncoded,r.length),t.push(r)}re.encodedSize=function(e){let r=Se(e);return g.encodedSize(r.length)+r.length};re.compareTokens=function(e,r){return Gn(Se(e),Se(r))};function Gn(t,e){return t.length<e.length?-1:t.length>e.length?1:Vt(t,e)}function ye(t,e,r,n,o){let i=r+n;V(t,e,i);let a=new u(s.string,Ot(t,e+r,e+i),i);return o.retainStringBytes===!0&&(a.byteValue=ee(t,e+r,e+i)),a}function rr(t,e,r,n){return ye(t,e,1,r,n)}function nr(t,e,r,n){return ye(t,e,2,_(t,e+1,n),n)}function or(t,e,r,n){return ye(t,e,3,A(t,e+1,n),n)}function ir(t,e,r,n){return ye(t,e,5,I(t,e+1,n),n)}function sr(t,e,r,n){let o=B(t,e+1,n);if(typeof o=="bigint")throw new Error(`${h} 64-bit integer string lengths not supported`);return ye(t,e,9,o,n)}var ar=re;function ne(t,e,r,n){return new u(s.array,n,r)}function cr(t,e,r,n){return ne(t,e,1,r)}function fr(t,e,r,n){return ne(t,e,2,_(t,e+1,n))}function ur(t,e,r,n){return ne(t,e,3,A(t,e+1,n))}function dr(t,e,r,n){return ne(t,e,5,I(t,e+1,n))}function hr(t,e,r,n){let o=B(t,e+1,n);if(typeof o=="bigint")throw new Error(`${h} 64-bit integer array lengths not supported`);return ne(t,e,9,o)}function lr(t,e,r,n){if(n.allowIndefinite===!1)throw new Error(`${h} indefinite length items not allowed`);return ne(t,e,1,1/0)}function Ue(t,e){g(t,s.array.majorEncoded,e.value)}Ue.compareTokens=U.compareTokens;Ue.encodedSize=function(e){return g.encodedSize(e.value)};function oe(t,e,r,n){return new u(s.map,n,r)}function pr(t,e,r,n){return oe(t,e,1,r)}function mr(t,e,r,n){return oe(t,e,2,_(t,e+1,n))}function yr(t,e,r,n){return oe(t,e,3,A(t,e+1,n))}function xr(t,e,r,n){return oe(t,e,5,I(t,e+1,n))}function wr(t,e,r,n){let o=B(t,e+1,n);if(typeof o=="bigint")throw new Error(`${h} 64-bit integer map lengths not supported`);return oe(t,e,9,o)}function gr(t,e,r,n){if(n.allowIndefinite===!1)throw new Error(`${h} indefinite length items not allowed`);return oe(t,e,1,1/0)}function Ne(t,e){g(t,s.map.majorEncoded,e.value)}Ne.compareTokens=U.compareTokens;Ne.encodedSize=function(e){return g.encodedSize(e.value)};function br(t,e,r,n){return new u(s.tag,r,1)}function vr(t,e,r,n){return new u(s.tag,_(t,e+1,n),2)}function kr(t,e,r,n){return new u(s.tag,A(t,e+1,n),3)}function Er(t,e,r,n){return new u(s.tag,I(t,e+1,n),5)}function Tr(t,e,r,n){return new u(s.tag,B(t,e+1,n),9)}function Ce(t,e){g(t,s.tag.majorEncoded,e.value)}Ce.compareTokens=U.compareTokens;Ce.encodedSize=function(e){return g.encodedSize(e.value)};var Xn=20,Yn=21,Zn=22,eo=23;function _r(t,e,r,n){if(n.allowUndefined===!1)throw new Error(`${h} undefined values are not supported`);return n.coerceUndefinedToNull===!0?new u(s.null,null,1):new u(s.undefined,void 0,1)}function Ar(t,e,r,n){if(n.allowIndefinite===!1)throw new Error(`${h} indefinite length items not allowed`);return new u(s.break,void 0,1)}function Ze(t,e,r){if(r){if(r.allowNaN===!1&&Number.isNaN(t))throw new Error(`${h} NaN values are not supported`);if(r.allowInfinity===!1&&(t===1/0||t===-1/0))throw new Error(`${h} Infinity values are not supported`)}return new u(s.float,t,e)}function Ir(t,e,r,n){return Ze(et(t,e+1),3,n)}function Br(t,e,r,n){return Ze(tt(t,e+1),5,n)}function Sr(t,e,r,n){return Ze($r(t,e+1),9,n)}function $e(t,e,r){let n=e.value;if(n===!1)t.push([s.float.majorEncoded|Xn]);else if(n===!0)t.push([s.float.majorEncoded|Yn]);else if(n===null)t.push([s.float.majorEncoded|Zn]);else if(n===void 0)t.push([s.float.majorEncoded|eo]);else{let o,i=!1;(!r||r.float64!==!0)&&(Nr(n),o=et(D,1),n===o||Number.isNaN(n)?(D[0]=249,t.push(D.slice(0,3)),i=!0):(Cr(n),o=tt(D,1),n===o&&(D[0]=250,t.push(D.slice(0,5)),i=!0))),i||(to(n),o=$r(D,1),D[0]=251,t.push(D.slice(0,9)))}}$e.encodedSize=function(e,r){let n=e.value;if(n===!1||n===!0||n===null||n===void 0)return 1;if(!r||r.float64!==!0){Nr(n);let o=et(D,1);if(n===o||Number.isNaN(n))return 3;if(Cr(n),o=tt(D,1),n===o)return 5}return 9};var Ur=new ArrayBuffer(9),N=new DataView(Ur,1),D=new Uint8Array(Ur,0);function Nr(t){if(t===1/0)N.setUint16(0,31744,!1);else if(t===-1/0)N.setUint16(0,64512,!1);else if(Number.isNaN(t))N.setUint16(0,32256,!1);else{N.setFloat32(0,t);let e=N.getUint32(0),r=(e&2139095040)>>23,n=e&8388607;if(r===255)N.setUint16(0,31744,!1);else if(r===0)N.setUint16(0,(t&2147483648)>>16|n>>13,!1);else{let o=r-127;o<-24?N.setUint16(0,0):o<-14?N.setUint16(0,(e&2147483648)>>16|1<<24+o,!1):N.setUint16(0,(e&2147483648)>>16|o+15<<10|n>>13,!1)}}}function et(t,e){if(t.length-e<2)throw new Error(`${h} not enough data for float16`);let r=(t[e]<<8)+t[e+1];if(r===31744)return 1/0;if(r===64512)return-1/0;if(r===32256)return NaN;let n=r>>10&31,o=r&1023,i;return n===0?i=o*2**-24:n!==31?i=(o+1024)*2**(n-25):i=o===0?1/0:NaN,r&32768?-i:i}function Cr(t){N.setFloat32(0,t,!1)}function tt(t,e){if(t.length-e<4)throw new Error(`${h} not enough data for float32`);let r=(t.byteOffset||0)+e;return new DataView(t.buffer,r,4).getFloat32(0,!1)}function to(t){N.setFloat64(0,t,!1)}function $r(t,e){if(t.length-e<8)throw new Error(`${h} not enough data for float64`);let r=(t.byteOffset||0)+e;return new DataView(t.buffer,r,8).getFloat64(0,!1)}$e.compareTokens=U.compareTokens;function y(t,e,r){throw new Error(`${h} encountered invalid minor (${r}) for major ${t[e]>>>5}`)}function De(t){return()=>{throw new Error(`${h} ${t}`)}}var d=[];for(let t=0;t<=23;t++)d[t]=y;d[24]=jt;d[25]=Rt;d[26]=Ht;d[27]=Gt;d[28]=y;d[29]=y;d[30]=y;d[31]=y;for(let t=32;t<=55;t++)d[t]=y;d[56]=qt;d[57]=Wt;d[58]=Kt;d[59]=Qt;d[60]=y;d[61]=y;d[62]=y;d[63]=y;for(let t=64;t<=87;t++)d[t]=Xt;d[88]=Yt;d[89]=Zt;d[90]=er;d[91]=tr;d[92]=y;d[93]=y;d[94]=y;d[95]=De("indefinite length bytes/strings are not supported");for(let t=96;t<=119;t++)d[t]=rr;d[120]=nr;d[121]=or;d[122]=ir;d[123]=sr;d[124]=y;d[125]=y;d[126]=y;d[127]=De("indefinite length bytes/strings are not supported");for(let t=128;t<=151;t++)d[t]=cr;d[152]=fr;d[153]=ur;d[154]=dr;d[155]=hr;d[156]=y;d[157]=y;d[158]=y;d[159]=lr;for(let t=160;t<=183;t++)d[t]=pr;d[184]=mr;d[185]=yr;d[186]=xr;d[187]=wr;d[188]=y;d[189]=y;d[190]=y;d[191]=gr;for(let t=192;t<=215;t++)d[t]=br;d[216]=vr;d[217]=kr;d[218]=Er;d[219]=Tr;d[220]=y;d[221]=y;d[222]=y;d[223]=y;for(let t=224;t<=243;t++)d[t]=De("simple values are not supported");d[244]=y;d[245]=y;d[246]=y;d[247]=_r;d[248]=De("simple values are not supported");d[249]=Ir;d[250]=Br;d[251]=Sr;d[252]=y;d[253]=y;d[254]=y;d[255]=Ar;var z=[];for(let t=0;t<24;t++)z[t]=new u(s.uint,t,1);for(let t=-1;t>=-24;t--)z[31-t]=new u(s.negint,t,1);z[64]=new u(s.bytes,new Uint8Array(0),1);z[96]=new u(s.string,"",1);z[128]=new u(s.array,0,1);z[160]=new u(s.map,0,1);z[244]=new u(s.false,!1,1);z[245]=new u(s.true,!0,1);z[246]=new u(s.null,null,1);function no(){let t=[];return t[s.uint.major]=U,t[s.negint.major]=Be,t[s.bytes.major]=re,t[s.string.major]=ar,t[s.array.major]=Ue,t[s.map.major]=Ne,t[s.tag.major]=Ce,t[s.float.major]=$e,t}var ls=no(),ps=new Ie,ze=class t{constructor(e,r){this.obj=e,this.parent=r}includes(e){let r=this;do if(r.obj===e)return!0;while(r=r.parent);return!1}static createCheck(e,r){if(e&&e.includes(r))throw new Error(`${te} object contains circular references`);return new t(r,e)}},H={null:new u(s.null,null),undefined:new u(s.undefined,void 0),true:new u(s.true,!0),false:new u(s.false,!1),emptyArray:new u(s.array,0),emptyMap:new u(s.map,0)},G={number(t,e,r,n){return!Number.isInteger(t)||!Number.isSafeInteger(t)?new u(s.float,t):t>=0?new u(s.uint,t):new u(s.negint,t)},bigint(t,e,r,n){return t>=BigInt(0)?new u(s.uint,t):new u(s.negint,t)},Uint8Array(t,e,r,n){return new u(s.bytes,t)},string(t,e,r,n){return new u(s.string,t)},boolean(t,e,r,n){return t?H.true:H.false},null(t,e,r,n){return H.null},undefined(t,e,r,n){return H.undefined},ArrayBuffer(t,e,r,n){return new u(s.bytes,new Uint8Array(t))},DataView(t,e,r,n){return new u(s.bytes,new Uint8Array(t.buffer,t.byteOffset,t.byteLength))},Array(t,e,r,n){if(!t.length)return r.addBreakTokens===!0?[H.emptyArray,new u(s.break)]:H.emptyArray;n=ze.createCheck(n,t);let o=[],i=0;for(let a of t)o[i++]=rt(a,r,n);return r.addBreakTokens?[new u(s.array,t.length),o,new u(s.break)]:[new u(s.array,t.length),o]},Object(t,e,r,n){let o=e!=="Object",i=o?t.keys():Object.keys(t),a=o?t.size:i.length;if(!a)return r.addBreakTokens===!0?[H.emptyMap,new u(s.break)]:H.emptyMap;n=ze.createCheck(n,t);let c=[],f=0;for(let m of i)c[f++]=[rt(m,r,n),rt(o?t.get(m):t[m],r,n)];return oo(c,r),r.addBreakTokens?[new u(s.map,a),c,new u(s.break)]:[new u(s.map,a),c]}};G.Map=G.Object;G.Buffer=G.Uint8Array;for(let t of"Uint8Clamped Uint16 Uint32 Int8 Int16 Int32 BigUint64 BigInt64 Float32 Float64".split(" "))G[`${t}Array`]=G.DataView;function rt(t,e={},r){let n=Dt(t),o=e&&e.typeEncoders&&e.typeEncoders[n]||G[n];if(typeof o=="function"){let a=o(t,n,e,r);if(a!=null)return a}let i=G[n];if(!i)throw new Error(`${te} unsupported type: ${n}`);return i(t,n,e,r)}function oo(t,e){e.mapSorter&&t.sort(e.mapSorter)}var io={strict:!1,allowIndefinite:!0,allowUndefined:!0,allowBigInt:!0},nt=class{constructor(e,r={}){this._pos=0,this.data=e,this.options=r}pos(){return this._pos}done(){return this._pos>=this.data.length}next(){let e=this.data[this._pos],r=z[e];if(r===void 0){let n=d[e];if(!n)throw new Error(`${h} no decoder for major type ${e>>>5} (byte 0x${e.toString(16).padStart(2,"0")})`);let o=e&31;r=n(this.data,this._pos,o,this.options)}return this._pos+=r.encodedLength,r}},xe=Symbol.for("DONE"),Pe=Symbol.for("BREAK");function so(t,e,r){let n=[];for(let o=0;o<t.value;o++){let i=we(e,r);if(i===Pe){if(t.value===1/0)break;throw new Error(`${h} got unexpected break to lengthed array`)}if(i===xe)throw new Error(`${h} found array but not enough entries (got ${o}, expected ${t.value})`);n[o]=i}return n}function ao(t,e,r){let n=r.useMaps===!0,o=n?void 0:{},i=n?new Map:void 0;for(let a=0;a<t.value;a++){let c=we(e,r);if(c===Pe){if(t.value===1/0)break;throw new Error(`${h} got unexpected break to lengthed map`)}if(c===xe)throw new Error(`${h} found map but not enough entries (got ${a} [no key], expected ${t.value})`);if(n!==!0&&typeof c!="string")throw new Error(`${h} non-string keys not supported (got ${typeof c})`);if(r.rejectDuplicateMapKeys===!0&&(n&&i.has(c)||!n&&c in o))throw new Error(`${h} found repeat map key "${c}"`);let f=we(e,r);if(f===xe)throw new Error(`${h} found map but not enough entries (got ${a} [no value], expected ${t.value})`);n?i.set(c,f):o[c]=f}return n?i:o}function we(t,e){if(t.done())return xe;let r=t.next();if(r.type===s.break)return Pe;if(r.type.terminal)return r.value;if(r.type===s.array)return so(r,t,e);if(r.type===s.map)return ao(r,t,e);if(r.type===s.tag){if(e.tags&&typeof e.tags[r.value]=="function"){let n=we(t,e);return e.tags[r.value](n)}throw new Error(`${h} tag not supported (${r.value})`)}throw new Error("unsupported")}function ot(t,e){if(!(t instanceof Uint8Array))throw new Error(`${h} data to decode must be a Uint8Array`);e=Object.assign({},io,e);let r=e.tokenizer||new nt(t,e),n=we(r,e);if(n===xe)throw new Error(`${h} did not find any content to decode`);if(n===Pe)throw new Error(`${h} got unexpected break`);return[n,t.subarray(r.pos())]}function ge(t,e){let[r,n]=ot(t,e);if(n.length>0)throw new Error(`${h} too many terminals, data makes no sense`);return r}var Dr=class extends Array{constructor(){super(),this.inRecursive=[]}prefix(e){let r=this.inRecursive[this.inRecursive.length-1];r&&(r.type===s.array&&(r.elements++,r.elements!==1&&e.push([44])),r.type===s.map&&(r.elements++,r.elements!==1&&(r.elements%2===1?e.push([44]):e.push([58]))))}[s.uint.major](e,r){this.prefix(e);let n=String(r.value),o=[];for(let i=0;i<n.length;i++)o[i]=n.charCodeAt(i);e.push(o)}[s.negint.major](e,r){this[s.uint.major](e,r)}[s.bytes.major](e,r){throw new Error(`${te} unsupported type: Uint8Array`)}[s.string.major](e,r){this.prefix(e);let n=Ae(JSON.stringify(r.value));e.push(n.length>32?_e(n):n)}[s.array.major](e,r){this.prefix(e),this.inRecursive.push({type:s.array,elements:0}),e.push([91])}[s.map.major](e,r){this.prefix(e),this.inRecursive.push({type:s.map,elements:0}),e.push([123])}[s.tag.major](e,r){}[s.float.major](e,r){if(r.type.name==="break"){let a=this.inRecursive.pop();if(a){if(a.type===s.array)e.push([93]);else if(a.type===s.map)e.push([125]);else throw new Error("Unexpected recursive type; this should not happen!");return}throw new Error("Unexpected break; this should not happen!")}if(r.value===void 0)throw new Error(`${te} unsupported type: undefined`);if(this.prefix(e),r.type.name==="true"){e.push([116,114,117,101]);return}else if(r.type.name==="false"){e.push([102,97,108,115,101]);return}else if(r.type.name==="null"){e.push([110,117,108,108]);return}let n=String(r.value),o=[],i=!1;for(let a=0;a<n.length;a++)o[a]=n.charCodeAt(a),!i&&(o[a]===46||o[a]===101||o[a]===69)&&(i=!0);i||(o.push(46),o.push(48)),e.push(o)}};var ie=class{constructor(e,r={}){this._pos=0,this.data=e,this.options=r,this.modeStack=["value"],this.lastToken=""}pos(){return this._pos}done(){return this._pos>=this.data.length}ch(){return this.data[this._pos]}currentMode(){return this.modeStack[this.modeStack.length-1]}skipWhitespace(){let e=this.ch();for(;e===32||e===9||e===13||e===10;)e=this.data[++this._pos]}expect(e){if(this.data.length-this._pos<e.length)throw new Error(`${h} unexpected end of input at position ${this._pos}`);for(let r=0;r<e.length;r++)if(this.data[this._pos++]!==e[r])throw new Error(`${h} unexpected token at position ${this._pos}, expected to find '${String.fromCharCode(...e)}'`)}parseNumber(){let e=this._pos,r=!1,n=!1,o=c=>{for(;!this.done();){let f=this.ch();if(c.includes(f))this._pos++;else break}};if(this.ch()===45&&(r=!0,this._pos++),this.ch()===48)if(this._pos++,this.ch()===46)this._pos++,n=!0;else return new u(s.uint,0,this._pos-e);if(o([48,49,50,51,52,53,54,55,56,57]),r&&this._pos===e+1)throw new Error(`${h} unexpected token at position ${this._pos}`);if(!this.done()&&this.ch()===46){if(n)throw new Error(`${h} unexpected token at position ${this._pos}`);n=!0,this._pos++,o([48,49,50,51,52,53,54,55,56,57])}!this.done()&&(this.ch()===101||this.ch()===69)&&(n=!0,this._pos++,!this.done()&&(this.ch()===43||this.ch()===45)&&this._pos++,o([48,49,50,51,52,53,54,55,56,57]));let i=String.fromCharCode.apply(null,this.data.subarray(e,this._pos)),a=parseFloat(i);return n?new u(s.float,a,this._pos-e):this.options.allowBigInt!==!0||Number.isSafeInteger(a)?new u(a>=0?s.uint:s.negint,a,this._pos-e):new u(a>=0?s.uint:s.negint,BigInt(i),this._pos-e)}parseString(){if(this.ch()!==34)throw new Error(`${h} unexpected character at position ${this._pos}; this shouldn't happen`);this._pos++;for(let i=this._pos,a=0;i<this.data.length&&a<65536;i++,a++){let c=this.data[i];if(c===92||c<32||c>=128)break;if(c===34){let f=String.fromCharCode.apply(null,this.data.subarray(this._pos,i));return this._pos=i+1,new u(s.string,f,a)}}let e=this._pos,r=[],n=()=>{if(this._pos+4>=this.data.length)throw new Error(`${h} unexpected end of unicode escape sequence at position ${this._pos}`);let i=0;for(let a=0;a<4;a++){let c=this.ch();if(c>=48&&c<=57)c-=48;else if(c>=97&&c<=102)c=c-97+10;else if(c>=65&&c<=70)c=c-65+10;else throw new Error(`${h} unexpected unicode escape character at position ${this._pos}`);i=i*16+c,this._pos++}return i},o=()=>{let i=this.ch(),a=null,c=i>239?4:i>223?3:i>191?2:1;if(this._pos+c>this.data.length)throw new Error(`${h} unexpected unicode sequence at position ${this._pos}`);let f,m,l,p;switch(c){case 1:i<128&&(a=i);break;case 2:f=this.data[this._pos+1],(f&192)===128&&(p=(i&31)<<6|f&63,p>127&&(a=p));break;case 3:f=this.data[this._pos+1],m=this.data[this._pos+2],(f&192)===128&&(m&192)===128&&(p=(i&15)<<12|(f&63)<<6|m&63,p>2047&&(p<55296||p>57343)&&(a=p));break;case 4:f=this.data[this._pos+1],m=this.data[this._pos+2],l=this.data[this._pos+3],(f&192)===128&&(m&192)===128&&(l&192)===128&&(p=(i&15)<<18|(f&63)<<12|(m&63)<<6|l&63,p>65535&&p<1114112&&(a=p))}a===null?(a=65533,c=1):a>65535&&(a-=65536,r.push(a>>>10&1023|55296),a=56320|a&1023),r.push(a),this._pos+=c};for(;!this.done();){let i=this.ch(),a;switch(i){case 92:if(this._pos++,this.done())throw new Error(`${h} unexpected string termination at position ${this._pos}`);switch(a=this.ch(),this._pos++,a){case 34:case 39:case 92:case 47:r.push(a);break;case 98:r.push(8);break;case 116:r.push(9);break;case 110:r.push(10);break;case 102:r.push(12);break;case 114:r.push(13);break;case 117:r.push(n());break;default:throw new Error(`${h} unexpected string escape character at position ${this._pos}`)}break;case 34:return this._pos++,new u(s.string,Xe(r),this._pos-e);default:if(i<32)throw new Error(`${h} invalid control character at position ${this._pos}`);i<128?(r.push(i),this._pos++):o()}}throw new Error(`${h} unexpected end of string at position ${this._pos}`)}parseValue(){switch(this.ch()){case 123:return this.modeStack.push("obj-start"),this._pos++,new u(s.map,1/0,1);case 91:return this.modeStack.push("array-start"),this._pos++,new u(s.array,1/0,1);case 34:return this.parseString();case 110:return this.expect([110,117,108,108]),new u(s.null,null,4);case 102:return this.expect([102,97,108,115,101]),new u(s.false,!1,5);case 116:return this.expect([116,114,117,101]),new u(s.true,!0,4);case 45:case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return this.parseNumber();default:throw new Error(`${h} unexpected character at position ${this._pos}`)}}next(){switch(this.skipWhitespace(),this.currentMode()){case"value":return this.modeStack.pop(),this.parseValue();case"array-value":{if(this.modeStack.pop(),this.ch()===93)return this._pos++,this.skipWhitespace(),new u(s.break,void 0,1);if(this.ch()!==44)throw new Error(`${h} unexpected character at position ${this._pos}, was expecting array delimiter but found '${String.fromCharCode(this.ch())}'`);return this._pos++,this.modeStack.push("array-value"),this.skipWhitespace(),this.parseValue()}case"array-start":return this.modeStack.pop(),this.ch()===93?(this._pos++,this.skipWhitespace(),new u(s.break,void 0,1)):(this.modeStack.push("array-value"),this.skipWhitespace(),this.parseValue());case"obj-key":if(this.ch()===125)return this.modeStack.pop(),this._pos++,this.skipWhitespace(),new u(s.break,void 0,1);if(this.ch()!==44)throw new Error(`${h} unexpected character at position ${this._pos}, was expecting object delimiter but found '${String.fromCharCode(this.ch())}'`);this._pos++,this.skipWhitespace();case"obj-start":{if(this.modeStack.pop(),this.ch()===125)return this._pos++,this.skipWhitespace(),new u(s.break,void 0,1);let e=this.parseString();if(this.skipWhitespace(),this.ch()!==58)throw new Error(`${h} unexpected character at position ${this._pos}, was expecting key/value delimiter ':' but found '${String.fromCharCode(this.ch())}'`);return this._pos++,this.modeStack.push("obj-value"),e}case"obj-value":return this.modeStack.pop(),this.modeStack.push("obj-key"),this.skipWhitespace(),this.parseValue();default:throw new Error(`${h} unexpected parse state at position ${this._pos}; this shouldn't happen`)}}};function it(t,e){return e=Object.assign({tokenizer:new ie(t,e)},e),ge(t,e)}var zr=E({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),Fs=E({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),Vs=E({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),js=E({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var Pr=85;var Lr={codec:Ct,async*walk(t){yield*$t(t).Links.map(r=>r.Hash)}},Or={codec:Pr,async*walk(){}},Mr=42,Fr={codec:113,async*walk(t){let e=[],r=[];r[Mr]=n=>{if(n[0]!==0)throw new Error("Invalid CID for CBOR tag 42; expected leading 0x00");let o=R.decode(n.subarray(1));return e.push(o),o},ge(t,{tags:r}),yield*e}},st=class extends ie{tokenBuffer;constructor(e,r){super(e,r),this.tokenBuffer=[]}done(){return this.tokenBuffer.length===0&&super.done()}_next(){return this.tokenBuffer.length>0?this.tokenBuffer.pop():super.next()}next(){let e=this._next();if(e.type===s.map){let r=this._next();if(r.type===s.string&&r.value==="/"){let n=this._next();if(n.type===s.string){if(this._next().type!==s.break)throw new Error("Invalid encoded CID form");return this.tokenBuffer.push(n),new u(s.tag,42,0)}if(n.type===s.map){let o=this._next();if(o.type===s.string&&o.value==="bytes"){let i=this._next();if(i.type===s.string){for(let c=0;c<2;c++)if(this._next().type!==s.break)throw new Error("Invalid encoded Bytes form");let a=zr.decode(`m${i.value}`);return new u(s.bytes,a,i.value.length)}this.tokenBuffer.push(i)}this.tokenBuffer.push(o)}this.tokenBuffer.push(n)}this.tokenBuffer.push(r)}return e}},Vr={codec:297,async*walk(t){let e=[],r=[];r[Mr]=n=>{let o=R.parse(n);return e.push(o),o},it(t,{tags:r,tokenizer:new st(t,{tags:r,allowIndefinite:!0,allowUndefined:!0,allowNaN:!0,allowInfinity:!0,allowBigInt:!0,strict:!1,rejectDuplicateMapKeys:!1})}),yield*e}};var ho=[Or,Lr,Fr,Vr],lo=1,at=class{components;dagWalkers;constructor(e,r){this.components=e,this.dagWalkers={},[...ho,...r.dagWalkers??[]].forEach(n=>{this.dagWalkers[n.codec]=n})}async import(e,r){await ft(this.components.blockstore.putMany(dt(e.blocks(),({cid:n,bytes:o})=>({cid:n,block:o})),r))}async export(e,r,n){let o=Le(),i=Array.isArray(e)?e:[e],a=new fe({concurrency:lo});a.on("idle",()=>{o.resolve()}),a.on("error",c=>{o.resolve(c)});for(let c of i)a.add(async()=>{await this.#e(c,a,async(f,m)=>{await r.put({cid:f,bytes:m})},n)});try{await o.promise}finally{await r.close()}}async#e(e,r,n,o){let i=this.dagWalkers[e.code];if(i==null)throw new Error(`No dag walker found for cid codec ${e.code}`);let a=await this.components.blockstore.get(e,o);await n(e,a);for await(let c of i.walk(a))r.add(async()=>{await this.#e(c,r,n,o)})}};function po(t,e={}){return new at(t,e)}return Qr(mo);})();
2
+ "use strict";var HeliaCar=(()=>{var D=Object.create;var g=Object.defineProperty;var F=Object.getOwnPropertyDescriptor;var M=Object.getOwnPropertyNames;var Y=Object.getPrototypeOf,R=Object.prototype.hasOwnProperty;var V=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),U=(r,e)=>{for(var t in e)g(r,t,{get:e[t],enumerable:!0})},A=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of M(e))!R.call(r,i)&&i!==t&&g(r,i,{get:()=>e[i],enumerable:!(n=F(e,i))||n.enumerable});return r};var W=(r,e,t)=>(t=r!=null?D(Y(r)):{},A(e||!r||!r.__esModule?g(t,"default",{value:r,enumerable:!0}):t,r)),B=r=>A(g({},"__esModule",{value:!0}),r);var L=V((ue,E)=>{"use strict";var X=Object.prototype.hasOwnProperty,d="~";function y(){}Object.create&&(y.prototype=Object.create(null),new y().__proto__||(d=!1));function Z(r,e,t){this.fn=r,this.context=e,this.once=t||!1}function z(r,e,t,n,i){if(typeof t!="function")throw new TypeError("The listener must be a function");var s=new Z(t,n||r,i),o=d?d+e:e;return r._events[o]?r._events[o].fn?r._events[o]=[r._events[o],s]:r._events[o].push(s):(r._events[o]=s,r._eventsCount++),r}function x(r,e){--r._eventsCount===0?r._events=new y:delete r._events[e]}function c(){this._events=new y,this._eventsCount=0}c.prototype.eventNames=function(){var e=[],t,n;if(this._eventsCount===0)return e;for(n in t=this._events)X.call(t,n)&&e.push(d?n.slice(1):n);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(t)):e};c.prototype.listeners=function(e){var t=d?d+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var i=0,s=n.length,o=new Array(s);i<s;i++)o[i]=n[i].fn;return o};c.prototype.listenerCount=function(e){var t=d?d+e:e,n=this._events[t];return n?n.fn?1:n.length:0};c.prototype.emit=function(e,t,n,i,s,o){var l=d?d+e:e;if(!this._events[l])return!1;var a=this._events[l],f=arguments.length,h,u;if(a.fn){switch(a.once&&this.removeListener(e,a.fn,void 0,!0),f){case 1:return a.fn.call(a.context),!0;case 2:return a.fn.call(a.context,t),!0;case 3:return a.fn.call(a.context,t,n),!0;case 4:return a.fn.call(a.context,t,n,i),!0;case 5:return a.fn.call(a.context,t,n,i,s),!0;case 6:return a.fn.call(a.context,t,n,i,s,o),!0}for(u=1,h=new Array(f-1);u<f;u++)h[u-1]=arguments[u];a.fn.apply(a.context,h)}else{var m=a.length,p;for(u=0;u<m;u++)switch(a[u].once&&this.removeListener(e,a[u].fn,void 0,!0),f){case 1:a[u].fn.call(a[u].context);break;case 2:a[u].fn.call(a[u].context,t);break;case 3:a[u].fn.call(a[u].context,t,n);break;case 4:a[u].fn.call(a[u].context,t,n,i);break;default:if(!h)for(p=1,h=new Array(f-1);p<f;p++)h[p-1]=arguments[p];a[u].fn.apply(a[u].context,h)}}return!0};c.prototype.on=function(e,t,n){return z(this,e,t,n,!1)};c.prototype.once=function(e,t,n){return z(this,e,t,n,!0)};c.prototype.removeListener=function(e,t,n,i){var s=d?d+e:e;if(!this._events[s])return this;if(!t)return x(this,s),this;var o=this._events[s];if(o.fn)o.fn===t&&(!i||o.once)&&(!n||o.context===n)&&x(this,s);else{for(var l=0,a=[],f=o.length;l<f;l++)(o[l].fn!==t||i&&!o[l].once||n&&o[l].context!==n)&&a.push(o[l]);a.length?this._events[s]=a.length===1?a[0]:a:x(this,s)}return this};c.prototype.removeAllListeners=function(e){var t;return e?(t=d?d+e:e,this._events[t]&&x(this,t)):(this._events=new y,this._eventsCount=0),this};c.prototype.off=c.prototype.removeListener;c.prototype.addListener=c.prototype.on;c.prefixed=d;c.EventEmitter=c;typeof E<"u"&&(E.exports=c)});var te={};U(te,{car:()=>ee});function Q(r){return r[Symbol.asyncIterator]!=null}function G(r){if(Q(r))return(async()=>{for await(let e of r);})();for(let e of r);}var N=G;function K(r){let[e,t]=r[Symbol.asyncIterator]!=null?[r[Symbol.asyncIterator](),Symbol.asyncIterator]:[r[Symbol.iterator](),Symbol.iterator],n=[];return{peek:()=>e.next(),push:i=>{n.push(i)},next:()=>n.length>0?{done:!1,value:n.shift()}:e.next(),[t](){return this}}}var S=K;function H(r){return r[Symbol.asyncIterator]!=null}function J(r,e){if(H(r))return async function*(){for await(let l of r)yield e(l)}();let t=S(r),{value:n,done:i}=t.next();if(i===!0)return function*(){}();let s=e(n);if(typeof s.then=="function")return async function*(){yield await s;for await(let l of t)yield e(l)}();let o=e;return function*(){yield s;for(let l of t)yield o(l)}()}var k=J;function I(){let r={};return r.promise=new Promise((e,t)=>{r.resolve=e,r.reject=t}),r}var _=W(L(),1);var v=class extends Error{constructor(e){super(e),this.name="TimeoutError"}},T=class extends Error{constructor(e){super(),this.name="AbortError",this.message=e}},q=r=>globalThis.DOMException===void 0?new T(r):new DOMException(r),$=r=>{let e=r.reason===void 0?q("This operation was aborted."):r.reason;return e instanceof Error?e:q(e)};function C(r,e){let{milliseconds:t,fallback:n,message:i,customTimers:s={setTimeout,clearTimeout}}=e,o,a=new Promise((f,h)=>{if(typeof t!="number"||Math.sign(t)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${t}\``);if(e.signal){let{signal:m}=e;m.aborted&&h($(m)),m.addEventListener("abort",()=>{h($(m))})}if(t===Number.POSITIVE_INFINITY){r.then(f,h);return}let u=new v;o=s.setTimeout.call(void 0,()=>{if(n){try{f(n())}catch(m){h(m)}return}typeof r.cancel=="function"&&r.cancel(),i===!1?f():i instanceof Error?h(i):(u.message=i??`Promise timed out after ${t} milliseconds`,h(u))},t),(async()=>{try{f(await r)}catch(m){h(m)}})()}).finally(()=>{a.clear()});return a.clear=()=>{s.clearTimeout.call(void 0,o),o=void 0},a}function P(r,e,t){let n=0,i=r.length;for(;i>0;){let s=Math.trunc(i/2),o=n+s;t(r[o],e)<=0?(n=++o,i-=s+1):i=s}return n}var w=class{#e=[];enqueue(e,t){t={priority:0,...t};let n={priority:t.priority,run:e};if(this.size&&this.#e[this.size-1].priority>=t.priority){this.#e.push(n);return}let i=P(this.#e,n,(s,o)=>o.priority-s.priority);this.#e.splice(i,0,n)}dequeue(){return this.#e.shift()?.run}filter(e){return this.#e.filter(t=>t.priority===e.priority).map(t=>t.run)}get size(){return this.#e.length}};var b=class extends _.default{#e;#o;#s=0;#d;#a;#m=0;#r;#u;#t;#p;#n=0;#l;#i;#y;timeout;constructor(e){if(super(),e={carryoverConcurrencyCount:!1,intervalCap:Number.POSITIVE_INFINITY,interval:0,concurrency:Number.POSITIVE_INFINITY,autoStart:!0,queueClass:w,...e},!(typeof e.intervalCap=="number"&&e.intervalCap>=1))throw new TypeError(`Expected \`intervalCap\` to be a number from 1 and up, got \`${e.intervalCap?.toString()??""}\` (${typeof e.intervalCap})`);if(e.interval===void 0||!(Number.isFinite(e.interval)&&e.interval>=0))throw new TypeError(`Expected \`interval\` to be a finite number >= 0, got \`${e.interval?.toString()??""}\` (${typeof e.interval})`);this.#e=e.carryoverConcurrencyCount,this.#o=e.intervalCap===Number.POSITIVE_INFINITY||e.interval===0,this.#d=e.intervalCap,this.#a=e.interval,this.#t=new e.queueClass,this.#p=e.queueClass,this.concurrency=e.concurrency,this.timeout=e.timeout,this.#y=e.throwOnTimeout===!0,this.#i=e.autoStart===!1}get#b(){return this.#o||this.#s<this.#d}get#g(){return this.#n<this.#l}#x(){this.#n--,this.#c(),this.emit("next")}#I(){this.#w(),this.#v(),this.#u=void 0}get#E(){let e=Date.now();if(this.#r===void 0){let t=this.#m-e;if(t<0)this.#s=this.#e?this.#n:0;else return this.#u===void 0&&(this.#u=setTimeout(()=>{this.#I()},t)),!0}return!1}#c(){if(this.#t.size===0)return this.#r&&clearInterval(this.#r),this.#r=void 0,this.emit("empty"),this.#n===0&&this.emit("idle"),!1;if(!this.#i){let e=!this.#E;if(this.#b&&this.#g){let t=this.#t.dequeue();return t?(this.emit("active"),t(),e&&this.#v(),!0):!1}}return!1}#v(){this.#o||this.#r!==void 0||(this.#r=setInterval(()=>{this.#w()},this.#a),this.#m=Date.now()+this.#a)}#w(){this.#s===0&&this.#n===0&&this.#r&&(clearInterval(this.#r),this.#r=void 0),this.#s=this.#e?this.#n:0,this.#f()}#f(){for(;this.#c(););}get concurrency(){return this.#l}set concurrency(e){if(!(typeof e=="number"&&e>=1))throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${e}\` (${typeof e})`);this.#l=e,this.#f()}async#_(e){return new Promise((t,n)=>{e.addEventListener("abort",()=>{n(e.reason)},{once:!0})})}async add(e,t={}){return t={timeout:this.timeout,throwOnTimeout:this.#y,...t},new Promise((n,i)=>{this.#t.enqueue(async()=>{this.#n++,this.#s++;try{t.signal?.throwIfAborted();let s=e({signal:t.signal});t.timeout&&(s=C(Promise.resolve(s),{milliseconds:t.timeout})),t.signal&&(s=Promise.race([s,this.#_(t.signal)]));let o=await s;n(o),this.emit("completed",o)}catch(s){if(s instanceof v&&!t.throwOnTimeout){n();return}i(s),this.emit("error",s)}finally{this.#x()}},t),this.emit("add"),this.#c()})}async addAll(e,t){return Promise.all(e.map(async n=>this.add(n,t)))}start(){return this.#i?(this.#i=!1,this.#f(),this):this}pause(){this.#i=!0}clear(){this.#t=new this.#p}async onEmpty(){this.#t.size!==0&&await this.#h("empty")}async onSizeLessThan(e){this.#t.size<e||await this.#h("next",()=>this.#t.size<e)}async onIdle(){this.#n===0&&this.#t.size===0||await this.#h("idle")}async#h(e,t){return new Promise(n=>{let i=()=>{t&&!t()||(this.off(e,i),n())};this.on(e,i)})}get size(){return this.#t.size}sizeBy(e){return this.#t.filter(e).length}get pending(){return this.#n}get isPaused(){return this.#i}};var j=1,O=class{components;constructor(e,t){this.components=e}async import(e,t){await N(this.components.blockstore.putMany(k(e.blocks(),({cid:n,bytes:i})=>({cid:n,block:i})),t))}async export(e,t,n){let i=I(),s=Array.isArray(e)?e:[e],o=new b({concurrency:j});o.on("idle",()=>{i.resolve()}),o.on("error",l=>{i.reject(l)});for(let l of s)o.add(async()=>{await this.#e(l,o,async(a,f)=>{await t.put({cid:a,bytes:f})},n)});try{await i.promise}finally{await t.close()}}async#e(e,t,n,i){let s=this.components.dagWalkers[e.code];if(s==null)throw new Error(`No dag walker found for cid codec ${e.code}`);let o=await this.components.blockstore.get(e,i);await n(e,o);for await(let l of s.walk(o))t.add(async()=>{await this.#e(l,t,n,i)})}};function ee(r,e={}){return new O(r,e)}return B(te);})();
3
3
  return HeliaCar}));
@@ -57,6 +57,7 @@
57
57
  * await c.import(reader)
58
58
  * ```
59
59
  */
60
+ import type { DAGWalker } from '@helia/interface';
60
61
  import type { Blocks, GetBlockProgressEvents, PutManyBlocksProgressEvents } from '@helia/interface/blocks';
61
62
  import type { CarReader, CarWriter } from '@ipld/car';
62
63
  import type { AbortOptions } from '@libp2p/interfaces';
@@ -64,21 +65,7 @@ import type { CID } from 'multiformats/cid';
64
65
  import type { ProgressOptions } from 'progress-events';
65
66
  export interface CarComponents {
66
67
  blockstore: Blocks;
67
- }
68
- export interface CarInit {
69
- /**
70
- * In order to export CIDs that correspond to a DAG, it's necessary to know
71
- * how to traverse that DAG. DAGWalkers take a block and yield any CIDs
72
- * encoded within that block.
73
- */
74
- dagWalkers?: DAGWalker[];
75
- }
76
- /**
77
- * DAGWalkers take a block and yield CIDs encoded in that block
78
- */
79
- export interface DAGWalker {
80
- codec: number;
81
- walk(block: Uint8Array): AsyncGenerator<CID, void, undefined>;
68
+ dagWalkers: Record<number, DAGWalker>;
82
69
  }
83
70
  /**
84
71
  * The Car interface provides operations for importing and exporting Car files
@@ -139,5 +126,6 @@ export interface Car {
139
126
  */
140
127
  export declare function car(helia: {
141
128
  blockstore: Blocks;
142
- }, init?: CarInit): Car;
129
+ dagWalkers: Record<number, DAGWalker>;
130
+ }, init?: any): Car;
143
131
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AAOH,OAAO,KAAK,EAAE,MAAM,EAAE,sBAAsB,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAA;AAC1G,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEtD,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,OAAO;IACtB;;;;OAIG;IACH,UAAU,CAAC,EAAE,SAAS,EAAE,CAAA;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,CAAC,CAAA;CAC9D;AAED;;;GAGG;AACH,MAAM,WAAW,GAAG;IAClB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,eAAe,CAAC,2BAA2B,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAE/H;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,MAAM,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,GAAG,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,eAAe,CAAC,sBAAsB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACrJ;AAuFD;;GAEG;AACH,wBAAgB,GAAG,CAAE,KAAK,EAAE;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,EAAE,IAAI,GAAE,OAAY,GAAG,GAAG,CAE3E"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AAMH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,KAAK,EAAE,MAAM,EAAE,sBAAsB,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAA;AAC1G,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEtD,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;CACtC;AAED;;;GAGG;AACH,MAAM,WAAW,GAAG;IAClB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,eAAe,CAAC,2BAA2B,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAE/H;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,MAAM,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,GAAG,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,eAAe,CAAC,sBAAsB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACrJ;AAyED;;GAEG;AACH,wBAAgB,GAAG,CAAE,KAAK,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;CAAE,EAAE,IAAI,GAAE,GAAQ,GAAG,GAAG,CAE9G"}
package/dist/src/index.js CHANGED
@@ -61,23 +61,11 @@ import drain from 'it-drain';
61
61
  import map from 'it-map';
62
62
  import defer from 'p-defer';
63
63
  import PQueue from 'p-queue';
64
- import { cborWalker, dagPbWalker, jsonWalker, rawWalker } from './utils/dag-walkers.js';
65
- const DEFAULT_DAG_WALKERS = [
66
- rawWalker,
67
- dagPbWalker,
68
- cborWalker,
69
- jsonWalker
70
- ];
71
64
  const DAG_WALK_QUEUE_CONCURRENCY = 1;
72
65
  class DefaultCar {
73
66
  components;
74
- dagWalkers;
75
67
  constructor(components, init) {
76
68
  this.components = components;
77
- this.dagWalkers = {};
78
- [...DEFAULT_DAG_WALKERS, ...(init.dagWalkers ?? [])].forEach(dagWalker => {
79
- this.dagWalkers[dagWalker.codec] = dagWalker;
80
- });
81
69
  }
82
70
  async import(reader, options) {
83
71
  await drain(this.components.blockstore.putMany(map(reader.blocks(), ({ cid, bytes }) => ({ cid, block: bytes })), options));
@@ -93,7 +81,7 @@ class DefaultCar {
93
81
  deferred.resolve();
94
82
  });
95
83
  queue.on('error', (err) => {
96
- deferred.resolve(err);
84
+ deferred.reject(err);
97
85
  });
98
86
  for (const root of roots) {
99
87
  void queue.add(async () => {
@@ -115,7 +103,7 @@ class DefaultCar {
115
103
  * and update the pin count for them
116
104
  */
117
105
  async #walkDag(cid, queue, withBlock, options) {
118
- const dagWalker = this.dagWalkers[cid.code];
106
+ const dagWalker = this.components.dagWalkers[cid.code];
119
107
  if (dagWalker == null) {
120
108
  throw new Error(`No dag walker found for cid codec ${cid.code}`);
121
109
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -3,10 +3,6 @@
3
3
  ".:Car": "https://ipfs.github.io/helia/interfaces/_helia_car.Car.html",
4
4
  "CarComponents": "https://ipfs.github.io/helia/interfaces/_helia_car.CarComponents.html",
5
5
  ".:CarComponents": "https://ipfs.github.io/helia/interfaces/_helia_car.CarComponents.html",
6
- "CarInit": "https://ipfs.github.io/helia/interfaces/_helia_car.CarInit.html",
7
- ".:CarInit": "https://ipfs.github.io/helia/interfaces/_helia_car.CarInit.html",
8
- "DAGWalker": "https://ipfs.github.io/helia/interfaces/_helia_car.DAGWalker.html",
9
- ".:DAGWalker": "https://ipfs.github.io/helia/interfaces/_helia_car.DAGWalker.html",
10
6
  "car": "https://ipfs.github.io/helia/functions/_helia_car.car-1.html",
11
7
  ".:car": "https://ipfs.github.io/helia/functions/_helia_car.car-1.html"
12
8
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@helia/car",
3
- "version": "2.0.1",
3
+ "version": "3.0.0",
4
4
  "description": "Import/export car files from Helia",
5
5
  "license": "Apache-2.0 OR MIT",
6
6
  "homepage": "https://github.com/ipfs/helia/tree/main/packages/car#readme",
@@ -139,22 +139,21 @@
139
139
  "release": "aegir release"
140
140
  },
141
141
  "dependencies": {
142
- "@helia/interface": "^3.0.1",
143
- "@ipld/car": "^5.1.1",
144
- "@ipld/dag-pb": "^4.0.3",
142
+ "@helia/interface": "^4.0.0",
143
+ "@ipld/car": "^5.2.5",
145
144
  "@libp2p/interfaces": "^3.3.1",
146
- "cborg": "^4.0.3",
147
145
  "it-drain": "^3.0.5",
148
- "it-map": "^3.0.3",
146
+ "it-map": "^3.0.5",
149
147
  "multiformats": "^13.0.0",
150
148
  "p-defer": "^4.0.0",
151
149
  "p-queue": "^8.0.1",
152
150
  "progress-events": "^1.0.0"
153
151
  },
154
152
  "devDependencies": {
155
- "@helia/unixfs": "^2.0.1",
153
+ "@helia/unixfs": "^3.0.0",
154
+ "@ipld/dag-pb": "^4.0.8",
156
155
  "aegir": "^42.1.0",
157
- "blockstore-core": "^4.3.8",
156
+ "blockstore-core": "^4.3.10",
158
157
  "interface-blockstore": "^5.2.9",
159
158
  "ipfs-unixfs-importer": "^15.2.3",
160
159
  "it-to-buffer": "^4.0.2"
package/src/index.ts CHANGED
@@ -62,7 +62,7 @@ import drain from 'it-drain'
62
62
  import map from 'it-map'
63
63
  import defer from 'p-defer'
64
64
  import PQueue from 'p-queue'
65
- import { cborWalker, dagPbWalker, jsonWalker, rawWalker } from './utils/dag-walkers.js'
65
+ import type { DAGWalker } from '@helia/interface'
66
66
  import type { Blocks, GetBlockProgressEvents, PutManyBlocksProgressEvents } from '@helia/interface/blocks'
67
67
  import type { CarReader, CarWriter } from '@ipld/car'
68
68
  import type { AbortOptions } from '@libp2p/interfaces'
@@ -71,23 +71,7 @@ import type { ProgressOptions } from 'progress-events'
71
71
 
72
72
  export interface CarComponents {
73
73
  blockstore: Blocks
74
- }
75
-
76
- export interface CarInit {
77
- /**
78
- * In order to export CIDs that correspond to a DAG, it's necessary to know
79
- * how to traverse that DAG. DAGWalkers take a block and yield any CIDs
80
- * encoded within that block.
81
- */
82
- dagWalkers?: DAGWalker[]
83
- }
84
-
85
- /**
86
- * DAGWalkers take a block and yield CIDs encoded in that block
87
- */
88
- export interface DAGWalker {
89
- codec: number
90
- walk(block: Uint8Array): AsyncGenerator<CID, void, undefined>
74
+ dagWalkers: Record<number, DAGWalker>
91
75
  }
92
76
 
93
77
  /**
@@ -146,27 +130,13 @@ export interface Car {
146
130
  export(root: CID | CID[], writer: Pick<CarWriter, 'put' | 'close'>, options?: AbortOptions & ProgressOptions<GetBlockProgressEvents>): Promise<void>
147
131
  }
148
132
 
149
- const DEFAULT_DAG_WALKERS = [
150
- rawWalker,
151
- dagPbWalker,
152
- cborWalker,
153
- jsonWalker
154
- ]
155
-
156
133
  const DAG_WALK_QUEUE_CONCURRENCY = 1
157
134
 
158
135
  class DefaultCar implements Car {
159
136
  private readonly components: CarComponents
160
- private dagWalkers: Record<number, DAGWalker>
161
137
 
162
- constructor (components: CarComponents, init: CarInit) {
138
+ constructor (components: CarComponents, init: any) {
163
139
  this.components = components
164
-
165
- this.dagWalkers = {}
166
-
167
- ;[...DEFAULT_DAG_WALKERS, ...(init.dagWalkers ?? [])].forEach(dagWalker => {
168
- this.dagWalkers[dagWalker.codec] = dagWalker
169
- })
170
140
  }
171
141
 
172
142
  async import (reader: Pick<CarReader, 'blocks'>, options?: AbortOptions & ProgressOptions<PutManyBlocksProgressEvents>): Promise<void> {
@@ -188,7 +158,7 @@ class DefaultCar implements Car {
188
158
  deferred.resolve()
189
159
  })
190
160
  queue.on('error', (err) => {
191
- deferred.resolve(err)
161
+ deferred.reject(err)
192
162
  })
193
163
 
194
164
  for (const root of roots) {
@@ -212,7 +182,7 @@ class DefaultCar implements Car {
212
182
  * and update the pin count for them
213
183
  */
214
184
  async #walkDag (cid: CID, queue: PQueue, withBlock: (cid: CID, block: Uint8Array) => Promise<void>, options?: AbortOptions & ProgressOptions<GetBlockProgressEvents>): Promise<void> {
215
- const dagWalker = this.dagWalkers[cid.code]
185
+ const dagWalker = this.components.dagWalkers[cid.code]
216
186
 
217
187
  if (dagWalker == null) {
218
188
  throw new Error(`No dag walker found for cid codec ${cid.code}`)
@@ -234,6 +204,6 @@ class DefaultCar implements Car {
234
204
  /**
235
205
  * Create a {@link Car} instance for use with {@link https://github.com/ipfs/helia Helia}
236
206
  */
237
- export function car (helia: { blockstore: Blocks }, init: CarInit = {}): Car {
207
+ export function car (helia: { blockstore: Blocks, dagWalkers: Record<number, DAGWalker> }, init: any = {}): Car {
238
208
  return new DefaultCar(helia, init)
239
209
  }
@@ -1,29 +0,0 @@
1
- import { CID } from 'multiformats/cid';
2
- /**
3
- * DAGWalkers take a block and yield CIDs encoded in that block
4
- */
5
- export interface DAGWalker {
6
- codec: number;
7
- walk(block: Uint8Array): AsyncGenerator<CID, void, undefined>;
8
- }
9
- /**
10
- * Dag walker for dag-pb CIDs
11
- */
12
- export declare const dagPbWalker: DAGWalker;
13
- /**
14
- * Dag walker for raw CIDs
15
- */
16
- export declare const rawWalker: DAGWalker;
17
- /**
18
- * Dag walker for dag-cbor CIDs. Does not actually use dag-cbor since
19
- * all we are interested in is extracting the the CIDs from the block
20
- * so we can just use cborg for that.
21
- */
22
- export declare const cborWalker: DAGWalker;
23
- /**
24
- * Dag walker for dag-json CIDs. Does not actually use dag-json since
25
- * all we are interested in is extracting the the CIDs from the block
26
- * so we can just use cborg/json for that.
27
- */
28
- export declare const jsonWalker: DAGWalker;
29
- //# sourceMappingURL=dag-walkers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dag-walkers.d.ts","sourceRoot":"","sources":["../../../src/utils/dag-walkers.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAGtC;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,CAAC,CAAA;CAC9D;AAED;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,SAOzB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,SAKvB,CAAA;AAKD;;;;GAIG;AACH,eAAO,MAAM,UAAU,EAAE,SAuBxB,CAAA;AAsED;;;;GAIG;AACH,eAAO,MAAM,UAAU,EAAE,SA6BxB,CAAA"}
@@ -1,146 +0,0 @@
1
- /* eslint max-depth: ["error", 7] */
2
- import * as dagPb from '@ipld/dag-pb';
3
- import * as cborg from 'cborg';
4
- import { Type, Token } from 'cborg';
5
- import * as cborgJson from 'cborg/json';
6
- import { base64 } from 'multiformats/bases/base64';
7
- import { CID } from 'multiformats/cid';
8
- import * as raw from 'multiformats/codecs/raw';
9
- /**
10
- * Dag walker for dag-pb CIDs
11
- */
12
- export const dagPbWalker = {
13
- codec: dagPb.code,
14
- async *walk(block) {
15
- const node = dagPb.decode(block);
16
- yield* node.Links.map(l => l.Hash);
17
- }
18
- };
19
- /**
20
- * Dag walker for raw CIDs
21
- */
22
- export const rawWalker = {
23
- codec: raw.code,
24
- async *walk() {
25
- // no embedded CIDs in a raw block
26
- }
27
- };
28
- // https://github.com/ipfs/go-ipfs/issues/3570#issuecomment-273931692
29
- const CID_TAG = 42;
30
- /**
31
- * Dag walker for dag-cbor CIDs. Does not actually use dag-cbor since
32
- * all we are interested in is extracting the the CIDs from the block
33
- * so we can just use cborg for that.
34
- */
35
- export const cborWalker = {
36
- codec: 0x71,
37
- async *walk(block) {
38
- const cids = [];
39
- const tags = [];
40
- tags[CID_TAG] = (bytes) => {
41
- if (bytes[0] !== 0) {
42
- throw new Error('Invalid CID for CBOR tag 42; expected leading 0x00');
43
- }
44
- const cid = CID.decode(bytes.subarray(1)); // ignore leading 0x00
45
- cids.push(cid);
46
- return cid;
47
- };
48
- cborg.decode(block, {
49
- tags
50
- });
51
- yield* cids;
52
- }
53
- };
54
- /**
55
- * Borrowed from @ipld/dag-json
56
- */
57
- class DagJsonTokenizer extends cborgJson.Tokenizer {
58
- tokenBuffer;
59
- constructor(data, options) {
60
- super(data, options);
61
- this.tokenBuffer = [];
62
- }
63
- done() {
64
- return this.tokenBuffer.length === 0 && super.done();
65
- }
66
- _next() {
67
- if (this.tokenBuffer.length > 0) {
68
- // @ts-expect-error https://github.com/Microsoft/TypeScript/issues/30406
69
- return this.tokenBuffer.pop();
70
- }
71
- return super.next();
72
- }
73
- /**
74
- * Implements rules outlined in https://github.com/ipld/specs/pull/356
75
- */
76
- next() {
77
- const token = this._next();
78
- if (token.type === Type.map) {
79
- const keyToken = this._next();
80
- if (keyToken.type === Type.string && keyToken.value === '/') {
81
- const valueToken = this._next();
82
- if (valueToken.type === Type.string) { // *must* be a CID
83
- const breakToken = this._next(); // swallow the end-of-map token
84
- if (breakToken.type !== Type.break) {
85
- throw new Error('Invalid encoded CID form');
86
- }
87
- this.tokenBuffer.push(valueToken); // CID.parse will pick this up after our tag token
88
- return new Token(Type.tag, 42, 0);
89
- }
90
- if (valueToken.type === Type.map) {
91
- const innerKeyToken = this._next();
92
- if (innerKeyToken.type === Type.string && innerKeyToken.value === 'bytes') {
93
- const innerValueToken = this._next();
94
- if (innerValueToken.type === Type.string) { // *must* be Bytes
95
- for (let i = 0; i < 2; i++) {
96
- const breakToken = this._next(); // swallow two end-of-map tokens
97
- if (breakToken.type !== Type.break) {
98
- throw new Error('Invalid encoded Bytes form');
99
- }
100
- }
101
- const bytes = base64.decode(`m${innerValueToken.value}`);
102
- return new Token(Type.bytes, bytes, innerValueToken.value.length);
103
- }
104
- this.tokenBuffer.push(innerValueToken); // bail
105
- }
106
- this.tokenBuffer.push(innerKeyToken); // bail
107
- }
108
- this.tokenBuffer.push(valueToken); // bail
109
- }
110
- this.tokenBuffer.push(keyToken); // bail
111
- }
112
- return token;
113
- }
114
- }
115
- /**
116
- * Dag walker for dag-json CIDs. Does not actually use dag-json since
117
- * all we are interested in is extracting the the CIDs from the block
118
- * so we can just use cborg/json for that.
119
- */
120
- export const jsonWalker = {
121
- codec: 0x0129,
122
- async *walk(block) {
123
- const cids = [];
124
- const tags = [];
125
- tags[CID_TAG] = (string) => {
126
- const cid = CID.parse(string);
127
- cids.push(cid);
128
- return cid;
129
- };
130
- cborgJson.decode(block, {
131
- tags,
132
- tokenizer: new DagJsonTokenizer(block, {
133
- tags,
134
- allowIndefinite: true,
135
- allowUndefined: true,
136
- allowNaN: true,
137
- allowInfinity: true,
138
- allowBigInt: true,
139
- strict: false,
140
- rejectDuplicateMapKeys: false
141
- })
142
- });
143
- yield* cids;
144
- }
145
- };
146
- //# sourceMappingURL=dag-walkers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dag-walkers.js","sourceRoot":"","sources":["../../../src/utils/dag-walkers.ts"],"names":[],"mappings":"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"}
@@ -1,176 +0,0 @@
1
- /* eslint max-depth: ["error", 7] */
2
-
3
- import * as dagPb from '@ipld/dag-pb'
4
- import * as cborg from 'cborg'
5
- import { Type, Token } from 'cborg'
6
- import * as cborgJson from 'cborg/json'
7
- import { base64 } from 'multiformats/bases/base64'
8
- import { CID } from 'multiformats/cid'
9
- import * as raw from 'multiformats/codecs/raw'
10
-
11
- /**
12
- * DAGWalkers take a block and yield CIDs encoded in that block
13
- */
14
- export interface DAGWalker {
15
- codec: number
16
- walk(block: Uint8Array): AsyncGenerator<CID, void, undefined>
17
- }
18
-
19
- /**
20
- * Dag walker for dag-pb CIDs
21
- */
22
- export const dagPbWalker: DAGWalker = {
23
- codec: dagPb.code,
24
- async * walk (block) {
25
- const node = dagPb.decode(block)
26
-
27
- yield * node.Links.map(l => l.Hash)
28
- }
29
- }
30
-
31
- /**
32
- * Dag walker for raw CIDs
33
- */
34
- export const rawWalker: DAGWalker = {
35
- codec: raw.code,
36
- async * walk () {
37
- // no embedded CIDs in a raw block
38
- }
39
- }
40
-
41
- // https://github.com/ipfs/go-ipfs/issues/3570#issuecomment-273931692
42
- const CID_TAG = 42
43
-
44
- /**
45
- * Dag walker for dag-cbor CIDs. Does not actually use dag-cbor since
46
- * all we are interested in is extracting the the CIDs from the block
47
- * so we can just use cborg for that.
48
- */
49
- export const cborWalker: DAGWalker = {
50
- codec: 0x71,
51
- async * walk (block) {
52
- const cids: CID[] = []
53
- const tags: cborg.TagDecoder[] = []
54
- tags[CID_TAG] = (bytes) => {
55
- if (bytes[0] !== 0) {
56
- throw new Error('Invalid CID for CBOR tag 42; expected leading 0x00')
57
- }
58
-
59
- const cid = CID.decode(bytes.subarray(1)) // ignore leading 0x00
60
-
61
- cids.push(cid)
62
-
63
- return cid
64
- }
65
-
66
- cborg.decode(block, {
67
- tags
68
- })
69
-
70
- yield * cids
71
- }
72
- }
73
-
74
- /**
75
- * Borrowed from @ipld/dag-json
76
- */
77
- class DagJsonTokenizer extends cborgJson.Tokenizer {
78
- private readonly tokenBuffer: cborg.Token[]
79
-
80
- constructor (data: Uint8Array, options?: cborg.DecodeOptions) {
81
- super(data, options)
82
-
83
- this.tokenBuffer = []
84
- }
85
-
86
- done (): boolean {
87
- return this.tokenBuffer.length === 0 && super.done()
88
- }
89
-
90
- _next (): cborg.Token {
91
- if (this.tokenBuffer.length > 0) {
92
- // @ts-expect-error https://github.com/Microsoft/TypeScript/issues/30406
93
- return this.tokenBuffer.pop()
94
- }
95
- return super.next()
96
- }
97
-
98
- /**
99
- * Implements rules outlined in https://github.com/ipld/specs/pull/356
100
- */
101
- next (): cborg.Token {
102
- const token = this._next()
103
-
104
- if (token.type === Type.map) {
105
- const keyToken = this._next()
106
- if (keyToken.type === Type.string && keyToken.value === '/') {
107
- const valueToken = this._next()
108
- if (valueToken.type === Type.string) { // *must* be a CID
109
- const breakToken = this._next() // swallow the end-of-map token
110
- if (breakToken.type !== Type.break) {
111
- throw new Error('Invalid encoded CID form')
112
- }
113
- this.tokenBuffer.push(valueToken) // CID.parse will pick this up after our tag token
114
- return new Token(Type.tag, 42, 0)
115
- }
116
- if (valueToken.type === Type.map) {
117
- const innerKeyToken = this._next()
118
- if (innerKeyToken.type === Type.string && innerKeyToken.value === 'bytes') {
119
- const innerValueToken = this._next()
120
- if (innerValueToken.type === Type.string) { // *must* be Bytes
121
- for (let i = 0; i < 2; i++) {
122
- const breakToken = this._next() // swallow two end-of-map tokens
123
- if (breakToken.type !== Type.break) {
124
- throw new Error('Invalid encoded Bytes form')
125
- }
126
- }
127
- const bytes = base64.decode(`m${innerValueToken.value}`)
128
- return new Token(Type.bytes, bytes, innerValueToken.value.length)
129
- }
130
- this.tokenBuffer.push(innerValueToken) // bail
131
- }
132
- this.tokenBuffer.push(innerKeyToken) // bail
133
- }
134
- this.tokenBuffer.push(valueToken) // bail
135
- }
136
- this.tokenBuffer.push(keyToken) // bail
137
- }
138
- return token
139
- }
140
- }
141
-
142
- /**
143
- * Dag walker for dag-json CIDs. Does not actually use dag-json since
144
- * all we are interested in is extracting the the CIDs from the block
145
- * so we can just use cborg/json for that.
146
- */
147
- export const jsonWalker: DAGWalker = {
148
- codec: 0x0129,
149
- async * walk (block) {
150
- const cids: CID[] = []
151
- const tags: cborg.TagDecoder[] = []
152
- tags[CID_TAG] = (string) => {
153
- const cid = CID.parse(string)
154
-
155
- cids.push(cid)
156
-
157
- return cid
158
- }
159
-
160
- cborgJson.decode(block, {
161
- tags,
162
- tokenizer: new DagJsonTokenizer(block, {
163
- tags,
164
- allowIndefinite: true,
165
- allowUndefined: true,
166
- allowNaN: true,
167
- allowInfinity: true,
168
- allowBigInt: true,
169
- strict: false,
170
- rejectDuplicateMapKeys: false
171
- })
172
- })
173
-
174
- yield * cids
175
- }
176
- }