@libp2p/multistream-select 4.0.6-05b52d69c → 4.0.6-13a870cbe
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/README.md +1 -1
- package/dist/index.min.js +12 -2
- package/dist/src/handle.d.ts +3 -5
- package/dist/src/handle.d.ts.map +1 -1
- package/dist/src/handle.js +65 -16
- package/dist/src/handle.js.map +1 -1
- package/dist/src/index.d.ts +2 -10
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/multistream.d.ts +13 -8
- package/dist/src/multistream.d.ts.map +1 -1
- package/dist/src/multistream.js +14 -50
- package/dist/src/multistream.js.map +1 -1
- package/dist/src/select.d.ts +4 -7
- package/dist/src/select.d.ts.map +1 -1
- package/dist/src/select.js +101 -61
- package/dist/src/select.js.map +1 -1
- package/package.json +6 -12
- package/src/handle.ts +27 -21
- package/src/index.ts +3 -12
- package/src/multistream.ts +18 -67
- package/src/select.ts +64 -66
package/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
[](http://libp2p.io/)
|
|
2
2
|
[](https://discuss.libp2p.io)
|
|
3
3
|
[](https://codecov.io/gh/libp2p/js-libp2p)
|
|
4
|
-
[](https://github.com/libp2p/js-libp2p/actions/workflows/main.yml?query=branch%3Amain)
|
|
5
5
|
|
|
6
6
|
> JavaScript implementation of multistream-select
|
|
7
7
|
|
package/dist/index.min.js
CHANGED
|
@@ -1,4 +1,14 @@
|
|
|
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 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){
|
|
2
|
+
"use strict";var Libp2PMultistreamSelect=(()=>{var It=Object.create;var oe=Object.defineProperty;var _t=Object.getOwnPropertyDescriptor;var Ft=Object.getOwnPropertyNames;var Mt=Object.getPrototypeOf,Bt=Object.prototype.hasOwnProperty;var Pt=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),y=(r,e)=>{for(var t in e)oe(r,t,{get:e[t],enumerable:!0})},Je=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of Ft(e))!Bt.call(r,o)&&o!==t&&oe(r,o,{get:()=>e[o],enumerable:!(n=_t(e,o))||n.enumerable});return r};var Vt=(r,e,t)=>(t=r!=null?It(Mt(r)):{},Je(e||!r||!r.__esModule?oe(t,"default",{value:r,enumerable:!0}):t,r)),zt=r=>Je(oe({},"__esModule",{value:!0}),r);var ot=Pt((Vn,nt)=>{"use strict";function rt(r,e){for(let t in e)Object.defineProperty(r,t,{value:e[t],enumerable:!0,configurable:!0});return r}function Jt(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 rt(r,t)}catch{t.message=r.message,t.stack=r.stack;let o=function(){};return o.prototype=Object.create(Object.getPrototypeOf(r)),rt(new o,t)}}nt.exports=Jt});var fn={};y(fn,{PROTOCOL_ID:()=>x,handle:()=>Ct,lazySelect:()=>Nt,select:()=>Ot});var x="/multistream/1.0.0";var B=class extends Error{code;props;constructor(e,t,n){super(e),this.code=t,this.name=n?.name??"CodeError",this.props=n??{}}};function P(r){return globalThis.Buffer!=null?new Uint8Array(r.buffer,r.byteOffset,r.byteLength):r}function N(r=0){return globalThis.Buffer?.alloc!=null?P(globalThis.Buffer.alloc(r)):new Uint8Array(r)}function S(r=0){return globalThis.Buffer?.allocUnsafe!=null?P(globalThis.Buffer.allocUnsafe(r)):new Uint8Array(r)}function me(r,e){e==null&&(e=r.reduce((o,s)=>o+s.length,0));let t=S(e),n=0;for(let o of r)t.set(o,n),n+=o.length;return P(t)}function We(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 Ke=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 se(r){return!!r?.[Ke]}var b=class r{constructor(...e){Object.defineProperty(this,Ke,{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(se(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(se(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(se(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 me(n,o)}subarray(e,t){let{bufs:n,length:o}=this._subList(e,t);return n.length===1?n[0]:me(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,c=a+i.byteLength;if(o=c,e>=c)continue;let h=e>=a&&e<c,l=t>a&&t<=c;if(h&&l){if(e===a&&t===c){n.push(i);break}let u=e-a;n.push(i.subarray(u,u+(t-e)));break}if(h){if(e===0){n.push(i);continue}n.push(i.subarray(e-a));continue}if(l){if(t===c){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(!se(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 u=0;u<s;u++)i[u]=-1;for(let u=0;u<o;u++)i[n[u]]=u;let a=i,c=this.byteLength-n.byteLength,h=n.byteLength-1,l;for(let u=t;u<=c;u+=l){l=0;for(let v=h;v>=0;v--){let re=this.get(u+v);if(n[v]!==re){l=Math.max(1,v-a[re]);break}}if(l===0)return u}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=S(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=S(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(!We(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 j(){let r={};return r.promise=new Promise((e,t)=>{r.resolve=e,r.reject=t}),r}var ie=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.name="AbortError",this.code=t??"ABORT_ERR"}};async function Qe(r,e,t){if(e==null)return r;if(e.aborted)return Promise.reject(new ie(t?.errorMessage,t?.errorCode));let n,o=new ie(t?.errorMessage,t?.errorCode);try{return await Promise.race([r,new Promise((s,i)=>{n=()=>{i(o)},e.addEventListener("abort",n)})])}finally{n!=null&&e.removeEventListener("abort",n)}}var be=class{needNext;haveNext;ended;nextResult;constructor(){this.ended=!1,this.needNext=j(),this.needNext.resolve(),this.haveNext=j()}[Symbol.asyncIterator](){return this}async next(){if(this.nextResult==null&&await this.haveNext.promise,this.nextResult==null)throw new Error("Have next but next was undefined");let e=this.nextResult;return this.nextResult=void 0,this.needNext.resolve(),this.needNext=j(),e}async throw(e){return this.ended=!0,e!=null&&this.haveNext.reject(e),{done:!0,value:void 0}}async return(){let e={done:!0,value:void 0};return await this._push(void 0),e}async push(e,t){await this._push(e,t)}async end(e,t){e!=null?await this.throw(e):await this._push(void 0,t)}async _push(e,t){if(e!=null&&this.ended)throw new Error("Cannot push value onto an ended pushable");this.nextResult!=null&&await this.needNext.promise,e!=null?this.nextResult={done:!1,value:e}:(this.ended=!0,this.nextResult={done:!0,value:void 0}),this.haveNext.resolve(),this.haveNext=j(),await Qe(this.needNext.promise,t?.signal,t)}};function Ze(){return new be}var ae=class extends Error{code;constructor(e,t){super(e),this.code=t}},ge=class extends ae{type;constructor(e){super(e,"ABORT_ERR"),this.type="aborted"}};function et(r){let e=Ze();r.sink(e).catch(async s=>{await e.end(s)}),r.sink=async s=>{for await(let i of s)await e.push(i);await e.end()};let t=r.source;r.source[Symbol.iterator]!=null?t=r.source[Symbol.iterator]():r.source[Symbol.asyncIterator]!=null&&(t=r.source[Symbol.asyncIterator]());let n=new b;return{read:async(s,i)=>{i?.signal?.throwIfAborted();let a,c=new Promise((h,l)=>{a=()=>{l(new ge("Read aborted"))},i?.signal?.addEventListener("abort",a)});try{if(s==null){let{done:l,value:u}=await Promise.race([t.next(),c]);return l===!0?new b:u}for(;n.byteLength<s;){let{value:l,done:u}=await Promise.race([t.next(),c]);if(u===!0)throw new ae("unexpected end of input","ERR_UNEXPECTED_EOF");n.append(l)}let h=n.sublist(0,s);return n.consume(s),h}finally{a!=null&&i?.signal?.removeEventListener("abort",a)}},write:async(s,i)=>{i?.signal?.throwIfAborted(),s instanceof Uint8Array?await e.push(s,i):await e.push(s.subarray(),i)},unwrap:()=>{let s=r.source;return r.source=async function*(){yield*n,yield*s}(),r}}}var kt=Math.pow(2,7),Gt=Math.pow(2,14),$t=Math.pow(2,21),ye=Math.pow(2,28),xe=Math.pow(2,35),Ee=Math.pow(2,42),Le=Math.pow(2,49),f=128,w=127;function V(r){if(r<kt)return 1;if(r<Gt)return 2;if(r<$t)return 3;if(r<ye)return 4;if(r<xe)return 5;if(r<Ee)return 6;if(r<Le)return 7;if(Number.MAX_SAFE_INTEGER!=null&&r>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function jt(r,e,t=0){switch(V(r)){case 8:e[t++]=r&255|f,r/=128;case 7:e[t++]=r&255|f,r/=128;case 6:e[t++]=r&255|f,r/=128;case 5:e[t++]=r&255|f,r/=128;case 4:e[t++]=r&255|f,r>>>=7;case 3:e[t++]=r&255|f,r>>>=7;case 2:e[t++]=r&255|f,r>>>=7;case 1:{e[t++]=r&255,r>>>=7;break}default:throw new Error("unreachable")}return e}function Ht(r,e,t=0){switch(V(r)){case 8:e.set(t++,r&255|f),r/=128;case 7:e.set(t++,r&255|f),r/=128;case 6:e.set(t++,r&255|f),r/=128;case 5:e.set(t++,r&255|f),r/=128;case 4:e.set(t++,r&255|f),r>>>=7;case 3:e.set(t++,r&255|f),r>>>=7;case 2:e.set(t++,r&255|f),r>>>=7;case 1:{e.set(t++,r&255),r>>>=7;break}default:throw new Error("unreachable")}return e}function Xt(r,e){let t=r[e],n=0;if(n+=t&w,t<f||(t=r[e+1],n+=(t&w)<<7,t<f)||(t=r[e+2],n+=(t&w)<<14,t<f)||(t=r[e+3],n+=(t&w)<<21,t<f)||(t=r[e+4],n+=(t&w)*ye,t<f)||(t=r[e+5],n+=(t&w)*xe,t<f)||(t=r[e+6],n+=(t&w)*Ee,t<f)||(t=r[e+7],n+=(t&w)*Le,t<f))return n;throw new RangeError("Could not decode varint")}function qt(r,e){let t=r.get(e),n=0;if(n+=t&w,t<f||(t=r.get(e+1),n+=(t&w)<<7,t<f)||(t=r.get(e+2),n+=(t&w)<<14,t<f)||(t=r.get(e+3),n+=(t&w)<<21,t<f)||(t=r.get(e+4),n+=(t&w)*ye,t<f)||(t=r.get(e+5),n+=(t&w)*xe,t<f)||(t=r.get(e+6),n+=(t&w)*Ee,t<f)||(t=r.get(e+7),n+=(t&w)*Le,t<f))return n;throw new RangeError("Could not decode varint")}function tt(r,e,t=0){return e==null&&(e=S(V(r))),e instanceof Uint8Array?jt(r,e,t):Ht(r,e,t)}function ce(r,e=0){return r instanceof Uint8Array?Xt(r,e):qt(r,e)}function fe(r){return r[Symbol.asyncIterator]!=null}var he=r=>{let e=V(r),t=S(e);return tt(r,t),he.bytes=e,t};he.bytes=0;function z(r,e){e=e??{};let t=e.lengthEncoder??he;function*n(o){let s=t(o.byteLength);s instanceof Uint8Array?yield s:yield*s,o instanceof Uint8Array?yield o:yield*o}return fe(r)?async function*(){for await(let o of r)yield*n(o)}():function*(){for(let o of r)yield*n(o)}()}z.single=(r,e)=>{e=e??{};let t=e.lengthEncoder??he;return new b(t(r.byteLength),r)};var H=Vt(ot(),1);var Wt=8,Yt=1024*1024*4,k;(function(r){r[r.LENGTH=0]="LENGTH",r[r.DATA=1]="DATA"})(k||(k={}));var ve=r=>{let e=ce(r);return ve.bytes=V(e),e};ve.bytes=0;function Se(r,e){let t=new b,n=k.LENGTH,o=-1,s=e?.lengthDecoder??ve,i=e?.maxLengthLength??Wt,a=e?.maxDataLength??Yt;function*c(){for(;t.byteLength>0;){if(n===k.LENGTH)try{if(o=s(t),o<0)throw(0,H.default)(new Error("invalid message length"),"ERR_INVALID_MSG_LENGTH");if(o>a)throw(0,H.default)(new Error("message length too long"),"ERR_MSG_DATA_TOO_LONG");let h=s.bytes;t.consume(h),e?.onLength!=null&&e.onLength(o),n=k.DATA}catch(h){if(h instanceof RangeError){if(t.byteLength>i)throw(0,H.default)(new Error("message length length too long"),"ERR_MSG_LENGTH_TOO_LONG");break}throw h}if(n===k.DATA){if(t.byteLength<o)break;let h=t.sublist(0,o);t.consume(o),e?.onData!=null&&e.onData(h),yield h,n=k.LENGTH}}}return fe(r)?async function*(){for await(let h of r)t.append(h),yield*c();if(t.byteLength>0)throw(0,H.default)(new Error("unexpected end of input"),"ERR_UNEXPECTED_EOF")}():function*(){for(let h of r)t.append(h),yield*c();if(t.byteLength>0)throw(0,H.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}})};var ue=class extends Error{code;constructor(e,t){super(e),this.code=t}},st=r=>ce(r);st.bytes=0;function K(r,e){let t=et(r);return{read:async o=>{let s=-1,i=new b,a=e?.lengthDecoder??st;for(;;){i.append(await t.read(1,o));try{s=a(i)}catch(c){if(c instanceof RangeError)continue;throw c}if(s>-1)break;if(e?.maxLengthLength!=null&&i.byteLength>e.maxLengthLength)throw new ue("message length length too long","ERR_MSG_LENGTH_TOO_LONG")}if(e?.maxDataLength!=null&&s>e.maxDataLength)throw new ue("message length too long","ERR_MSG_DATA_TOO_LONG");return t.read(s,o)},write:async(o,s)=>{await t.write(z.single(o,e),s)},writeV:async(o,s)=>{let i=new b(...o.map(a=>z.single(a,e)));await t.write(i,s)},unwrap:()=>t.unwrap()}}var Oe={};y(Oe,{base10:()=>nr});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,c=r.charAt(0),h=Math.log(a)/Math.log(256),l=Math.log(256)/Math.log(a);function u(d){if(d instanceof Uint8Array||(ArrayBuffer.isView(d)?d=new Uint8Array(d.buffer,d.byteOffset,d.byteLength):Array.isArray(d)&&(d=Uint8Array.from(d))),!(d instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(d.length===0)return"";for(var m=0,M=0,L=0,U=d.length;L!==U&&d[L]===0;)L++,m++;for(var R=(U-L)*l+1>>>0,E=new Uint8Array(R);L!==U;){for(var D=d[L],I=0,A=R-1;(D!==0||I<M)&&A!==-1;A--,I++)D+=256*E[A]>>>0,E[A]=D%a>>>0,D=D/a>>>0;if(D!==0)throw new Error("Non-zero carry");M=I,L++}for(var O=R-M;O!==R&&E[O]===0;)O++;for(var ne=c.repeat(m);O<R;++O)ne+=r.charAt(E[O]);return ne}function v(d){if(typeof d!="string")throw new TypeError("Expected String");if(d.length===0)return new Uint8Array;var m=0;if(d[m]!==" "){for(var M=0,L=0;d[m]===c;)M++,m++;for(var U=(d.length-m)*h+1>>>0,R=new Uint8Array(U);d[m];){var E=t[d.charCodeAt(m)];if(E===255)return;for(var D=0,I=U-1;(E!==0||D<L)&&I!==-1;I--,D++)E+=a*R[I]>>>0,R[I]=E%256>>>0,E=E/256>>>0;if(E!==0)throw new Error("Non-zero carry");L=D,m++}if(d[m]!==" "){for(var A=U-L;A!==U&&R[A]===0;)A++;for(var O=new Uint8Array(M+(U-A)),ne=M;A!==U;)O[ne++]=R[A++];return O}}}function re(d){var m=v(d);if(m)return m;throw new Error(`Non-${e} character`)}return{encode:u,decodeUnsafe:v,decode:re}}var Zt=Qt,er=Zt,it=er;var Wn=new Uint8Array(0);var at=(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 ct=r=>new TextEncoder().encode(r),ft=r=>new TextDecoder().decode(r);var Ue=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")}},Re=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 ut(this,e)}},De=class{constructor(e){this.decoders=e}or(e){return ut(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`)}},ut=(r,e)=>new De({...r.decoders||{[r.prefix]:r},...e.decoders||{[e.prefix]:e}}),Te=class{constructor(e,t,n,o){this.name=e,this.prefix=t,this.baseEncode=n,this.baseDecode=o,this.encoder=new Ue(e,t,n),this.decoder=new Re(e,t,o)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}},X=({name:r,prefix:e,encode:t,decode:n})=>new Te(r,e,t,n),_=({prefix:r,name:e,alphabet:t})=>{let{encode:n,decode:o}=it(t,e);return X({prefix:r,name:e,encode:n,decode:s=>C(o(s))})},tr=(r,e,t,n)=>{let o={};for(let l=0;l<e.length;++l)o[e[l]]=l;let s=r.length;for(;r[s-1]==="=";)--s;let i=new Uint8Array(s*t/8|0),a=0,c=0,h=0;for(let l=0;l<s;++l){let u=o[r[l]];if(u===void 0)throw new SyntaxError(`Non-${n} character`);c=c<<t|u,a+=t,a>=8&&(a-=8,i[h++]=255&c>>a)}if(a>=t||255&c<<8-a)throw new SyntaxError("Unexpected end of data");return i},rr=(r,e,t)=>{let n=e[e.length-1]==="=",o=(1<<t)-1,s="",i=0,a=0;for(let c=0;c<r.length;++c)for(a=a<<8|r[c],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},p=({name:r,prefix:e,bitsPerChar:t,alphabet:n})=>X({prefix:e,name:r,encode(o){return rr(o,n,t)},decode(o){return tr(o,n,t,r)}});var nr=_({prefix:"9",name:"base10",alphabet:"0123456789"});var Ne={};y(Ne,{base16:()=>or,base16upper:()=>sr});var or=p({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),sr=p({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var Ce={};y(Ce,{base2:()=>ir});var ir=p({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var Ie={};y(Ie,{base256emoji:()=>ur});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}"),ar=lt.reduce((r,e,t)=>(r[t]=e,r),[]),cr=lt.reduce((r,e,t)=>(r[e.codePointAt(0)]=t,r),[]);function fr(r){return r.reduce((e,t)=>(e+=ar[t],e),"")}function hr(r){let e=[];for(let t of r){let n=cr[t.codePointAt(0)];if(n===void 0)throw new Error(`Non-base256emoji character: ${t}`);e.push(n)}return new Uint8Array(e)}var ur=X({prefix:"\u{1F680}",name:"base256emoji",encode:fr,decode:hr});var _e={};y(_e,{base32:()=>q,base32hex:()=>wr,base32hexpad:()=>br,base32hexpadupper:()=>gr,base32hexupper:()=>mr,base32pad:()=>dr,base32padupper:()=>pr,base32upper:()=>lr,base32z:()=>yr});var q=p({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),lr=p({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),dr=p({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),pr=p({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),wr=p({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),mr=p({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),br=p({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),gr=p({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),yr=p({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var Fe={};y(Fe,{base36:()=>xr,base36upper:()=>Er});var xr=_({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),Er=_({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var Me={};y(Me,{base58btc:()=>T,base58flickr:()=>Lr});var T=_({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),Lr=_({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var Be={};y(Be,{base64:()=>Ar,base64pad:()=>Sr,base64url:()=>vr,base64urlpad:()=>Ur});var Ar=p({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),Sr=p({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),vr=p({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),Ur=p({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var Pe={};y(Pe,{base8:()=>Rr});var Rr=p({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var Ve={};y(Ve,{identity:()=>Dr});var Dr=X({prefix:"\0",name:"identity",encode:r=>ft(r),decode:r=>ct(r)});var ho=new TextEncoder,uo=new TextDecoder;var ke={};y(ke,{identity:()=>Kr});var Nr=wt,dt=128,Cr=127,Ir=~Cr,_r=Math.pow(2,31);function wt(r,e,t){e=e||[],t=t||0;for(var n=t;r>=_r;)e[t++]=r&255|dt,r/=128;for(;r&Ir;)e[t++]=r&255|dt,r>>>=7;return e[t]=r|0,wt.bytes=t-n+1,e}var Fr=ze,Mr=128,pt=127;function ze(r,n){var t=0,n=n||0,o=0,s=n,i,a=r.length;do{if(s>=a)throw ze.bytes=0,new RangeError("Could not decode varint");i=r[s++],t+=o<28?(i&pt)<<o:(i&pt)*Math.pow(2,o),o+=7}while(i>=Mr);return ze.bytes=s-n,t}var Br=Math.pow(2,7),Pr=Math.pow(2,14),Vr=Math.pow(2,21),zr=Math.pow(2,28),kr=Math.pow(2,35),Gr=Math.pow(2,42),$r=Math.pow(2,49),jr=Math.pow(2,56),Hr=Math.pow(2,63),Xr=function(r){return r<Br?1:r<Pr?2:r<Vr?3:r<zr?4:r<kr?5:r<Gr?6:r<$r?7:r<jr?8:r<Hr?9:10},qr={encode:Nr,decode:Fr,encodingLength:Xr},Jr=qr,Q=Jr;var Z=(r,e=0)=>[Q.decode(r,e),Q.decode.bytes],J=(r,e,t=0)=>(Q.encode(r,e,t),e),W=r=>Q.encodingLength(r);var G=(r,e)=>{let t=e.byteLength,n=W(r),o=n+W(t),s=new Uint8Array(o+t);return J(r,s,0),J(t,s,n),s.set(e,o),new Y(r,t,e,s)},mt=r=>{let e=C(r),[t,n]=Z(e),[o,s]=Z(e.subarray(n)),i=e.subarray(n+s);if(i.byteLength!==o)throw new Error("Incorrect length");return new Y(t,o,i,e)},bt=(r,e)=>{if(r===e)return!0;{let t=e;return r.code===t.code&&r.size===t.size&&t.bytes instanceof Uint8Array&&at(r.bytes,t.bytes)}},Y=class{constructor(e,t,n,o){this.code=e,this.size=t,this.digest=n,this.bytes=o}};var gt=0,Wr="identity",yt=C,Yr=r=>G(gt,yt(r)),Kr={code:gt,name:Wr,encode:yt,digest:Yr};var je={};y(je,{sha256:()=>Qr,sha512:()=>Zr});var $e=({name:r,code:e,encode:t})=>new Ge(r,e,t),Ge=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?G(this.code,t):t.then(n=>G(this.code,n))}else throw Error("Unknown type, must be binary type")}};var Et=r=>async e=>new Uint8Array(await crypto.subtle.digest(r,e)),Qr=$e({name:"sha2-256",code:18,encode:Et("SHA-256")}),Zr=$e({name:"sha2-512",code:19,encode:Et("SHA-512")});var Lt=(r,e)=>{let{bytes:t,version:n}=r;switch(n){case 0:return tn(t,He(r),e||T.encoder);default:return rn(t,He(r),e||q.encoder)}};var At=new WeakMap,He=r=>{let e=At.get(r);if(e==null){let t=new Map;return At.set(r,t),t}return e},de=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!==te)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==nn)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=G(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&&bt(e.multihash,n.multihash)}toString(e){return Lt(this,e)}toJSON(){return{"/":Lt(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||St(n,o,s.bytes))}else if(t[on]===!0){let{version:n,multihash:o,code:s}=t,i=mt(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!==te)throw new Error(`Version 0 CID must use dag-pb (code: ${te}) block encoding`);return new r(e,t,n,n.bytes)}case 1:{let o=St(e,t,n.bytes);return new r(e,t,n,o)}default:throw new Error("Invalid version")}}static createV0(e){return r.create(0,te,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 Y(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[u,v]=Z(e.subarray(t));return t+=v,u},o=n(),s=te;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(),c=n(),h=t+c,l=h-i;return{version:o,codec:s,multihashCode:a,digestSize:c,multihashSize:l,size:h}}static parse(e,t){let[n,o]=en(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 He(s).set(n,e),s}},en=(r,e)=>{switch(r[0]){case"Q":{let t=e||T;return[T.prefix,t.decode(`${T.prefix}${r}`)]}case T.prefix:{let t=e||T;return[T.prefix,t.decode(r)]}case q.prefix:{let t=e||q;return[q.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)]}}},tn=(r,e,t)=>{let{prefix:n}=t;if(n!==T.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},rn=(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},te=112,nn=18,St=(r,e,t)=>{let n=W(r),o=n+W(e),s=new Uint8Array(o+t.byteLength);return J(r,s,0),J(e,s,n),s.set(t,o),s},on=Symbol.for("@ipld/js-cid/CID");var Xe={...Ve,...Ce,...Pe,...Oe,...Ne,..._e,...Fe,...Me,...Be,...Ie},Do={...je,...ke};function Ut(r,e,t,n){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:n}}}var vt=Ut("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),qe=Ut("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=S(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),sn={utf8:vt,"utf-8":vt,hex:Xe.base16,latin1:qe,ascii:qe,binary:qe,...Xe},pe=sn;function g(r,e="utf8"){let t=pe[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return(e==="utf8"||e==="utf-8")&&globalThis.Buffer!=null&&globalThis.Buffer.from!=null?P(globalThis.Buffer.from(r,"utf-8")):t.decoder.decode(`${t.prefix}${r}`)}function Rt(r,e="utf8"){let t=pe[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 an=g(`
|
|
3
|
+
`);async function $(r,e,t){await r.write(e,t)}async function Dt(r,e,t){await r.writeV(e,t)}async function cn(r,e){let t=await r.read(e);if(t.byteLength===0||t.get(t.byteLength-1)!==an[0])throw e?.log.error("Invalid mss message - missing newline",t),new B("missing newline","ERR_INVALID_MULTISTREAM_SELECT_MESSAGE");return t.sublist(0,-1)}async function F(r,e){let t=await cn(r,e);return Rt(t.subarray())}async function Ot(r,e,t){e=Array.isArray(e)?[...e]:[e];let n=K(r,{maxDataLength:1024}),o=e.shift();if(o==null)throw new Error("At least one protocol must be specified");t?.log.trace('select: write ["%s", "%s"]',x,o);let s=g(`${x}
|
|
4
|
+
`),i=g(`${o}
|
|
5
|
+
`);await Dt(n,[s,i],t),t?.log.trace("select: reading multistream-select header");let a=await F(n,t);if(t?.log.trace('select: read "%s"',a),a===x&&(t?.log.trace("select: reading protocol response"),a=await F(n,t),t?.log.trace('select: read "%s"',a)),a===o)return{stream:n.unwrap(),protocol:o};for(let c of e){t?.log.trace('select: write "%s"',c),await $(n,g(`${c}
|
|
6
|
+
`),t),t?.log.trace("select: reading protocol response");let h=await F(n,t);if(t?.log.trace('select: read "%s" for "%s"',h,c),h===c)return{stream:n.unwrap(),protocol:c}}throw new B("protocol selection failed","ERR_UNSUPPORTED_PROTOCOL")}function Nt(r,e,t){let n=r.sink.bind(r),o=r.source,s=K({sink:n,source:o},{maxDataLength:1024});return r.sink=async i=>{t?.log.trace('lazy: write ["%s", "%s"]',x,e),await s.writeV([g(`${x}
|
|
7
|
+
`),g(`${e}
|
|
8
|
+
`)]),t?.log.trace('lazy: writing rest of "%s" stream',e),await s.unwrap().sink(i)},r.source=async function*(){t?.log.trace("lazy: reading multistream select header");let i=await F(s,t);if(t?.log.trace('lazy: read multistream select header "%s"',i),i===x&&(i=await F(s,t)),t?.log.trace('lazy: read protocol "%s", expecting "%s"',i,e),i!==e)throw new B("protocol selection failed","ERR_UNSUPPORTED_PROTOCOL");t?.log.trace('lazy: reading rest of "%s" stream',e),yield*s.unwrap().source}(),{stream:r,protocol:e}}async function Ct(r,e,t){e=Array.isArray(e)?e:[e];let n=K(r,{maxDataLength:1024});for(;;){t.log.trace("handle - available protocols %s",e);let o=await F(n,t);if(t.log.trace('read "%s"',o),o===x){t.log.trace('respond with "%s" for "%s"',x,o),await $(n,g(`${x}
|
|
9
|
+
`),t);continue}if(e.includes(o))return t.log.trace('respond with "%s" for "%s"',o,o),await $(n,g(`${o}
|
|
10
|
+
`),t),{stream:n.unwrap(),protocol:o};if(o==="ls"){let s=new b(...e.map(i=>z.single(g(`${i}
|
|
11
|
+
`))),g(`
|
|
12
|
+
`));await $(n,s,t),t.log.trace('respond with "%s" for %s',e,o);continue}t.log('respond with "na" for "%s"',o),await $(n,g(`na
|
|
13
|
+
`),t)}}return zt(fn);})();
|
|
4
14
|
return Libp2PMultistreamSelect}));
|
package/dist/src/handle.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import type {
|
|
3
|
-
import type { Duplex, Source } from 'it-stream-types';
|
|
1
|
+
import type { MultistreamSelectInit, ProtocolStream } from './index.js';
|
|
2
|
+
import type { Duplex } from 'it-stream-types';
|
|
4
3
|
/**
|
|
5
4
|
* Handle multistream protocol selections for the given list of protocols.
|
|
6
5
|
*
|
|
@@ -47,6 +46,5 @@ import type { Duplex, Source } from 'it-stream-types';
|
|
|
47
46
|
* })
|
|
48
47
|
* ```
|
|
49
48
|
*/
|
|
50
|
-
export declare function handle(stream:
|
|
51
|
-
export declare function handle(stream: Duplex<Source<Uint8ArrayList | Uint8Array>, Source<Uint8ArrayList | Uint8Array>>, protocols: string | string[], options?: ByteListInit): Promise<ProtocolStream<Uint8ArrayList, Uint8ArrayList | Uint8Array>>;
|
|
49
|
+
export declare function handle<Stream extends Duplex<any, any, any>>(stream: Stream, protocols: string | string[], options: MultistreamSelectInit): Promise<ProtocolStream<Stream>>;
|
|
52
50
|
//# sourceMappingURL=handle.d.ts.map
|
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":"AAMA,OAAO,KAAK,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AACvE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAE7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,wBAAsB,MAAM,CAAE,MAAM,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAG,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAuClL"}
|
package/dist/src/handle.js
CHANGED
|
@@ -1,34 +1,83 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { encode } from 'it-length-prefixed';
|
|
2
|
+
import { lpStream } from 'it-length-prefixed-stream';
|
|
2
3
|
import { Uint8ArrayList } from 'uint8arraylist';
|
|
3
4
|
import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
|
|
4
|
-
import { PROTOCOL_ID } from './constants.js';
|
|
5
|
+
import { MAX_PROTOCOL_LENGTH, PROTOCOL_ID } from './constants.js';
|
|
5
6
|
import * as multistream from './multistream.js';
|
|
7
|
+
/**
|
|
8
|
+
* Handle multistream protocol selections for the given list of protocols.
|
|
9
|
+
*
|
|
10
|
+
* Note that after a protocol is handled `listener` can no longer be used.
|
|
11
|
+
*
|
|
12
|
+
* @param stream - A duplex iterable stream to listen on
|
|
13
|
+
* @param protocols - A list of protocols (or single protocol) that this listener is able to speak.
|
|
14
|
+
* @param options - an options object containing an AbortSignal and an optional boolean `writeBytes` - if this is true, `Uint8Array`s will be written into `duplex`, otherwise `Uint8ArrayList`s will
|
|
15
|
+
* @returns A stream for the selected protocol and the protocol that was selected from the list of protocols provided to `select`
|
|
16
|
+
* @example
|
|
17
|
+
*
|
|
18
|
+
* ```js
|
|
19
|
+
* import { pipe } from 'it-pipe'
|
|
20
|
+
* import * as mss from '@libp2p/multistream-select'
|
|
21
|
+
* import { Mplex } from '@libp2p/mplex'
|
|
22
|
+
*
|
|
23
|
+
* const muxer = new Mplex({
|
|
24
|
+
* async onStream (muxedStream) {
|
|
25
|
+
* // mss.handle(handledProtocols)
|
|
26
|
+
* // Returns selected stream and protocol
|
|
27
|
+
* const { stream, protocol } = await mss.handle(muxedStream, [
|
|
28
|
+
* '/ipfs-dht/1.0.0',
|
|
29
|
+
* '/ipfs-bitswap/1.0.0'
|
|
30
|
+
* ])
|
|
31
|
+
*
|
|
32
|
+
* // Typically here we'd call the handler function that was registered in
|
|
33
|
+
* // libp2p for the given protocol:
|
|
34
|
+
* // e.g. handlers[protocol].handler(stream)
|
|
35
|
+
* //
|
|
36
|
+
* // If protocol was /ipfs-dht/1.0.0 it might do something like this:
|
|
37
|
+
* // try {
|
|
38
|
+
* // await pipe(
|
|
39
|
+
* // dhtStream,
|
|
40
|
+
* // source => (async function * () {
|
|
41
|
+
* // for await (const chunk of source)
|
|
42
|
+
* // // Incoming DHT data -> process and yield to respond
|
|
43
|
+
* // })(),
|
|
44
|
+
* // dhtStream
|
|
45
|
+
* // )
|
|
46
|
+
* // } catch (err) {
|
|
47
|
+
* // // Error in stream
|
|
48
|
+
* // }
|
|
49
|
+
* }
|
|
50
|
+
* })
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
6
53
|
export async function handle(stream, protocols, options) {
|
|
7
54
|
protocols = Array.isArray(protocols) ? protocols : [protocols];
|
|
8
|
-
const
|
|
55
|
+
const lp = lpStream(stream, {
|
|
56
|
+
maxDataLength: MAX_PROTOCOL_LENGTH
|
|
57
|
+
});
|
|
9
58
|
while (true) {
|
|
10
|
-
|
|
11
|
-
|
|
59
|
+
options.log.trace('handle - available protocols %s', protocols);
|
|
60
|
+
const protocol = await multistream.readString(lp, options);
|
|
61
|
+
options.log.trace('read "%s"', protocol);
|
|
12
62
|
if (protocol === PROTOCOL_ID) {
|
|
13
|
-
options
|
|
14
|
-
multistream.write(
|
|
63
|
+
options.log.trace('respond with "%s" for "%s"', PROTOCOL_ID, protocol);
|
|
64
|
+
await multistream.write(lp, uint8ArrayFromString(`${PROTOCOL_ID}\n`), options);
|
|
15
65
|
continue;
|
|
16
66
|
}
|
|
17
67
|
if (protocols.includes(protocol)) {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
return { stream: shakeStream, protocol };
|
|
68
|
+
options.log.trace('respond with "%s" for "%s"', protocol, protocol);
|
|
69
|
+
await multistream.write(lp, uint8ArrayFromString(`${protocol}\n`), options);
|
|
70
|
+
return { stream: lp.unwrap(), protocol };
|
|
22
71
|
}
|
|
23
72
|
if (protocol === 'ls') {
|
|
24
73
|
// <varint-msg-len><varint-proto-name-len><proto-name>\n<varint-proto-name-len><proto-name>\n\n
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
options
|
|
74
|
+
const protos = new Uint8ArrayList(...protocols.map(p => encode.single(uint8ArrayFromString(`${p}\n`))), uint8ArrayFromString('\n'));
|
|
75
|
+
await multistream.write(lp, protos, options);
|
|
76
|
+
options.log.trace('respond with "%s" for %s', protocols, protocol);
|
|
28
77
|
continue;
|
|
29
78
|
}
|
|
30
|
-
|
|
31
|
-
|
|
79
|
+
options.log('respond with "na" for "%s"', protocol);
|
|
80
|
+
await multistream.write(lp, uint8ArrayFromString('na\n'), options);
|
|
32
81
|
}
|
|
33
82
|
}
|
|
34
83
|
//# 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,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAE,UAAU,IAAI,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAC5E,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACjE,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAI/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAyC,MAAc,EAAE,SAA4B,EAAE,OAA8B;IAC/I,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;IAC9D,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,EAAE;QAC1B,aAAa,EAAE,mBAAmB;KACnC,CAAC,CAAA;IAEF,OAAO,IAAI,EAAE;QACX,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,iCAAiC,EAAE,SAAS,CAAC,CAAA;QAC/D,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;QAC1D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;QAExC,IAAI,QAAQ,KAAK,WAAW,EAAE;YAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,4BAA4B,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAA;YACtE,MAAM,WAAW,CAAC,KAAK,CAAC,EAAE,EAAE,oBAAoB,CAAC,GAAG,WAAW,IAAI,CAAC,EAAE,OAAO,CAAC,CAAA;YAC9E,SAAQ;SACT;QAED,IAAI,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;YAChC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,4BAA4B,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAA;YACnE,MAAM,WAAW,CAAC,KAAK,CAAC,EAAE,EAAE,oBAAoB,CAAC,GAAG,QAAQ,IAAI,CAAC,EAAE,OAAO,CAAC,CAAA;YAE3E,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAA;SACzC;QAED,IAAI,QAAQ,KAAK,IAAI,EAAE;YACrB,+FAA+F;YAC/F,MAAM,MAAM,GAAG,IAAI,cAAc,CAC/B,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EACpE,oBAAoB,CAAC,IAAI,CAAC,CAC3B,CAAA;YAED,MAAM,WAAW,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;YAC5C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,0BAA0B,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAA;YAClE,SAAQ;SACT;QAED,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,QAAQ,CAAC,CAAA;QACnD,MAAM,WAAW,CAAC,KAAK,CAAC,EAAE,EAAE,oBAAoB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAA;KACnE;AACH,CAAC"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -21,20 +21,12 @@
|
|
|
21
21
|
*/
|
|
22
22
|
import { PROTOCOL_ID } from './constants.js';
|
|
23
23
|
import type { AbortOptions, LoggerOptions } from '@libp2p/interface';
|
|
24
|
-
import type { Duplex, Source } from 'it-stream-types';
|
|
25
24
|
export { PROTOCOL_ID };
|
|
26
|
-
export interface ProtocolStream<
|
|
27
|
-
stream:
|
|
25
|
+
export interface ProtocolStream<Stream> {
|
|
26
|
+
stream: Stream;
|
|
28
27
|
protocol: string;
|
|
29
28
|
}
|
|
30
|
-
export interface ByteArrayInit extends AbortOptions, LoggerOptions {
|
|
31
|
-
writeBytes: true;
|
|
32
|
-
}
|
|
33
|
-
export interface ByteListInit extends AbortOptions, LoggerOptions {
|
|
34
|
-
writeBytes?: false;
|
|
35
|
-
}
|
|
36
29
|
export interface MultistreamSelectInit extends AbortOptions, LoggerOptions {
|
|
37
|
-
writeBytes?: boolean;
|
|
38
30
|
}
|
|
39
31
|
export { select, lazySelect } from './select.js';
|
|
40
32
|
export { handle } from './handle.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,aAAa,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;AAEpE,OAAO,EAAE,WAAW,EAAE,CAAA;AAEtB,MAAM,WAAW,cAAc,CAAC,MAAM;IACpC,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,qBAAsB,SAAQ,YAAY,EAAE,aAAa;CAEzE;AAED,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA"}
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAG5C,OAAO,EAAE,WAAW,EAAE,CAAA;AAWtB,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA"}
|
|
@@ -1,17 +1,22 @@
|
|
|
1
|
-
import { Uint8ArrayList } from 'uint8arraylist';
|
|
1
|
+
import { type Uint8ArrayList } from 'uint8arraylist';
|
|
2
2
|
import type { MultistreamSelectInit } from '.';
|
|
3
3
|
import type { AbortOptions, LoggerOptions } from '@libp2p/interface';
|
|
4
|
-
import type {
|
|
5
|
-
import type {
|
|
6
|
-
export declare function encode(buffer: Uint8Array | Uint8ArrayList): Uint8ArrayList;
|
|
4
|
+
import type { LengthPrefixedStream } from 'it-length-prefixed-stream';
|
|
5
|
+
import type { Duplex, Source } from 'it-stream-types';
|
|
7
6
|
/**
|
|
8
7
|
* `write` encodes and writes a single buffer
|
|
9
8
|
*/
|
|
10
|
-
export declare function write(writer:
|
|
9
|
+
export declare function write(writer: LengthPrefixedStream<Duplex<AsyncGenerator<Uint8Array>, Source<Uint8Array>>>, buffer: Uint8Array | Uint8ArrayList, options?: MultistreamSelectInit): Promise<void>;
|
|
11
10
|
/**
|
|
12
11
|
* `writeAll` behaves like `write`, except it encodes an array of items as a single write
|
|
13
12
|
*/
|
|
14
|
-
export declare function writeAll(writer:
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
export declare function writeAll(writer: LengthPrefixedStream<Duplex<AsyncGenerator<Uint8Array>, Source<Uint8Array>>>, buffers: Uint8Array[], options?: MultistreamSelectInit): Promise<void>;
|
|
14
|
+
/**
|
|
15
|
+
* Read a length-prefixed buffer from the passed stream, stripping the final newline character
|
|
16
|
+
*/
|
|
17
|
+
export declare function read(reader: LengthPrefixedStream<Duplex<AsyncGenerator<Uint8Array | Uint8ArrayList>, Source<Uint8Array>>>, options?: AbortOptions & LoggerOptions): Promise<Uint8ArrayList>;
|
|
18
|
+
/**
|
|
19
|
+
* Read a length-prefixed string from the passed stream, stripping the final newline character
|
|
20
|
+
*/
|
|
21
|
+
export declare function readString(reader: LengthPrefixedStream<Duplex<AsyncGenerator<Uint8Array | Uint8ArrayList>, Source<Uint8Array>>>, options?: AbortOptions & LoggerOptions): Promise<string>;
|
|
17
22
|
//# 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":"AACA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAGpD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,GAAG,CAAA;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACpE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AACrE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAIrD;;GAEG;AACH,wBAAsB,KAAK,CAAE,MAAM,EAAE,oBAAoB,CAAC,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,GAAG,cAAc,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAEtM;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAE,MAAM,EAAE,oBAAoB,CAAC,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAE3L;AAED;;GAEG;AACH,wBAAsB,IAAI,CAAE,MAAM,EAAE,oBAAoB,CAAC,MAAM,CAAC,cAAc,CAAC,UAAU,GAAG,cAAc,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CASlM;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAE,MAAM,EAAE,oBAAoB,CAAC,MAAM,CAAC,cAAc,CAAC,UAAU,GAAG,cAAc,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAIhM"}
|
package/dist/src/multistream.js
CHANGED
|
@@ -1,70 +1,34 @@
|
|
|
1
1
|
import { CodeError } from '@libp2p/interface/errors';
|
|
2
|
-
import {
|
|
3
|
-
import first from 'it-first';
|
|
4
|
-
import * as lp from 'it-length-prefixed';
|
|
5
|
-
import { pipe } from 'it-pipe';
|
|
6
|
-
import { Uint8ArrayList } from 'uint8arraylist';
|
|
2
|
+
import {} from 'uint8arraylist';
|
|
7
3
|
import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
|
|
8
4
|
import { toString as uint8ArrayToString } from 'uint8arrays/to-string';
|
|
9
|
-
import { MAX_PROTOCOL_LENGTH } from './constants.js';
|
|
10
5
|
const NewLine = uint8ArrayFromString('\n');
|
|
11
|
-
export function encode(buffer) {
|
|
12
|
-
const list = new Uint8ArrayList(buffer, NewLine);
|
|
13
|
-
return lp.encode.single(list);
|
|
14
|
-
}
|
|
15
6
|
/**
|
|
16
7
|
* `write` encodes and writes a single buffer
|
|
17
8
|
*/
|
|
18
|
-
export function write(writer, buffer, options) {
|
|
19
|
-
|
|
20
|
-
if (options?.writeBytes === true) {
|
|
21
|
-
writer.push(encoded.subarray());
|
|
22
|
-
}
|
|
23
|
-
else {
|
|
24
|
-
writer.push(encoded);
|
|
25
|
-
}
|
|
9
|
+
export async function write(writer, buffer, options) {
|
|
10
|
+
await writer.write(buffer, options);
|
|
26
11
|
}
|
|
27
12
|
/**
|
|
28
13
|
* `writeAll` behaves like `write`, except it encodes an array of items as a single write
|
|
29
14
|
*/
|
|
30
|
-
export function writeAll(writer, buffers, options) {
|
|
31
|
-
|
|
32
|
-
for (const buf of buffers) {
|
|
33
|
-
list.append(encode(buf));
|
|
34
|
-
}
|
|
35
|
-
if (options?.writeBytes === true) {
|
|
36
|
-
writer.push(list.subarray());
|
|
37
|
-
}
|
|
38
|
-
else {
|
|
39
|
-
writer.push(list);
|
|
40
|
-
}
|
|
15
|
+
export async function writeAll(writer, buffers, options) {
|
|
16
|
+
await writer.writeV(buffers, options);
|
|
41
17
|
}
|
|
18
|
+
/**
|
|
19
|
+
* Read a length-prefixed buffer from the passed stream, stripping the final newline character
|
|
20
|
+
*/
|
|
42
21
|
export async function read(reader, options) {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
next: async () => reader.next(byteLength)
|
|
47
|
-
};
|
|
48
|
-
let input = varByteSource;
|
|
49
|
-
// If we have been passed an abort signal, wrap the input source in an abortable
|
|
50
|
-
// iterator that will throw if the operation is aborted
|
|
51
|
-
if (options?.signal != null) {
|
|
52
|
-
input = abortableSource(varByteSource, options.signal);
|
|
53
|
-
}
|
|
54
|
-
// Once the length has been parsed, read chunk for that length
|
|
55
|
-
const onLength = (l) => {
|
|
56
|
-
byteLength = l;
|
|
57
|
-
};
|
|
58
|
-
const buf = await pipe(input, (source) => lp.decode(source, { onLength, maxDataLength: MAX_PROTOCOL_LENGTH }), async (source) => first(source));
|
|
59
|
-
if (buf == null || buf.length === 0) {
|
|
60
|
-
throw new CodeError('no buffer returned', 'ERR_INVALID_MULTISTREAM_SELECT_MESSAGE');
|
|
61
|
-
}
|
|
62
|
-
if (buf.get(buf.byteLength - 1) !== NewLine[0]) {
|
|
63
|
-
options?.log.error('Invalid mss message - missing newline - %s', buf.subarray());
|
|
22
|
+
const buf = await reader.read(options);
|
|
23
|
+
if (buf.byteLength === 0 || buf.get(buf.byteLength - 1) !== NewLine[0]) {
|
|
24
|
+
options?.log.error('Invalid mss message - missing newline', buf);
|
|
64
25
|
throw new CodeError('missing newline', 'ERR_INVALID_MULTISTREAM_SELECT_MESSAGE');
|
|
65
26
|
}
|
|
66
27
|
return buf.sublist(0, -1); // Remove newline
|
|
67
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* Read a length-prefixed string from the passed stream, stripping the final newline character
|
|
31
|
+
*/
|
|
68
32
|
export async function readString(reader, options) {
|
|
69
33
|
const buf = await read(reader, options);
|
|
70
34
|
return uint8ArrayToString(buf.subarray());
|
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"multistream.js","sourceRoot":"","sources":["../../src/multistream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,EAAuB,MAAM,gBAAgB,CAAA;AACpD,OAAO,EAAE,UAAU,IAAI,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAC5E,OAAO,EAAE,QAAQ,IAAI,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAMtE,MAAM,OAAO,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAA;AAE1C;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,KAAK,CAAE,MAAoF,EAAE,MAAmC,EAAE,OAA+B;IACrL,MAAM,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AACrC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAE,MAAoF,EAAE,OAAqB,EAAE,OAA+B;IAC1K,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;AACvC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,IAAI,CAAE,MAAqG,EAAE,OAAsC;IACvK,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAEtC,IAAI,GAAG,CAAC,UAAU,KAAK,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE;QACtE,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,uCAAuC,EAAE,GAAG,CAAC,CAAA;QAChE,MAAM,IAAI,SAAS,CAAC,iBAAiB,EAAE,wCAAwC,CAAC,CAAA;KACjF;IAED,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA,CAAC,iBAAiB;AAC7C,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAE,MAAqG,EAAE,OAAsC;IAC7K,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAEvC,OAAO,kBAAkB,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAA;AAC3C,CAAC"}
|
package/dist/src/select.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import type {
|
|
3
|
-
import type { Duplex, Source } from 'it-stream-types';
|
|
1
|
+
import type { MultistreamSelectInit, ProtocolStream } from './index.js';
|
|
2
|
+
import type { Duplex } from 'it-stream-types';
|
|
4
3
|
/**
|
|
5
4
|
* Negotiate a protocol to use from a list of protocols.
|
|
6
5
|
*
|
|
@@ -44,8 +43,7 @@ import type { Duplex, Source } from 'it-stream-types';
|
|
|
44
43
|
* // }
|
|
45
44
|
* ```
|
|
46
45
|
*/
|
|
47
|
-
export declare function select(stream:
|
|
48
|
-
export declare function select(stream: Duplex<AsyncGenerator<Uint8ArrayList | Uint8Array>, Source<Uint8ArrayList | Uint8Array>>, protocols: string | string[], options?: ByteListInit): Promise<ProtocolStream<Uint8ArrayList, Uint8ArrayList | Uint8Array>>;
|
|
46
|
+
export declare function select<Stream extends Duplex<any, any, any>>(stream: Stream, protocols: string | string[], options: MultistreamSelectInit): Promise<ProtocolStream<Stream>>;
|
|
49
47
|
/**
|
|
50
48
|
* Lazily negotiates a protocol.
|
|
51
49
|
*
|
|
@@ -54,6 +52,5 @@ export declare function select(stream: Duplex<AsyncGenerator<Uint8ArrayList | Ui
|
|
|
54
52
|
*
|
|
55
53
|
* Use when it is known that the receiver supports the desired protocol.
|
|
56
54
|
*/
|
|
57
|
-
export declare function lazySelect(stream:
|
|
58
|
-
export declare function lazySelect(stream: Duplex<Source<Uint8ArrayList | Uint8Array>, Source<Uint8ArrayList | Uint8Array>>, protocol: string): ProtocolStream<Uint8ArrayList, Uint8ArrayList | Uint8Array>;
|
|
55
|
+
export declare function lazySelect<Stream extends Duplex<any, any, any>>(stream: Stream, protocol: string, options: MultistreamSelectInit): ProtocolStream<Stream>;
|
|
59
56
|
//# sourceMappingURL=select.d.ts.map
|
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":"AAMA,OAAO,KAAK,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AACvE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAE7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,wBAAsB,MAAM,CAAE,MAAM,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAG,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CA8ClL;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAE,MAAM,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAG,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,qBAAqB,GAAG,cAAc,CAAC,MAAM,CAAC,CA+C3J"}
|