@libp2p/multistream-select 4.0.5-fdcb801e → 4.0.6-05b52d69c
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 +2 -2
- package/dist/src/handle.d.ts.map +1 -1
- package/dist/src/handle.js +5 -7
- package/dist/src/handle.js.map +1 -1
- package/dist/src/index.d.ts +4 -4
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/multistream.d.ts +3 -3
- package/dist/src/multistream.d.ts.map +1 -1
- package/dist/src/multistream.js +5 -7
- package/dist/src/multistream.js.map +1 -1
- package/dist/src/select.d.ts.map +1 -1
- package/dist/src/select.js +6 -8
- package/dist/src/select.js.map +1 -1
- package/package.json +7 -7
- package/src/handle.ts +5 -8
- package/src/index.ts +4 -4
- package/src/multistream.ts +8 -11
- package/src/select.ts +6 -9
package/dist/index.min.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
(function (root, factory) {(typeof module === 'object' && module.exports) ? module.exports = factory() : root.Libp2PMultistreamSelect = factory()}(typeof self !== 'undefined' ? self : this, function () {
|
|
2
|
-
"use strict";var Libp2PMultistreamSelect=(()=>{var or=Object.create;var be=Object.defineProperty;var sr=Object.getOwnPropertyDescriptor;var ir=Object.getOwnPropertyNames;var ar=Object.getPrototypeOf,cr=Object.prototype.hasOwnProperty;var ge=(r,t)=>()=>(t||r((t={exports:{}}).exports,t),t.exports),S=(r,t)=>{for(var e in t)be(r,e,{get:t[e],enumerable:!0})},ct=(r,t,e,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of ir(t))!cr.call(r,o)&&o!==e&&be(r,o,{get:()=>t[o],enumerable:!(n=sr(t,o))||n.enumerable});return r};var ut=(r,t,e)=>(e=r!=null?or(ar(r)):{},ct(t||!r||!r.__esModule?be(e,"default",{value:r,enumerable:!0}):e,r)),ur=r=>ct(be({},"__esModule",{value:!0}),r);var lt=ge((ro,ft)=>{var Y=1e3,W=Y*60,Z=W*60,$=Z*24,fr=$*7,lr=$*365.25;ft.exports=function(r,t){t=t||{};var e=typeof r;if(e==="string"&&r.length>0)return hr(r);if(e==="number"&&isFinite(r))return t.long?pr(r):dr(r);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(r))};function hr(r){if(r=String(r),!(r.length>100)){var t=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(r);if(t){var e=parseFloat(t[1]),n=(t[2]||"ms").toLowerCase();switch(n){case"years":case"year":case"yrs":case"yr":case"y":return e*lr;case"weeks":case"week":case"w":return e*fr;case"days":case"day":case"d":return e*$;case"hours":case"hour":case"hrs":case"hr":case"h":return e*Z;case"minutes":case"minute":case"mins":case"min":case"m":return e*W;case"seconds":case"second":case"secs":case"sec":case"s":return e*Y;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return e;default:return}}}}function dr(r){var t=Math.abs(r);return t>=$?Math.round(r/$)+"d":t>=Z?Math.round(r/Z)+"h":t>=W?Math.round(r/W)+"m":t>=Y?Math.round(r/Y)+"s":r+"ms"}function pr(r){var t=Math.abs(r);return t>=$?we(r,t,$,"day"):t>=Z?we(r,t,Z,"hour"):t>=W?we(r,t,W,"minute"):t>=Y?we(r,t,Y,"second"):r+" ms"}function we(r,t,e,n){var o=t>=e*1.5;return Math.round(r/e)+" "+n+(o?"s":"")}});var dt=ge((no,ht)=>{function mr(r){e.debug=e,e.default=e,e.coerce=h,e.disable=s,e.enable=o,e.enabled=i,e.humanize=lt(),e.destroy=d,Object.keys(r).forEach(u=>{e[u]=r[u]}),e.names=[],e.skips=[],e.formatters={};function t(u){let c=0;for(let l=0;l<u.length;l++)c=(c<<5)-c+u.charCodeAt(l),c|=0;return e.colors[Math.abs(c)%e.colors.length]}e.selectColor=t;function e(u){let c,l=null,L,m;function p(...f){if(!p.enabled)return;let g=p,y=Number(new Date),x=y-(c||y);g.diff=x,g.prev=c,g.curr=y,c=y,f[0]=e.coerce(f[0]),typeof f[0]!="string"&&f.unshift("%O");let C=0;f[0]=f[0].replace(/%([a-zA-Z%])/g,(O,v)=>{if(O==="%%")return"%";C++;let I=e.formatters[v];if(typeof I=="function"){let Q=f[C];O=I.call(g,Q),f.splice(C,1),C--}return O}),e.formatArgs.call(g,f),(g.log||e.log).apply(g,f)}return p.namespace=u,p.useColors=e.useColors(),p.color=e.selectColor(u),p.extend=n,p.destroy=e.destroy,Object.defineProperty(p,"enabled",{enumerable:!0,configurable:!1,get:()=>l!==null?l:(L!==e.namespaces&&(L=e.namespaces,m=e.enabled(u)),m),set:f=>{l=f}}),typeof e.init=="function"&&e.init(p),p}function n(u,c){let l=e(this.namespace+(typeof c>"u"?":":c)+u);return l.log=this.log,l}function o(u){e.save(u),e.namespaces=u,e.names=[],e.skips=[];let c,l=(typeof u=="string"?u:"").split(/[\s,]+/),L=l.length;for(c=0;c<L;c++)l[c]&&(u=l[c].replace(/\*/g,".*?"),u[0]==="-"?e.skips.push(new RegExp("^"+u.slice(1)+"$")):e.names.push(new RegExp("^"+u+"$")))}function s(){let u=[...e.names.map(a),...e.skips.map(a).map(c=>"-"+c)].join(",");return e.enable(""),u}function i(u){if(u[u.length-1]==="*")return!0;let c,l;for(c=0,l=e.skips.length;c<l;c++)if(e.skips[c].test(u))return!1;for(c=0,l=e.names.length;c<l;c++)if(e.names[c].test(u))return!0;return!1}function a(u){return u.toString().substring(2,u.toString().length-2).replace(/\.\*\?$/,"*")}function h(u){return u instanceof Error?u.stack||u.message:u}function d(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return e.enable(e.load()),e}ht.exports=mr});var pt=ge((U,ye)=>{U.formatArgs=gr;U.save=wr;U.load=yr;U.useColors=br;U.storage=xr();U.destroy=(()=>{let r=!1;return()=>{r||(r=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})();U.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function br(){return typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)?!0:typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)?!1:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function gr(r){if(r[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+r[0]+(this.useColors?"%c ":" ")+"+"+ye.exports.humanize(this.diff),!this.useColors)return;let t="color: "+this.color;r.splice(1,0,t,"color: inherit");let e=0,n=0;r[0].replace(/%[a-zA-Z%]/g,o=>{o!=="%%"&&(e++,o==="%c"&&(n=e))}),r.splice(n,0,t)}U.log=console.debug||console.log||(()=>{});function wr(r){try{r?U.storage.setItem("debug",r):U.storage.removeItem("debug")}catch{}}function yr(){let r;try{r=U.storage.getItem("debug")}catch{}return!r&&typeof process<"u"&&"env"in process&&(r=process.env.DEBUG),r}function xr(){try{return localStorage}catch{}}ye.exports=dt()(U);var{formatters:Cr}=ye.exports;Cr.j=function(r){try{return JSON.stringify(r)}catch(t){return"[UnexpectedJSONParseError]: "+t.message}}});var Xt=ge((Is,Ht)=>{"use strict";function qt(r,t){for(let e in t)Object.defineProperty(r,e,{value:t[e],enumerable:!0,configurable:!0});return r}function $n(r,t,e){if(!r||typeof r=="string")throw new TypeError("Please pass an Error to err-code");e||(e={}),typeof t=="object"&&(e=t,t=""),t&&(e.code=t);try{return qt(r,e)}catch{e.message=r.message,e.stack=r.stack;let o=function(){};return o.prototype=Object.create(Object.getPrototypeOf(r)),qt(new o,e)}}Ht.exports=$n});var Wn={};S(Wn,{PROTOCOL_ID:()=>R,handle:()=>nr,lazySelect:()=>rr,select:()=>tr});var R="/multistream/1.0.0";var B=class extends Error{code;props;constructor(t,e,n){super(t),this.code=e,this.name=n?.name??"CodeError",this.props=n??{}}};var D=ut(pt(),1);var ke={};S(ke,{base32:()=>V,base32hex:()=>Tr,base32hexpad:()=>Ir,base32hexpadupper:()=>Rr,base32hexupper:()=>Or,base32pad:()=>Ur,base32padupper:()=>Dr,base32upper:()=>Sr,base32z:()=>Nr});function Er(r,t){if(r.length>=255)throw new TypeError("Alphabet too long");for(var e=new Uint8Array(256),n=0;n<e.length;n++)e[n]=255;for(var o=0;o<r.length;o++){var s=r.charAt(o),i=s.charCodeAt(0);if(e[i]!==255)throw new TypeError(s+" is ambiguous");e[i]=o}var a=r.length,h=r.charAt(0),d=Math.log(a)/Math.log(256),u=Math.log(256)/Math.log(a);function c(m){if(m instanceof Uint8Array||(ArrayBuffer.isView(m)?m=new Uint8Array(m.buffer,m.byteOffset,m.byteLength):Array.isArray(m)&&(m=Uint8Array.from(m))),!(m instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(m.length===0)return"";for(var p=0,f=0,g=0,y=m.length;g!==y&&m[g]===0;)g++,p++;for(var x=(y-g)*u+1>>>0,C=new Uint8Array(x);g!==y;){for(var F=m[g],O=0,v=x-1;(F!==0||O<f)&&v!==-1;v--,O++)F+=256*C[v]>>>0,C[v]=F%a>>>0,F=F/a>>>0;if(F!==0)throw new Error("Non-zero carry");f=O,g++}for(var I=x-f;I!==x&&C[I]===0;)I++;for(var Q=h.repeat(p);I<x;++I)Q+=r.charAt(C[I]);return Q}function l(m){if(typeof m!="string")throw new TypeError("Expected String");if(m.length===0)return new Uint8Array;var p=0;if(m[p]!==" "){for(var f=0,g=0;m[p]===h;)f++,p++;for(var y=(m.length-p)*d+1>>>0,x=new Uint8Array(y);m[p];){var C=e[m.charCodeAt(p)];if(C===255)return;for(var F=0,O=y-1;(C!==0||F<g)&&O!==-1;O--,F++)C+=a*x[O]>>>0,x[O]=C%256>>>0,C=C/256>>>0;if(C!==0)throw new Error("Non-zero carry");g=F,p++}if(m[p]!==" "){for(var v=y-g;v!==y&&x[v]===0;)v++;for(var I=new Uint8Array(f+(y-v)),Q=f;v!==y;)I[Q++]=x[v++];return I}}}function L(m){var p=l(m);if(p)return p;throw new Error(`Non-${t} character`)}return{encode:c,decodeUnsafe:l,decode:L}}var Ar=Er,Lr=Ar,mt=Lr;var so=new Uint8Array(0);var bt=(r,t)=>{if(r===t)return!0;if(r.byteLength!==t.byteLength)return!1;for(let e=0;e<r.byteLength;e++)if(r[e]!==t[e])return!1;return!0},M=r=>{if(r instanceof Uint8Array&&r.constructor.name==="Uint8Array")return r;if(r instanceof ArrayBuffer)return new Uint8Array(r);if(ArrayBuffer.isView(r))return new Uint8Array(r.buffer,r.byteOffset,r.byteLength);throw new Error("Unknown type, must be binary type")};var gt=r=>new TextEncoder().encode(r),wt=r=>new TextDecoder().decode(r);var Oe=class{constructor(t,e,n){this.name=t,this.prefix=e,this.baseEncode=n}encode(t){if(t instanceof Uint8Array)return`${this.prefix}${this.baseEncode(t)}`;throw Error("Unknown type, must be binary type")}},Ie=class{constructor(t,e,n){if(this.name=t,this.prefix=e,e.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=e.codePointAt(0),this.baseDecode=n}decode(t){if(typeof t=="string"){if(t.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(t)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(t.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(t){return xt(this,t)}},Re=class{constructor(t){this.decoders=t}or(t){return xt(this,t)}decode(t){let e=t[0],n=this.decoders[e];if(n)return n.decode(t);throw RangeError(`Unable to decode multibase string ${JSON.stringify(t)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}},xt=(r,t)=>new Re({...r.decoders||{[r.prefix]:r},...t.decoders||{[t.prefix]:t}}),Ne=class{constructor(t,e,n,o){this.name=t,this.prefix=e,this.baseEncode=n,this.baseDecode=o,this.encoder=new Oe(t,e,n),this.decoder=new Ie(t,e,o)}encode(t){return this.encoder.encode(t)}decode(t){return this.decoder.decode(t)}},ee=({name:r,prefix:t,encode:e,decode:n})=>new Ne(r,t,e,n),_=({prefix:r,name:t,alphabet:e})=>{let{encode:n,decode:o}=mt(e,t);return ee({prefix:r,name:t,encode:n,decode:s=>M(o(s))})},Fr=(r,t,e,n)=>{let o={};for(let u=0;u<t.length;++u)o[t[u]]=u;let s=r.length;for(;r[s-1]==="=";)--s;let i=new Uint8Array(s*e/8|0),a=0,h=0,d=0;for(let u=0;u<s;++u){let c=o[r[u]];if(c===void 0)throw new SyntaxError(`Non-${n} character`);h=h<<e|c,a+=e,a>=8&&(a-=8,i[d++]=255&h>>a)}if(a>=e||255&h<<8-a)throw new SyntaxError("Unexpected end of data");return i},vr=(r,t,e)=>{let n=t[t.length-1]==="=",o=(1<<e)-1,s="",i=0,a=0;for(let h=0;h<r.length;++h)for(a=a<<8|r[h],i+=8;i>e;)i-=e,s+=t[o&a>>i];if(i&&(s+=t[o&a<<e-i]),n)for(;s.length*e&7;)s+="=";return s},w=({name:r,prefix:t,bitsPerChar:e,alphabet:n})=>ee({prefix:t,name:r,encode(o){return vr(o,n,e)},decode(o){return Fr(o,n,e,r)}});var V=w({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),Sr=w({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),Ur=w({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),Dr=w({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),Tr=w({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),Or=w({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),Ir=w({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),Rr=w({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),Nr=w({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var Me={};S(Me,{base58btc:()=>N,base58flickr:()=>kr});var N=_({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),kr=_({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var Be={};S(Be,{base64:()=>Pe,base64pad:()=>Mr,base64url:()=>Pr,base64urlpad:()=>Br});var Pe=w({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),Mr=w({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),Pr=w({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),Br=w({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});D.default.formatters.b=r=>r==null?"undefined":N.baseEncode(r);D.default.formatters.t=r=>r==null?"undefined":V.baseEncode(r);D.default.formatters.m=r=>r==null?"undefined":Pe.baseEncode(r);D.default.formatters.p=r=>r==null?"undefined":r.toString();D.default.formatters.c=r=>r==null?"undefined":r.toString();D.default.formatters.k=r=>r==null?"undefined":r.toString();D.default.formatters.a=r=>r==null?"undefined":r.toString();function _r(r){let t=()=>{};return t.enabled=!1,t.color="",t.diff=0,t.log=()=>{},t.namespace=r,t.destroy=()=>!0,t.extend=()=>t,t}function te(r){let t=_r(`${r}:trace`);return D.default.enabled(`${r}:trace`)&&D.default.names.map(e=>e.toString()).find(e=>e.includes(":trace"))!=null&&(t=(0,D.default)(`${r}:trace`)),Object.assign((0,D.default)(r),{error:(0,D.default)(`${r}:error`),trace:t})}function j(r){return globalThis.Buffer!=null?new Uint8Array(r.buffer,r.byteOffset,r.byteLength):r}function P(r=0){return globalThis.Buffer?.alloc!=null?j(globalThis.Buffer.alloc(r)):new Uint8Array(r)}function k(r=0){return globalThis.Buffer?.allocUnsafe!=null?j(globalThis.Buffer.allocUnsafe(r)):new Uint8Array(r)}function _e(r,t){t==null&&(t=r.reduce((o,s)=>o+s.length,0));let e=k(t),n=0;for(let o of r)e.set(o,n),n+=o.length;return j(e)}function Ct(r,t){if(r===t)return!0;if(r.byteLength!==t.byteLength)return!1;for(let e=0;e<r.byteLength;e++)if(r[e]!==t[e])return!1;return!0}var At=Symbol.for("@achingbrain/uint8arraylist");function Et(r,t){if(t==null||t<0)throw new RangeError("index is out of bounds");let e=0;for(let n of r){let o=e+n.byteLength;if(t<o)return{buf:n,index:t-e};e=o}throw new RangeError("index is out of bounds")}function xe(r){return!!r?.[At]}var E=class r{constructor(...t){Object.defineProperty(this,At,{value:!0}),this.bufs=[],this.length=0,t.length>0&&this.appendAll(t)}*[Symbol.iterator](){yield*this.bufs}get byteLength(){return this.length}append(...t){this.appendAll(t)}appendAll(t){let e=0;for(let n of t)if(n instanceof Uint8Array)e+=n.byteLength,this.bufs.push(n);else if(xe(n))e+=n.byteLength,this.bufs.push(...n.bufs);else throw new Error("Could not append value, must be an Uint8Array or a Uint8ArrayList");this.length+=e}prepend(...t){this.prependAll(t)}prependAll(t){let e=0;for(let n of t.reverse())if(n instanceof Uint8Array)e+=n.byteLength,this.bufs.unshift(n);else if(xe(n))e+=n.byteLength,this.bufs.unshift(...n.bufs);else throw new Error("Could not prepend value, must be an Uint8Array or a Uint8ArrayList");this.length+=e}get(t){let e=Et(this.bufs,t);return e.buf[e.index]}set(t,e){let n=Et(this.bufs,t);n.buf[n.index]=e}write(t,e=0){if(t instanceof Uint8Array)for(let n=0;n<t.length;n++)this.set(e+n,t[n]);else if(xe(t))for(let n=0;n<t.length;n++)this.set(e+n,t.get(n));else throw new Error("Could not write value, must be an Uint8Array or a Uint8ArrayList")}consume(t){if(t=Math.trunc(t),!(Number.isNaN(t)||t<=0)){if(t===this.byteLength){this.bufs=[],this.length=0;return}for(;this.bufs.length>0;)if(t>=this.bufs[0].byteLength)t-=this.bufs[0].byteLength,this.length-=this.bufs[0].byteLength,this.bufs.shift();else{this.bufs[0]=this.bufs[0].subarray(t),this.length-=t;break}}}slice(t,e){let{bufs:n,length:o}=this._subList(t,e);return _e(n,o)}subarray(t,e){let{bufs:n,length:o}=this._subList(t,e);return n.length===1?n[0]:_e(n,o)}sublist(t,e){let{bufs:n,length:o}=this._subList(t,e),s=new r;return s.length=o,s.bufs=n,s}_subList(t,e){if(t=t??0,e=e??this.length,t<0&&(t=this.length+t),e<0&&(e=this.length+e),t<0||e>this.length)throw new RangeError("index is out of bounds");if(t===e)return{bufs:[],length:0};if(t===0&&e===this.length)return{bufs:[...this.bufs],length:this.length};let n=[],o=0;for(let s=0;s<this.bufs.length;s++){let i=this.bufs[s],a=o,h=a+i.byteLength;if(o=h,t>=h)continue;let d=t>=a&&t<h,u=e>a&&e<=h;if(d&&u){if(t===a&&e===h){n.push(i);break}let c=t-a;n.push(i.subarray(c,c+(e-t)));break}if(d){if(t===0){n.push(i);continue}n.push(i.subarray(t-a));continue}if(u){if(e===h){n.push(i);break}n.push(i.subarray(0,e-a));break}n.push(i)}return{bufs:n,length:e-t}}indexOf(t,e=0){if(!xe(t)&&!(t instanceof Uint8Array))throw new TypeError('The "value" argument must be a Uint8ArrayList or Uint8Array');let n=t instanceof Uint8Array?t:t.subarray();if(e=Number(e??0),isNaN(e)&&(e=0),e<0&&(e=this.length+e),e<0&&(e=0),t.length===0)return e>this.length?this.length:e;let o=n.byteLength;if(o===0)throw new TypeError("search must be at least 1 byte long");let s=256,i=new Int32Array(s);for(let c=0;c<s;c++)i[c]=-1;for(let c=0;c<o;c++)i[n[c]]=c;let a=i,h=this.byteLength-n.byteLength,d=n.byteLength-1,u;for(let c=e;c<=h;c+=u){u=0;for(let l=d;l>=0;l--){let L=this.get(c+l);if(n[l]!==L){u=Math.max(1,l-a[L]);break}}if(u===0)return c}return-1}getInt8(t){let e=this.subarray(t,t+1);return new DataView(e.buffer,e.byteOffset,e.byteLength).getInt8(0)}setInt8(t,e){let n=k(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setInt8(0,e),this.write(n,t)}getInt16(t,e){let n=this.subarray(t,t+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt16(0,e)}setInt16(t,e,n){let o=P(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt16(0,e,n),this.write(o,t)}getInt32(t,e){let n=this.subarray(t,t+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt32(0,e)}setInt32(t,e,n){let o=P(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt32(0,e,n),this.write(o,t)}getBigInt64(t,e){let n=this.subarray(t,t+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigInt64(0,e)}setBigInt64(t,e,n){let o=P(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigInt64(0,e,n),this.write(o,t)}getUint8(t){let e=this.subarray(t,t+1);return new DataView(e.buffer,e.byteOffset,e.byteLength).getUint8(0)}setUint8(t,e){let n=k(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setUint8(0,e),this.write(n,t)}getUint16(t,e){let n=this.subarray(t,t+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint16(0,e)}setUint16(t,e,n){let o=P(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint16(0,e,n),this.write(o,t)}getUint32(t,e){let n=this.subarray(t,t+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint32(0,e)}setUint32(t,e,n){let o=P(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint32(0,e,n),this.write(o,t)}getBigUint64(t,e){let n=this.subarray(t,t+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigUint64(0,e)}setBigUint64(t,e,n){let o=P(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigUint64(0,e,n),this.write(o,t)}getFloat32(t,e){let n=this.subarray(t,t+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat32(0,e)}setFloat32(t,e,n){let o=P(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat32(0,e,n),this.write(o,t)}getFloat64(t,e){let n=this.subarray(t,t+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat64(0,e)}setFloat64(t,e,n){let o=P(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat64(0,e,n),this.write(o,t)}equals(t){if(t==null||!(t instanceof r)||t.bufs.length!==this.bufs.length)return!1;for(let e=0;e<this.bufs.length;e++)if(!Ct(this.bufs[e],t.bufs[e]))return!1;return!0}static fromUint8Arrays(t,e){let n=new r;return n.bufs=t,e==null&&(e=t.reduce((o,s)=>o+s.byteLength,0)),n.length=e,n}};function Ce(r){let t=async function*(){let e=yield,n=new E;for await(let o of r){if(e==null){n.append(o),e=yield n,n=new E;continue}for(n.append(o);n.length>=e;){let s=n.sublist(0,e);if(n.consume(e),e=yield s,e==null){n.length>0&&(e=yield n,n=new E);break}}}if(e!=null)throw Object.assign(new Error(`stream ended before ${e} bytes became available`),{code:"ERR_UNDER_READ",buffer:n})}();return t.next(),t}function re(){let r={};return r.promise=new Promise((t,e)=>{r.resolve=t,r.reject=e}),r}var Ee=class{buffer;mask;top;btm;next;constructor(t){if(!(t>0)||t-1&t)throw new Error("Max size for a FixedFIFO should be a power of two");this.buffer=new Array(t),this.mask=t-1,this.top=0,this.btm=0,this.next=null}push(t){return this.buffer[this.top]!==void 0?!1:(this.buffer[this.top]=t,this.top=this.top+1&this.mask,!0)}shift(){let t=this.buffer[this.btm];if(t!==void 0)return this.buffer[this.btm]=void 0,this.btm=this.btm+1&this.mask,t}isEmpty(){return this.buffer[this.btm]===void 0}},ne=class{size;hwm;head;tail;constructor(t={}){this.hwm=t.splitLimit??16,this.head=new Ee(this.hwm),this.tail=this.head,this.size=0}calculateSize(t){return t?.byteLength!=null?t.byteLength:1}push(t){if(t?.value!=null&&(this.size+=this.calculateSize(t.value)),!this.head.push(t)){let e=this.head;this.head=e.next=new Ee(2*this.head.buffer.length),this.head.push(t)}}shift(){let t=this.tail.shift();if(t===void 0&&this.tail.next!=null){let e=this.tail.next;this.tail.next=null,this.tail=e,t=this.tail.shift()}return t?.value!=null&&(this.size-=this.calculateSize(t.value)),t}isEmpty(){return this.head.isEmpty()}};var Ve=class extends Error{type;code;constructor(t,e){super(t??"The operation was aborted"),this.type="aborted",this.code=e??"ABORT_ERR"}};function z(r={}){return Vr(e=>{let n=e.shift();if(n==null)return{done:!0};if(n.error!=null)throw n.error;return{done:n.done===!0,value:n.value}},r)}function Vr(r,t){t=t??{};let e=t.onEnd,n=new ne,o,s,i,a=re(),h=async()=>{try{return n.isEmpty()?i?{done:!0}:await new Promise((f,g)=>{s=y=>{s=null,n.push(y);try{f(r(n))}catch(x){g(x)}return o}}):r(n)}finally{n.isEmpty()&&queueMicrotask(()=>{a.resolve(),a=re()})}},d=f=>s!=null?s(f):(n.push(f),o),u=f=>(n=new ne,s!=null?s({error:f}):(n.push({error:f}),o)),c=f=>{if(i)return o;if(t?.objectMode!==!0&&f?.byteLength==null)throw new Error("objectMode was not true but tried to push non-Uint8Array value");return d({done:!1,value:f})},l=f=>i?o:(i=!0,f!=null?u(f):d({done:!0})),L=()=>(n=new ne,l(),{done:!0}),m=f=>(l(f),{done:!0});if(o={[Symbol.asyncIterator](){return this},next:h,return:L,throw:m,push:c,end:l,get readableLength(){return n.size},onEmpty:async f=>{let g=f?.signal;if(g?.throwIfAborted(),n.isEmpty())return;let y,x;g!=null&&(y=new Promise((C,F)=>{x=()=>{F(new Ve)},g.addEventListener("abort",x)}));try{await Promise.race([a.promise,y])}finally{x!=null&&g!=null&&g?.removeEventListener("abort",x)}}},e==null)return o;let p=o;return o={[Symbol.asyncIterator](){return this},next(){return p.next()},throw(f){return p.throw(f),e!=null&&(e(f),e=void 0),{done:!0}},return(){return p.return(),e!=null&&(e(),e=void 0),{done:!0}},push:c,end(f){return p.end(f),e!=null&&(e(f),e=void 0),o},get readableLength(){return p.readableLength}},o}function Ae(r){let t=z(),e=Ce(r.source),n=re(),o,s=r.sink(async function*(){yield*t,yield*await n.promise}());return s.catch(a=>{o=a}),{reader:e,writer:t,stream:{sink:async a=>{if(o!=null){await Promise.reject(o);return}n.resolve(a),await s},source:e},rest:()=>t.end(),write:t.push,read:async()=>{let a=await e.next();if(a.value!=null)return a.value}}}function zr(r){return r[Symbol.asyncIterator]!=null}function Gr(...r){let t=[];for(let e of r)zr(e)||t.push(e);return t.length===r.length?function*(){for(let e of t)yield*e}():async function*(){let e=z({objectMode:!0});Promise.resolve().then(async()=>{try{await Promise.all(r.map(async n=>{for await(let o of n)e.push(o)})),e.end()}catch(n){e.end(n)}}),yield*e}()}var Le=Gr;var ze={};S(ze,{base10:()=>$r});var $r=_({prefix:"9",name:"base10",alphabet:"0123456789"});var Ge={};S(Ge,{base16:()=>jr,base16upper:()=>qr});var jr=w({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),qr=w({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var $e={};S($e,{base2:()=>Hr});var Hr=w({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var je={};S(je,{base256emoji:()=>Yr});var Lt=Array.from("\u{1F680}\u{1FA90}\u2604\u{1F6F0}\u{1F30C}\u{1F311}\u{1F312}\u{1F313}\u{1F314}\u{1F315}\u{1F316}\u{1F317}\u{1F318}\u{1F30D}\u{1F30F}\u{1F30E}\u{1F409}\u2600\u{1F4BB}\u{1F5A5}\u{1F4BE}\u{1F4BF}\u{1F602}\u2764\u{1F60D}\u{1F923}\u{1F60A}\u{1F64F}\u{1F495}\u{1F62D}\u{1F618}\u{1F44D}\u{1F605}\u{1F44F}\u{1F601}\u{1F525}\u{1F970}\u{1F494}\u{1F496}\u{1F499}\u{1F622}\u{1F914}\u{1F606}\u{1F644}\u{1F4AA}\u{1F609}\u263A\u{1F44C}\u{1F917}\u{1F49C}\u{1F614}\u{1F60E}\u{1F607}\u{1F339}\u{1F926}\u{1F389}\u{1F49E}\u270C\u2728\u{1F937}\u{1F631}\u{1F60C}\u{1F338}\u{1F64C}\u{1F60B}\u{1F497}\u{1F49A}\u{1F60F}\u{1F49B}\u{1F642}\u{1F493}\u{1F929}\u{1F604}\u{1F600}\u{1F5A4}\u{1F603}\u{1F4AF}\u{1F648}\u{1F447}\u{1F3B6}\u{1F612}\u{1F92D}\u2763\u{1F61C}\u{1F48B}\u{1F440}\u{1F62A}\u{1F611}\u{1F4A5}\u{1F64B}\u{1F61E}\u{1F629}\u{1F621}\u{1F92A}\u{1F44A}\u{1F973}\u{1F625}\u{1F924}\u{1F449}\u{1F483}\u{1F633}\u270B\u{1F61A}\u{1F61D}\u{1F634}\u{1F31F}\u{1F62C}\u{1F643}\u{1F340}\u{1F337}\u{1F63B}\u{1F613}\u2B50\u2705\u{1F97A}\u{1F308}\u{1F608}\u{1F918}\u{1F4A6}\u2714\u{1F623}\u{1F3C3}\u{1F490}\u2639\u{1F38A}\u{1F498}\u{1F620}\u261D\u{1F615}\u{1F33A}\u{1F382}\u{1F33B}\u{1F610}\u{1F595}\u{1F49D}\u{1F64A}\u{1F639}\u{1F5E3}\u{1F4AB}\u{1F480}\u{1F451}\u{1F3B5}\u{1F91E}\u{1F61B}\u{1F534}\u{1F624}\u{1F33C}\u{1F62B}\u26BD\u{1F919}\u2615\u{1F3C6}\u{1F92B}\u{1F448}\u{1F62E}\u{1F646}\u{1F37B}\u{1F343}\u{1F436}\u{1F481}\u{1F632}\u{1F33F}\u{1F9E1}\u{1F381}\u26A1\u{1F31E}\u{1F388}\u274C\u270A\u{1F44B}\u{1F630}\u{1F928}\u{1F636}\u{1F91D}\u{1F6B6}\u{1F4B0}\u{1F353}\u{1F4A2}\u{1F91F}\u{1F641}\u{1F6A8}\u{1F4A8}\u{1F92C}\u2708\u{1F380}\u{1F37A}\u{1F913}\u{1F619}\u{1F49F}\u{1F331}\u{1F616}\u{1F476}\u{1F974}\u25B6\u27A1\u2753\u{1F48E}\u{1F4B8}\u2B07\u{1F628}\u{1F31A}\u{1F98B}\u{1F637}\u{1F57A}\u26A0\u{1F645}\u{1F61F}\u{1F635}\u{1F44E}\u{1F932}\u{1F920}\u{1F927}\u{1F4CC}\u{1F535}\u{1F485}\u{1F9D0}\u{1F43E}\u{1F352}\u{1F617}\u{1F911}\u{1F30A}\u{1F92F}\u{1F437}\u260E\u{1F4A7}\u{1F62F}\u{1F486}\u{1F446}\u{1F3A4}\u{1F647}\u{1F351}\u2744\u{1F334}\u{1F4A3}\u{1F438}\u{1F48C}\u{1F4CD}\u{1F940}\u{1F922}\u{1F445}\u{1F4A1}\u{1F4A9}\u{1F450}\u{1F4F8}\u{1F47B}\u{1F910}\u{1F92E}\u{1F3BC}\u{1F975}\u{1F6A9}\u{1F34E}\u{1F34A}\u{1F47C}\u{1F48D}\u{1F4E3}\u{1F942}"),Xr=Lt.reduce((r,t,e)=>(r[e]=t,r),[]),Jr=Lt.reduce((r,t,e)=>(r[t.codePointAt(0)]=e,r),[]);function Kr(r){return r.reduce((t,e)=>(t+=Xr[e],t),"")}function Qr(r){let t=[];for(let e of r){let n=Jr[e.codePointAt(0)];if(n===void 0)throw new Error(`Non-base256emoji character: ${e}`);t.push(n)}return new Uint8Array(t)}var Yr=ee({prefix:"\u{1F680}",name:"base256emoji",encode:Kr,decode:Qr});var qe={};S(qe,{base36:()=>Wr,base36upper:()=>Zr});var Wr=_({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),Zr=_({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var He={};S(He,{base8:()=>en});var en=w({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var Xe={};S(Xe,{identity:()=>tn});var tn=ee({prefix:"\0",name:"identity",encode:r=>wt(r),decode:r=>gt(r)});var Ko=new TextEncoder,Qo=new TextDecoder;var Ke={};S(Ke,{identity:()=>Fn});var on=St,Ft=128,sn=127,an=~sn,cn=Math.pow(2,31);function St(r,t,e){t=t||[],e=e||0;for(var n=e;r>=cn;)t[e++]=r&255|Ft,r/=128;for(;r&an;)t[e++]=r&255|Ft,r>>>=7;return t[e]=r|0,St.bytes=e-n+1,t}var un=Je,fn=128,vt=127;function Je(r,n){var e=0,n=n||0,o=0,s=n,i,a=r.length;do{if(s>=a)throw Je.bytes=0,new RangeError("Could not decode varint");i=r[s++],e+=o<28?(i&vt)<<o:(i&vt)*Math.pow(2,o),o+=7}while(i>=fn);return Je.bytes=s-n,e}var ln=Math.pow(2,7),hn=Math.pow(2,14),dn=Math.pow(2,21),pn=Math.pow(2,28),mn=Math.pow(2,35),bn=Math.pow(2,42),gn=Math.pow(2,49),wn=Math.pow(2,56),yn=Math.pow(2,63),xn=function(r){return r<ln?1:r<hn?2:r<dn?3:r<pn?4:r<mn?5:r<bn?6:r<gn?7:r<wn?8:r<yn?9:10},Cn={encode:on,decode:un,encodingLength:xn},En=Cn,ce=En;var ue=(r,t=0)=>[ce.decode(r,t),ce.decode.bytes],oe=(r,t,e=0)=>(ce.encode(r,t,e),t),se=r=>ce.encodingLength(r);var q=(r,t)=>{let e=t.byteLength,n=se(r),o=n+se(e),s=new Uint8Array(o+e);return oe(r,s,0),oe(e,s,n),s.set(t,o),new ie(r,e,t,s)},Ut=r=>{let t=M(r),[e,n]=ue(t),[o,s]=ue(t.subarray(n)),i=t.subarray(n+s);if(i.byteLength!==o)throw new Error("Incorrect length");return new ie(e,o,i,t)},Dt=(r,t)=>{if(r===t)return!0;{let e=t;return r.code===e.code&&r.size===e.size&&e.bytes instanceof Uint8Array&&bt(r.bytes,e.bytes)}},ie=class{constructor(t,e,n,o){this.code=t,this.size=e,this.digest=n,this.bytes=o}};var Tt=0,An="identity",Ot=M,Ln=r=>q(Tt,Ot(r)),Fn={code:Tt,name:An,encode:Ot,digest:Ln};var We={};S(We,{sha256:()=>vn,sha512:()=>Sn});var Ye=({name:r,code:t,encode:e})=>new Qe(r,t,e),Qe=class{constructor(t,e,n){this.name=t,this.code=e,this.encode=n}digest(t){if(t instanceof Uint8Array){let e=this.encode(t);return e instanceof Uint8Array?q(this.code,e):e.then(n=>q(this.code,n))}else throw Error("Unknown type, must be binary type")}};var Rt=r=>async t=>new Uint8Array(await crypto.subtle.digest(r,t)),vn=Ye({name:"sha2-256",code:18,encode:Rt("SHA-256")}),Sn=Ye({name:"sha2-512",code:19,encode:Rt("SHA-512")});var Nt=(r,t)=>{let{bytes:e,version:n}=r;switch(n){case 0:return Dn(e,Ze(r),t||N.encoder);default:return Tn(e,Ze(r),t||V.encoder)}};var kt=new WeakMap,Ze=r=>{let t=kt.get(r);if(t==null){let e=new Map;return kt.set(r,e),e}return t},ve=class r{constructor(t,e,n,o){this.code=e,this.version=t,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:t,multihash:e}=this;if(t!==le)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(e.code!==On)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return r.createV0(e)}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:t,digest:e}=this.multihash,n=q(t,e);return r.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(t){return r.equals(this,t)}static equals(t,e){let n=e;return n&&t.code===n.code&&t.version===n.version&&Dt(t.multihash,n.multihash)}toString(t){return Nt(this,t)}toJSON(){return{"/":Nt(this)}}link(){return this}get[Symbol.toStringTag](){return"CID"}[Symbol.for("nodejs.util.inspect.custom")](){return`CID(${this.toString()})`}static asCID(t){if(t==null)return null;let e=t;if(e instanceof r)return e;if(e["/"]!=null&&e["/"]===e.bytes||e.asCID===e){let{version:n,code:o,multihash:s,bytes:i}=e;return new r(n,o,s,i||Mt(n,o,s.bytes))}else if(e[In]===!0){let{version:n,multihash:o,code:s}=e,i=Ut(o);return r.create(n,s,i)}else return null}static create(t,e,n){if(typeof e!="number")throw new Error("String codecs are no longer supported");if(!(n.bytes instanceof Uint8Array))throw new Error("Invalid digest");switch(t){case 0:{if(e!==le)throw new Error(`Version 0 CID must use dag-pb (code: ${le}) block encoding`);return new r(t,e,n,n.bytes)}case 1:{let o=Mt(t,e,n.bytes);return new r(t,e,n,o)}default:throw new Error("Invalid version")}}static createV0(t){return r.create(0,le,t)}static createV1(t,e){return r.create(1,t,e)}static decode(t){let[e,n]=r.decodeFirst(t);if(n.length)throw new Error("Incorrect length");return e}static decodeFirst(t){let e=r.inspectBytes(t),n=e.size-e.multihashSize,o=M(t.subarray(n,n+e.multihashSize));if(o.byteLength!==e.multihashSize)throw new Error("Incorrect length");let s=o.subarray(e.multihashSize-e.digestSize),i=new ie(e.multihashCode,e.digestSize,s,o);return[e.version===0?r.createV0(i):r.createV1(e.codec,i),t.subarray(e.size)]}static inspectBytes(t){let e=0,n=()=>{let[c,l]=ue(t.subarray(e));return e+=l,c},o=n(),s=le;if(o===18?(o=0,e=0):s=n(),o!==0&&o!==1)throw new RangeError(`Invalid CID version ${o}`);let i=e,a=n(),h=n(),d=e+h,u=d-i;return{version:o,codec:s,multihashCode:a,digestSize:h,multihashSize:u,size:d}}static parse(t,e){let[n,o]=Un(t,e),s=r.decode(o);if(s.version===0&&t[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return Ze(s).set(n,t),s}},Un=(r,t)=>{switch(r[0]){case"Q":{let e=t||N;return[N.prefix,e.decode(`${N.prefix}${r}`)]}case N.prefix:{let e=t||N;return[N.prefix,e.decode(r)]}case V.prefix:{let e=t||V;return[V.prefix,e.decode(r)]}default:{if(t==null)throw Error("To parse non base32 or base58btc encoded CID multibase decoder must be provided");return[r[0],t.decode(r)]}}},Dn=(r,t,e)=>{let{prefix:n}=e;if(n!==N.prefix)throw Error(`Cannot string encode V0 in ${e.name} encoding`);let o=t.get(n);if(o==null){let s=e.encode(r).slice(1);return t.set(n,s),s}else return o},Tn=(r,t,e)=>{let{prefix:n}=e,o=t.get(n);if(o==null){let s=e.encode(r);return t.set(n,s),s}else return o},le=112,On=18,Mt=(r,t,e)=>{let n=se(r),o=n+se(t),s=new Uint8Array(o+e.byteLength);return oe(r,s,0),oe(t,s,n),s.set(e,o),s},In=Symbol.for("@ipld/js-cid/CID");var et={...Xe,...$e,...He,...ze,...Ge,...ke,...qe,...Me,...Be,...je},hs={...We,...Ke};function Bt(r,t,e,n){return{name:r,prefix:t,encoder:{name:r,prefix:t,encode:e},decoder:{decode:n}}}var Pt=Bt("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),tt=Bt("ascii","a",r=>{let t="a";for(let e=0;e<r.length;e++)t+=String.fromCharCode(r[e]);return t},r=>{r=r.substring(1);let t=k(r.length);for(let e=0;e<r.length;e++)t[e]=r.charCodeAt(e);return t}),Rn={utf8:Pt,"utf-8":Pt,hex:et.base16,latin1:tt,ascii:tt,binary:tt,...et},Se=Rn;function T(r,t="utf8"){let e=Se[t];if(e==null)throw new Error(`Unsupported encoding "${t}"`);return(t==="utf8"||t==="utf-8")&&globalThis.Buffer!=null&&globalThis.Buffer.from!=null?j(globalThis.Buffer.from(r,"utf-8")):e.decoder.decode(`${e.prefix}${r}`)}var he=class extends Error{constructor(t,e){super(t??"The operation was aborted"),this.type="aborted",this.code=e??"ABORT_ERR"}};function _t(r){if(r!=null){if(typeof r[Symbol.iterator]=="function")return r[Symbol.iterator]();if(typeof r[Symbol.asyncIterator]=="function")return r[Symbol.asyncIterator]();if(typeof r.next=="function")return r}throw new Error("argument is not an iterator or iterable")}function Vt(r,t,e){let n=e??{},o=_t(r);async function*s(){let i,a=()=>{i?.()};for(t.addEventListener("abort",a);;){let h;try{if(t.aborted){let{abortMessage:u,abortCode:c}=n;throw new he(u,c)}let d=new Promise((u,c)=>{i=()=>{let{abortMessage:l,abortCode:L}=n;c(new he(l,L))}});h=await Promise.race([d,o.next()]),i=null}catch(d){t.removeEventListener("abort",a);let u=d.type==="aborted"&&t.aborted;if(u&&n.onAbort!=null&&n.onAbort(r),typeof o.return=="function")try{let c=o.return();c instanceof Promise&&c.catch(l=>{n.onReturnError!=null&&n.onReturnError(l)})}catch(c){n.onReturnError!=null&&n.onReturnError(c)}if(u&&n.returnOnAbort===!0)return;throw d}if(h.done===!0)break;yield h.value}t.removeEventListener("abort",a)}return s()}function Nn(r){return r[Symbol.asyncIterator]!=null}function kn(r){if(Nn(r))return(async()=>{for await(let t of r)return t})();for(let t of r)return t}var zt=kn;var Mn=Math.pow(2,7),Pn=Math.pow(2,14),Bn=Math.pow(2,21),rt=Math.pow(2,28),nt=Math.pow(2,35),ot=Math.pow(2,42),st=Math.pow(2,49),b=128,A=127;function H(r){if(r<Mn)return 1;if(r<Pn)return 2;if(r<Bn)return 3;if(r<rt)return 4;if(r<nt)return 5;if(r<ot)return 6;if(r<st)return 7;if(Number.MAX_SAFE_INTEGER!=null&&r>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function _n(r,t,e=0){switch(H(r)){case 8:t[e++]=r&255|b,r/=128;case 7:t[e++]=r&255|b,r/=128;case 6:t[e++]=r&255|b,r/=128;case 5:t[e++]=r&255|b,r/=128;case 4:t[e++]=r&255|b,r>>>=7;case 3:t[e++]=r&255|b,r>>>=7;case 2:t[e++]=r&255|b,r>>>=7;case 1:{t[e++]=r&255,r>>>=7;break}default:throw new Error("unreachable")}return t}function Vn(r,t,e=0){switch(H(r)){case 8:t.set(e++,r&255|b),r/=128;case 7:t.set(e++,r&255|b),r/=128;case 6:t.set(e++,r&255|b),r/=128;case 5:t.set(e++,r&255|b),r/=128;case 4:t.set(e++,r&255|b),r>>>=7;case 3:t.set(e++,r&255|b),r>>>=7;case 2:t.set(e++,r&255|b),r>>>=7;case 1:{t.set(e++,r&255),r>>>=7;break}default:throw new Error("unreachable")}return t}function zn(r,t){let e=r[t],n=0;if(n+=e&A,e<b||(e=r[t+1],n+=(e&A)<<7,e<b)||(e=r[t+2],n+=(e&A)<<14,e<b)||(e=r[t+3],n+=(e&A)<<21,e<b)||(e=r[t+4],n+=(e&A)*rt,e<b)||(e=r[t+5],n+=(e&A)*nt,e<b)||(e=r[t+6],n+=(e&A)*ot,e<b)||(e=r[t+7],n+=(e&A)*st,e<b))return n;throw new RangeError("Could not decode varint")}function Gn(r,t){let e=r.get(t),n=0;if(n+=e&A,e<b||(e=r.get(t+1),n+=(e&A)<<7,e<b)||(e=r.get(t+2),n+=(e&A)<<14,e<b)||(e=r.get(t+3),n+=(e&A)<<21,e<b)||(e=r.get(t+4),n+=(e&A)*rt,e<b)||(e=r.get(t+5),n+=(e&A)*nt,e<b)||(e=r.get(t+6),n+=(e&A)*ot,e<b)||(e=r.get(t+7),n+=(e&A)*st,e<b))return n;throw new RangeError("Could not decode varint")}function Gt(r,t,e=0){return t==null&&(t=k(H(r))),t instanceof Uint8Array?_n(r,t,e):Vn(r,t,e)}function $t(r,t=0){return r instanceof Uint8Array?zn(r,t):Gn(r,t)}function Ue(r){return r[Symbol.asyncIterator]!=null}var De=r=>{let t=H(r),e=k(t);return Gt(r,e),De.bytes=t,e};De.bytes=0;function Te(r,t){t=t??{};let e=t.lengthEncoder??De;function*n(o){let s=e(o.byteLength);s instanceof Uint8Array?yield s:yield*s,o instanceof Uint8Array?yield o:yield*o}return Ue(r)?async function*(){for await(let o of r)yield*n(o)}():function*(){for(let o of r)yield*n(o)}()}Te.single=(r,t)=>{t=t??{};let e=t.lengthEncoder??De;return new E(e(r.byteLength),r)};var ae=ut(Xt(),1);var jn=8,qn=1024*1024*4,X;(function(r){r[r.LENGTH=0]="LENGTH",r[r.DATA=1]="DATA"})(X||(X={}));var it=r=>{let t=$t(r);return it.bytes=H(t),t};it.bytes=0;function de(r,t){let e=new E,n=X.LENGTH,o=-1,s=t?.lengthDecoder??it,i=t?.maxLengthLength??jn,a=t?.maxDataLength??qn;function*h(){for(;e.byteLength>0;){if(n===X.LENGTH)try{if(o=s(e),o<0)throw(0,ae.default)(new Error("invalid message length"),"ERR_INVALID_MSG_LENGTH");if(o>a)throw(0,ae.default)(new Error("message length too long"),"ERR_MSG_DATA_TOO_LONG");let d=s.bytes;e.consume(d),t?.onLength!=null&&t.onLength(o),n=X.DATA}catch(d){if(d instanceof RangeError){if(e.byteLength>i)throw(0,ae.default)(new Error("message length length too long"),"ERR_MSG_LENGTH_TOO_LONG");break}throw d}if(n===X.DATA){if(e.byteLength<o)break;let d=e.sublist(0,o);e.consume(o),t?.onData!=null&&t.onData(d),yield d,n=X.LENGTH}}}return Ue(r)?async function*(){for await(let d of r)e.append(d),yield*h();if(e.byteLength>0)throw(0,ae.default)(new Error("unexpected end of input"),"ERR_UNEXPECTED_EOF")}():function*(){for(let d of r)e.append(d),yield*h();if(e.byteLength>0)throw(0,ae.default)(new Error("unexpected end of input"),"ERR_UNEXPECTED_EOF")}()}de.fromReader=(r,t)=>{let e=1,n=async function*(){for(;;)try{let{done:s,value:i}=await r.next(e);if(s===!0)return;i!=null&&(yield i)}catch(s){if(s.code==="ERR_UNDER_READ")return{done:!0,value:null};throw s}finally{e=1}}();return de(n,{...t??{},onLength:s=>{e=s}})};function Jt(r,...t){if(r==null)throw new Error("Empty pipeline");if(at(r)){let n=r;r=()=>n.source}else if(Qt(r)||Kt(r)){let n=r;r=()=>n}let e=[r,...t];if(e.length>1&&at(e[e.length-1])&&(e[e.length-1]=e[e.length-1].sink),e.length>2)for(let n=1;n<e.length-1;n++)at(e[n])&&(e[n]=Jn(e[n]));return Xn(...e)}var Xn=(...r)=>{let t;for(;r.length>0;)t=r.shift()(t);return t},Kt=r=>r?.[Symbol.asyncIterator]!=null,Qt=r=>r?.[Symbol.iterator]!=null,at=r=>r==null?!1:r.sink!=null&&r.source!=null,Jn=r=>t=>{let e=r.sink(t);if(e?.then!=null){let n=z({objectMode:!0});e.then(()=>{n.end()},i=>{n.end(i)});let o,s=r.source;if(Kt(s))o=async function*(){yield*s,n.end()};else if(Qt(s))o=function*(){yield*s,n.end()};else throw new Error("Unknown duplex source type - must be Iterable or AsyncIterable");return Le(n,o())}return r.source};function Yt(r,t="utf8"){let e=Se[t];if(e==null)throw new Error(`Unsupported encoding "${t}"`);return(t==="utf8"||t==="utf-8")&&globalThis.Buffer!=null&&globalThis.Buffer.from!=null?globalThis.Buffer.from(r.buffer,r.byteOffset,r.byteLength).toString("utf8"):e.encoder.encode(r).substring(1)}var Qn=te("libp2p:mss"),Wt=T(`
|
|
3
|
-
`);function
|
|
2
|
+
"use strict";var Libp2PMultistreamSelect=(()=>{var Bt=Object.create;var ae=Object.defineProperty;var Vt=Object.getOwnPropertyDescriptor;var zt=Object.getOwnPropertyNames;var Gt=Object.getPrototypeOf,Ht=Object.prototype.hasOwnProperty;var $t=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),S=(r,e)=>{for(var t in e)ae(r,t,{get:e[t],enumerable:!0})},Ke=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of zt(e))!Ht.call(r,o)&&o!==t&&ae(r,o,{get:()=>e[o],enumerable:!(n=Vt(e,o))||n.enumerable});return r};var jt=(r,e,t)=>(t=r!=null?Bt(Gt(r)):{},Ke(e||!r||!r.__esModule?ae(t,"default",{value:r,enumerable:!0}):t,r)),qt=r=>Ke(ae({},"__esModule",{value:!0}),r);var Rt=$t((Qo,Dt)=>{"use strict";function vt(r,e){for(let t in e)Object.defineProperty(r,t,{value:e[t],enumerable:!0,configurable:!0});return r}function pn(r,e,t){if(!r||typeof r=="string")throw new TypeError("Please pass an Error to err-code");t||(t={}),typeof e=="object"&&(t=e,e=""),e&&(t.code=e);try{return vt(r,t)}catch{t.message=r.message,t.stack=r.stack;let o=function(){};return o.prototype=Object.create(Object.getPrototypeOf(r)),vt(new o,t)}}Dt.exports=pn});var An={};S(An,{PROTOCOL_ID:()=>D,handle:()=>kt,lazySelect:()=>Pt,select:()=>Mt});var D="/multistream/1.0.0";var M=class extends Error{code;props;constructor(e,t,n){super(e),this.code=t,this.name=n?.name??"CodeError",this.props=n??{}}};function V(r){return globalThis.Buffer!=null?new Uint8Array(r.buffer,r.byteOffset,r.byteLength):r}function N(r=0){return globalThis.Buffer?.alloc!=null?V(globalThis.Buffer.alloc(r)):new Uint8Array(r)}function T(r=0){return globalThis.Buffer?.allocUnsafe!=null?V(globalThis.Buffer.allocUnsafe(r)):new Uint8Array(r)}function ge(r,e){e==null&&(e=r.reduce((o,s)=>o+s.length,0));let t=T(e),n=0;for(let o of r)t.set(o,n),n+=o.length;return V(t)}function Qe(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}var We=Symbol.for("@achingbrain/uint8arraylist");function Ye(r,e){if(e==null||e<0)throw new RangeError("index is out of bounds");let t=0;for(let n of r){let o=t+n.byteLength;if(e<o)return{buf:n,index:e-t};t=o}throw new RangeError("index is out of bounds")}function ce(r){return!!r?.[We]}var x=class r{constructor(...e){Object.defineProperty(this,We,{value:!0}),this.bufs=[],this.length=0,e.length>0&&this.appendAll(e)}*[Symbol.iterator](){yield*this.bufs}get byteLength(){return this.length}append(...e){this.appendAll(e)}appendAll(e){let t=0;for(let n of e)if(n instanceof Uint8Array)t+=n.byteLength,this.bufs.push(n);else if(ce(n))t+=n.byteLength,this.bufs.push(...n.bufs);else throw new Error("Could not append value, must be an Uint8Array or a Uint8ArrayList");this.length+=t}prepend(...e){this.prependAll(e)}prependAll(e){let t=0;for(let n of e.reverse())if(n instanceof Uint8Array)t+=n.byteLength,this.bufs.unshift(n);else if(ce(n))t+=n.byteLength,this.bufs.unshift(...n.bufs);else throw new Error("Could not prepend value, must be an Uint8Array or a Uint8ArrayList");this.length+=t}get(e){let t=Ye(this.bufs,e);return t.buf[t.index]}set(e,t){let n=Ye(this.bufs,e);n.buf[n.index]=t}write(e,t=0){if(e instanceof Uint8Array)for(let n=0;n<e.length;n++)this.set(t+n,e[n]);else if(ce(e))for(let n=0;n<e.length;n++)this.set(t+n,e.get(n));else throw new Error("Could not write value, must be an Uint8Array or a Uint8ArrayList")}consume(e){if(e=Math.trunc(e),!(Number.isNaN(e)||e<=0)){if(e===this.byteLength){this.bufs=[],this.length=0;return}for(;this.bufs.length>0;)if(e>=this.bufs[0].byteLength)e-=this.bufs[0].byteLength,this.length-=this.bufs[0].byteLength,this.bufs.shift();else{this.bufs[0]=this.bufs[0].subarray(e),this.length-=e;break}}}slice(e,t){let{bufs:n,length:o}=this._subList(e,t);return ge(n,o)}subarray(e,t){let{bufs:n,length:o}=this._subList(e,t);return n.length===1?n[0]:ge(n,o)}sublist(e,t){let{bufs:n,length:o}=this._subList(e,t),s=new r;return s.length=o,s.bufs=n,s}_subList(e,t){if(e=e??0,t=t??this.length,e<0&&(e=this.length+e),t<0&&(t=this.length+t),e<0||t>this.length)throw new RangeError("index is out of bounds");if(e===t)return{bufs:[],length:0};if(e===0&&t===this.length)return{bufs:[...this.bufs],length:this.length};let n=[],o=0;for(let s=0;s<this.bufs.length;s++){let i=this.bufs[s],a=o,f=a+i.byteLength;if(o=f,e>=f)continue;let u=e>=a&&e<f,h=t>a&&t<=f;if(u&&h){if(e===a&&t===f){n.push(i);break}let c=e-a;n.push(i.subarray(c,c+(t-e)));break}if(u){if(e===0){n.push(i);continue}n.push(i.subarray(e-a));continue}if(h){if(t===f){n.push(i);break}n.push(i.subarray(0,t-a));break}n.push(i)}return{bufs:n,length:t-e}}indexOf(e,t=0){if(!ce(e)&&!(e instanceof Uint8Array))throw new TypeError('The "value" argument must be a Uint8ArrayList or Uint8Array');let n=e instanceof Uint8Array?e:e.subarray();if(t=Number(t??0),isNaN(t)&&(t=0),t<0&&(t=this.length+t),t<0&&(t=0),e.length===0)return t>this.length?this.length:t;let o=n.byteLength;if(o===0)throw new TypeError("search must be at least 1 byte long");let s=256,i=new Int32Array(s);for(let c=0;c<s;c++)i[c]=-1;for(let c=0;c<o;c++)i[n[c]]=c;let a=i,f=this.byteLength-n.byteLength,u=n.byteLength-1,h;for(let c=t;c<=f;c+=h){h=0;for(let m=u;m>=0;m--){let F=this.get(c+m);if(n[m]!==F){h=Math.max(1,m-a[F]);break}}if(h===0)return c}return-1}getInt8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getInt8(0)}setInt8(e,t){let n=T(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setInt8(0,t),this.write(n,e)}getInt16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt16(0,t)}setInt16(e,t,n){let o=N(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt16(0,t,n),this.write(o,e)}getInt32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt32(0,t)}setInt32(e,t,n){let o=N(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt32(0,t,n),this.write(o,e)}getBigInt64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigInt64(0,t)}setBigInt64(e,t,n){let o=N(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigInt64(0,t,n),this.write(o,e)}getUint8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getUint8(0)}setUint8(e,t){let n=T(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setUint8(0,t),this.write(n,e)}getUint16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint16(0,t)}setUint16(e,t,n){let o=N(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint16(0,t,n),this.write(o,e)}getUint32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint32(0,t)}setUint32(e,t,n){let o=N(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint32(0,t,n),this.write(o,e)}getBigUint64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigUint64(0,t)}setBigUint64(e,t,n){let o=N(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigUint64(0,t,n),this.write(o,e)}getFloat32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat32(0,t)}setFloat32(e,t,n){let o=N(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat32(0,t,n),this.write(o,e)}getFloat64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat64(0,t)}setFloat64(e,t,n){let o=N(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat64(0,t,n),this.write(o,e)}equals(e){if(e==null||!(e instanceof r)||e.bufs.length!==this.bufs.length)return!1;for(let t=0;t<this.bufs.length;t++)if(!Qe(this.bufs[t],e.bufs[t]))return!1;return!0}static fromUint8Arrays(e,t){let n=new r;return n.bufs=e,t==null&&(t=e.reduce((o,s)=>o+s.byteLength,0)),n.length=t,n}};function fe(r){let e=async function*(){let t=yield,n=new x;for await(let o of r){if(t==null){n.append(o),t=yield n,n=new x;continue}for(n.append(o);n.length>=t;){let s=n.sublist(0,t);if(n.consume(t),t=yield s,t==null){n.length>0&&(t=yield n,n=new x);break}}}if(t!=null)throw Object.assign(new Error(`stream ended before ${t} bytes became available`),{code:"ERR_UNDER_READ",buffer:n})}();return e.next(),e}function q(){let r={};return r.promise=new Promise((e,t)=>{r.resolve=e,r.reject=t}),r}var ue=class{buffer;mask;top;btm;next;constructor(e){if(!(e>0)||e-1&e)throw new Error("Max size for a FixedFIFO should be a power of two");this.buffer=new Array(e),this.mask=e-1,this.top=0,this.btm=0,this.next=null}push(e){return this.buffer[this.top]!==void 0?!1:(this.buffer[this.top]=e,this.top=this.top+1&this.mask,!0)}shift(){let e=this.buffer[this.btm];if(e!==void 0)return this.buffer[this.btm]=void 0,this.btm=this.btm+1&this.mask,e}isEmpty(){return this.buffer[this.btm]===void 0}},X=class{size;hwm;head;tail;constructor(e={}){this.hwm=e.splitLimit??16,this.head=new ue(this.hwm),this.tail=this.head,this.size=0}calculateSize(e){return e?.byteLength!=null?e.byteLength:1}push(e){if(e?.value!=null&&(this.size+=this.calculateSize(e.value)),!this.head.push(e)){let t=this.head;this.head=t.next=new ue(2*this.head.buffer.length),this.head.push(e)}}shift(){let e=this.tail.shift();if(e===void 0&&this.tail.next!=null){let t=this.tail.next;this.tail.next=null,this.tail=t,e=this.tail.shift()}return e?.value!=null&&(this.size-=this.calculateSize(e.value)),e}isEmpty(){return this.head.isEmpty()}};var xe=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.code=t??"ABORT_ERR"}};function P(r={}){return Xt(t=>{let n=t.shift();if(n==null)return{done:!0};if(n.error!=null)throw n.error;return{done:n.done===!0,value:n.value}},r)}function Xt(r,e){e=e??{};let t=e.onEnd,n=new X,o,s,i,a=q(),f=async()=>{try{return n.isEmpty()?i?{done:!0}:await new Promise((l,y)=>{s=A=>{s=null,n.push(A);try{l(r(n))}catch(g){y(g)}return o}}):r(n)}finally{n.isEmpty()&&queueMicrotask(()=>{a.resolve(),a=q()})}},u=l=>s!=null?s(l):(n.push(l),o),h=l=>(n=new X,s!=null?s({error:l}):(n.push({error:l}),o)),c=l=>{if(i)return o;if(e?.objectMode!==!0&&l?.byteLength==null)throw new Error("objectMode was not true but tried to push non-Uint8Array value");return u({done:!1,value:l})},m=l=>i?o:(i=!0,l!=null?h(l):u({done:!0})),F=()=>(n=new X,m(),{done:!0}),p=l=>(m(l),{done:!0});if(o={[Symbol.asyncIterator](){return this},next:f,return:F,throw:p,push:c,end:m,get readableLength(){return n.size},onEmpty:async l=>{let y=l?.signal;if(y?.throwIfAborted(),n.isEmpty())return;let A,g;y!=null&&(A=new Promise((L,v)=>{g=()=>{v(new xe)},y.addEventListener("abort",g)}));try{await Promise.race([a.promise,A])}finally{g!=null&&y!=null&&y?.removeEventListener("abort",g)}}},t==null)return o;let w=o;return o={[Symbol.asyncIterator](){return this},next(){return w.next()},throw(l){return w.throw(l),t!=null&&(t(l),t=void 0),{done:!0}},return(){return w.return(),t!=null&&(t(),t=void 0),{done:!0}},push:c,end(l){return w.end(l),t!=null&&(t(l),t=void 0),o},get readableLength(){return w.readableLength}},o}function he(r){let e=P(),t=fe(r.source),n=q(),o,s=r.sink(async function*(){yield*e,yield*await n.promise}());return s.catch(a=>{o=a}),{reader:t,writer:e,stream:{sink:async a=>{if(o!=null){await Promise.reject(o);return}n.resolve(a),await s},source:t},rest:()=>e.end(),write:e.push,read:async()=>{let a=await t.next();if(a.value!=null)return a.value}}}function Jt(r){return r[Symbol.asyncIterator]!=null}function Kt(...r){let e=[];for(let t of r)Jt(t)||e.push(t);return e.length===r.length?function*(){for(let t of e)yield*t}():async function*(){let t=P({objectMode:!0});Promise.resolve().then(async()=>{try{await Promise.all(r.map(async n=>{for await(let o of n)t.push(o)})),t.end()}catch(n){t.end(n)}}),yield*t}()}var le=Kt;var Ue={};S(Ue,{base10:()=>tr});function Qt(r,e){if(r.length>=255)throw new TypeError("Alphabet too long");for(var t=new Uint8Array(256),n=0;n<t.length;n++)t[n]=255;for(var o=0;o<r.length;o++){var s=r.charAt(o),i=s.charCodeAt(0);if(t[i]!==255)throw new TypeError(s+" is ambiguous");t[i]=o}var a=r.length,f=r.charAt(0),u=Math.log(a)/Math.log(256),h=Math.log(256)/Math.log(a);function c(p){if(p instanceof Uint8Array||(ArrayBuffer.isView(p)?p=new Uint8Array(p.buffer,p.byteOffset,p.byteLength):Array.isArray(p)&&(p=Uint8Array.from(p))),!(p instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(p.length===0)return"";for(var w=0,l=0,y=0,A=p.length;y!==A&&p[y]===0;)y++,w++;for(var g=(A-y)*h+1>>>0,L=new Uint8Array(g);y!==A;){for(var v=p[y],_=0,R=g-1;(v!==0||_<l)&&R!==-1;R--,_++)v+=256*L[R]>>>0,L[R]=v%a>>>0,v=v/a>>>0;if(v!==0)throw new Error("Non-zero carry");l=_,y++}for(var I=g-l;I!==g&&L[I]===0;)I++;for(var ie=f.repeat(w);I<g;++I)ie+=r.charAt(L[I]);return ie}function m(p){if(typeof p!="string")throw new TypeError("Expected String");if(p.length===0)return new Uint8Array;var w=0;if(p[w]!==" "){for(var l=0,y=0;p[w]===f;)l++,w++;for(var A=(p.length-w)*u+1>>>0,g=new Uint8Array(A);p[w];){var L=t[p.charCodeAt(w)];if(L===255)return;for(var v=0,_=A-1;(L!==0||v<y)&&_!==-1;_--,v++)L+=a*g[_]>>>0,g[_]=L%256>>>0,L=L/256>>>0;if(L!==0)throw new Error("Non-zero carry");y=v,w++}if(p[w]!==" "){for(var R=A-y;R!==A&&g[R]===0;)R++;for(var I=new Uint8Array(l+(A-R)),ie=l;R!==A;)I[ie++]=g[R++];return I}}}function F(p){var w=m(p);if(w)return w;throw new Error(`Non-${e} character`)}return{encode:c,decodeUnsafe:m,decode:F}}var Yt=Qt,Wt=Yt,Ze=Wt;var Yn=new Uint8Array(0);var et=(r,e)=>{if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0},C=r=>{if(r instanceof Uint8Array&&r.constructor.name==="Uint8Array")return r;if(r instanceof ArrayBuffer)return new Uint8Array(r);if(ArrayBuffer.isView(r))return new Uint8Array(r.buffer,r.byteOffset,r.byteLength);throw new Error("Unknown type, must be binary type")};var tt=r=>new TextEncoder().encode(r),rt=r=>new TextDecoder().decode(r);var Ee=class{constructor(e,t,n){this.name=e,this.prefix=t,this.baseEncode=n}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}},Ae=class{constructor(e,t,n){if(this.name=e,this.prefix=t,t.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=t.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 ot(this,e)}},Le=class{constructor(e){this.decoders=e}or(e){return ot(this,e)}decode(e){let t=e[0],n=this.decoders[t];if(n)return n.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}},ot=(r,e)=>new Le({...r.decoders||{[r.prefix]:r},...e.decoders||{[e.prefix]:e}}),Se=class{constructor(e,t,n,o){this.name=e,this.prefix=t,this.baseEncode=n,this.baseDecode=o,this.encoder=new Ee(e,t,n),this.decoder=new Ae(e,t,o)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}},J=({name:r,prefix:e,encode:t,decode:n})=>new Se(r,e,t,n),k=({prefix:r,name:e,alphabet:t})=>{let{encode:n,decode:o}=Ze(t,e);return J({prefix:r,name:e,encode:n,decode:s=>C(o(s))})},Zt=(r,e,t,n)=>{let o={};for(let h=0;h<e.length;++h)o[e[h]]=h;let s=r.length;for(;r[s-1]==="=";)--s;let i=new Uint8Array(s*t/8|0),a=0,f=0,u=0;for(let h=0;h<s;++h){let c=o[r[h]];if(c===void 0)throw new SyntaxError(`Non-${n} character`);f=f<<t|c,a+=t,a>=8&&(a-=8,i[u++]=255&f>>a)}if(a>=t||255&f<<8-a)throw new SyntaxError("Unexpected end of data");return i},er=(r,e,t)=>{let n=e[e.length-1]==="=",o=(1<<t)-1,s="",i=0,a=0;for(let f=0;f<r.length;++f)for(a=a<<8|r[f],i+=8;i>t;)i-=t,s+=e[o&a>>i];if(i&&(s+=e[o&a<<t-i]),n)for(;s.length*t&7;)s+="=";return s},b=({name:r,prefix:e,bitsPerChar:t,alphabet:n})=>J({prefix:e,name:r,encode(o){return er(o,n,t)},decode(o){return Zt(o,n,t,r)}});var tr=k({prefix:"9",name:"base10",alphabet:"0123456789"});var ve={};S(ve,{base16:()=>rr,base16upper:()=>nr});var rr=b({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),nr=b({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var De={};S(De,{base2:()=>or});var or=b({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var Re={};S(Re,{base256emoji:()=>fr});var st=Array.from("\u{1F680}\u{1FA90}\u2604\u{1F6F0}\u{1F30C}\u{1F311}\u{1F312}\u{1F313}\u{1F314}\u{1F315}\u{1F316}\u{1F317}\u{1F318}\u{1F30D}\u{1F30F}\u{1F30E}\u{1F409}\u2600\u{1F4BB}\u{1F5A5}\u{1F4BE}\u{1F4BF}\u{1F602}\u2764\u{1F60D}\u{1F923}\u{1F60A}\u{1F64F}\u{1F495}\u{1F62D}\u{1F618}\u{1F44D}\u{1F605}\u{1F44F}\u{1F601}\u{1F525}\u{1F970}\u{1F494}\u{1F496}\u{1F499}\u{1F622}\u{1F914}\u{1F606}\u{1F644}\u{1F4AA}\u{1F609}\u263A\u{1F44C}\u{1F917}\u{1F49C}\u{1F614}\u{1F60E}\u{1F607}\u{1F339}\u{1F926}\u{1F389}\u{1F49E}\u270C\u2728\u{1F937}\u{1F631}\u{1F60C}\u{1F338}\u{1F64C}\u{1F60B}\u{1F497}\u{1F49A}\u{1F60F}\u{1F49B}\u{1F642}\u{1F493}\u{1F929}\u{1F604}\u{1F600}\u{1F5A4}\u{1F603}\u{1F4AF}\u{1F648}\u{1F447}\u{1F3B6}\u{1F612}\u{1F92D}\u2763\u{1F61C}\u{1F48B}\u{1F440}\u{1F62A}\u{1F611}\u{1F4A5}\u{1F64B}\u{1F61E}\u{1F629}\u{1F621}\u{1F92A}\u{1F44A}\u{1F973}\u{1F625}\u{1F924}\u{1F449}\u{1F483}\u{1F633}\u270B\u{1F61A}\u{1F61D}\u{1F634}\u{1F31F}\u{1F62C}\u{1F643}\u{1F340}\u{1F337}\u{1F63B}\u{1F613}\u2B50\u2705\u{1F97A}\u{1F308}\u{1F608}\u{1F918}\u{1F4A6}\u2714\u{1F623}\u{1F3C3}\u{1F490}\u2639\u{1F38A}\u{1F498}\u{1F620}\u261D\u{1F615}\u{1F33A}\u{1F382}\u{1F33B}\u{1F610}\u{1F595}\u{1F49D}\u{1F64A}\u{1F639}\u{1F5E3}\u{1F4AB}\u{1F480}\u{1F451}\u{1F3B5}\u{1F91E}\u{1F61B}\u{1F534}\u{1F624}\u{1F33C}\u{1F62B}\u26BD\u{1F919}\u2615\u{1F3C6}\u{1F92B}\u{1F448}\u{1F62E}\u{1F646}\u{1F37B}\u{1F343}\u{1F436}\u{1F481}\u{1F632}\u{1F33F}\u{1F9E1}\u{1F381}\u26A1\u{1F31E}\u{1F388}\u274C\u270A\u{1F44B}\u{1F630}\u{1F928}\u{1F636}\u{1F91D}\u{1F6B6}\u{1F4B0}\u{1F353}\u{1F4A2}\u{1F91F}\u{1F641}\u{1F6A8}\u{1F4A8}\u{1F92C}\u2708\u{1F380}\u{1F37A}\u{1F913}\u{1F619}\u{1F49F}\u{1F331}\u{1F616}\u{1F476}\u{1F974}\u25B6\u27A1\u2753\u{1F48E}\u{1F4B8}\u2B07\u{1F628}\u{1F31A}\u{1F98B}\u{1F637}\u{1F57A}\u26A0\u{1F645}\u{1F61F}\u{1F635}\u{1F44E}\u{1F932}\u{1F920}\u{1F927}\u{1F4CC}\u{1F535}\u{1F485}\u{1F9D0}\u{1F43E}\u{1F352}\u{1F617}\u{1F911}\u{1F30A}\u{1F92F}\u{1F437}\u260E\u{1F4A7}\u{1F62F}\u{1F486}\u{1F446}\u{1F3A4}\u{1F647}\u{1F351}\u2744\u{1F334}\u{1F4A3}\u{1F438}\u{1F48C}\u{1F4CD}\u{1F940}\u{1F922}\u{1F445}\u{1F4A1}\u{1F4A9}\u{1F450}\u{1F4F8}\u{1F47B}\u{1F910}\u{1F92E}\u{1F3BC}\u{1F975}\u{1F6A9}\u{1F34E}\u{1F34A}\u{1F47C}\u{1F48D}\u{1F4E3}\u{1F942}"),sr=st.reduce((r,e,t)=>(r[t]=e,r),[]),ir=st.reduce((r,e,t)=>(r[e.codePointAt(0)]=t,r),[]);function ar(r){return r.reduce((e,t)=>(e+=sr[t],e),"")}function cr(r){let e=[];for(let t of r){let n=ir[t.codePointAt(0)];if(n===void 0)throw new Error(`Non-base256emoji character: ${t}`);e.push(n)}return new Uint8Array(e)}var fr=J({prefix:"\u{1F680}",name:"base256emoji",encode:ar,decode:cr});var Te={};S(Te,{base32:()=>K,base32hex:()=>dr,base32hexpad:()=>br,base32hexpadupper:()=>mr,base32hexupper:()=>pr,base32pad:()=>hr,base32padupper:()=>lr,base32upper:()=>ur,base32z:()=>wr});var K=b({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),ur=b({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),hr=b({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),lr=b({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),dr=b({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),pr=b({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),br=b({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),mr=b({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),wr=b({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var Oe={};S(Oe,{base36:()=>yr,base36upper:()=>gr});var yr=k({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),gr=k({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var Ie={};S(Ie,{base58btc:()=>O,base58flickr:()=>xr});var O=k({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),xr=k({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var Ne={};S(Ne,{base64:()=>Er,base64pad:()=>Ar,base64url:()=>Lr,base64urlpad:()=>Sr});var Er=b({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),Ar=b({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),Lr=b({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),Sr=b({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var Ce={};S(Ce,{base8:()=>Ur});var Ur=b({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var Fe={};S(Fe,{identity:()=>vr});var vr=J({prefix:"\0",name:"identity",encode:r=>rt(r),decode:r=>tt(r)});var lo=new TextEncoder,po=new TextDecoder;var Me={};S(Me,{identity:()=>Kr});var Tr=ct,it=128,Or=127,Ir=~Or,Nr=Math.pow(2,31);function ct(r,e,t){e=e||[],t=t||0;for(var n=t;r>=Nr;)e[t++]=r&255|it,r/=128;for(;r&Ir;)e[t++]=r&255|it,r>>>=7;return e[t]=r|0,ct.bytes=t-n+1,e}var Cr=_e,Fr=128,at=127;function _e(r,n){var t=0,n=n||0,o=0,s=n,i,a=r.length;do{if(s>=a)throw _e.bytes=0,new RangeError("Could not decode varint");i=r[s++],t+=o<28?(i&at)<<o:(i&at)*Math.pow(2,o),o+=7}while(i>=Fr);return _e.bytes=s-n,t}var _r=Math.pow(2,7),Mr=Math.pow(2,14),Pr=Math.pow(2,21),kr=Math.pow(2,28),Br=Math.pow(2,35),Vr=Math.pow(2,42),zr=Math.pow(2,49),Gr=Math.pow(2,56),Hr=Math.pow(2,63),$r=function(r){return r<_r?1:r<Mr?2:r<Pr?3:r<kr?4:r<Br?5:r<Vr?6:r<zr?7:r<Gr?8:r<Hr?9:10},jr={encode:Tr,decode:Cr,encodingLength:$r},qr=jr,ee=qr;var te=(r,e=0)=>[ee.decode(r,e),ee.decode.bytes],Q=(r,e,t=0)=>(ee.encode(r,e,t),e),Y=r=>ee.encodingLength(r);var z=(r,e)=>{let t=e.byteLength,n=Y(r),o=n+Y(t),s=new Uint8Array(o+t);return Q(r,s,0),Q(t,s,n),s.set(e,o),new W(r,t,e,s)},ft=r=>{let e=C(r),[t,n]=te(e),[o,s]=te(e.subarray(n)),i=e.subarray(n+s);if(i.byteLength!==o)throw new Error("Incorrect length");return new W(t,o,i,e)},ut=(r,e)=>{if(r===e)return!0;{let t=e;return r.code===t.code&&r.size===t.size&&t.bytes instanceof Uint8Array&&et(r.bytes,t.bytes)}},W=class{constructor(e,t,n,o){this.code=e,this.size=t,this.digest=n,this.bytes=o}};var ht=0,Xr="identity",lt=C,Jr=r=>z(ht,lt(r)),Kr={code:ht,name:Xr,encode:lt,digest:Jr};var Be={};S(Be,{sha256:()=>Qr,sha512:()=>Yr});var ke=({name:r,code:e,encode:t})=>new Pe(r,e,t),Pe=class{constructor(e,t,n){this.name=e,this.code=t,this.encode=n}digest(e){if(e instanceof Uint8Array){let t=this.encode(e);return t instanceof Uint8Array?z(this.code,t):t.then(n=>z(this.code,n))}else throw Error("Unknown type, must be binary type")}};var pt=r=>async e=>new Uint8Array(await crypto.subtle.digest(r,e)),Qr=ke({name:"sha2-256",code:18,encode:pt("SHA-256")}),Yr=ke({name:"sha2-512",code:19,encode:pt("SHA-512")});var bt=(r,e)=>{let{bytes:t,version:n}=r;switch(n){case 0:return Zr(t,Ve(r),e||O.encoder);default:return en(t,Ve(r),e||K.encoder)}};var mt=new WeakMap,Ve=r=>{let e=mt.get(r);if(e==null){let t=new Map;return mt.set(r,t),t}return e},pe=class r{constructor(e,t,n,o){this.code=t,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:t}=this;if(e!==ne)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==tn)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return r.createV0(t)}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:t}=this.multihash,n=z(e,t);return r.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 r.equals(this,e)}static equals(e,t){let n=t;return n&&e.code===n.code&&e.version===n.version&&ut(e.multihash,n.multihash)}toString(e){return bt(this,e)}toJSON(){return{"/":bt(this)}}link(){return this}get[Symbol.toStringTag](){return"CID"}[Symbol.for("nodejs.util.inspect.custom")](){return`CID(${this.toString()})`}static asCID(e){if(e==null)return null;let t=e;if(t instanceof r)return t;if(t["/"]!=null&&t["/"]===t.bytes||t.asCID===t){let{version:n,code:o,multihash:s,bytes:i}=t;return new r(n,o,s,i||wt(n,o,s.bytes))}else if(t[rn]===!0){let{version:n,multihash:o,code:s}=t,i=ft(o);return r.create(n,s,i)}else return null}static create(e,t,n){if(typeof t!="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(t!==ne)throw new Error(`Version 0 CID must use dag-pb (code: ${ne}) block encoding`);return new r(e,t,n,n.bytes)}case 1:{let o=wt(e,t,n.bytes);return new r(e,t,n,o)}default:throw new Error("Invalid version")}}static createV0(e){return r.create(0,ne,e)}static createV1(e,t){return r.create(1,e,t)}static decode(e){let[t,n]=r.decodeFirst(e);if(n.length)throw new Error("Incorrect length");return t}static decodeFirst(e){let t=r.inspectBytes(e),n=t.size-t.multihashSize,o=C(e.subarray(n,n+t.multihashSize));if(o.byteLength!==t.multihashSize)throw new Error("Incorrect length");let s=o.subarray(t.multihashSize-t.digestSize),i=new W(t.multihashCode,t.digestSize,s,o);return[t.version===0?r.createV0(i):r.createV1(t.codec,i),e.subarray(t.size)]}static inspectBytes(e){let t=0,n=()=>{let[c,m]=te(e.subarray(t));return t+=m,c},o=n(),s=ne;if(o===18?(o=0,t=0):s=n(),o!==0&&o!==1)throw new RangeError(`Invalid CID version ${o}`);let i=t,a=n(),f=n(),u=t+f,h=u-i;return{version:o,codec:s,multihashCode:a,digestSize:f,multihashSize:h,size:u}}static parse(e,t){let[n,o]=Wr(e,t),s=r.decode(o);if(s.version===0&&e[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return Ve(s).set(n,e),s}},Wr=(r,e)=>{switch(r[0]){case"Q":{let t=e||O;return[O.prefix,t.decode(`${O.prefix}${r}`)]}case O.prefix:{let t=e||O;return[O.prefix,t.decode(r)]}case K.prefix:{let t=e||K;return[K.prefix,t.decode(r)]}default:{if(e==null)throw Error("To parse non base32 or base58btc encoded CID multibase decoder must be provided");return[r[0],e.decode(r)]}}},Zr=(r,e,t)=>{let{prefix:n}=t;if(n!==O.prefix)throw Error(`Cannot string encode V0 in ${t.name} encoding`);let o=e.get(n);if(o==null){let s=t.encode(r).slice(1);return e.set(n,s),s}else return o},en=(r,e,t)=>{let{prefix:n}=t,o=e.get(n);if(o==null){let s=t.encode(r);return e.set(n,s),s}else return o},ne=112,tn=18,wt=(r,e,t)=>{let n=Y(r),o=n+Y(e),s=new Uint8Array(o+t.byteLength);return Q(r,s,0),Q(e,s,n),s.set(t,o),s},rn=Symbol.for("@ipld/js-cid/CID");var ze={...Fe,...De,...Ce,...Ue,...ve,...Te,...Oe,...Ie,...Ne,...Re},Oo={...Be,...Me};function gt(r,e,t,n){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:n}}}var yt=gt("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),Ge=gt("ascii","a",r=>{let e="a";for(let t=0;t<r.length;t++)e+=String.fromCharCode(r[t]);return e},r=>{r=r.substring(1);let e=T(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),nn={utf8:yt,"utf-8":yt,hex:ze.base16,latin1:Ge,ascii:Ge,binary:Ge,...ze},be=nn;function U(r,e="utf8"){let t=be[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return(e==="utf8"||e==="utf-8")&&globalThis.Buffer!=null&&globalThis.Buffer.from!=null?V(globalThis.Buffer.from(r,"utf-8")):t.decoder.decode(`${t.prefix}${r}`)}var oe=class extends Error{constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.code=t??"ABORT_ERR"}};function xt(r){if(r!=null){if(typeof r[Symbol.iterator]=="function")return r[Symbol.iterator]();if(typeof r[Symbol.asyncIterator]=="function")return r[Symbol.asyncIterator]();if(typeof r.next=="function")return r}throw new Error("argument is not an iterator or iterable")}function Et(r,e,t){let n=t??{},o=xt(r);async function*s(){let i,a=()=>{i?.()};for(e.addEventListener("abort",a);;){let f;try{if(e.aborted){let{abortMessage:h,abortCode:c}=n;throw new oe(h,c)}let u=new Promise((h,c)=>{i=()=>{let{abortMessage:m,abortCode:F}=n;c(new oe(m,F))}});f=await Promise.race([u,o.next()]),i=null}catch(u){e.removeEventListener("abort",a);let h=u.type==="aborted"&&e.aborted;if(h&&n.onAbort!=null&&n.onAbort(r),typeof o.return=="function")try{let c=o.return();c instanceof Promise&&c.catch(m=>{n.onReturnError!=null&&n.onReturnError(m)})}catch(c){n.onReturnError!=null&&n.onReturnError(c)}if(h&&n.returnOnAbort===!0)return;throw u}if(f.done===!0)break;yield f.value}e.removeEventListener("abort",a)}return s()}function on(r){return r[Symbol.asyncIterator]!=null}function sn(r){if(on(r))return(async()=>{for await(let e of r)return e})();for(let e of r)return e}var At=sn;var an=Math.pow(2,7),cn=Math.pow(2,14),fn=Math.pow(2,21),He=Math.pow(2,28),$e=Math.pow(2,35),je=Math.pow(2,42),qe=Math.pow(2,49),d=128,E=127;function G(r){if(r<an)return 1;if(r<cn)return 2;if(r<fn)return 3;if(r<He)return 4;if(r<$e)return 5;if(r<je)return 6;if(r<qe)return 7;if(Number.MAX_SAFE_INTEGER!=null&&r>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function un(r,e,t=0){switch(G(r)){case 8:e[t++]=r&255|d,r/=128;case 7:e[t++]=r&255|d,r/=128;case 6:e[t++]=r&255|d,r/=128;case 5:e[t++]=r&255|d,r/=128;case 4:e[t++]=r&255|d,r>>>=7;case 3:e[t++]=r&255|d,r>>>=7;case 2:e[t++]=r&255|d,r>>>=7;case 1:{e[t++]=r&255,r>>>=7;break}default:throw new Error("unreachable")}return e}function hn(r,e,t=0){switch(G(r)){case 8:e.set(t++,r&255|d),r/=128;case 7:e.set(t++,r&255|d),r/=128;case 6:e.set(t++,r&255|d),r/=128;case 5:e.set(t++,r&255|d),r/=128;case 4:e.set(t++,r&255|d),r>>>=7;case 3:e.set(t++,r&255|d),r>>>=7;case 2:e.set(t++,r&255|d),r>>>=7;case 1:{e.set(t++,r&255),r>>>=7;break}default:throw new Error("unreachable")}return e}function ln(r,e){let t=r[e],n=0;if(n+=t&E,t<d||(t=r[e+1],n+=(t&E)<<7,t<d)||(t=r[e+2],n+=(t&E)<<14,t<d)||(t=r[e+3],n+=(t&E)<<21,t<d)||(t=r[e+4],n+=(t&E)*He,t<d)||(t=r[e+5],n+=(t&E)*$e,t<d)||(t=r[e+6],n+=(t&E)*je,t<d)||(t=r[e+7],n+=(t&E)*qe,t<d))return n;throw new RangeError("Could not decode varint")}function dn(r,e){let t=r.get(e),n=0;if(n+=t&E,t<d||(t=r.get(e+1),n+=(t&E)<<7,t<d)||(t=r.get(e+2),n+=(t&E)<<14,t<d)||(t=r.get(e+3),n+=(t&E)<<21,t<d)||(t=r.get(e+4),n+=(t&E)*He,t<d)||(t=r.get(e+5),n+=(t&E)*$e,t<d)||(t=r.get(e+6),n+=(t&E)*je,t<d)||(t=r.get(e+7),n+=(t&E)*qe,t<d))return n;throw new RangeError("Could not decode varint")}function Lt(r,e,t=0){return e==null&&(e=T(G(r))),e instanceof Uint8Array?un(r,e,t):hn(r,e,t)}function St(r,e=0){return r instanceof Uint8Array?ln(r,e):dn(r,e)}function me(r){return r[Symbol.asyncIterator]!=null}var we=r=>{let e=G(r),t=T(e);return Lt(r,t),we.bytes=e,t};we.bytes=0;function ye(r,e){e=e??{};let t=e.lengthEncoder??we;function*n(o){let s=t(o.byteLength);s instanceof Uint8Array?yield s:yield*s,o instanceof Uint8Array?yield o:yield*o}return me(r)?async function*(){for await(let o of r)yield*n(o)}():function*(){for(let o of r)yield*n(o)}()}ye.single=(r,e)=>{e=e??{};let t=e.lengthEncoder??we;return new x(t(r.byteLength),r)};var Z=jt(Rt(),1);var bn=8,mn=1024*1024*4,H;(function(r){r[r.LENGTH=0]="LENGTH",r[r.DATA=1]="DATA"})(H||(H={}));var Xe=r=>{let e=St(r);return Xe.bytes=G(e),e};Xe.bytes=0;function se(r,e){let t=new x,n=H.LENGTH,o=-1,s=e?.lengthDecoder??Xe,i=e?.maxLengthLength??bn,a=e?.maxDataLength??mn;function*f(){for(;t.byteLength>0;){if(n===H.LENGTH)try{if(o=s(t),o<0)throw(0,Z.default)(new Error("invalid message length"),"ERR_INVALID_MSG_LENGTH");if(o>a)throw(0,Z.default)(new Error("message length too long"),"ERR_MSG_DATA_TOO_LONG");let u=s.bytes;t.consume(u),e?.onLength!=null&&e.onLength(o),n=H.DATA}catch(u){if(u instanceof RangeError){if(t.byteLength>i)throw(0,Z.default)(new Error("message length length too long"),"ERR_MSG_LENGTH_TOO_LONG");break}throw u}if(n===H.DATA){if(t.byteLength<o)break;let u=t.sublist(0,o);t.consume(o),e?.onData!=null&&e.onData(u),yield u,n=H.LENGTH}}}return me(r)?async function*(){for await(let u of r)t.append(u),yield*f();if(t.byteLength>0)throw(0,Z.default)(new Error("unexpected end of input"),"ERR_UNEXPECTED_EOF")}():function*(){for(let u of r)t.append(u),yield*f();if(t.byteLength>0)throw(0,Z.default)(new Error("unexpected end of input"),"ERR_UNEXPECTED_EOF")}()}se.fromReader=(r,e)=>{let t=1,n=async function*(){for(;;)try{let{done:s,value:i}=await r.next(t);if(s===!0)return;i!=null&&(yield i)}catch(s){if(s.code==="ERR_UNDER_READ")return{done:!0,value:null};throw s}finally{t=1}}();return se(n,{...e??{},onLength:s=>{t=s}})};function Tt(r,...e){if(r==null)throw new Error("Empty pipeline");if(Je(r)){let n=r;r=()=>n.source}else if(It(r)||Ot(r)){let n=r;r=()=>n}let t=[r,...e];if(t.length>1&&Je(t[t.length-1])&&(t[t.length-1]=t[t.length-1].sink),t.length>2)for(let n=1;n<t.length-1;n++)Je(t[n])&&(t[n]=gn(t[n]));return yn(...t)}var yn=(...r)=>{let e;for(;r.length>0;)e=r.shift()(e);return e},Ot=r=>r?.[Symbol.asyncIterator]!=null,It=r=>r?.[Symbol.iterator]!=null,Je=r=>r==null?!1:r.sink!=null&&r.source!=null,gn=r=>e=>{let t=r.sink(e);if(t?.then!=null){let n=P({objectMode:!0});t.then(()=>{n.end()},i=>{n.end(i)});let o,s=r.source;if(Ot(s))o=async function*(){yield*s,n.end()};else if(It(s))o=function*(){yield*s,n.end()};else throw new Error("Unknown duplex source type - must be Iterable or AsyncIterable");return le(n,o())}return r.source};function Nt(r,e="utf8"){let t=be[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return(e==="utf8"||e==="utf-8")&&globalThis.Buffer!=null&&globalThis.Buffer.from!=null?globalThis.Buffer.from(r.buffer,r.byteOffset,r.byteLength).toString("utf8"):t.encoder.encode(r).substring(1)}var Ct=U(`
|
|
3
|
+
`);function $(r){let e=new x(r,Ct);return ye.single(e)}function j(r,e,t){let n=$(e);t?.writeBytes===!0?r.push(n.subarray()):r.push(n)}function Ft(r,e,t){let n=new x;for(let o of e)n.append($(o));t?.writeBytes===!0?r.push(n.subarray()):r.push(n)}async function En(r,e){let t=1,n={[Symbol.asyncIterator]:()=>n,next:async()=>r.next(t)},o=n;e?.signal!=null&&(o=Et(n,e.signal));let s=a=>{t=a},i=await Tt(o,a=>se(a,{onLength:s,maxDataLength:1024}),async a=>At(a));if(i==null||i.length===0)throw new M("no buffer returned","ERR_INVALID_MULTISTREAM_SELECT_MESSAGE");if(i.get(i.byteLength-1)!==Ct[0])throw e?.log.error("Invalid mss message - missing newline - %s",i.subarray()),new M("missing newline","ERR_INVALID_MULTISTREAM_SELECT_MESSAGE");return i.sublist(0,-1)}async function B(r,e){let t=await En(r,e);return Nt(t.subarray())}async function Mt(r,e,t){e=Array.isArray(e)?[...e]:[e];let{reader:n,writer:o,rest:s,stream:i}=he(r),a=e.shift();if(a==null)throw new Error("At least one protocol must be specified");t?.log.trace('select: write ["%s", "%s"]',D,a);let f=U(D),u=U(a);Ft(o,[f,u],t);let h=await B(n,t);if(t?.log.trace('select: read "%s"',h),h===D&&(h=await B(n,t),t?.log.trace('select: read "%s"',h)),h===a)return s(),{stream:i,protocol:a};for(let c of e){t?.log.trace('select: write "%s"',c),j(o,U(c),t);let m=await B(n,t);if(t?.log.trace('select: read "%s" for "%s"',m,c),m===c)return s(),{stream:i,protocol:c}}throw s(),new M("protocol selection failed","ERR_UNSUPPORTED_PROTOCOL")}function Pt(r,e){let t=P(),n=!1;return{stream:{sink:async o=>{await r.sink(async function*(){let s=!0;for await(let i of le(o,t))if(s){s=!1,n=!0,t.end();let a=U(D),f=U(e),u=new x($(a),$(f));i.length>0&&u.append(i),yield*u}else yield i}())},source:async function*(){n||t.push(new Uint8Array);let o=fe(r.source),s=await B(o);if(s===D&&(s=await B(o)),s!==e)throw new M("protocol selection failed","ERR_UNSUPPORTED_PROTOCOL");for await(let i of o)yield*i}()},protocol:e}}async function kt(r,e,t){e=Array.isArray(e)?e:[e];let{writer:n,reader:o,rest:s,stream:i}=he(r);for(;;){let a=await B(o,t);if(t?.log.trace('read "%s"',a),a===D){t?.log.trace('respond with "%s" for "%s"',D,a),j(n,U(D),t);continue}if(e.includes(a))return j(n,U(a),t),t?.log.trace('respond with "%s" for "%s"',a,a),s(),{stream:i,protocol:a};if(a==="ls"){j(n,new x(...e.map(f=>$(U(f)))),t),t?.log.trace('respond with "%s" for %s',e,a);continue}j(n,U("na"),t),t?.log('respond with "na" for "%s"',a)}}return qt(An);})();
|
|
4
4
|
return Libp2PMultistreamSelect}));
|
package/dist/src/handle.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handle.d.ts","sourceRoot":"","sources":["../../src/handle.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"handle.d.ts","sourceRoot":"","sources":["../../src/handle.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAI/C,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAyB,cAAc,EAAE,MAAM,YAAY,CAAA;AACpG,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAErD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,wBAAsB,MAAM,CAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAA;AAChL,wBAAsB,MAAM,CAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,cAAc,GAAG,UAAU,CAAC,EAAE,MAAM,CAAC,cAAc,GAAG,UAAU,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,cAAc,EAAE,cAAc,GAAG,UAAU,CAAC,CAAC,CAAA"}
|
package/dist/src/handle.js
CHANGED
|
@@ -1,24 +1,22 @@
|
|
|
1
|
-
import { logger } from '@libp2p/logger';
|
|
2
1
|
import { handshake } from 'it-handshake';
|
|
3
2
|
import { Uint8ArrayList } from 'uint8arraylist';
|
|
4
3
|
import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
|
|
5
4
|
import { PROTOCOL_ID } from './constants.js';
|
|
6
5
|
import * as multistream from './multistream.js';
|
|
7
|
-
const log = logger('libp2p:mss:handle');
|
|
8
6
|
export async function handle(stream, protocols, options) {
|
|
9
7
|
protocols = Array.isArray(protocols) ? protocols : [protocols];
|
|
10
8
|
const { writer, reader, rest, stream: shakeStream } = handshake(stream);
|
|
11
9
|
while (true) {
|
|
12
10
|
const protocol = await multistream.readString(reader, options);
|
|
13
|
-
log.trace('read "%s"', protocol);
|
|
11
|
+
options?.log.trace('read "%s"', protocol);
|
|
14
12
|
if (protocol === PROTOCOL_ID) {
|
|
15
|
-
log.trace('respond with "%s" for "%s"', PROTOCOL_ID, protocol);
|
|
13
|
+
options?.log.trace('respond with "%s" for "%s"', PROTOCOL_ID, protocol);
|
|
16
14
|
multistream.write(writer, uint8ArrayFromString(PROTOCOL_ID), options);
|
|
17
15
|
continue;
|
|
18
16
|
}
|
|
19
17
|
if (protocols.includes(protocol)) {
|
|
20
18
|
multistream.write(writer, uint8ArrayFromString(protocol), options);
|
|
21
|
-
log.trace('respond with "%s" for "%s"', protocol, protocol);
|
|
19
|
+
options?.log.trace('respond with "%s" for "%s"', protocol, protocol);
|
|
22
20
|
rest();
|
|
23
21
|
return { stream: shakeStream, protocol };
|
|
24
22
|
}
|
|
@@ -26,11 +24,11 @@ export async function handle(stream, protocols, options) {
|
|
|
26
24
|
// <varint-msg-len><varint-proto-name-len><proto-name>\n<varint-proto-name-len><proto-name>\n\n
|
|
27
25
|
multistream.write(writer, new Uint8ArrayList(...protocols.map(p => multistream.encode(uint8ArrayFromString(p)))), options);
|
|
28
26
|
// multistream.writeAll(writer, protocols.map(p => uint8ArrayFromString(p)))
|
|
29
|
-
log.trace('respond with "%s" for %s', protocols, protocol);
|
|
27
|
+
options?.log.trace('respond with "%s" for %s', protocols, protocol);
|
|
30
28
|
continue;
|
|
31
29
|
}
|
|
32
30
|
multistream.write(writer, uint8ArrayFromString('na'), options);
|
|
33
|
-
log('respond with "na" for "%s"', protocol);
|
|
31
|
+
options?.log('respond with "na" for "%s"', protocol);
|
|
34
32
|
}
|
|
35
33
|
}
|
|
36
34
|
//# sourceMappingURL=handle.js.map
|
package/dist/src/handle.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handle.js","sourceRoot":"","sources":["../../src/handle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"handle.js","sourceRoot":"","sources":["../../src/handle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAE,UAAU,IAAI,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAoD/C,MAAM,CAAC,KAAK,UAAU,MAAM,CAAE,MAAW,EAAE,SAA4B,EAAE,OAA+B;IACtG,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;IAC9D,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC,CAAA;IAEvE,OAAO,IAAI,EAAE;QACX,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAC9D,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;QAEzC,IAAI,QAAQ,KAAK,WAAW,EAAE;YAC5B,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,4BAA4B,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAA;YACvE,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,oBAAoB,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,CAAA;YACrE,SAAQ;SACT;QAED,IAAI,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;YAChC,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,oBAAoB,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAA;YAClE,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,4BAA4B,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAA;YACpE,IAAI,EAAE,CAAA;YACN,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAA;SACzC;QAED,IAAI,QAAQ,KAAK,IAAI,EAAE;YACrB,+FAA+F;YAC/F,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,cAAc,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;YAC1H,4EAA4E;YAC5E,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,0BAA0B,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAA;YACnE,SAAQ;SACT;QAED,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,oBAAoB,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAA;QAC9D,OAAO,EAAE,GAAG,CAAC,4BAA4B,EAAE,QAAQ,CAAC,CAAA;KACrD;AACH,CAAC"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -20,20 +20,20 @@
|
|
|
20
20
|
* ```
|
|
21
21
|
*/
|
|
22
22
|
import { PROTOCOL_ID } from './constants.js';
|
|
23
|
-
import type { AbortOptions } from '@libp2p/interface';
|
|
23
|
+
import type { AbortOptions, LoggerOptions } from '@libp2p/interface';
|
|
24
24
|
import type { Duplex, Source } from 'it-stream-types';
|
|
25
25
|
export { PROTOCOL_ID };
|
|
26
26
|
export interface ProtocolStream<TSource, TSink = TSource, RSink = Promise<void>> {
|
|
27
27
|
stream: Duplex<AsyncGenerator<TSource>, Source<TSink>, RSink>;
|
|
28
28
|
protocol: string;
|
|
29
29
|
}
|
|
30
|
-
export interface ByteArrayInit extends AbortOptions {
|
|
30
|
+
export interface ByteArrayInit extends AbortOptions, LoggerOptions {
|
|
31
31
|
writeBytes: true;
|
|
32
32
|
}
|
|
33
|
-
export interface ByteListInit extends AbortOptions {
|
|
33
|
+
export interface ByteListInit extends AbortOptions, LoggerOptions {
|
|
34
34
|
writeBytes?: false;
|
|
35
35
|
}
|
|
36
|
-
export interface MultistreamSelectInit extends AbortOptions {
|
|
36
|
+
export interface MultistreamSelectInit extends AbortOptions, LoggerOptions {
|
|
37
37
|
writeBytes?: boolean;
|
|
38
38
|
}
|
|
39
39
|
export { select, lazySelect } from './select.js';
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAErD,OAAO,EAAE,WAAW,EAAE,CAAA;AAEtB,MAAM,WAAW,cAAc,CAAC,OAAO,EAAE,KAAK,GAAG,OAAO,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAC7E,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAA;IAC7D,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,aAAc,SAAQ,YAAY,EAAE,aAAa;IAChE,UAAU,EAAE,IAAI,CAAA;CACjB;AAED,MAAM,WAAW,YAAa,SAAQ,YAAY,EAAE,aAAa;IAC/D,UAAU,CAAC,EAAE,KAAK,CAAA;CACnB;AAED,MAAM,WAAW,qBAAsB,SAAQ,YAAY,EAAE,aAAa;IACxE,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAED,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Uint8ArrayList } from 'uint8arraylist';
|
|
2
2
|
import type { MultistreamSelectInit } from '.';
|
|
3
|
-
import type { AbortOptions } from '@libp2p/interface';
|
|
3
|
+
import type { AbortOptions, LoggerOptions } from '@libp2p/interface';
|
|
4
4
|
import type { Pushable } from 'it-pushable';
|
|
5
5
|
import type { Reader } from 'it-reader';
|
|
6
6
|
export declare function encode(buffer: Uint8Array | Uint8ArrayList): Uint8ArrayList;
|
|
@@ -12,6 +12,6 @@ export declare function write(writer: Pushable<any>, buffer: Uint8Array | Uint8A
|
|
|
12
12
|
* `writeAll` behaves like `write`, except it encodes an array of items as a single write
|
|
13
13
|
*/
|
|
14
14
|
export declare function writeAll(writer: Pushable<any>, buffers: Uint8Array[], options?: MultistreamSelectInit): void;
|
|
15
|
-
export declare function read(reader: Reader, options?: AbortOptions): Promise<Uint8ArrayList>;
|
|
16
|
-
export declare function readString(reader: Reader, options?: AbortOptions): Promise<string>;
|
|
15
|
+
export declare function read(reader: Reader, options?: AbortOptions & LoggerOptions): Promise<Uint8ArrayList>;
|
|
16
|
+
export declare function readString(reader: Reader, options?: AbortOptions & LoggerOptions): Promise<string>;
|
|
17
17
|
//# sourceMappingURL=multistream.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multistream.d.ts","sourceRoot":"","sources":["../../src/multistream.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"multistream.d.ts","sourceRoot":"","sources":["../../src/multistream.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAI/C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,GAAG,CAAA;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACpE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAKvC,wBAAgB,MAAM,CAAE,MAAM,EAAE,UAAU,GAAG,cAAc,GAAG,cAAc,CAI3E;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAE,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,UAAU,GAAG,cAAc,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAQxH;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAE,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAY7G;AAED,wBAAsB,IAAI,CAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CAoC3G;AAED,wBAAsB,UAAU,CAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAIzG"}
|
package/dist/src/multistream.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { CodeError } from '@libp2p/interface/errors';
|
|
2
|
-
import { logger } from '@libp2p/logger';
|
|
3
2
|
import { abortableSource } from 'abortable-iterator';
|
|
4
3
|
import first from 'it-first';
|
|
5
4
|
import * as lp from 'it-length-prefixed';
|
|
@@ -8,7 +7,6 @@ import { Uint8ArrayList } from 'uint8arraylist';
|
|
|
8
7
|
import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
|
|
9
8
|
import { toString as uint8ArrayToString } from 'uint8arrays/to-string';
|
|
10
9
|
import { MAX_PROTOCOL_LENGTH } from './constants.js';
|
|
11
|
-
const log = logger('libp2p:mss');
|
|
12
10
|
const NewLine = uint8ArrayFromString('\n');
|
|
13
11
|
export function encode(buffer) {
|
|
14
12
|
const list = new Uint8ArrayList(buffer, NewLine);
|
|
@@ -17,9 +15,9 @@ export function encode(buffer) {
|
|
|
17
15
|
/**
|
|
18
16
|
* `write` encodes and writes a single buffer
|
|
19
17
|
*/
|
|
20
|
-
export function write(writer, buffer, options
|
|
18
|
+
export function write(writer, buffer, options) {
|
|
21
19
|
const encoded = encode(buffer);
|
|
22
|
-
if (options
|
|
20
|
+
if (options?.writeBytes === true) {
|
|
23
21
|
writer.push(encoded.subarray());
|
|
24
22
|
}
|
|
25
23
|
else {
|
|
@@ -29,12 +27,12 @@ export function write(writer, buffer, options = {}) {
|
|
|
29
27
|
/**
|
|
30
28
|
* `writeAll` behaves like `write`, except it encodes an array of items as a single write
|
|
31
29
|
*/
|
|
32
|
-
export function writeAll(writer, buffers, options
|
|
30
|
+
export function writeAll(writer, buffers, options) {
|
|
33
31
|
const list = new Uint8ArrayList();
|
|
34
32
|
for (const buf of buffers) {
|
|
35
33
|
list.append(encode(buf));
|
|
36
34
|
}
|
|
37
|
-
if (options
|
|
35
|
+
if (options?.writeBytes === true) {
|
|
38
36
|
writer.push(list.subarray());
|
|
39
37
|
}
|
|
40
38
|
else {
|
|
@@ -62,7 +60,7 @@ export async function read(reader, options) {
|
|
|
62
60
|
throw new CodeError('no buffer returned', 'ERR_INVALID_MULTISTREAM_SELECT_MESSAGE');
|
|
63
61
|
}
|
|
64
62
|
if (buf.get(buf.byteLength - 1) !== NewLine[0]) {
|
|
65
|
-
log.error('Invalid mss message - missing newline - %s', buf.subarray());
|
|
63
|
+
options?.log.error('Invalid mss message - missing newline - %s', buf.subarray());
|
|
66
64
|
throw new CodeError('missing newline', 'ERR_INVALID_MULTISTREAM_SELECT_MESSAGE');
|
|
67
65
|
}
|
|
68
66
|
return buf.sublist(0, -1); // Remove newline
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multistream.js","sourceRoot":"","sources":["../../src/multistream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"multistream.js","sourceRoot":"","sources":["../../src/multistream.ts"],"names":[],"mappings":"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"}
|
package/dist/src/select.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../src/select.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../src/select.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAI/C,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAyB,cAAc,EAAE,MAAM,YAAY,CAAA;AACpG,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAErD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,wBAAsB,MAAM,CAAE,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAA;AACxL,wBAAsB,MAAM,CAAE,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC,cAAc,GAAG,UAAU,CAAC,EAAE,MAAM,CAAC,cAAc,GAAG,UAAU,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,cAAc,EAAE,cAAc,GAAG,UAAU,CAAC,CAAC,CAAA;AAgD3P;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,cAAc,CAAC,UAAU,CAAC,CAAA;AACjI,wBAAgB,UAAU,CAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,cAAc,GAAG,UAAU,CAAC,EAAE,MAAM,CAAC,cAAc,GAAG,UAAU,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,cAAc,CAAC,cAAc,EAAE,cAAc,GAAG,UAAU,CAAC,CAAA"}
|
package/dist/src/select.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { CodeError } from '@libp2p/interface/errors';
|
|
2
|
-
import { logger } from '@libp2p/logger';
|
|
3
2
|
import { handshake } from 'it-handshake';
|
|
4
3
|
import merge from 'it-merge';
|
|
5
4
|
import { pushable } from 'it-pushable';
|
|
@@ -8,24 +7,23 @@ import { Uint8ArrayList } from 'uint8arraylist';
|
|
|
8
7
|
import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
|
|
9
8
|
import * as multistream from './multistream.js';
|
|
10
9
|
import { PROTOCOL_ID } from './index.js';
|
|
11
|
-
|
|
12
|
-
export async function select(stream, protocols, options = {}) {
|
|
10
|
+
export async function select(stream, protocols, options) {
|
|
13
11
|
protocols = Array.isArray(protocols) ? [...protocols] : [protocols];
|
|
14
12
|
const { reader, writer, rest, stream: shakeStream } = handshake(stream);
|
|
15
13
|
const protocol = protocols.shift();
|
|
16
14
|
if (protocol == null) {
|
|
17
15
|
throw new Error('At least one protocol must be specified');
|
|
18
16
|
}
|
|
19
|
-
log.trace('select: write ["%s", "%s"]', PROTOCOL_ID, protocol);
|
|
17
|
+
options?.log.trace('select: write ["%s", "%s"]', PROTOCOL_ID, protocol);
|
|
20
18
|
const p1 = uint8ArrayFromString(PROTOCOL_ID);
|
|
21
19
|
const p2 = uint8ArrayFromString(protocol);
|
|
22
20
|
multistream.writeAll(writer, [p1, p2], options);
|
|
23
21
|
let response = await multistream.readString(reader, options);
|
|
24
|
-
log.trace('select: read "%s"', response);
|
|
22
|
+
options?.log.trace('select: read "%s"', response);
|
|
25
23
|
// Read the protocol response if we got the protocolId in return
|
|
26
24
|
if (response === PROTOCOL_ID) {
|
|
27
25
|
response = await multistream.readString(reader, options);
|
|
28
|
-
log.trace('select: read "%s"', response);
|
|
26
|
+
options?.log.trace('select: read "%s"', response);
|
|
29
27
|
}
|
|
30
28
|
// We're done
|
|
31
29
|
if (response === protocol) {
|
|
@@ -34,10 +32,10 @@ export async function select(stream, protocols, options = {}) {
|
|
|
34
32
|
}
|
|
35
33
|
// We haven't gotten a valid ack, try the other protocols
|
|
36
34
|
for (const protocol of protocols) {
|
|
37
|
-
log.trace('select: write "%s"', protocol);
|
|
35
|
+
options?.log.trace('select: write "%s"', protocol);
|
|
38
36
|
multistream.write(writer, uint8ArrayFromString(protocol), options);
|
|
39
37
|
const response = await multistream.readString(reader, options);
|
|
40
|
-
log.trace('select: read "%s" for "%s"', response, protocol);
|
|
38
|
+
options?.log.trace('select: read "%s" for "%s"', response, protocol);
|
|
41
39
|
if (response === protocol) {
|
|
42
40
|
rest(); // End our writer so others can start writing to stream
|
|
43
41
|
return { stream: shakeStream, protocol };
|
package/dist/src/select.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select.js","sourceRoot":"","sources":["../../src/select.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"select.js","sourceRoot":"","sources":["../../src/select.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@libp2p/multistream-select",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.6-05b52d69c",
|
|
4
4
|
"description": "JavaScript implementation of multistream-select",
|
|
5
5
|
"license": "Apache-2.0 OR MIT",
|
|
6
6
|
"homepage": "https://github.com/libp2p/js-libp2p/tree/master/packages/multistream-select#readme",
|
|
@@ -53,15 +53,14 @@
|
|
|
53
53
|
"test:electron-main": "aegir test -t electron-main"
|
|
54
54
|
},
|
|
55
55
|
"dependencies": {
|
|
56
|
-
"@libp2p/interface": "0.1.
|
|
57
|
-
"@libp2p/logger": "3.0.5-fdcb801e",
|
|
56
|
+
"@libp2p/interface": "0.1.6-05b52d69c",
|
|
58
57
|
"abortable-iterator": "^5.0.1",
|
|
59
|
-
"it-first": "^3.0.
|
|
58
|
+
"it-first": "^3.0.3",
|
|
60
59
|
"it-handshake": "^4.1.3",
|
|
61
|
-
"it-length-prefixed": "^9.0.
|
|
60
|
+
"it-length-prefixed": "^9.0.3",
|
|
62
61
|
"it-merge": "^3.0.0",
|
|
63
62
|
"it-pipe": "^3.0.1",
|
|
64
|
-
"it-pushable": "^3.2.
|
|
63
|
+
"it-pushable": "^3.2.1",
|
|
65
64
|
"it-reader": "^6.0.1",
|
|
66
65
|
"it-stream-types": "^2.0.1",
|
|
67
66
|
"uint8-varint": "^2.0.0",
|
|
@@ -69,9 +68,10 @@
|
|
|
69
68
|
"uint8arrays": "^4.0.6"
|
|
70
69
|
},
|
|
71
70
|
"devDependencies": {
|
|
71
|
+
"@libp2p/logger": "3.1.0-05b52d69c",
|
|
72
72
|
"aegir": "^41.0.2",
|
|
73
73
|
"iso-random-stream": "^2.0.2",
|
|
74
|
-
"it-all": "^3.0.
|
|
74
|
+
"it-all": "^3.0.3",
|
|
75
75
|
"it-map": "^3.0.3",
|
|
76
76
|
"it-pair": "^2.0.6",
|
|
77
77
|
"p-timeout": "^6.0.0"
|
package/src/handle.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { logger } from '@libp2p/logger'
|
|
2
1
|
import { handshake } from 'it-handshake'
|
|
3
2
|
import { Uint8ArrayList } from 'uint8arraylist'
|
|
4
3
|
import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string'
|
|
@@ -7,8 +6,6 @@ import * as multistream from './multistream.js'
|
|
|
7
6
|
import type { ByteArrayInit, ByteListInit, MultistreamSelectInit, ProtocolStream } from './index.js'
|
|
8
7
|
import type { Duplex, Source } from 'it-stream-types'
|
|
9
8
|
|
|
10
|
-
const log = logger('libp2p:mss:handle')
|
|
11
|
-
|
|
12
9
|
/**
|
|
13
10
|
* Handle multistream protocol selections for the given list of protocols.
|
|
14
11
|
*
|
|
@@ -63,17 +60,17 @@ export async function handle (stream: any, protocols: string | string[], options
|
|
|
63
60
|
|
|
64
61
|
while (true) {
|
|
65
62
|
const protocol = await multistream.readString(reader, options)
|
|
66
|
-
log.trace('read "%s"', protocol)
|
|
63
|
+
options?.log.trace('read "%s"', protocol)
|
|
67
64
|
|
|
68
65
|
if (protocol === PROTOCOL_ID) {
|
|
69
|
-
log.trace('respond with "%s" for "%s"', PROTOCOL_ID, protocol)
|
|
66
|
+
options?.log.trace('respond with "%s" for "%s"', PROTOCOL_ID, protocol)
|
|
70
67
|
multistream.write(writer, uint8ArrayFromString(PROTOCOL_ID), options)
|
|
71
68
|
continue
|
|
72
69
|
}
|
|
73
70
|
|
|
74
71
|
if (protocols.includes(protocol)) {
|
|
75
72
|
multistream.write(writer, uint8ArrayFromString(protocol), options)
|
|
76
|
-
log.trace('respond with "%s" for "%s"', protocol, protocol)
|
|
73
|
+
options?.log.trace('respond with "%s" for "%s"', protocol, protocol)
|
|
77
74
|
rest()
|
|
78
75
|
return { stream: shakeStream, protocol }
|
|
79
76
|
}
|
|
@@ -82,11 +79,11 @@ export async function handle (stream: any, protocols: string | string[], options
|
|
|
82
79
|
// <varint-msg-len><varint-proto-name-len><proto-name>\n<varint-proto-name-len><proto-name>\n\n
|
|
83
80
|
multistream.write(writer, new Uint8ArrayList(...protocols.map(p => multistream.encode(uint8ArrayFromString(p)))), options)
|
|
84
81
|
// multistream.writeAll(writer, protocols.map(p => uint8ArrayFromString(p)))
|
|
85
|
-
log.trace('respond with "%s" for %s', protocols, protocol)
|
|
82
|
+
options?.log.trace('respond with "%s" for %s', protocols, protocol)
|
|
86
83
|
continue
|
|
87
84
|
}
|
|
88
85
|
|
|
89
86
|
multistream.write(writer, uint8ArrayFromString('na'), options)
|
|
90
|
-
log('respond with "na" for "%s"', protocol)
|
|
87
|
+
options?.log('respond with "na" for "%s"', protocol)
|
|
91
88
|
}
|
|
92
89
|
}
|
package/src/index.ts
CHANGED
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
*/
|
|
22
22
|
|
|
23
23
|
import { PROTOCOL_ID } from './constants.js'
|
|
24
|
-
import type { AbortOptions } from '@libp2p/interface'
|
|
24
|
+
import type { AbortOptions, LoggerOptions } from '@libp2p/interface'
|
|
25
25
|
import type { Duplex, Source } from 'it-stream-types'
|
|
26
26
|
|
|
27
27
|
export { PROTOCOL_ID }
|
|
@@ -31,15 +31,15 @@ export interface ProtocolStream<TSource, TSink = TSource, RSink = Promise<void>>
|
|
|
31
31
|
protocol: string
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
-
export interface ByteArrayInit extends AbortOptions {
|
|
34
|
+
export interface ByteArrayInit extends AbortOptions, LoggerOptions {
|
|
35
35
|
writeBytes: true
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
export interface ByteListInit extends AbortOptions {
|
|
38
|
+
export interface ByteListInit extends AbortOptions, LoggerOptions {
|
|
39
39
|
writeBytes?: false
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
-
export interface MultistreamSelectInit extends AbortOptions {
|
|
42
|
+
export interface MultistreamSelectInit extends AbortOptions, LoggerOptions {
|
|
43
43
|
writeBytes?: boolean
|
|
44
44
|
}
|
|
45
45
|
|
package/src/multistream.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { CodeError } from '@libp2p/interface/errors'
|
|
2
|
-
import { logger } from '@libp2p/logger'
|
|
3
2
|
import { abortableSource } from 'abortable-iterator'
|
|
4
3
|
import first from 'it-first'
|
|
5
4
|
import * as lp from 'it-length-prefixed'
|
|
@@ -9,13 +8,11 @@ import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string'
|
|
|
9
8
|
import { toString as uint8ArrayToString } from 'uint8arrays/to-string'
|
|
10
9
|
import { MAX_PROTOCOL_LENGTH } from './constants.js'
|
|
11
10
|
import type { MultistreamSelectInit } from '.'
|
|
12
|
-
import type { AbortOptions } from '@libp2p/interface'
|
|
11
|
+
import type { AbortOptions, LoggerOptions } from '@libp2p/interface'
|
|
13
12
|
import type { Pushable } from 'it-pushable'
|
|
14
13
|
import type { Reader } from 'it-reader'
|
|
15
14
|
import type { Source } from 'it-stream-types'
|
|
16
15
|
|
|
17
|
-
const log = logger('libp2p:mss')
|
|
18
|
-
|
|
19
16
|
const NewLine = uint8ArrayFromString('\n')
|
|
20
17
|
|
|
21
18
|
export function encode (buffer: Uint8Array | Uint8ArrayList): Uint8ArrayList {
|
|
@@ -27,10 +24,10 @@ export function encode (buffer: Uint8Array | Uint8ArrayList): Uint8ArrayList {
|
|
|
27
24
|
/**
|
|
28
25
|
* `write` encodes and writes a single buffer
|
|
29
26
|
*/
|
|
30
|
-
export function write (writer: Pushable<any>, buffer: Uint8Array | Uint8ArrayList, options
|
|
27
|
+
export function write (writer: Pushable<any>, buffer: Uint8Array | Uint8ArrayList, options?: MultistreamSelectInit): void {
|
|
31
28
|
const encoded = encode(buffer)
|
|
32
29
|
|
|
33
|
-
if (options
|
|
30
|
+
if (options?.writeBytes === true) {
|
|
34
31
|
writer.push(encoded.subarray())
|
|
35
32
|
} else {
|
|
36
33
|
writer.push(encoded)
|
|
@@ -40,21 +37,21 @@ export function write (writer: Pushable<any>, buffer: Uint8Array | Uint8ArrayLis
|
|
|
40
37
|
/**
|
|
41
38
|
* `writeAll` behaves like `write`, except it encodes an array of items as a single write
|
|
42
39
|
*/
|
|
43
|
-
export function writeAll (writer: Pushable<any>, buffers: Uint8Array[], options
|
|
40
|
+
export function writeAll (writer: Pushable<any>, buffers: Uint8Array[], options?: MultistreamSelectInit): void {
|
|
44
41
|
const list = new Uint8ArrayList()
|
|
45
42
|
|
|
46
43
|
for (const buf of buffers) {
|
|
47
44
|
list.append(encode(buf))
|
|
48
45
|
}
|
|
49
46
|
|
|
50
|
-
if (options
|
|
47
|
+
if (options?.writeBytes === true) {
|
|
51
48
|
writer.push(list.subarray())
|
|
52
49
|
} else {
|
|
53
50
|
writer.push(list)
|
|
54
51
|
}
|
|
55
52
|
}
|
|
56
53
|
|
|
57
|
-
export async function read (reader: Reader, options?: AbortOptions): Promise<Uint8ArrayList> {
|
|
54
|
+
export async function read (reader: Reader, options?: AbortOptions & LoggerOptions): Promise<Uint8ArrayList> {
|
|
58
55
|
let byteLength = 1 // Read single byte chunks until the length is known
|
|
59
56
|
const varByteSource = { // No return impl - we want the reader to remain readable
|
|
60
57
|
[Symbol.asyncIterator]: () => varByteSource,
|
|
@@ -85,14 +82,14 @@ export async function read (reader: Reader, options?: AbortOptions): Promise<Uin
|
|
|
85
82
|
}
|
|
86
83
|
|
|
87
84
|
if (buf.get(buf.byteLength - 1) !== NewLine[0]) {
|
|
88
|
-
log.error('Invalid mss message - missing newline - %s', buf.subarray())
|
|
85
|
+
options?.log.error('Invalid mss message - missing newline - %s', buf.subarray())
|
|
89
86
|
throw new CodeError('missing newline', 'ERR_INVALID_MULTISTREAM_SELECT_MESSAGE')
|
|
90
87
|
}
|
|
91
88
|
|
|
92
89
|
return buf.sublist(0, -1) // Remove newline
|
|
93
90
|
}
|
|
94
91
|
|
|
95
|
-
export async function readString (reader: Reader, options?: AbortOptions): Promise<string> {
|
|
92
|
+
export async function readString (reader: Reader, options?: AbortOptions & LoggerOptions): Promise<string> {
|
|
96
93
|
const buf = await read(reader, options)
|
|
97
94
|
|
|
98
95
|
return uint8ArrayToString(buf.subarray())
|
package/src/select.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { CodeError } from '@libp2p/interface/errors'
|
|
2
|
-
import { logger } from '@libp2p/logger'
|
|
3
2
|
import { handshake } from 'it-handshake'
|
|
4
3
|
import merge from 'it-merge'
|
|
5
4
|
import { pushable } from 'it-pushable'
|
|
@@ -11,8 +10,6 @@ import { PROTOCOL_ID } from './index.js'
|
|
|
11
10
|
import type { ByteArrayInit, ByteListInit, MultistreamSelectInit, ProtocolStream } from './index.js'
|
|
12
11
|
import type { Duplex, Source } from 'it-stream-types'
|
|
13
12
|
|
|
14
|
-
const log = logger('libp2p:mss:select')
|
|
15
|
-
|
|
16
13
|
/**
|
|
17
14
|
* Negotiate a protocol to use from a list of protocols.
|
|
18
15
|
*
|
|
@@ -58,7 +55,7 @@ const log = logger('libp2p:mss:select')
|
|
|
58
55
|
*/
|
|
59
56
|
export async function select (stream: Duplex<AsyncGenerator<Uint8Array>, Source<Uint8Array>>, protocols: string | string[], options: ByteArrayInit): Promise<ProtocolStream<Uint8Array>>
|
|
60
57
|
export async function select (stream: Duplex<AsyncGenerator<Uint8ArrayList | Uint8Array>, Source<Uint8ArrayList | Uint8Array>>, protocols: string | string[], options?: ByteListInit): Promise<ProtocolStream<Uint8ArrayList, Uint8ArrayList | Uint8Array>>
|
|
61
|
-
export async function select (stream: any, protocols: string | string[], options
|
|
58
|
+
export async function select (stream: any, protocols: string | string[], options?: MultistreamSelectInit): Promise<ProtocolStream<any>> {
|
|
62
59
|
protocols = Array.isArray(protocols) ? [...protocols] : [protocols]
|
|
63
60
|
const { reader, writer, rest, stream: shakeStream } = handshake(stream)
|
|
64
61
|
|
|
@@ -68,18 +65,18 @@ export async function select (stream: any, protocols: string | string[], options
|
|
|
68
65
|
throw new Error('At least one protocol must be specified')
|
|
69
66
|
}
|
|
70
67
|
|
|
71
|
-
log.trace('select: write ["%s", "%s"]', PROTOCOL_ID, protocol)
|
|
68
|
+
options?.log.trace('select: write ["%s", "%s"]', PROTOCOL_ID, protocol)
|
|
72
69
|
const p1 = uint8ArrayFromString(PROTOCOL_ID)
|
|
73
70
|
const p2 = uint8ArrayFromString(protocol)
|
|
74
71
|
multistream.writeAll(writer, [p1, p2], options)
|
|
75
72
|
|
|
76
73
|
let response = await multistream.readString(reader, options)
|
|
77
|
-
log.trace('select: read "%s"', response)
|
|
74
|
+
options?.log.trace('select: read "%s"', response)
|
|
78
75
|
|
|
79
76
|
// Read the protocol response if we got the protocolId in return
|
|
80
77
|
if (response === PROTOCOL_ID) {
|
|
81
78
|
response = await multistream.readString(reader, options)
|
|
82
|
-
log.trace('select: read "%s"', response)
|
|
79
|
+
options?.log.trace('select: read "%s"', response)
|
|
83
80
|
}
|
|
84
81
|
|
|
85
82
|
// We're done
|
|
@@ -90,10 +87,10 @@ export async function select (stream: any, protocols: string | string[], options
|
|
|
90
87
|
|
|
91
88
|
// We haven't gotten a valid ack, try the other protocols
|
|
92
89
|
for (const protocol of protocols) {
|
|
93
|
-
log.trace('select: write "%s"', protocol)
|
|
90
|
+
options?.log.trace('select: write "%s"', protocol)
|
|
94
91
|
multistream.write(writer, uint8ArrayFromString(protocol), options)
|
|
95
92
|
const response = await multistream.readString(reader, options)
|
|
96
|
-
log.trace('select: read "%s" for "%s"', response, protocol)
|
|
93
|
+
options?.log.trace('select: read "%s" for "%s"', response, protocol)
|
|
97
94
|
|
|
98
95
|
if (response === protocol) {
|
|
99
96
|
rest() // End our writer so others can start writing to stream
|