@libp2p/mplex 10.1.5-1675adee2 → 10.1.5-2bbaf4361
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/index.min.js +1 -1
- package/dist/src/decode.d.ts.map +1 -1
- package/dist/src/decode.js +4 -3
- package/dist/src/decode.js.map +1 -1
- package/dist/src/errors.d.ts +7 -0
- package/dist/src/errors.d.ts.map +1 -0
- package/dist/src/errors.js +10 -0
- package/dist/src/errors.js.map +1 -0
- package/dist/src/mplex.d.ts.map +1 -1
- package/dist/src/mplex.js +5 -4
- package/dist/src/mplex.js.map +1 -1
- package/package.json +5 -5
- package/src/decode.ts +4 -3
- package/src/errors.ts +9 -0
- package/src/mplex.ts +5 -4
package/dist/index.min.js
CHANGED
@@ -1,3 +1,3 @@
|
|
1
1
|
(function (root, factory) {(typeof module === 'object' && module.exports) ? module.exports = factory() : root.Libp2PMplex = factory()}(typeof self !== 'undefined' ? self : this, function () {
|
2
|
-
"use strict";var Libp2PMplex=(()=>{var de=Object.defineProperty;var Dt=Object.getOwnPropertyDescriptor;var Nt=Object.getOwnPropertyNames;var Ut=Object.prototype.hasOwnProperty;var _=(r,e)=>{for(var t in e)de(r,t,{get:e[t],enumerable:!0})},Ot=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of Nt(e))!Ut.call(r,s)&&s!==t&&de(r,s,{get:()=>e[s],enumerable:!(n=Dt(e,s))||n.enumerable});return r};var kt=r=>Ot(de({},"__esModule",{value:!0}),r);var _n={};_(_n,{mplex:()=>Sn});var T=class extends Error{code;props;constructor(e,t,n){super(e),this.code=t,this.name=n?.name??"CodeError",this.props=n??{}}};var Xe=Symbol.for("@libp2p/service-capabilities"),Rn=Symbol.for("@libp2p/service-dependencies");function Qe(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 Je(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}function ee(r,e){let t=Qe(r).return?.();Je(t)&&t.catch(n=>{e.error("could not cause iterator to return",n)})}var He=()=>{let r=new Error("Delay aborted");return r.name="AbortError",r},Pt=new WeakMap;function Ft({clearTimeout:r,setTimeout:e}={}){return(t,{value:n,signal:s}={})=>{if(s?.aborted)return Promise.reject(He());let o,i,a,c=r??clearTimeout,p=()=>{c(o),a(He())},d=()=>{s&&s.removeEventListener("abort",p)},l=new Promise((y,U)=>{i=()=>{d(),y(n)},a=U,o=(e??setTimeout)(i,t)});return s&&s.addEventListener("abort",p,{once:!0}),Pt.set(l,()=>{c(o),o=null,i()}),l}}var Vt=Ft(),Ze=Vt;var te=class{memoryStorage;points;duration;blockDuration;execEvenly;execEvenlyMinDelayMs;keyPrefix;constructor(e={}){this.points=e.points??4,this.duration=e.duration??1,this.blockDuration=e.blockDuration??0,this.execEvenly=e.execEvenly??!1,this.execEvenlyMinDelayMs=e.execEvenlyMinDelayMs??this.duration*1e3/this.points,this.keyPrefix=e.keyPrefix??"rlflx",this.memoryStorage=new pe}async consume(e,t=1,n={}){let s=this.getKey(e),o=this._getKeySecDuration(n),i=this.memoryStorage.incrby(s,t,o);if(i.remainingPoints=Math.max(this.points-i.consumedPoints,0),i.consumedPoints>this.points)throw this.blockDuration>0&&i.consumedPoints<=this.points+t&&(i=this.memoryStorage.set(s,i.consumedPoints,this.blockDuration)),new T("Rate limit exceeded","ERR_RATE_LIMIT_EXCEEDED",i);if(this.execEvenly&&i.msBeforeNext>0&&!i.isFirstInDuration){let a=Math.ceil(i.msBeforeNext/(i.remainingPoints+2));a<this.execEvenlyMinDelayMs&&(a=i.consumedPoints*this.execEvenlyMinDelayMs),await Ze(a)}return i}penalty(e,t=1,n={}){let s=this.getKey(e),o=this._getKeySecDuration(n),i=this.memoryStorage.incrby(s,t,o);return i.remainingPoints=Math.max(this.points-i.consumedPoints,0),i}reward(e,t=1,n={}){let s=this.getKey(e),o=this._getKeySecDuration(n),i=this.memoryStorage.incrby(s,-t,o);return i.remainingPoints=Math.max(this.points-i.consumedPoints,0),i}block(e,t){let n=t*1e3,s=this.points+1;return this.memoryStorage.set(this.getKey(e),s,t),{remainingPoints:0,msBeforeNext:n===0?-1:n,consumedPoints:s,isFirstInDuration:!1}}set(e,t,n=0){let s=(n>=0?n:this.duration)*1e3;return this.memoryStorage.set(this.getKey(e),t,n),{remainingPoints:0,msBeforeNext:s===0?-1:s,consumedPoints:t,isFirstInDuration:!1}}get(e){let t=this.memoryStorage.get(this.getKey(e));return t!=null&&(t.remainingPoints=Math.max(this.points-t.consumedPoints,0)),t}delete(e){this.memoryStorage.delete(this.getKey(e))}_getKeySecDuration(e){return e?.customDuration!=null&&e.customDuration>=0?e.customDuration:this.duration}getKey(e){return this.keyPrefix.length>0?`${this.keyPrefix}:${e}`:e}parseKey(e){return e.substring(this.keyPrefix.length)}},pe=class{storage;constructor(){this.storage=new Map}incrby(e,t,n){let s=this.storage.get(e);if(s!=null){let o=s.expiresAt!=null?s.expiresAt.getTime()-new Date().getTime():-1;return s.expiresAt==null||o>0?(s.value+=t,{remainingPoints:0,msBeforeNext:o,consumedPoints:s.value,isFirstInDuration:!1}):this.set(e,t,n)}return this.set(e,t,n)}set(e,t,n){let s=n*1e3,o=this.storage.get(e);o!=null&&clearTimeout(o.timeoutId);let i={value:t,expiresAt:s>0?new Date(Date.now()+s):void 0};return this.storage.set(e,i),s>0&&(i.timeoutId=setTimeout(()=>{this.storage.delete(e)},s),i.timeoutId.unref!=null&&i.timeoutId.unref()),{remainingPoints:0,msBeforeNext:s===0?-1:s,consumedPoints:i.value,isFirstInDuration:!0}}get(e){let t=this.storage.get(e);if(t!=null)return{remainingPoints:0,msBeforeNext:t.expiresAt!=null?t.expiresAt.getTime()-new Date().getTime():-1,consumedPoints:t.value,isFirstInDuration:!1}}delete(e){let t=this.storage.get(e);return t!=null?(t.timeoutId!=null&&clearTimeout(t.timeoutId),this.storage.delete(e),!0):!1}};function L(){let r={};return r.promise=new Promise((e,t)=>{r.resolve=e,r.reject=t}),r}var re=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}},z=class{size;hwm;head;tail;constructor(e={}){this.hwm=e.splitLimit??16,this.head=new re(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 re(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 me=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.code=t??"ABORT_ERR"}};function k(r={}){return zt(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 zt(r,e){e=e??{};let t=e.onEnd,n=new z,s,o,i,a=L(),c=async()=>{try{return n.isEmpty()?i?{done:!0}:await new Promise((u,g)=>{o=E=>{o=null,n.push(E);try{u(r(n))}catch(w){g(w)}return s}}):r(n)}finally{n.isEmpty()&&queueMicrotask(()=>{a.resolve(),a=L()})}},p=u=>o!=null?o(u):(n.push(u),s),d=u=>(n=new z,o!=null?o({error:u}):(n.push({error:u}),s)),l=u=>{if(i)return s;if(e?.objectMode!==!0&&u?.byteLength==null)throw new Error("objectMode was not true but tried to push non-Uint8Array value");return p({done:!1,value:u})},y=u=>i?s:(i=!0,u!=null?d(u):p({done:!0})),U=()=>(n=new z,y(),{done:!0}),f=u=>(y(u),{done:!0});if(s={[Symbol.asyncIterator](){return this},next:c,return:U,throw:f,push:l,end:y,get readableLength(){return n.size},onEmpty:async u=>{let g=u?.signal;if(g?.throwIfAborted(),n.isEmpty())return;let E,w;g!=null&&(E=new Promise((S,A)=>{w=()=>{A(new me)},g.addEventListener("abort",w)}));try{await Promise.race([a.promise,E])}finally{w!=null&&g!=null&&g?.removeEventListener("abort",w)}}},t==null)return s;let b=s;return s={[Symbol.asyncIterator](){return this},next(){return b.next()},throw(u){return b.throw(u),t!=null&&(t(u),t=void 0),{done:!0}},return(){return b.return(),t!=null&&(t(),t=void 0),{done:!0}},push:l,end(u){return b.end(u),t!=null&&(t(u),t=void 0),s},get readableLength(){return b.readableLength},onEmpty:u=>b.onEmpty(u)},s}function Bt(r){return r[Symbol.asyncIterator]!=null}function Gt(...r){let e=[];for(let t of r)Bt(t)||e.push(t);return e.length===r.length?function*(){for(let t of e)yield*t}():async function*(){let t=k({objectMode:!0});Promise.resolve().then(async()=>{try{await Promise.all(r.map(async n=>{for await(let s of n)t.push(s)})),t.end()}catch(n){t.end(n)}}),yield*t}()}var Ye=Gt;function et(r,...e){if(r==null)throw new Error("Empty pipeline");if(be(r)){let n=r;r=()=>n.source}else if(rt(r)||tt(r)){let n=r;r=()=>n}let t=[r,...e];if(t.length>1&&be(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++)be(t[n])&&(t[n]=$t(t[n]));return Wt(...t)}var Wt=(...r)=>{let e;for(;r.length>0;)e=r.shift()(e);return e},tt=r=>r?.[Symbol.asyncIterator]!=null,rt=r=>r?.[Symbol.iterator]!=null,be=r=>r==null?!1:r.sink!=null&&r.source!=null,$t=r=>e=>{let t=r.sink(e);if(t?.then!=null){let n=k({objectMode:!0});t.then(()=>{n.end()},i=>{n.end(i)});let s,o=r.source;if(tt(o))s=async function*(){yield*o,n.end()};else if(rt(o))s=function*(){yield*o,n.end()};else throw new Error("Unknown duplex source type - must be Iterable or AsyncIterable");return Ye(n,s())}return r.source};function ge(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}function D(r=0){return new Uint8Array(r)}function I(r=0){return new Uint8Array(r)}function ne(r,e){e==null&&(e=r.reduce((s,o)=>s+o.length,0));let t=I(e),n=0;for(let s of r)t.set(s,n),n+=s.length;return t}var Se={};_(Se,{base10:()=>Ht});var As=new Uint8Array(0);function nt(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}function N(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")}function st(r){return new TextEncoder().encode(r)}function ot(r){return new TextDecoder().decode(r)}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 s=0;s<r.length;s++){var o=r.charAt(s),i=o.charCodeAt(0);if(t[i]!==255)throw new TypeError(o+" is ambiguous");t[i]=s}var a=r.length,c=r.charAt(0),p=Math.log(a)/Math.log(256),d=Math.log(256)/Math.log(a);function l(f){if(f instanceof Uint8Array||(ArrayBuffer.isView(f)?f=new Uint8Array(f.buffer,f.byteOffset,f.byteLength):Array.isArray(f)&&(f=Uint8Array.from(f))),!(f instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(f.length===0)return"";for(var b=0,u=0,g=0,E=f.length;g!==E&&f[g]===0;)g++,b++;for(var w=(E-g)*d+1>>>0,S=new Uint8Array(w);g!==E;){for(var A=f[g],O=0,R=w-1;(A!==0||O<u)&&R!==-1;R--,O++)A+=256*S[R]>>>0,S[R]=A%a>>>0,A=A/a>>>0;if(A!==0)throw new Error("Non-zero carry");u=O,g++}for(var M=w-u;M!==w&&S[M]===0;)M++;for(var Y=c.repeat(b);M<w;++M)Y+=r.charAt(S[M]);return Y}function y(f){if(typeof f!="string")throw new TypeError("Expected String");if(f.length===0)return new Uint8Array;var b=0;if(f[b]!==" "){for(var u=0,g=0;f[b]===c;)u++,b++;for(var E=(f.length-b)*p+1>>>0,w=new Uint8Array(E);f[b];){var S=t[f.charCodeAt(b)];if(S===255)return;for(var A=0,O=E-1;(S!==0||A<g)&&O!==-1;O--,A++)S+=a*w[O]>>>0,w[O]=S%256>>>0,S=S/256>>>0;if(S!==0)throw new Error("Non-zero carry");g=A,b++}if(f[b]!==" "){for(var R=E-g;R!==E&&w[R]===0;)R++;for(var M=new Uint8Array(u+(E-R)),Y=u;R!==E;)M[Y++]=w[R++];return M}}}function U(f){var b=y(f);if(b)return b;throw new Error(`Non-${e} character`)}return{encode:l,decodeUnsafe:y,decode:U}}var jt=qt,Xt=jt,at=Xt;var we=class{name;prefix;baseEncode;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")}},ye=class{name;prefix;baseDecode;prefixCodePoint;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 ct(this,e)}},Ee=class{decoders;constructor(e){this.decoders=e}or(e){return ct(this,e)}decode(e){let t=e[0],n=this.decoders[t];if(n!=null)return n.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}};function ct(r,e){return new Ee({...r.decoders??{[r.prefix]:r},...e.decoders??{[e.prefix]:e}})}var xe=class{name;prefix;baseEncode;baseDecode;encoder;decoder;constructor(e,t,n,s){this.name=e,this.prefix=t,this.baseEncode=n,this.baseDecode=s,this.encoder=new we(e,t,n),this.decoder=new ye(e,t,s)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}};function B({name:r,prefix:e,encode:t,decode:n}){return new xe(r,e,t,n)}function P({name:r,prefix:e,alphabet:t}){let{encode:n,decode:s}=at(t,r);return B({prefix:e,name:r,encode:n,decode:o=>N(s(o))})}function Qt(r,e,t,n){let s={};for(let d=0;d<e.length;++d)s[e[d]]=d;let o=r.length;for(;r[o-1]==="=";)--o;let i=new Uint8Array(o*t/8|0),a=0,c=0,p=0;for(let d=0;d<o;++d){let l=s[r[d]];if(l===void 0)throw new SyntaxError(`Non-${n} character`);c=c<<t|l,a+=t,a>=8&&(a-=8,i[p++]=255&c>>a)}if(a>=t||255&c<<8-a)throw new SyntaxError("Unexpected end of data");return i}function Jt(r,e,t){let n=e[e.length-1]==="=",s=(1<<t)-1,o="",i=0,a=0;for(let c=0;c<r.length;++c)for(a=a<<8|r[c],i+=8;i>t;)i-=t,o+=e[s&a>>i];if(i!==0&&(o+=e[s&a<<t-i]),n)for(;o.length*t&7;)o+="=";return o}function m({name:r,prefix:e,bitsPerChar:t,alphabet:n}){return B({prefix:e,name:r,encode(s){return Jt(s,n,t)},decode(s){return Qt(s,n,t,r)}})}var Ht=P({prefix:"9",name:"base10",alphabet:"0123456789"});var _e={};_(_e,{base16:()=>Zt,base16upper:()=>Yt});var Zt=m({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),Yt=m({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var Ie={};_(Ie,{base2:()=>er});var er=m({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var Ae={};_(Ae,{base256emoji:()=>or});var ht=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}"),tr=ht.reduce((r,e,t)=>(r[t]=e,r),[]),rr=ht.reduce((r,e,t)=>(r[e.codePointAt(0)]=t,r),[]);function nr(r){return r.reduce((e,t)=>(e+=tr[t],e),"")}function sr(r){let e=[];for(let t of r){let n=rr[t.codePointAt(0)];if(n===void 0)throw new Error(`Non-base256emoji character: ${t}`);e.push(n)}return new Uint8Array(e)}var or=B({prefix:"\u{1F680}",name:"base256emoji",encode:nr,decode:sr});var Re={};_(Re,{base32:()=>G,base32hex:()=>hr,base32hexpad:()=>lr,base32hexpadupper:()=>fr,base32hexupper:()=>ur,base32pad:()=>ar,base32padupper:()=>cr,base32upper:()=>ir,base32z:()=>dr});var G=m({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),ir=m({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),ar=m({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),cr=m({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),hr=m({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),ur=m({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),lr=m({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),fr=m({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),dr=m({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var Te={};_(Te,{base36:()=>pr,base36upper:()=>mr});var pr=P({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),mr=P({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var ve={};_(ve,{base58btc:()=>v,base58flickr:()=>br});var v=P({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),br=P({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var Ce={};_(Ce,{base64:()=>gr,base64pad:()=>wr,base64url:()=>yr,base64urlpad:()=>Er});var gr=m({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),wr=m({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),yr=m({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),Er=m({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var Me={};_(Me,{base8:()=>xr});var xr=m({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var Le={};_(Le,{identity:()=>Sr});var Sr=B({prefix:"\0",name:"identity",encode:r=>ot(r),decode:r=>st(r)});var Bs=new TextEncoder,Gs=new TextDecoder;var Ne={};_(Ne,{identity:()=>Kr});var Ar=ft,ut=128,Rr=127,Tr=~Rr,vr=Math.pow(2,31);function ft(r,e,t){e=e||[],t=t||0;for(var n=t;r>=vr;)e[t++]=r&255|ut,r/=128;for(;r&Tr;)e[t++]=r&255|ut,r>>>=7;return e[t]=r|0,ft.bytes=t-n+1,e}var Cr=De,Mr=128,lt=127;function De(r,n){var t=0,n=n||0,s=0,o=n,i,a=r.length;do{if(o>=a)throw De.bytes=0,new RangeError("Could not decode varint");i=r[o++],t+=s<28?(i<)<<s:(i<)*Math.pow(2,s),s+=7}while(i>=Mr);return De.bytes=o-n,t}var Lr=Math.pow(2,7),Dr=Math.pow(2,14),Nr=Math.pow(2,21),Ur=Math.pow(2,28),Or=Math.pow(2,35),kr=Math.pow(2,42),Pr=Math.pow(2,49),Fr=Math.pow(2,56),Vr=Math.pow(2,63),zr=function(r){return r<Lr?1:r<Dr?2:r<Nr?3:r<Ur?4:r<Or?5:r<kr?6:r<Pr?7:r<Fr?8:r<Vr?9:10},Br={encode:Ar,decode:Cr,encodingLength:zr},Gr=Br,q=Gr;function j(r,e=0){return[q.decode(r,e),q.decode.bytes]}function W(r,e,t=0){return q.encode(r,e,t),e}function $(r){return q.encodingLength(r)}function F(r,e){let t=e.byteLength,n=$(r),s=n+$(t),o=new Uint8Array(s+t);return W(r,o,0),W(t,o,n),o.set(e,s),new K(r,t,e,o)}function dt(r){let e=N(r),[t,n]=j(e),[s,o]=j(e.subarray(n)),i=e.subarray(n+o);if(i.byteLength!==s)throw new Error("Incorrect length");return new K(t,s,i,e)}function pt(r,e){if(r===e)return!0;{let t=e;return r.code===t.code&&r.size===t.size&&t.bytes instanceof Uint8Array&&nt(r.bytes,t.bytes)}}var K=class{code;size;digest;bytes;constructor(e,t,n,s){this.code=e,this.size=t,this.digest=n,this.bytes=s}};var mt=0,Wr="identity",bt=N;function $r(r){return F(mt,bt(r))}var Kr={code:mt,name:Wr,encode:bt,digest:$r};var ke={};_(ke,{sha256:()=>qr,sha512:()=>jr});function Oe({name:r,code:e,encode:t}){return new Ue(r,e,t)}var Ue=class{name;code;encode;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?F(this.code,t):t.then(n=>F(this.code,n))}else throw Error("Unknown type, must be binary type")}};function wt(r){return async e=>new Uint8Array(await crypto.subtle.digest(r,e))}var qr=Oe({name:"sha2-256",code:18,encode:wt("SHA-256")}),jr=Oe({name:"sha2-512",code:19,encode:wt("SHA-512")});function yt(r,e){let{bytes:t,version:n}=r;switch(n){case 0:return Qr(t,Pe(r),e??v.encoder);default:return Jr(t,Pe(r),e??G.encoder)}}var Et=new WeakMap;function Pe(r){let e=Et.get(r);if(e==null){let t=new Map;return Et.set(r,t),t}return e}var oe=class r{code;version;multihash;bytes;"/";constructor(e,t,n,s){this.code=t,this.version=e,this.multihash=n,this.bytes=s,this["/"]=s}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!==Q)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==Hr)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=F(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!=null&&e.code===n.code&&e.version===n.version&&pt(e.multihash,n.multihash)}toString(e){return yt(this,e)}toJSON(){return{"/":yt(this)}}link(){return this}[Symbol.toStringTag]="CID";[Symbol.for("nodejs.util.inspect.custom")](){return`CID(${this.toString()})`}static asCID(e){if(e==null)return null;let t=e;if(t instanceof r)return t;if(t["/"]!=null&&t["/"]===t.bytes||t.asCID===t){let{version:n,code:s,multihash:o,bytes:i}=t;return new r(n,s,o,i??xt(n,s,o.bytes))}else if(t[Zr]===!0){let{version:n,multihash:s,code:o}=t,i=dt(s);return r.create(n,o,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!==Q)throw new Error(`Version 0 CID must use dag-pb (code: ${Q}) block encoding`);return new r(e,t,n,n.bytes)}case 1:{let s=xt(e,t,n.bytes);return new r(e,t,n,s)}default:throw new Error("Invalid version")}}static createV0(e){return r.create(0,Q,e)}static createV1(e,t){return r.create(1,e,t)}static decode(e){let[t,n]=r.decodeFirst(e);if(n.length!==0)throw new Error("Incorrect length");return t}static decodeFirst(e){let t=r.inspectBytes(e),n=t.size-t.multihashSize,s=N(e.subarray(n,n+t.multihashSize));if(s.byteLength!==t.multihashSize)throw new Error("Incorrect length");let o=s.subarray(t.multihashSize-t.digestSize),i=new K(t.multihashCode,t.digestSize,o,s);return[t.version===0?r.createV0(i):r.createV1(t.codec,i),e.subarray(t.size)]}static inspectBytes(e){let t=0,n=()=>{let[l,y]=j(e.subarray(t));return t+=y,l},s=n(),o=Q;if(s===18?(s=0,t=0):o=n(),s!==0&&s!==1)throw new RangeError(`Invalid CID version ${s}`);let i=t,a=n(),c=n(),p=t+c,d=p-i;return{version:s,codec:o,multihashCode:a,digestSize:c,multihashSize:d,size:p}}static parse(e,t){let[n,s]=Xr(e,t),o=r.decode(s);if(o.version===0&&e[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return Pe(o).set(n,e),o}};function Xr(r,e){switch(r[0]){case"Q":{let t=e??v;return[v.prefix,t.decode(`${v.prefix}${r}`)]}case v.prefix:{let t=e??v;return[v.prefix,t.decode(r)]}case G.prefix:{let t=e??G;return[G.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)]}}}function Qr(r,e,t){let{prefix:n}=t;if(n!==v.prefix)throw Error(`Cannot string encode V0 in ${t.name} encoding`);let s=e.get(n);if(s==null){let o=t.encode(r).slice(1);return e.set(n,o),o}else return s}function Jr(r,e,t){let{prefix:n}=t,s=e.get(n);if(s==null){let o=t.encode(r);return e.set(n,o),o}else return s}var Q=112,Hr=18;function xt(r,e,t){let n=$(r),s=n+$(e),o=new Uint8Array(s+t.byteLength);return W(r,o,0),W(e,o,n),o.set(t,s),o}var Zr=Symbol.for("@ipld/js-cid/CID");var Fe={...Le,...Ie,...Me,...Se,..._e,...Re,...Te,...ve,...Ce,...Ae},ho={...ke,...Ne};function _t(r,e,t,n){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:n}}}var St=_t("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),Ve=_t("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=I(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),Yr={utf8:St,"utf-8":St,hex:Fe.base16,latin1:Ve,ascii:Ve,binary:Ve,...Fe},ie=Yr;function ze(r,e="utf8"){let t=ie[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.decoder.decode(`${t.prefix}${r}`)}function J(r,e="utf8"){let t=ie[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.encoder.encode(r).substring(1)}var At=Symbol.for("@achingbrain/uint8arraylist");function It(r,e){if(e==null||e<0)throw new RangeError("index is out of bounds");let t=0;for(let n of r){let s=t+n.byteLength;if(e<s)return{buf:n,index:e-t};t=s}throw new RangeError("index is out of bounds")}function ae(r){return!!r?.[At]}var C=class r{bufs;length;[At]=!0;constructor(...e){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(ae(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(ae(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=It(this.bufs,e);return t.buf[t.index]}set(e,t){let n=It(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(ae(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:s}=this._subList(e,t);return ne(n,s)}subarray(e,t){let{bufs:n,length:s}=this._subList(e,t);return n.length===1?n[0]:ne(n,s)}sublist(e,t){let{bufs:n,length:s}=this._subList(e,t),o=new r;return o.length=s,o.bufs=[...n],o}_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=[],s=0;for(let o=0;o<this.bufs.length;o++){let i=this.bufs[o],a=s,c=a+i.byteLength;if(s=c,e>=c)continue;let p=e>=a&&e<c,d=t>a&&t<=c;if(p&&d){if(e===a&&t===c){n.push(i);break}let l=e-a;n.push(i.subarray(l,l+(t-e)));break}if(p){if(e===0){n.push(i);continue}n.push(i.subarray(e-a));continue}if(d){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(!ae(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 s=n.byteLength;if(s===0)throw new TypeError("search must be at least 1 byte long");let o=256,i=new Int32Array(o);for(let l=0;l<o;l++)i[l]=-1;for(let l=0;l<s;l++)i[n[l]]=l;let a=i,c=this.byteLength-n.byteLength,p=n.byteLength-1,d;for(let l=t;l<=c;l+=d){d=0;for(let y=p;y>=0;y--){let U=this.get(l+y);if(n[y]!==U){d=Math.max(1,y-a[U]);break}}if(d===0)return l}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=I(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 s=D(2);new DataView(s.buffer,s.byteOffset,s.byteLength).setInt16(0,t,n),this.write(s,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 s=D(4);new DataView(s.buffer,s.byteOffset,s.byteLength).setInt32(0,t,n),this.write(s,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 s=D(8);new DataView(s.buffer,s.byteOffset,s.byteLength).setBigInt64(0,t,n),this.write(s,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=I(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 s=D(2);new DataView(s.buffer,s.byteOffset,s.byteLength).setUint16(0,t,n),this.write(s,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 s=D(4);new DataView(s.buffer,s.byteOffset,s.byteLength).setUint32(0,t,n),this.write(s,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 s=D(8);new DataView(s.buffer,s.byteOffset,s.byteLength).setBigUint64(0,t,n),this.write(s,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 s=D(4);new DataView(s.buffer,s.byteOffset,s.byteLength).setFloat32(0,t,n),this.write(s,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 s=D(8);new DataView(s.buffer,s.byteOffset,s.byteLength).setFloat64(0,t,n),this.write(s,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(!ge(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((s,o)=>s+o.byteLength,0)),n.length=t,n}};var h;(function(r){r[r.NEW_STREAM=0]="NEW_STREAM",r[r.MESSAGE_RECEIVER=1]="MESSAGE_RECEIVER",r[r.MESSAGE_INITIATOR=2]="MESSAGE_INITIATOR",r[r.CLOSE_RECEIVER=3]="CLOSE_RECEIVER",r[r.CLOSE_INITIATOR=4]="CLOSE_INITIATOR",r[r.RESET_RECEIVER=5]="RESET_RECEIVER",r[r.RESET_INITIATOR=6]="RESET_INITIATOR"})(h||(h={}));var H=Object.freeze({0:"NEW_STREAM",1:"MESSAGE_RECEIVER",2:"MESSAGE_INITIATOR",3:"CLOSE_RECEIVER",4:"CLOSE_INITIATOR",5:"RESET_RECEIVER",6:"RESET_INITIATOR"}),Be=Object.freeze({NEW_STREAM:h.NEW_STREAM,MESSAGE:h.MESSAGE_INITIATOR,CLOSE:h.CLOSE_INITIATOR,RESET:h.RESET_INITIATOR}),Rt=Object.freeze({MESSAGE:h.MESSAGE_RECEIVER,CLOSE:h.CLOSE_RECEIVER,RESET:h.RESET_RECEIVER});var Ge=1<<20,en=4<<20,ce=class{_buffer;_headerInfo;_maxMessageSize;_maxUnprocessedMessageQueueSize;constructor(e=Ge,t=en){this._buffer=new C,this._headerInfo=null,this._maxMessageSize=e,this._maxUnprocessedMessageQueueSize=t}write(e){if(e==null||e.length===0)return[];if(this._buffer.append(e),this._buffer.byteLength>this._maxUnprocessedMessageQueueSize)throw Object.assign(new Error("unprocessed message queue size too large!"),{code:"ERR_MSG_QUEUE_TOO_BIG"});let t=[];for(;this._buffer.length!==0;){if(this._headerInfo==null)try{this._headerInfo=this._decodeHeader(this._buffer)}catch(p){if(p.code==="ERR_MSG_TOO_BIG")throw p;break}let{id:n,type:s,length:o,offset:i}=this._headerInfo;if(this._buffer.length-i<o)break;let c={id:n,type:s};(s===h.NEW_STREAM||s===h.MESSAGE_INITIATOR||s===h.MESSAGE_RECEIVER)&&(c.data=this._buffer.sublist(i,i+o)),t.push(c),this._buffer.consume(i+o),this._headerInfo=null}return t}_decodeHeader(e){let{value:t,offset:n}=vt(e),{value:s,offset:o}=vt(e,n),i=t&7;if(H[i]==null)throw new Error(`Invalid type received: ${i}`);if(s>this._maxMessageSize)throw Object.assign(new Error("message size too large!"),{code:"ERR_MSG_TOO_BIG"});return{id:t>>3,type:i,offset:n+o,length:s}}},tn=128,Tt=127;function vt(r,e=0){let t=0,n=0,s=e,o,i=r.length;do{if(s>=i||n>49)throw e=0,new RangeError("Could not decode varint");o=r.get(s++),t+=n<28?(o&Tt)<<n:(o&Tt)*Math.pow(2,n),n+=7}while(o>=tn);return e=s-e,{value:t,offset:e}}var rn=Math.pow(2,7),nn=Math.pow(2,14),sn=Math.pow(2,21),on=Math.pow(2,28),an=Math.pow(2,35),cn=Math.pow(2,42),hn=Math.pow(2,49),x=128;function V(r){if(r<rn)return 1;if(r<nn)return 2;if(r<sn)return 3;if(r<on)return 4;if(r<an)return 5;if(r<cn)return 6;if(r<hn)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(V(r)){case 8:e[t++]=r&255|x,r/=128;case 7:e[t++]=r&255|x,r/=128;case 6:e[t++]=r&255|x,r/=128;case 5:e[t++]=r&255|x,r/=128;case 4:e[t++]=r&255|x,r>>>=7;case 3:e[t++]=r&255|x,r>>>=7;case 2:e[t++]=r&255|x,r>>>=7;case 1:{e[t++]=r&255,r>>>=7;break}default:throw new Error("unreachable")}return e}function ln(r,e,t=0){switch(V(r)){case 8:e.set(t++,r&255|x),r/=128;case 7:e.set(t++,r&255|x),r/=128;case 6:e.set(t++,r&255|x),r/=128;case 5:e.set(t++,r&255|x),r/=128;case 4:e.set(t++,r&255|x),r>>>=7;case 3:e.set(t++,r&255|x),r>>>=7;case 2:e.set(t++,r&255|x),r>>>=7;case 1:{e.set(t++,r&255),r>>>=7;break}default:throw new Error("unreachable")}return e}function he(r,e,t=0){return e==null&&(e=I(V(r))),e instanceof Uint8Array?un(r,e,t):ln(r,e,t)}var We=10*1024,$e=class{_pool;_poolOffset;constructor(){this._pool=I(We),this._poolOffset=0}write(e,t){let n=this._pool,s=this._poolOffset;he(e.id<<3|e.type,n,s),s+=V(e.id<<3|e.type),(e.type===h.NEW_STREAM||e.type===h.MESSAGE_INITIATOR||e.type===h.MESSAGE_RECEIVER)&&e.data!=null?(he(e.data.length,n,s),s+=V(e.data.length)):(he(0,n,s),s+=V(0));let o=n.subarray(this._poolOffset,s);We-s<100?(this._pool=I(We),this._poolOffset=0):this._poolOffset=s,t.append(o),(e.type===h.NEW_STREAM||e.type===h.MESSAGE_INITIATOR||e.type===h.MESSAGE_RECEIVER)&&e.data!=null&&t.append(e.data)}},dn=new $e;async function*Ct(r){for await(let e of r){let t=new C;dn.write(e,t),yield t}}var ue=class extends Error{type;code;constructor(e,t,n){super(e??"The operation was aborted"),this.type="aborted",this.name=n??"AbortError",this.code=t??"ABORT_ERR"}};async function Z(r,e,t){if(e==null)return r;if(e.aborted)return Promise.reject(new ue(t?.errorMessage,t?.errorCode,t?.errorName));let n,s=new ue(t?.errorMessage,t?.errorCode,t?.errorName);try{return await Promise.race([r,new Promise((o,i)=>{n=()=>{i(s)},e.addEventListener("abort",n)})])}finally{n!=null&&e.removeEventListener("abort",n)}}var pn="ERR_STREAM_RESET",mn="ERR_SINK_INVALID_STATE",bn=5e3;function Ke(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}var le=class{id;direction;timeline;protocol;metadata;source;status;readStatus;writeStatus;log;sinkController;sinkEnd;closed;endErr;streamSource;onEnd;onCloseRead;onCloseWrite;onReset;onAbort;sendCloseWriteTimeout;sendingData;constructor(e){this.sinkController=new AbortController,this.sinkEnd=L(),this.closed=L(),this.log=e.log,this.status="open",this.readStatus="ready",this.writeStatus="ready",this.id=e.id,this.metadata=e.metadata??{},this.direction=e.direction,this.timeline={open:Date.now()},this.sendCloseWriteTimeout=e.sendCloseWriteTimeout??bn,this.onEnd=e.onEnd,this.onCloseRead=e?.onCloseRead,this.onCloseWrite=e?.onCloseWrite,this.onReset=e?.onReset,this.onAbort=e?.onAbort,this.source=this.streamSource=k({onEnd:t=>{t!=null?this.log.trace("source ended with error",t):this.log.trace("source ended"),this.onSourceEnd(t)}}),this.sink=this.sink.bind(this)}async sink(e){if(this.writeStatus!=="ready")throw new T(`writable end state is "${this.writeStatus}" not "ready"`,mn);try{this.writeStatus="writing";let t={signal:this.sinkController.signal};if(this.direction==="outbound"){let s=this.sendNewStream(t);Ke(s)&&await s}let n=()=>{ee(e,this.log)};try{this.sinkController.signal.addEventListener("abort",n),this.log.trace("sink reading from source");for await(let s of e){s=s instanceof Uint8Array?new C(s):s;let o=this.sendData(s,t);Ke(o)&&(this.sendingData=L(),await o,this.sendingData.resolve(),this.sendingData=void 0)}}finally{this.sinkController.signal.removeEventListener("abort",n)}this.log.trace('sink finished reading from source, write status is "%s"',this.writeStatus),this.writeStatus==="writing"&&(this.writeStatus="closing",this.log.trace("send close write to remote"),await this.sendCloseWrite({signal:AbortSignal.timeout(this.sendCloseWriteTimeout)}),this.writeStatus="closed"),this.onSinkEnd()}catch(t){throw this.log.trace("sink ended with error, calling abort with error",t),this.abort(t),t}finally{this.log.trace("resolve sink end"),this.sinkEnd.resolve()}}onSourceEnd(e){this.timeline.closeRead==null&&(this.timeline.closeRead=Date.now(),this.readStatus="closed",e!=null&&this.endErr==null&&(this.endErr=e),this.onCloseRead?.(),this.timeline.closeWrite!=null?(this.log.trace("source and sink ended"),this.timeline.close=Date.now(),this.status!=="aborted"&&this.status!=="reset"&&(this.status="closed"),this.onEnd!=null&&this.onEnd(this.endErr),this.closed.resolve()):this.log.trace("source ended, waiting for sink to end"))}onSinkEnd(e){this.timeline.closeWrite==null&&(this.timeline.closeWrite=Date.now(),this.writeStatus="closed",e!=null&&this.endErr==null&&(this.endErr=e),this.onCloseWrite?.(),this.timeline.closeRead!=null?(this.log.trace("sink and source ended"),this.timeline.close=Date.now(),this.status!=="aborted"&&this.status!=="reset"&&(this.status="closed"),this.onEnd!=null&&this.onEnd(this.endErr),this.closed.resolve()):this.log.trace("sink ended, waiting for source to end"))}async close(e){this.log.trace("closing gracefully"),this.status="closing",await Z(Promise.all([this.closeWrite(e),this.closeRead(e),this.closed.promise]),e?.signal),this.status="closed",this.log.trace("closed gracefully")}async closeRead(e={}){if(this.readStatus==="closing"||this.readStatus==="closed")return;this.log.trace('closing readable end of stream with starting read status "%s"',this.readStatus);let t=this.readStatus;this.readStatus="closing",this.status!=="reset"&&this.status!=="aborted"&&this.timeline.closeRead==null&&(this.log.trace("send close read to remote"),await this.sendCloseRead(e)),t==="ready"&&(this.log.trace("ending internal source queue with %d queued bytes",this.streamSource.readableLength),this.streamSource.end()),this.log.trace("closed readable end of stream")}async closeWrite(e={}){this.writeStatus==="closing"||this.writeStatus==="closed"||(this.log.trace('closing writable end of stream with starting write status "%s"',this.writeStatus),this.writeStatus==="ready"&&(this.log.trace("sink was never sunk, sink an empty array"),await Z(this.sink([]),e.signal)),this.writeStatus==="writing"&&(this.sendingData!=null&&await Z(this.sendingData.promise,e.signal),this.log.trace("aborting source passed to .sink"),this.sinkController.abort(),await Z(this.sinkEnd.promise,e.signal)),this.writeStatus="closed",this.log.trace("closed writable end of stream"))}abort(e){if(this.status==="closed"||this.status==="aborted"||this.status==="reset")return;this.log("abort with error",e),this.log("try to send reset to remote");let t=this.sendReset();Ke(t)&&t.catch(n=>{this.log.error("error sending reset message",n)}),this.status="aborted",this.timeline.abort=Date.now(),this._closeSinkAndSource(e),this.onAbort?.(e)}reset(){if(this.status==="closed"||this.status==="aborted"||this.status==="reset")return;let e=new T("stream reset",pn);this.status="reset",this.timeline.reset=Date.now(),this._closeSinkAndSource(e),this.onReset?.()}_closeSinkAndSource(e){this._closeSink(e),this._closeSource(e)}_closeSink(e){this.writeStatus==="writing"&&(this.log.trace("end sink source"),this.sinkController.abort()),this.onSinkEnd(e)}_closeSource(e){this.readStatus!=="closing"&&this.readStatus!=="closed"&&(this.log.trace("ending source with %d bytes to be read by consumer",this.streamSource.readableLength),this.readStatus="closing",this.streamSource.end(e))}remoteCloseWrite(){if(this.readStatus==="closing"||this.readStatus==="closed"){this.log("received remote close write but local source is already closed");return}this.log.trace("remote close write"),this._closeSource()}remoteCloseRead(){if(this.writeStatus==="closing"||this.writeStatus==="closed"){this.log("received remote close read but local sink is already closed");return}this.log.trace("remote close read"),this._closeSink()}destroy(){if(this.status==="closed"||this.status==="aborted"||this.status==="reset"){this.log("received destroy but we are already closed");return}this.log.trace("stream destroyed"),this._closeSinkAndSource()}sourcePush(e){this.streamSource.push(e)}sourceReadableLength(){return this.streamSource.readableLength}};var qe=class extends le{name;streamId;send;types;maxDataSize;constructor(e){super(e),this.types=e.direction==="outbound"?Be:Rt,this.send=e.send,this.name=e.name,this.streamId=e.streamId,this.maxDataSize=e.maxDataSize}async sendNewStream(){await this.send({id:this.streamId,type:Be.NEW_STREAM,data:new C(ze(this.name))})}async sendData(e){for(e=e.sublist();e.byteLength>0;){let t=Math.min(e.byteLength,this.maxDataSize);await this.send({id:this.streamId,type:this.types.MESSAGE,data:e.sublist(0,t)}),e.consume(t)}}async sendReset(){await this.send({id:this.streamId,type:this.types.RESET})}async sendCloseWrite(){await this.send({id:this.streamId,type:this.types.CLOSE})}async sendCloseRead(){}};function Mt(r){let{id:e,name:t,send:n,onEnd:s,type:o="initiator",maxMsgSize:i=Ge}=r;return new qe({id:o==="initiator"?`i${e}`:`r${e}`,streamId:e,name:`${t??e}`,direction:o==="initiator"?"outbound":"inbound",maxDataSize:i,onEnd:s,send:n,log:r.logger.forComponent(`libp2p:mplex:stream:${o}:${e}`)})}var gn=1024,wn=1024,yn=1024*1024*4,En=5,xn=500;function Lt(r){let e={...r,type:`${H[r.type]} (${r.type})`};return r.type===h.NEW_STREAM&&(e.data=J(r.data instanceof Uint8Array?r.data:r.data.subarray())),(r.type===h.MESSAGE_INITIATOR||r.type===h.MESSAGE_RECEIVER)&&(e.data=J(r.data instanceof Uint8Array?r.data:r.data.subarray(),"base16")),e}var fe=class{protocol="/mplex/6.7.0";sink;source;log;_streamId;_streams;_init;_source;closeController;rateLimiter;closeTimeout;logger;constructor(e,t){t=t??{},this.log=e.logger.forComponent("libp2p:mplex"),this.logger=e.logger,this._streamId=0,this._streams={initiators:new Map,receivers:new Map},this._init=t,this.closeTimeout=t.closeTimeout??xn,this.sink=this._createSink(),this._source=k({objectMode:!0,onEnd:()=>{for(let n of this._streams.initiators.values())n.destroy();for(let n of this._streams.receivers.values())n.destroy()}}),this.source=et(this._source,n=>Ct(n)),this.closeController=new AbortController,this.rateLimiter=new te({points:t.disconnectThreshold??En,duration:1})}get streams(){let e=[];for(let t of this._streams.initiators.values())e.push(t);for(let t of this._streams.receivers.values())e.push(t);return e}newStream(e){if(this.closeController.signal.aborted)throw new Error("Muxer already closed");let t=this._streamId++;e=e==null?t.toString():e.toString();let n=this._streams.initiators;return this._newStream({id:t,name:e,type:"initiator",registry:n})}async close(e){if(this.closeController.signal.aborted)return;let t=e?.signal??AbortSignal.timeout(this.closeTimeout);try{await Promise.all(this.streams.map(async n=>n.close({signal:t}))),this._source.end(),await this._source.onEmpty({signal:t}),this.closeController.abort()}catch(n){this.abort(n)}}abort(e){this.closeController.signal.aborted||(this.streams.forEach(t=>{t.abort(e)}),this.closeController.abort(e))}_newReceiverStream(e){let{id:t,name:n}=e,s=this._streams.receivers;return this._newStream({id:t,name:n,type:"receiver",registry:s})}_newStream(e){let{id:t,name:n,type:s,registry:o}=e;if(this.log("new %s stream %s",s,t),s==="initiator"&&this._streams.initiators.size===(this._init.maxOutboundStreams??wn))throw new T("Too many outbound streams open","ERR_TOO_MANY_OUTBOUND_STREAMS");if(o.has(t))throw new Error(`${s} stream ${t} already exists!`);let c=Mt({id:t,name:n,send:async p=>{this.log.enabled&&this.log.trace("%s stream %s send",s,t,Lt(p)),this._source.push(p)},type:s,onEnd:()=>{this.log("%s stream with id %s and protocol %s ended",s,t,c.protocol),o.delete(t),this._init.onStreamEnd!=null&&this._init.onStreamEnd(c)},maxMsgSize:this._init.maxMsgSize,logger:this.logger});return o.set(t,c),c}_createSink(){return async t=>{let n=()=>{ee(t,this.log)};this.closeController.signal.addEventListener("abort",n);try{let s=new ce(this._init.maxMsgSize,this._init.maxUnprocessedMessageQueueSize);for await(let o of t)for(let i of s.write(o))await this._handleIncoming(i);this._source.end()}catch(s){this.log("error in sink",s),this._source.end(s)}finally{this.closeController.signal.removeEventListener("abort",n)}}}async _handleIncoming(e){let{id:t,type:n}=e;if(this.log.enabled&&this.log.trace("incoming message",Lt(e)),e.type===h.NEW_STREAM){if(this._streams.receivers.size===(this._init.maxInboundStreams??gn)){this.log("too many inbound streams open"),this._source.push({id:t,type:h.RESET_RECEIVER});try{await this.rateLimiter.consume("new-stream",1)}catch{this.log("rate limit hit when opening too many new streams over the inbound stream limit - closing remote connection"),this.abort(new Error("Too many open streams"));return}return}let a=this._newReceiverStream({id:t,name:J(e.data instanceof Uint8Array?e.data:e.data.subarray())});this._init.onIncomingStream!=null&&this._init.onIncomingStream(a);return}let o=((n&1)===1?this._streams.initiators:this._streams.receivers).get(t);if(o==null){this.log("missing stream %s for message type %s",t,H[n]);try{await this.rateLimiter.consume("missing-stream",1)}catch{this.log("rate limit hit when receiving messages for streams that do not exist - closing remote connection"),this.abort(new Error("Too many messages for missing streams"));return}return}let i=this._init.maxStreamBufferSize??yn;try{switch(n){case h.MESSAGE_INITIATOR:case h.MESSAGE_RECEIVER:if(o.sourceReadableLength()>i)throw this._source.push({id:e.id,type:n===h.MESSAGE_INITIATOR?h.RESET_RECEIVER:h.RESET_INITIATOR}),new T("Input buffer full - increase Mplex maxBufferSize to accommodate slow consumers","ERR_STREAM_INPUT_BUFFER_FULL");o.sourcePush(e.data);break;case h.CLOSE_INITIATOR:case h.CLOSE_RECEIVER:o.remoteCloseWrite();break;case h.RESET_INITIATOR:case h.RESET_RECEIVER:o.reset();break;default:this.log("unknown message type %s",n)}}catch(a){this.log.error("error while processing message",a),o.abort(a)}}};var je=class{protocol="/mplex/6.7.0";_init;components;constructor(e,t={}){this.components=e,this._init=t}[Symbol.toStringTag]="@libp2p/mplex";[Xe]=["@libp2p/stream-multiplexing"];createStreamMuxer(e={}){return new fe(this.components,{...e,...this._init})}};function Sn(r={}){return e=>new je(e,r)}return kt(_n);})();
|
2
|
+
"use strict";var Libp2PMplex=(()=>{var we=Object.defineProperty;var Ft=Object.getOwnPropertyDescriptor;var zt=Object.getOwnPropertyNames;var Vt=Object.prototype.hasOwnProperty;var I=(r,e)=>{for(var t in e)we(r,t,{get:e[t],enumerable:!0})},Bt=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of zt(e))!Vt.call(r,s)&&s!==t&&we(r,s,{get:()=>e[s],enumerable:!(n=Ft(e,s))||n.enumerable});return r};var Wt=r=>Bt(we({},"__esModule",{value:!0}),r);var Cn={};I(Cn,{mplex:()=>_n});var ee=class extends Error{static name="MuxerClosedError";constructor(e="The muxer is closed"){super(e),this.name="MuxerClosedError"}},te=class extends Error{static name="StreamResetError";constructor(e="The stream has been reset"){super(e),this.name="StreamResetError"}},re=class extends Error{static name="StreamStateError";constructor(e="The stream is in an invalid state"){super(e),this.name="StreamStateError"}};var K=class extends Error{static name="InvalidMessageError";constructor(e="Invalid message"){super(e),this.name="InvalidMessageError"}};var ne=class extends Error{static name="TooManyOutboundProtocolStreamsError";constructor(e="Too many outbound protocol streams"){super(e),this.name="TooManyOutboundProtocolStreamsError"}};var et=Symbol.for("@libp2p/service-capabilities"),Mn=Symbol.for("@libp2p/service-dependencies");function tt(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 rt(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}function se(r,e){let t=tt(r).return?.();rt(t)&&t.catch(n=>{e.error("could not cause iterator to return",n)})}var nt=()=>{let r=new Error("Delay aborted");return r.name="AbortError",r},Gt=new WeakMap;function $t({clearTimeout:r,setTimeout:e}={}){return(t,{value:n,signal:s}={})=>{if(s?.aborted)return Promise.reject(nt());let o,i,a,c=r??clearTimeout,m=()=>{c(o),a(nt())},f=()=>{s&&s.removeEventListener("abort",m)},l=new Promise((w,U)=>{i=()=>{f(),w(n)},a=U,o=(e??setTimeout)(i,t)});return s&&s.addEventListener("abort",m,{once:!0}),Gt.set(l,()=>{c(o),o=null,i()}),l}}var Kt=$t(),st=Kt;var oe=class extends Error{remainingPoints;msBeforeNext;consumedPoints;isFirstInDuration;constructor(e="Rate limit exceeded",t){super(e),this.name="RateLimitError",this.remainingPoints=t.remainingPoints,this.msBeforeNext=t.msBeforeNext,this.consumedPoints=t.consumedPoints,this.isFirstInDuration=t.isFirstInDuration}};var ie=class{memoryStorage;points;duration;blockDuration;execEvenly;execEvenlyMinDelayMs;keyPrefix;constructor(e={}){this.points=e.points??4,this.duration=e.duration??1,this.blockDuration=e.blockDuration??0,this.execEvenly=e.execEvenly??!1,this.execEvenlyMinDelayMs=e.execEvenlyMinDelayMs??this.duration*1e3/this.points,this.keyPrefix=e.keyPrefix??"rlflx",this.memoryStorage=new xe}async consume(e,t=1,n={}){let s=this.getKey(e),o=this._getKeySecDuration(n),i=this.memoryStorage.incrby(s,t,o);if(i.remainingPoints=Math.max(this.points-i.consumedPoints,0),i.consumedPoints>this.points)throw this.blockDuration>0&&i.consumedPoints<=this.points+t&&(i=this.memoryStorage.set(s,i.consumedPoints,this.blockDuration)),new oe("Rate limit exceeded",i);if(this.execEvenly&&i.msBeforeNext>0&&!i.isFirstInDuration){let a=Math.ceil(i.msBeforeNext/(i.remainingPoints+2));a<this.execEvenlyMinDelayMs&&(a=i.consumedPoints*this.execEvenlyMinDelayMs),await st(a)}return i}penalty(e,t=1,n={}){let s=this.getKey(e),o=this._getKeySecDuration(n),i=this.memoryStorage.incrby(s,t,o);return i.remainingPoints=Math.max(this.points-i.consumedPoints,0),i}reward(e,t=1,n={}){let s=this.getKey(e),o=this._getKeySecDuration(n),i=this.memoryStorage.incrby(s,-t,o);return i.remainingPoints=Math.max(this.points-i.consumedPoints,0),i}block(e,t){let n=t*1e3,s=this.points+1;return this.memoryStorage.set(this.getKey(e),s,t),{remainingPoints:0,msBeforeNext:n===0?-1:n,consumedPoints:s,isFirstInDuration:!1}}set(e,t,n=0){let s=(n>=0?n:this.duration)*1e3;return this.memoryStorage.set(this.getKey(e),t,n),{remainingPoints:0,msBeforeNext:s===0?-1:s,consumedPoints:t,isFirstInDuration:!1}}get(e){let t=this.memoryStorage.get(this.getKey(e));return t!=null&&(t.remainingPoints=Math.max(this.points-t.consumedPoints,0)),t}delete(e){this.memoryStorage.delete(this.getKey(e))}_getKeySecDuration(e){return e?.customDuration!=null&&e.customDuration>=0?e.customDuration:this.duration}getKey(e){return this.keyPrefix.length>0?`${this.keyPrefix}:${e}`:e}parseKey(e){return e.substring(this.keyPrefix.length)}},xe=class{storage;constructor(){this.storage=new Map}incrby(e,t,n){let s=this.storage.get(e);if(s!=null){let o=s.expiresAt!=null?s.expiresAt.getTime()-new Date().getTime():-1;return s.expiresAt==null||o>0?(s.value+=t,{remainingPoints:0,msBeforeNext:o,consumedPoints:s.value,isFirstInDuration:!1}):this.set(e,t,n)}return this.set(e,t,n)}set(e,t,n){let s=n*1e3,o=this.storage.get(e);o!=null&&clearTimeout(o.timeoutId);let i={value:t,expiresAt:s>0?new Date(Date.now()+s):void 0};return this.storage.set(e,i),s>0&&(i.timeoutId=setTimeout(()=>{this.storage.delete(e)},s),i.timeoutId.unref!=null&&i.timeoutId.unref()),{remainingPoints:0,msBeforeNext:s===0?-1:s,consumedPoints:i.value,isFirstInDuration:!0}}get(e){let t=this.storage.get(e);if(t!=null)return{remainingPoints:0,msBeforeNext:t.expiresAt!=null?t.expiresAt.getTime()-new Date().getTime():-1,consumedPoints:t.value,isFirstInDuration:!1}}delete(e){let t=this.storage.get(e);return t!=null?(t.timeoutId!=null&&clearTimeout(t.timeoutId),this.storage.delete(e),!0):!1}};function M(){let r={};return r.promise=new Promise((e,t)=>{r.resolve=e,r.reject=t}),r}var ae=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}},z=class{size;hwm;head;tail;constructor(e={}){this.hwm=e.splitLimit??16,this.head=new ae(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 ae(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 Ee=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.code=t??"ABORT_ERR"}};function O(r={}){return qt(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 qt(r,e){e=e??{};let t=e.onEnd,n=new z,s,o,i,a=M(),c=async()=>{try{return n.isEmpty()?i?{done:!0}:await new Promise((h,g)=>{o=x=>{o=null,n.push(x);try{h(r(n))}catch(y){g(y)}return s}}):r(n)}finally{n.isEmpty()&&queueMicrotask(()=>{a.resolve(),a=M()})}},m=h=>o!=null?o(h):(n.push(h),s),f=h=>(n=new z,o!=null?o({error:h}):(n.push({error:h}),s)),l=h=>{if(i)return s;if(e?.objectMode!==!0&&h?.byteLength==null)throw new Error("objectMode was not true but tried to push non-Uint8Array value");return m({done:!1,value:h})},w=h=>i?s:(i=!0,h!=null?f(h):m({done:!0})),U=()=>(n=new z,w(),{done:!0}),d=h=>(w(h),{done:!0});if(s={[Symbol.asyncIterator](){return this},next:c,return:U,throw:d,push:l,end:w,get readableLength(){return n.size},onEmpty:async h=>{let g=h?.signal;if(g?.throwIfAborted(),n.isEmpty())return;let x,y;g!=null&&(x=new Promise((S,v)=>{y=()=>{v(new Ee)},g.addEventListener("abort",y)}));try{await Promise.race([a.promise,x])}finally{y!=null&&g!=null&&g?.removeEventListener("abort",y)}}},t==null)return s;let b=s;return s={[Symbol.asyncIterator](){return this},next(){return b.next()},throw(h){return b.throw(h),t!=null&&(t(h),t=void 0),{done:!0}},return(){return b.return(),t!=null&&(t(),t=void 0),{done:!0}},push:l,end(h){return b.end(h),t!=null&&(t(h),t=void 0),s},get readableLength(){return b.readableLength},onEmpty:h=>b.onEmpty(h)},s}function jt(r){return r[Symbol.asyncIterator]!=null}function Xt(...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=O({objectMode:!0});Promise.resolve().then(async()=>{try{await Promise.all(r.map(async n=>{for await(let s of n)t.push(s)})),t.end()}catch(n){t.end(n)}}),yield*t}()}var ot=Xt;function it(r,...e){if(r==null)throw new Error("Empty pipeline");if(Se(r)){let n=r;r=()=>n.source}else if(ct(r)||at(r)){let n=r;r=()=>n}let t=[r,...e];if(t.length>1&&Se(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++)Se(t[n])&&(t[n]=Qt(t[n]));return Jt(...t)}var Jt=(...r)=>{let e;for(;r.length>0;)e=r.shift()(e);return e},at=r=>r?.[Symbol.asyncIterator]!=null,ct=r=>r?.[Symbol.iterator]!=null,Se=r=>r==null?!1:r.sink!=null&&r.source!=null,Qt=r=>e=>{let t=r.sink(e);if(t?.then!=null){let n=O({objectMode:!0});t.then(()=>{n.end()},i=>{n.end(i)});let s,o=r.source;if(at(o))s=async function*(){yield*o,n.end()};else if(ct(o))s=function*(){yield*o,n.end()};else throw new Error("Unknown duplex source type - must be Iterable or AsyncIterable");return ot(n,s())}return r.source};function Ie(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}function L(r=0){return new Uint8Array(r)}function A(r=0){return new Uint8Array(r)}function ce(r,e){e==null&&(e=r.reduce((s,o)=>s+o.length,0));let t=A(e),n=0;for(let s of r)t.set(s,n),n+=s.length;return t}var Re={};I(Re,{base10:()=>nr});var Ms=new Uint8Array(0);function ut(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}function D(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")}function ht(r){return new TextEncoder().encode(r)}function lt(r){return new TextDecoder().decode(r)}function Ht(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 s=0;s<r.length;s++){var o=r.charAt(s),i=o.charCodeAt(0);if(t[i]!==255)throw new TypeError(o+" is ambiguous");t[i]=s}var a=r.length,c=r.charAt(0),m=Math.log(a)/Math.log(256),f=Math.log(256)/Math.log(a);function l(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 b=0,h=0,g=0,x=d.length;g!==x&&d[g]===0;)g++,b++;for(var y=(x-g)*f+1>>>0,S=new Uint8Array(y);g!==x;){for(var v=d[g],N=0,_=y-1;(v!==0||N<h)&&_!==-1;_--,N++)v+=256*S[_]>>>0,S[_]=v%a>>>0,v=v/a>>>0;if(v!==0)throw new Error("Non-zero carry");h=N,g++}for(var T=y-h;T!==y&&S[T]===0;)T++;for(var Y=c.repeat(b);T<y;++T)Y+=r.charAt(S[T]);return Y}function w(d){if(typeof d!="string")throw new TypeError("Expected String");if(d.length===0)return new Uint8Array;var b=0;if(d[b]!==" "){for(var h=0,g=0;d[b]===c;)h++,b++;for(var x=(d.length-b)*m+1>>>0,y=new Uint8Array(x);d[b];){var S=t[d.charCodeAt(b)];if(S===255)return;for(var v=0,N=x-1;(S!==0||v<g)&&N!==-1;N--,v++)S+=a*y[N]>>>0,y[N]=S%256>>>0,S=S/256>>>0;if(S!==0)throw new Error("Non-zero carry");g=v,b++}if(d[b]!==" "){for(var _=x-g;_!==x&&y[_]===0;)_++;for(var T=new Uint8Array(h+(x-_)),Y=h;_!==x;)T[Y++]=y[_++];return T}}}function U(d){var b=w(d);if(b)return b;throw new Error(`Non-${e} character`)}return{encode:l,decodeUnsafe:w,decode:U}}var Yt=Ht,er=Yt,ft=er;var Ae=class{name;prefix;baseEncode;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")}},ve=class{name;prefix;baseDecode;prefixCodePoint;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 mt(this,e)}},_e=class{decoders;constructor(e){this.decoders=e}or(e){return mt(this,e)}decode(e){let t=e[0],n=this.decoders[t];if(n!=null)return n.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}};function mt(r,e){return new _e({...r.decoders??{[r.prefix]:r},...e.decoders??{[e.prefix]:e}})}var Ce=class{name;prefix;baseEncode;baseDecode;encoder;decoder;constructor(e,t,n,s){this.name=e,this.prefix=t,this.baseEncode=n,this.baseDecode=s,this.encoder=new Ae(e,t,n),this.decoder=new ve(e,t,s)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}};function V({name:r,prefix:e,encode:t,decode:n}){return new Ce(r,e,t,n)}function k({name:r,prefix:e,alphabet:t}){let{encode:n,decode:s}=ft(t,r);return V({prefix:e,name:r,encode:n,decode:o=>D(s(o))})}function tr(r,e,t,n){let s={};for(let f=0;f<e.length;++f)s[e[f]]=f;let o=r.length;for(;r[o-1]==="=";)--o;let i=new Uint8Array(o*t/8|0),a=0,c=0,m=0;for(let f=0;f<o;++f){let l=s[r[f]];if(l===void 0)throw new SyntaxError(`Non-${n} character`);c=c<<t|l,a+=t,a>=8&&(a-=8,i[m++]=255&c>>a)}if(a>=t||255&c<<8-a)throw new SyntaxError("Unexpected end of data");return i}function rr(r,e,t){let n=e[e.length-1]==="=",s=(1<<t)-1,o="",i=0,a=0;for(let c=0;c<r.length;++c)for(a=a<<8|r[c],i+=8;i>t;)i-=t,o+=e[s&a>>i];if(i!==0&&(o+=e[s&a<<t-i]),n)for(;o.length*t&7;)o+="=";return o}function p({name:r,prefix:e,bitsPerChar:t,alphabet:n}){return V({prefix:e,name:r,encode(s){return rr(s,n,t)},decode(s){return tr(s,n,t,r)}})}var nr=k({prefix:"9",name:"base10",alphabet:"0123456789"});var Te={};I(Te,{base16:()=>sr,base16upper:()=>or});var sr=p({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),or=p({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var Me={};I(Me,{base2:()=>ir});var ir=p({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var Le={};I(Le,{base256emoji:()=>lr});var pt=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=pt.reduce((r,e,t)=>(r[t]=e,r),[]),cr=pt.reduce((r,e,t)=>(r[e.codePointAt(0)]=t,r),[]);function ur(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 lr=V({prefix:"\u{1F680}",name:"base256emoji",encode:ur,decode:hr});var De={};I(De,{base32:()=>B,base32hex:()=>pr,base32hexpad:()=>gr,base32hexpadupper:()=>yr,base32hexupper:()=>br,base32pad:()=>fr,base32padupper:()=>mr,base32upper:()=>dr,base32z:()=>wr});var B=p({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),dr=p({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),fr=p({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),mr=p({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),pr=p({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),br=p({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),gr=p({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),yr=p({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),wr=p({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var Ue={};I(Ue,{base36:()=>xr,base36upper:()=>Er});var xr=k({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),Er=k({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var Ne={};I(Ne,{base58btc:()=>C,base58flickr:()=>Sr});var C=k({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),Sr=k({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var Oe={};I(Oe,{base64:()=>Ir,base64pad:()=>Ar,base64url:()=>vr,base64urlpad:()=>_r});var Ir=p({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),Ar=p({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),vr=p({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),_r=p({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var ke={};I(ke,{base8:()=>Cr});var Cr=p({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var Pe={};I(Pe,{identity:()=>Rr});var Rr=V({prefix:"\0",name:"identity",encode:r=>lt(r),decode:r=>ht(r)});var qs=new TextEncoder,js=new TextDecoder;var ze={};I(ze,{identity:()=>Zr});var Lr=yt,bt=128,Dr=127,Ur=~Dr,Nr=Math.pow(2,31);function yt(r,e,t){e=e||[],t=t||0;for(var n=t;r>=Nr;)e[t++]=r&255|bt,r/=128;for(;r&Ur;)e[t++]=r&255|bt,r>>>=7;return e[t]=r|0,yt.bytes=t-n+1,e}var Or=Fe,kr=128,gt=127;function Fe(r,n){var t=0,n=n||0,s=0,o=n,i,a=r.length;do{if(o>=a)throw Fe.bytes=0,new RangeError("Could not decode varint");i=r[o++],t+=s<28?(i>)<<s:(i>)*Math.pow(2,s),s+=7}while(i>=kr);return Fe.bytes=o-n,t}var Pr=Math.pow(2,7),Fr=Math.pow(2,14),zr=Math.pow(2,21),Vr=Math.pow(2,28),Br=Math.pow(2,35),Wr=Math.pow(2,42),Gr=Math.pow(2,49),$r=Math.pow(2,56),Kr=Math.pow(2,63),qr=function(r){return r<Pr?1:r<Fr?2:r<zr?3:r<Vr?4:r<Br?5:r<Wr?6:r<Gr?7:r<$r?8:r<Kr?9:10},jr={encode:Lr,decode:Or,encodingLength:qr},Xr=jr,q=Xr;function j(r,e=0){return[q.decode(r,e),q.decode.bytes]}function W(r,e,t=0){return q.encode(r,e,t),e}function G(r){return q.encodingLength(r)}function P(r,e){let t=e.byteLength,n=G(r),s=n+G(t),o=new Uint8Array(s+t);return W(r,o,0),W(t,o,n),o.set(e,s),new $(r,t,e,o)}function wt(r){let e=D(r),[t,n]=j(e),[s,o]=j(e.subarray(n)),i=e.subarray(n+o);if(i.byteLength!==s)throw new Error("Incorrect length");return new $(t,s,i,e)}function xt(r,e){if(r===e)return!0;{let t=e;return r.code===t.code&&r.size===t.size&&t.bytes instanceof Uint8Array&&ut(r.bytes,t.bytes)}}var $=class{code;size;digest;bytes;constructor(e,t,n,s){this.code=e,this.size=t,this.digest=n,this.bytes=s}};var Et=0,Jr="identity",St=D;function Qr(r){return P(Et,St(r))}var Zr={code:Et,name:Jr,encode:St,digest:Qr};var We={};I(We,{sha256:()=>Hr,sha512:()=>Yr});function Be({name:r,code:e,encode:t}){return new Ve(r,e,t)}var Ve=class{name;code;encode;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?P(this.code,t):t.then(n=>P(this.code,n))}else throw Error("Unknown type, must be binary type")}};function At(r){return async e=>new Uint8Array(await crypto.subtle.digest(r,e))}var Hr=Be({name:"sha2-256",code:18,encode:At("SHA-256")}),Yr=Be({name:"sha2-512",code:19,encode:At("SHA-512")});function vt(r,e){let{bytes:t,version:n}=r;switch(n){case 0:return tn(t,Ge(r),e??C.encoder);default:return rn(t,Ge(r),e??B.encoder)}}var _t=new WeakMap;function Ge(r){let e=_t.get(r);if(e==null){let t=new Map;return _t.set(r,t),t}return e}var he=class r{code;version;multihash;bytes;"/";constructor(e,t,n,s){this.code=t,this.version=e,this.multihash=n,this.bytes=s,this["/"]=s}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!==J)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=P(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!=null&&e.code===n.code&&e.version===n.version&&xt(e.multihash,n.multihash)}toString(e){return vt(this,e)}toJSON(){return{"/":vt(this)}}link(){return this}[Symbol.toStringTag]="CID";[Symbol.for("nodejs.util.inspect.custom")](){return`CID(${this.toString()})`}static asCID(e){if(e==null)return null;let t=e;if(t instanceof r)return t;if(t["/"]!=null&&t["/"]===t.bytes||t.asCID===t){let{version:n,code:s,multihash:o,bytes:i}=t;return new r(n,s,o,i??Ct(n,s,o.bytes))}else if(t[sn]===!0){let{version:n,multihash:s,code:o}=t,i=wt(s);return r.create(n,o,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!==J)throw new Error(`Version 0 CID must use dag-pb (code: ${J}) block encoding`);return new r(e,t,n,n.bytes)}case 1:{let s=Ct(e,t,n.bytes);return new r(e,t,n,s)}default:throw new Error("Invalid version")}}static createV0(e){return r.create(0,J,e)}static createV1(e,t){return r.create(1,e,t)}static decode(e){let[t,n]=r.decodeFirst(e);if(n.length!==0)throw new Error("Incorrect length");return t}static decodeFirst(e){let t=r.inspectBytes(e),n=t.size-t.multihashSize,s=D(e.subarray(n,n+t.multihashSize));if(s.byteLength!==t.multihashSize)throw new Error("Incorrect length");let o=s.subarray(t.multihashSize-t.digestSize),i=new $(t.multihashCode,t.digestSize,o,s);return[t.version===0?r.createV0(i):r.createV1(t.codec,i),e.subarray(t.size)]}static inspectBytes(e){let t=0,n=()=>{let[l,w]=j(e.subarray(t));return t+=w,l},s=n(),o=J;if(s===18?(s=0,t=0):o=n(),s!==0&&s!==1)throw new RangeError(`Invalid CID version ${s}`);let i=t,a=n(),c=n(),m=t+c,f=m-i;return{version:s,codec:o,multihashCode:a,digestSize:c,multihashSize:f,size:m}}static parse(e,t){let[n,s]=en(e,t),o=r.decode(s);if(o.version===0&&e[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return Ge(o).set(n,e),o}};function en(r,e){switch(r[0]){case"Q":{let t=e??C;return[C.prefix,t.decode(`${C.prefix}${r}`)]}case C.prefix:{let t=e??C;return[C.prefix,t.decode(r)]}case B.prefix:{let t=e??B;return[B.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)]}}}function tn(r,e,t){let{prefix:n}=t;if(n!==C.prefix)throw Error(`Cannot string encode V0 in ${t.name} encoding`);let s=e.get(n);if(s==null){let o=t.encode(r).slice(1);return e.set(n,o),o}else return s}function rn(r,e,t){let{prefix:n}=t,s=e.get(n);if(s==null){let o=t.encode(r);return e.set(n,o),o}else return s}var J=112,nn=18;function Ct(r,e,t){let n=G(r),s=n+G(e),o=new Uint8Array(s+t.byteLength);return W(r,o,0),W(e,o,n),o.set(t,s),o}var sn=Symbol.for("@ipld/js-cid/CID");var $e={...Pe,...Me,...ke,...Re,...Te,...De,...Ue,...Ne,...Oe,...Le},po={...We,...ze};function Tt(r,e,t,n){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:n}}}var Rt=Tt("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),Ke=Tt("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=A(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),on={utf8:Rt,"utf-8":Rt,hex:$e.base16,latin1:Ke,ascii:Ke,binary:Ke,...$e},le=on;function qe(r,e="utf8"){let t=le[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.decoder.decode(`${t.prefix}${r}`)}function Q(r,e="utf8"){let t=le[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.encoder.encode(r).substring(1)}var Lt=Symbol.for("@achingbrain/uint8arraylist");function Mt(r,e){if(e==null||e<0)throw new RangeError("index is out of bounds");let t=0;for(let n of r){let s=t+n.byteLength;if(e<s)return{buf:n,index:e-t};t=s}throw new RangeError("index is out of bounds")}function de(r){return!!r?.[Lt]}var R=class r{bufs;length;[Lt]=!0;constructor(...e){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(de(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(de(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=Mt(this.bufs,e);return t.buf[t.index]}set(e,t){let n=Mt(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(de(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:s}=this._subList(e,t);return ce(n,s)}subarray(e,t){let{bufs:n,length:s}=this._subList(e,t);return n.length===1?n[0]:ce(n,s)}sublist(e,t){let{bufs:n,length:s}=this._subList(e,t),o=new r;return o.length=s,o.bufs=[...n],o}_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=[],s=0;for(let o=0;o<this.bufs.length;o++){let i=this.bufs[o],a=s,c=a+i.byteLength;if(s=c,e>=c)continue;let m=e>=a&&e<c,f=t>a&&t<=c;if(m&&f){if(e===a&&t===c){n.push(i);break}let l=e-a;n.push(i.subarray(l,l+(t-e)));break}if(m){if(e===0){n.push(i);continue}n.push(i.subarray(e-a));continue}if(f){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(!de(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 s=n.byteLength;if(s===0)throw new TypeError("search must be at least 1 byte long");let o=256,i=new Int32Array(o);for(let l=0;l<o;l++)i[l]=-1;for(let l=0;l<s;l++)i[n[l]]=l;let a=i,c=this.byteLength-n.byteLength,m=n.byteLength-1,f;for(let l=t;l<=c;l+=f){f=0;for(let w=m;w>=0;w--){let U=this.get(l+w);if(n[w]!==U){f=Math.max(1,w-a[U]);break}}if(f===0)return l}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=A(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 s=L(2);new DataView(s.buffer,s.byteOffset,s.byteLength).setInt16(0,t,n),this.write(s,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 s=L(4);new DataView(s.buffer,s.byteOffset,s.byteLength).setInt32(0,t,n),this.write(s,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 s=L(8);new DataView(s.buffer,s.byteOffset,s.byteLength).setBigInt64(0,t,n),this.write(s,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=A(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 s=L(2);new DataView(s.buffer,s.byteOffset,s.byteLength).setUint16(0,t,n),this.write(s,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 s=L(4);new DataView(s.buffer,s.byteOffset,s.byteLength).setUint32(0,t,n),this.write(s,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 s=L(8);new DataView(s.buffer,s.byteOffset,s.byteLength).setBigUint64(0,t,n),this.write(s,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 s=L(4);new DataView(s.buffer,s.byteOffset,s.byteLength).setFloat32(0,t,n),this.write(s,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 s=L(8);new DataView(s.buffer,s.byteOffset,s.byteLength).setFloat64(0,t,n),this.write(s,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(!Ie(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((s,o)=>s+o.byteLength,0)),n.length=t,n}};var u;(function(r){r[r.NEW_STREAM=0]="NEW_STREAM",r[r.MESSAGE_RECEIVER=1]="MESSAGE_RECEIVER",r[r.MESSAGE_INITIATOR=2]="MESSAGE_INITIATOR",r[r.CLOSE_RECEIVER=3]="CLOSE_RECEIVER",r[r.CLOSE_INITIATOR=4]="CLOSE_INITIATOR",r[r.RESET_RECEIVER=5]="RESET_RECEIVER",r[r.RESET_INITIATOR=6]="RESET_INITIATOR"})(u||(u={}));var Z=Object.freeze({0:"NEW_STREAM",1:"MESSAGE_RECEIVER",2:"MESSAGE_INITIATOR",3:"CLOSE_RECEIVER",4:"CLOSE_INITIATOR",5:"RESET_RECEIVER",6:"RESET_INITIATOR"}),je=Object.freeze({NEW_STREAM:u.NEW_STREAM,MESSAGE:u.MESSAGE_INITIATOR,CLOSE:u.CLOSE_INITIATOR,RESET:u.RESET_INITIATOR}),Dt=Object.freeze({MESSAGE:u.MESSAGE_RECEIVER,CLOSE:u.CLOSE_RECEIVER,RESET:u.RESET_RECEIVER});var Xe=1<<20,an=4<<20,fe=class{_buffer;_headerInfo;_maxMessageSize;_maxUnprocessedMessageQueueSize;constructor(e=Xe,t=an){this._buffer=new R,this._headerInfo=null,this._maxMessageSize=e,this._maxUnprocessedMessageQueueSize=t}write(e){if(e==null||e.length===0)return[];if(this._buffer.append(e),this._buffer.byteLength>this._maxUnprocessedMessageQueueSize)throw new K("Unprocessed message queue size too large!");let t=[];for(;this._buffer.length!==0;){if(this._headerInfo==null)try{this._headerInfo=this._decodeHeader(this._buffer)}catch(m){if(m.name==="InvalidMessageError")throw m;break}let{id:n,type:s,length:o,offset:i}=this._headerInfo;if(this._buffer.length-i<o)break;let c={id:n,type:s};(s===u.NEW_STREAM||s===u.MESSAGE_INITIATOR||s===u.MESSAGE_RECEIVER)&&(c.data=this._buffer.sublist(i,i+o)),t.push(c),this._buffer.consume(i+o),this._headerInfo=null}return t}_decodeHeader(e){let{value:t,offset:n}=Nt(e),{value:s,offset:o}=Nt(e,n),i=t&7;if(Z[i]==null)throw new Error(`Invalid type received: ${i}`);if(s>this._maxMessageSize)throw new K("Message size too large");return{id:t>>3,type:i,offset:n+o,length:s}}},cn=128,Ut=127;function Nt(r,e=0){let t=0,n=0,s=e,o,i=r.length;do{if(s>=i||n>49)throw e=0,new RangeError("Could not decode varint");o=r.get(s++),t+=n<28?(o&Ut)<<n:(o&Ut)*Math.pow(2,n),n+=7}while(o>=cn);return e=s-e,{value:t,offset:e}}var un=Math.pow(2,7),hn=Math.pow(2,14),ln=Math.pow(2,21),dn=Math.pow(2,28),fn=Math.pow(2,35),mn=Math.pow(2,42),pn=Math.pow(2,49),E=128;function F(r){if(r<un)return 1;if(r<hn)return 2;if(r<ln)return 3;if(r<dn)return 4;if(r<fn)return 5;if(r<mn)return 6;if(r<pn)return 7;if(Number.MAX_SAFE_INTEGER!=null&&r>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function bn(r,e,t=0){switch(F(r)){case 8:e[t++]=r&255|E,r/=128;case 7:e[t++]=r&255|E,r/=128;case 6:e[t++]=r&255|E,r/=128;case 5:e[t++]=r&255|E,r/=128;case 4:e[t++]=r&255|E,r>>>=7;case 3:e[t++]=r&255|E,r>>>=7;case 2:e[t++]=r&255|E,r>>>=7;case 1:{e[t++]=r&255,r>>>=7;break}default:throw new Error("unreachable")}return e}function gn(r,e,t=0){switch(F(r)){case 8:e.set(t++,r&255|E),r/=128;case 7:e.set(t++,r&255|E),r/=128;case 6:e.set(t++,r&255|E),r/=128;case 5:e.set(t++,r&255|E),r/=128;case 4:e.set(t++,r&255|E),r>>>=7;case 3:e.set(t++,r&255|E),r>>>=7;case 2:e.set(t++,r&255|E),r>>>=7;case 1:{e.set(t++,r&255),r>>>=7;break}default:throw new Error("unreachable")}return e}function me(r,e,t=0){return e==null&&(e=A(F(r))),e instanceof Uint8Array?bn(r,e,t):gn(r,e,t)}var Je=10*1024,Qe=class{_pool;_poolOffset;constructor(){this._pool=A(Je),this._poolOffset=0}write(e,t){let n=this._pool,s=this._poolOffset;me(e.id<<3|e.type,n,s),s+=F(e.id<<3|e.type),(e.type===u.NEW_STREAM||e.type===u.MESSAGE_INITIATOR||e.type===u.MESSAGE_RECEIVER)&&e.data!=null?(me(e.data.length,n,s),s+=F(e.data.length)):(me(0,n,s),s+=F(0));let o=n.subarray(this._poolOffset,s);Je-s<100?(this._pool=A(Je),this._poolOffset=0):this._poolOffset=s,t.append(o),(e.type===u.NEW_STREAM||e.type===u.MESSAGE_INITIATOR||e.type===u.MESSAGE_RECEIVER)&&e.data!=null&&t.append(e.data)}},wn=new Qe;async function*Ot(r){for await(let e of r){let t=new R;wn.write(e,t),yield t}}var pe=class extends Error{constructor(e="Stream input buffer error"){super(e),this.name="StreamInputBufferError"}};var be=class extends Error{type;code;constructor(e,t,n){super(e??"The operation was aborted"),this.type="aborted",this.name=n??"AbortError",this.code=t??"ABORT_ERR"}};async function H(r,e,t){if(e==null)return r;if(e.aborted)return Promise.reject(new be(t?.errorMessage,t?.errorCode,t?.errorName));let n,s=new be(t?.errorMessage,t?.errorCode,t?.errorName);try{return await Promise.race([r,new Promise((o,i)=>{n=()=>{i(s)},e.addEventListener("abort",n)})])}finally{n!=null&&e.removeEventListener("abort",n)}}var xn=5e3;function Ze(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}var ge=class{id;direction;timeline;protocol;metadata;source;status;readStatus;writeStatus;log;sinkController;sinkEnd;closed;endErr;streamSource;onEnd;onCloseRead;onCloseWrite;onReset;onAbort;sendCloseWriteTimeout;sendingData;constructor(e){this.sinkController=new AbortController,this.sinkEnd=M(),this.closed=M(),this.log=e.log,this.status="open",this.readStatus="ready",this.writeStatus="ready",this.id=e.id,this.metadata=e.metadata??{},this.direction=e.direction,this.timeline={open:Date.now()},this.sendCloseWriteTimeout=e.sendCloseWriteTimeout??xn,this.onEnd=e.onEnd,this.onCloseRead=e?.onCloseRead,this.onCloseWrite=e?.onCloseWrite,this.onReset=e?.onReset,this.onAbort=e?.onAbort,this.source=this.streamSource=O({onEnd:t=>{t!=null?this.log.trace("source ended with error",t):this.log.trace("source ended"),this.onSourceEnd(t)}}),this.sink=this.sink.bind(this)}async sink(e){if(this.writeStatus!=="ready")throw new re(`writable end state is "${this.writeStatus}" not "ready"`);try{this.writeStatus="writing";let t={signal:this.sinkController.signal};if(this.direction==="outbound"){let s=this.sendNewStream(t);Ze(s)&&await s}let n=()=>{se(e,this.log)};try{this.sinkController.signal.addEventListener("abort",n),this.log.trace("sink reading from source");for await(let s of e){s=s instanceof Uint8Array?new R(s):s;let o=this.sendData(s,t);Ze(o)&&(this.sendingData=M(),await o,this.sendingData.resolve(),this.sendingData=void 0)}}finally{this.sinkController.signal.removeEventListener("abort",n)}this.log.trace('sink finished reading from source, write status is "%s"',this.writeStatus),this.writeStatus==="writing"&&(this.writeStatus="closing",this.log.trace("send close write to remote"),await this.sendCloseWrite({signal:AbortSignal.timeout(this.sendCloseWriteTimeout)}),this.writeStatus="closed"),this.onSinkEnd()}catch(t){throw this.log.trace("sink ended with error, calling abort with error",t),this.abort(t),t}finally{this.log.trace("resolve sink end"),this.sinkEnd.resolve()}}onSourceEnd(e){this.timeline.closeRead==null&&(this.timeline.closeRead=Date.now(),this.readStatus="closed",e!=null&&this.endErr==null&&(this.endErr=e),this.onCloseRead?.(),this.timeline.closeWrite!=null?(this.log.trace("source and sink ended"),this.timeline.close=Date.now(),this.status!=="aborted"&&this.status!=="reset"&&(this.status="closed"),this.onEnd!=null&&this.onEnd(this.endErr),this.closed.resolve()):this.log.trace("source ended, waiting for sink to end"))}onSinkEnd(e){this.timeline.closeWrite==null&&(this.timeline.closeWrite=Date.now(),this.writeStatus="closed",e!=null&&this.endErr==null&&(this.endErr=e),this.onCloseWrite?.(),this.timeline.closeRead!=null?(this.log.trace("sink and source ended"),this.timeline.close=Date.now(),this.status!=="aborted"&&this.status!=="reset"&&(this.status="closed"),this.onEnd!=null&&this.onEnd(this.endErr),this.closed.resolve()):this.log.trace("sink ended, waiting for source to end"))}async close(e){this.log.trace("closing gracefully"),this.status="closing",await H(Promise.all([this.closeWrite(e),this.closeRead(e),this.closed.promise]),e?.signal),this.status="closed",this.log.trace("closed gracefully")}async closeRead(e={}){if(this.readStatus==="closing"||this.readStatus==="closed")return;this.log.trace('closing readable end of stream with starting read status "%s"',this.readStatus);let t=this.readStatus;this.readStatus="closing",this.status!=="reset"&&this.status!=="aborted"&&this.timeline.closeRead==null&&(this.log.trace("send close read to remote"),await this.sendCloseRead(e)),t==="ready"&&(this.log.trace("ending internal source queue with %d queued bytes",this.streamSource.readableLength),this.streamSource.end()),this.log.trace("closed readable end of stream")}async closeWrite(e={}){this.writeStatus==="closing"||this.writeStatus==="closed"||(this.log.trace('closing writable end of stream with starting write status "%s"',this.writeStatus),this.writeStatus==="ready"&&(this.log.trace("sink was never sunk, sink an empty array"),await H(this.sink([]),e.signal)),this.writeStatus==="writing"&&(this.sendingData!=null&&await H(this.sendingData.promise,e.signal),this.log.trace("aborting source passed to .sink"),this.sinkController.abort(),await H(this.sinkEnd.promise,e.signal)),this.writeStatus="closed",this.log.trace("closed writable end of stream"))}abort(e){if(this.status==="closed"||this.status==="aborted"||this.status==="reset")return;this.log("abort with error",e),this.log("try to send reset to remote");let t=this.sendReset();Ze(t)&&t.catch(n=>{this.log.error("error sending reset message",n)}),this.status="aborted",this.timeline.abort=Date.now(),this._closeSinkAndSource(e),this.onAbort?.(e)}reset(){if(this.status==="closed"||this.status==="aborted"||this.status==="reset")return;let e=new te("stream reset");this.status="reset",this.timeline.reset=Date.now(),this._closeSinkAndSource(e),this.onReset?.()}_closeSinkAndSource(e){this._closeSink(e),this._closeSource(e)}_closeSink(e){this.writeStatus==="writing"&&(this.log.trace("end sink source"),this.sinkController.abort()),this.onSinkEnd(e)}_closeSource(e){this.readStatus!=="closing"&&this.readStatus!=="closed"&&(this.log.trace("ending source with %d bytes to be read by consumer",this.streamSource.readableLength),this.readStatus="closing",this.streamSource.end(e))}remoteCloseWrite(){if(this.readStatus==="closing"||this.readStatus==="closed"){this.log("received remote close write but local source is already closed");return}this.log.trace("remote close write"),this._closeSource()}remoteCloseRead(){if(this.writeStatus==="closing"||this.writeStatus==="closed"){this.log("received remote close read but local sink is already closed");return}this.log.trace("remote close read"),this._closeSink()}destroy(){if(this.status==="closed"||this.status==="aborted"||this.status==="reset"){this.log("received destroy but we are already closed");return}this.log.trace("stream destroyed"),this._closeSinkAndSource()}sourcePush(e){this.streamSource.push(e)}sourceReadableLength(){return this.streamSource.readableLength}};var He=class extends ge{name;streamId;send;types;maxDataSize;constructor(e){super(e),this.types=e.direction==="outbound"?je:Dt,this.send=e.send,this.name=e.name,this.streamId=e.streamId,this.maxDataSize=e.maxDataSize}async sendNewStream(){await this.send({id:this.streamId,type:je.NEW_STREAM,data:new R(qe(this.name))})}async sendData(e){for(e=e.sublist();e.byteLength>0;){let t=Math.min(e.byteLength,this.maxDataSize);await this.send({id:this.streamId,type:this.types.MESSAGE,data:e.sublist(0,t)}),e.consume(t)}}async sendReset(){await this.send({id:this.streamId,type:this.types.RESET})}async sendCloseWrite(){await this.send({id:this.streamId,type:this.types.CLOSE})}async sendCloseRead(){}};function kt(r){let{id:e,name:t,send:n,onEnd:s,type:o="initiator",maxMsgSize:i=Xe}=r;return new He({id:o==="initiator"?`i${e}`:`r${e}`,streamId:e,name:`${t??e}`,direction:o==="initiator"?"outbound":"inbound",maxDataSize:i,onEnd:s,send:n,log:r.logger.forComponent(`libp2p:mplex:stream:${o}:${e}`)})}var En=1024,Sn=1024,In=1024*1024*4,An=5,vn=500;function Pt(r){let e={...r,type:`${Z[r.type]} (${r.type})`};return r.type===u.NEW_STREAM&&(e.data=Q(r.data instanceof Uint8Array?r.data:r.data.subarray())),(r.type===u.MESSAGE_INITIATOR||r.type===u.MESSAGE_RECEIVER)&&(e.data=Q(r.data instanceof Uint8Array?r.data:r.data.subarray(),"base16")),e}var ye=class{protocol="/mplex/6.7.0";sink;source;log;_streamId;_streams;_init;_source;closeController;rateLimiter;closeTimeout;logger;constructor(e,t){t=t??{},this.log=e.logger.forComponent("libp2p:mplex"),this.logger=e.logger,this._streamId=0,this._streams={initiators:new Map,receivers:new Map},this._init=t,this.closeTimeout=t.closeTimeout??vn,this.sink=this._createSink(),this._source=O({objectMode:!0,onEnd:()=>{for(let n of this._streams.initiators.values())n.destroy();for(let n of this._streams.receivers.values())n.destroy()}}),this.source=it(this._source,n=>Ot(n)),this.closeController=new AbortController,this.rateLimiter=new ie({points:t.disconnectThreshold??An,duration:1})}get streams(){let e=[];for(let t of this._streams.initiators.values())e.push(t);for(let t of this._streams.receivers.values())e.push(t);return e}newStream(e){if(this.closeController.signal.aborted)throw new ee("Muxer already closed");let t=this._streamId++;e=e==null?t.toString():e.toString();let n=this._streams.initiators;return this._newStream({id:t,name:e,type:"initiator",registry:n})}async close(e){if(this.closeController.signal.aborted)return;let t=e?.signal??AbortSignal.timeout(this.closeTimeout);try{await Promise.all(this.streams.map(async n=>n.close({signal:t}))),this._source.end(),await this._source.onEmpty({signal:t}),this.closeController.abort()}catch(n){this.abort(n)}}abort(e){this.closeController.signal.aborted||(this.streams.forEach(t=>{t.abort(e)}),this.closeController.abort(e))}_newReceiverStream(e){let{id:t,name:n}=e,s=this._streams.receivers;return this._newStream({id:t,name:n,type:"receiver",registry:s})}_newStream(e){let{id:t,name:n,type:s,registry:o}=e;if(this.log("new %s stream %s",s,t),s==="initiator"&&this._streams.initiators.size===(this._init.maxOutboundStreams??Sn))throw new ne("Too many outbound streams open");if(o.has(t))throw new Error(`${s} stream ${t} already exists!`);let c=kt({id:t,name:n,send:async m=>{this.log.enabled&&this.log.trace("%s stream %s send",s,t,Pt(m)),this._source.push(m)},type:s,onEnd:()=>{this.log("%s stream with id %s and protocol %s ended",s,t,c.protocol),o.delete(t),this._init.onStreamEnd!=null&&this._init.onStreamEnd(c)},maxMsgSize:this._init.maxMsgSize,logger:this.logger});return o.set(t,c),c}_createSink(){return async t=>{let n=()=>{se(t,this.log)};this.closeController.signal.addEventListener("abort",n);try{let s=new fe(this._init.maxMsgSize,this._init.maxUnprocessedMessageQueueSize);for await(let o of t)for(let i of s.write(o))await this._handleIncoming(i);this._source.end()}catch(s){this.log("error in sink",s),this._source.end(s)}finally{this.closeController.signal.removeEventListener("abort",n)}}}async _handleIncoming(e){let{id:t,type:n}=e;if(this.log.enabled&&this.log.trace("incoming message",Pt(e)),e.type===u.NEW_STREAM){if(this._streams.receivers.size===(this._init.maxInboundStreams??En)){this.log("too many inbound streams open"),this._source.push({id:t,type:u.RESET_RECEIVER});try{await this.rateLimiter.consume("new-stream",1)}catch{this.log("rate limit hit when opening too many new streams over the inbound stream limit - closing remote connection"),this.abort(new Error("Too many open streams"));return}return}let a=this._newReceiverStream({id:t,name:Q(e.data instanceof Uint8Array?e.data:e.data.subarray())});this._init.onIncomingStream!=null&&this._init.onIncomingStream(a);return}let o=((n&1)===1?this._streams.initiators:this._streams.receivers).get(t);if(o==null){this.log("missing stream %s for message type %s",t,Z[n]);try{await this.rateLimiter.consume("missing-stream",1)}catch{this.log("rate limit hit when receiving messages for streams that do not exist - closing remote connection"),this.abort(new Error("Too many messages for missing streams"));return}return}let i=this._init.maxStreamBufferSize??In;try{switch(n){case u.MESSAGE_INITIATOR:case u.MESSAGE_RECEIVER:if(o.sourceReadableLength()>i)throw this._source.push({id:e.id,type:n===u.MESSAGE_INITIATOR?u.RESET_RECEIVER:u.RESET_INITIATOR}),new pe("Input buffer full - increase Mplex maxBufferSize to accommodate slow consumers");o.sourcePush(e.data);break;case u.CLOSE_INITIATOR:case u.CLOSE_RECEIVER:o.remoteCloseWrite();break;case u.RESET_INITIATOR:case u.RESET_RECEIVER:o.reset();break;default:this.log("unknown message type %s",n)}}catch(a){this.log.error("error while processing message",a),o.abort(a)}}};var Ye=class{protocol="/mplex/6.7.0";_init;components;constructor(e,t={}){this.components=e,this._init=t}[Symbol.toStringTag]="@libp2p/mplex";[et]=["@libp2p/stream-multiplexing"];createStreamMuxer(e={}){return new ye(this.components,{...e,...this._init})}};function _n(r={}){return e=>new Ye(e,r)}return Wt(Cn);})();
|
3
3
|
return Libp2PMplex}));
|
package/dist/src/decode.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"decode.d.ts","sourceRoot":"","sources":["../../src/decode.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"decode.d.ts","sourceRoot":"","sources":["../../src/decode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAE,gBAAgB,EAAgB,MAAM,oBAAoB,CAAA;AACnE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAEjD,eAAO,MAAM,YAAY,QAAU,CAAA;AACnC,eAAO,MAAM,kBAAkB,QAAU,CAAA;AAEzC,UAAU,aAAa;IACrB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,OAAO,gBAAgB,CAAA;IACnC,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;CACf;AAED,qBAAa,OAAO;IAClB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;IACxC,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAQ;IACxC,OAAO,CAAC,QAAQ,CAAC,+BAA+B,CAAQ;gBAE3C,cAAc,GAAE,MAAqB,EAAE,8BAA8B,GAAE,MAA2B;IAO/G,KAAK,CAAE,KAAK,EAAE,UAAU,GAAG,cAAc,GAAG,OAAO,EAAE;IAmDrD;;OAEG;IACH,aAAa,CAAE,IAAI,EAAE,cAAc,GAAG,aAAa;CAyBpD;AAKD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf"}
|
package/dist/src/decode.js
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
import { InvalidMessageError } from '@libp2p/interface';
|
1
2
|
import { Uint8ArrayList } from 'uint8arraylist';
|
2
3
|
import { MessageTypeNames, MessageTypes } from './message-types.js';
|
3
4
|
export const MAX_MSG_SIZE = 1 << 20; // 1MB
|
@@ -19,7 +20,7 @@ export class Decoder {
|
|
19
20
|
}
|
20
21
|
this._buffer.append(chunk);
|
21
22
|
if (this._buffer.byteLength > this._maxUnprocessedMessageQueueSize) {
|
22
|
-
throw
|
23
|
+
throw new InvalidMessageError('Unprocessed message queue size too large!');
|
23
24
|
}
|
24
25
|
const msgs = [];
|
25
26
|
while (this._buffer.length !== 0) {
|
@@ -28,7 +29,7 @@ export class Decoder {
|
|
28
29
|
this._headerInfo = this._decodeHeader(this._buffer);
|
29
30
|
}
|
30
31
|
catch (err) {
|
31
|
-
if (err.
|
32
|
+
if (err.name === 'InvalidMessageError') {
|
32
33
|
throw err;
|
33
34
|
}
|
34
35
|
break; // We haven't received enough data yet
|
@@ -65,7 +66,7 @@ export class Decoder {
|
|
65
66
|
}
|
66
67
|
// test message type varint + data length
|
67
68
|
if (length > this._maxMessageSize) {
|
68
|
-
throw
|
69
|
+
throw new InvalidMessageError('Message size too large');
|
69
70
|
}
|
70
71
|
// @ts-expect-error h is a number not a CODE
|
71
72
|
return { id: h >> 3, type, offset: offset + end, length };
|
package/dist/src/decode.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"decode.js","sourceRoot":"","sources":["../../src/decode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAGnE,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,CAAA,CAAC,MAAM;AAC1C,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,IAAI,EAAE,CAAA,CAAC,MAAM;AAShD,MAAM,OAAO,OAAO;IACD,OAAO,CAAgB;IAChC,WAAW,CAAsB;IACxB,eAAe,CAAQ;IACvB,+BAA+B,CAAQ;IAExD,YAAa,iBAAyB,YAAY,EAAE,iCAAyC,kBAAkB;QAC7G,IAAI,CAAC,OAAO,GAAG,IAAI,cAAc,EAAE,CAAA;QACnC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAA;QACvB,IAAI,CAAC,eAAe,GAAG,cAAc,CAAA;QACrC,IAAI,CAAC,+BAA+B,GAAG,8BAA8B,CAAA;IACvE,CAAC;IAED,KAAK,CAAE,KAAkC;QACvC,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxC,OAAO,EAAE,CAAA;QACX,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAE1B,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,+BAA+B,EAAE,CAAC;YACnE,MAAM,
|
1
|
+
{"version":3,"file":"decode.js","sourceRoot":"","sources":["../../src/decode.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,KAAK;gBAClC,OAAO,SAA8B;CAInD"}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
/**
|
2
|
+
* There was an error in the stream input buffer
|
3
|
+
*/
|
4
|
+
export class StreamInputBufferError extends Error {
|
5
|
+
constructor(message = 'Stream input buffer error') {
|
6
|
+
super(message);
|
7
|
+
this.name = 'StreamInputBufferError';
|
8
|
+
}
|
9
|
+
}
|
10
|
+
//# sourceMappingURL=errors.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAC/C,YAAa,OAAO,GAAG,2BAA2B;QAChD,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAA;IACtC,CAAC;CACF"}
|
package/dist/src/mplex.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"mplex.d.ts","sourceRoot":"","sources":["../../src/mplex.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"mplex.d.ts","sourceRoot":"","sources":["../../src/mplex.ts"],"names":[],"mappings":"AASA,OAAO,EAAkC,KAAK,OAAO,EAAE,MAAM,oBAAoB,CAAA;AACjF,OAAO,EAAgB,KAAK,WAAW,EAAE,MAAM,aAAa,CAAA;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAU,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACpH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAyBpD,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,eAAe,CAAA;CACxB;AAED,UAAU,oBAAqB,SAAQ,SAAS,EAAE,eAAe;IAC/D;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,qBAAa,gBAAiB,YAAW,WAAW;IAC3C,QAAQ,SAAiB;IAEzB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,GAAG,UAAU,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;IAC9D,MAAM,EAAE,cAAc,CAAC,cAAc,GAAG,UAAU,CAAC,CAAA;IAE1D,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA+E;IACxG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAsB;IAC5C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmB;IAC3C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiB;IACjD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IACzC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAQ;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;gBAE3B,UAAU,EAAE,eAAe,EAAE,IAAI,CAAC,EAAE,oBAAoB;IAyDrE;;OAEG;IACH,IAAI,OAAO,IAAK,MAAM,EAAE,CAWvB;IAED;;;OAGG;IACH,SAAS,CAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM;IAUjC;;OAEG;IACG,KAAK,CAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IA4BnD,KAAK,CAAE,GAAG,EAAE,KAAK,GAAG,IAAI;IASxB;;OAEG;IACH,kBAAkB,CAAE,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,WAAW;IAMvE,UAAU,CAAE,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,WAAW,GAAG,UAAU,CAAC;QAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;KAAE,GAAG,WAAW;IAmCnI;;;OAGG;IACH,WAAW,IAAK,IAAI,CAAC,MAAM,CAAC,cAAc,GAAG,UAAU,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IA6BlE,eAAe,CAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAsGxD"}
|
package/dist/src/mplex.js
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
import {
|
1
|
+
import { TooManyOutboundProtocolStreamsError, MuxerClosedError } from '@libp2p/interface';
|
2
2
|
import { closeSource } from '@libp2p/utils/close-source';
|
3
3
|
import { RateLimiter } from '@libp2p/utils/rate-limiter';
|
4
4
|
import { pipe } from 'it-pipe';
|
@@ -6,6 +6,7 @@ import { pushable } from 'it-pushable';
|
|
6
6
|
import { toString as uint8ArrayToString } from 'uint8arrays';
|
7
7
|
import { Decoder } from './decode.js';
|
8
8
|
import { encode } from './encode.js';
|
9
|
+
import { StreamInputBufferError } from './errors.js';
|
9
10
|
import { MessageTypes, MessageTypeNames } from './message-types.js';
|
10
11
|
import { createStream } from './stream.js';
|
11
12
|
const MAX_STREAMS_INBOUND_STREAMS_PER_CONNECTION = 1024;
|
@@ -106,7 +107,7 @@ export class MplexStreamMuxer {
|
|
106
107
|
*/
|
107
108
|
newStream(name) {
|
108
109
|
if (this.closeController.signal.aborted) {
|
109
|
-
throw new
|
110
|
+
throw new MuxerClosedError('Muxer already closed');
|
110
111
|
}
|
111
112
|
const id = this._streamId++;
|
112
113
|
name = name == null ? id.toString() : name.toString();
|
@@ -156,7 +157,7 @@ export class MplexStreamMuxer {
|
|
156
157
|
const { id, name, type, registry } = options;
|
157
158
|
this.log('new %s stream %s', type, id);
|
158
159
|
if (type === 'initiator' && this._streams.initiators.size === (this._init.maxOutboundStreams ?? MAX_STREAMS_OUTBOUND_STREAMS_PER_CONNECTION)) {
|
159
|
-
throw new
|
160
|
+
throw new TooManyOutboundProtocolStreamsError('Too many outbound streams open');
|
160
161
|
}
|
161
162
|
if (registry.has(id)) {
|
162
163
|
throw new Error(`${type} stream ${id} already exists!`);
|
@@ -272,7 +273,7 @@ export class MplexStreamMuxer {
|
|
272
273
|
type: type === MessageTypes.MESSAGE_INITIATOR ? MessageTypes.RESET_RECEIVER : MessageTypes.RESET_INITIATOR
|
273
274
|
});
|
274
275
|
// Inform the stream consumer they are not fast enough
|
275
|
-
throw new
|
276
|
+
throw new StreamInputBufferError('Input buffer full - increase Mplex maxBufferSize to accommodate slow consumers');
|
276
277
|
}
|
277
278
|
// We got data from the remote, push it into our local stream
|
278
279
|
stream.sourcePush(message.data);
|
package/dist/src/mplex.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"mplex.js","sourceRoot":"","sources":["../../src/mplex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
1
|
+
{"version":3,"file":"mplex.js","sourceRoot":"","sources":["../../src/mplex.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@libp2p/mplex",
|
3
|
-
"version": "10.1.5-
|
3
|
+
"version": "10.1.5-2bbaf4361",
|
4
4
|
"description": "JavaScript implementation of https://github.com/libp2p/mplex",
|
5
5
|
"license": "Apache-2.0 OR MIT",
|
6
6
|
"homepage": "https://github.com/libp2p/js-libp2p/tree/main/packages/stream-multiplexer-mplex#readme",
|
@@ -62,8 +62,8 @@
|
|
62
62
|
"test:electron-main": "aegir test -t electron-main"
|
63
63
|
},
|
64
64
|
"dependencies": {
|
65
|
-
"@libp2p/interface": "1.7.0-
|
66
|
-
"@libp2p/utils": "5.4.9-
|
65
|
+
"@libp2p/interface": "1.7.0-2bbaf4361",
|
66
|
+
"@libp2p/utils": "5.4.9-2bbaf4361",
|
67
67
|
"it-pipe": "^3.0.1",
|
68
68
|
"it-pushable": "^3.2.3",
|
69
69
|
"it-stream-types": "^2.0.1",
|
@@ -72,8 +72,8 @@
|
|
72
72
|
"uint8arrays": "^5.1.0"
|
73
73
|
},
|
74
74
|
"devDependencies": {
|
75
|
-
"@libp2p/interface-compliance-tests": "5.4.12-
|
76
|
-
"@libp2p/logger": "4.0.20-
|
75
|
+
"@libp2p/interface-compliance-tests": "5.4.12-2bbaf4361",
|
76
|
+
"@libp2p/logger": "4.0.20-2bbaf4361",
|
77
77
|
"aegir": "^44.0.1",
|
78
78
|
"benchmark": "^2.1.4",
|
79
79
|
"cborg": "^4.2.0",
|
package/src/decode.ts
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
import { InvalidMessageError } from '@libp2p/interface'
|
1
2
|
import { Uint8ArrayList } from 'uint8arraylist'
|
2
3
|
import { MessageTypeNames, MessageTypes } from './message-types.js'
|
3
4
|
import type { Message } from './message-types.js'
|
@@ -33,7 +34,7 @@ export class Decoder {
|
|
33
34
|
this._buffer.append(chunk)
|
34
35
|
|
35
36
|
if (this._buffer.byteLength > this._maxUnprocessedMessageQueueSize) {
|
36
|
-
throw
|
37
|
+
throw new InvalidMessageError('Unprocessed message queue size too large!')
|
37
38
|
}
|
38
39
|
|
39
40
|
const msgs: Message[] = []
|
@@ -43,7 +44,7 @@ export class Decoder {
|
|
43
44
|
try {
|
44
45
|
this._headerInfo = this._decodeHeader(this._buffer)
|
45
46
|
} catch (err: any) {
|
46
|
-
if (err.
|
47
|
+
if (err.name === 'InvalidMessageError') {
|
47
48
|
throw err
|
48
49
|
}
|
49
50
|
|
@@ -98,7 +99,7 @@ export class Decoder {
|
|
98
99
|
|
99
100
|
// test message type varint + data length
|
100
101
|
if (length > this._maxMessageSize) {
|
101
|
-
throw
|
102
|
+
throw new InvalidMessageError('Message size too large')
|
102
103
|
}
|
103
104
|
|
104
105
|
// @ts-expect-error h is a number not a CODE
|
package/src/errors.ts
ADDED
package/src/mplex.ts
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
import {
|
1
|
+
import { TooManyOutboundProtocolStreamsError, MuxerClosedError } from '@libp2p/interface'
|
2
2
|
import { closeSource } from '@libp2p/utils/close-source'
|
3
3
|
import { RateLimiter } from '@libp2p/utils/rate-limiter'
|
4
4
|
import { pipe } from 'it-pipe'
|
@@ -6,6 +6,7 @@ import { type Pushable, pushable } from 'it-pushable'
|
|
6
6
|
import { toString as uint8ArrayToString } from 'uint8arrays'
|
7
7
|
import { Decoder } from './decode.js'
|
8
8
|
import { encode } from './encode.js'
|
9
|
+
import { StreamInputBufferError } from './errors.js'
|
9
10
|
import { MessageTypes, MessageTypeNames, type Message } from './message-types.js'
|
10
11
|
import { createStream, type MplexStream } from './stream.js'
|
11
12
|
import type { MplexInit } from './index.js'
|
@@ -142,7 +143,7 @@ export class MplexStreamMuxer implements StreamMuxer {
|
|
142
143
|
*/
|
143
144
|
newStream (name?: string): Stream {
|
144
145
|
if (this.closeController.signal.aborted) {
|
145
|
-
throw new
|
146
|
+
throw new MuxerClosedError('Muxer already closed')
|
146
147
|
}
|
147
148
|
const id = this._streamId++
|
148
149
|
name = name == null ? id.toString() : name.toString()
|
@@ -205,7 +206,7 @@ export class MplexStreamMuxer implements StreamMuxer {
|
|
205
206
|
this.log('new %s stream %s', type, id)
|
206
207
|
|
207
208
|
if (type === 'initiator' && this._streams.initiators.size === (this._init.maxOutboundStreams ?? MAX_STREAMS_OUTBOUND_STREAMS_PER_CONNECTION)) {
|
208
|
-
throw new
|
209
|
+
throw new TooManyOutboundProtocolStreamsError('Too many outbound streams open')
|
209
210
|
}
|
210
211
|
|
211
212
|
if (registry.has(id)) {
|
@@ -345,7 +346,7 @@ export class MplexStreamMuxer implements StreamMuxer {
|
|
345
346
|
})
|
346
347
|
|
347
348
|
// Inform the stream consumer they are not fast enough
|
348
|
-
throw new
|
349
|
+
throw new StreamInputBufferError('Input buffer full - increase Mplex maxBufferSize to accommodate slow consumers')
|
349
350
|
}
|
350
351
|
|
351
352
|
// We got data from the remote, push it into our local stream
|