@libp2p/echo 2.0.7-e99e8f448 → 2.0.8-3244ed086

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.min.js CHANGED
@@ -1,3 +1,3 @@
1
1
  (function (root, factory) {(typeof module === 'object' && module.exports) ? module.exports = factory() : root.Libp2PEcho = factory()}(typeof self !== 'undefined' ? self : this, function () {
2
- "use strict";var Libp2PEcho=(()=>{var x=Object.defineProperty;var T=Object.getOwnPropertyDescriptor;var C=Object.getOwnPropertyNames;var j=Object.prototype.hasOwnProperty;var V=(r,e)=>{for(var t in e)x(r,t,{get:e[t],enumerable:!0})},B=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of C(e))!j.call(r,s)&&s!==t&&x(r,s,{get:()=>e[s],enumerable:!(n=T(e,s))||n.enumerable});return r};var D=r=>B(x({},"__esModule",{value:!0}),r);var H={};V(H,{echo:()=>G});function d(){let r={};return r.promise=new Promise((e,t)=>{r.resolve=e,r.reject=t}),r}var p=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}},c=class{size;hwm;head;tail;constructor(e={}){this.hwm=e.splitLimit??16,this.head=new p(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 p(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 g=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.code=t??"ABORT_ERR"}};function m(r={}){return U(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 U(r,e){e=e??{};let t=e.onEnd,n=new c,s,i,l,y=d(),z=async()=>{try{return n.isEmpty()?l?{done:!0}:await new Promise((o,u)=>{i=f=>{i=null,n.push(f);try{o(r(n))}catch(h){u(h)}return s}}):r(n)}finally{n.isEmpty()&&queueMicrotask(()=>{y.resolve(),y=d()})}},S=o=>i!=null?i(o):(n.push(o),s),R=o=>(n=new c,i!=null?i({error:o}):(n.push({error:o}),s)),v=o=>{if(l)return s;if(e?.objectMode!==!0&&o?.byteLength==null)throw new Error("objectMode was not true but tried to push non-Uint8Array value");return S({done:!1,value:o})},w=o=>l?s:(l=!0,o!=null?R(o):S({done:!0})),_=()=>(n=new c,w(),{done:!0}),A=o=>(w(o),{done:!0});if(s={[Symbol.asyncIterator](){return this},next:z,return:_,throw:A,push:v,end:w,get readableLength(){return n.size},onEmpty:async o=>{let u=o?.signal;if(u?.throwIfAborted(),n.isEmpty())return;let f,h;u!=null&&(f=new Promise((J,M)=>{h=()=>{M(new g)},u.addEventListener("abort",h)}));try{await Promise.race([y.promise,f])}finally{h!=null&&u!=null&&u?.removeEventListener("abort",h)}}},t==null)return s;let a=s;return s={[Symbol.asyncIterator](){return this},next(){return a.next()},throw(o){return a.throw(o),t!=null&&(t(o),t=void 0),{done:!0}},return(){return a.return(),t!=null&&(t(),t=void 0),{done:!0}},push:v,end(o){return a.end(o),t!=null&&(t(o),t=void 0),s},get readableLength(){return a.readableLength},onEmpty:o=>a.onEmpty(o)},s}function q(r){return r[Symbol.asyncIterator]!=null}function F(...r){let e=[];for(let t of r)q(t)||e.push(t);return e.length===r.length?function*(){for(let t of e)yield*t}():async function*(){let t=m({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 O=F;function I(r,...e){if(r==null)throw new Error("Empty pipeline");if(E(r)){let n=r;r=()=>n.source}else if(P(r)||L(r)){let n=r;r=()=>n}let t=[r,...e];if(t.length>1&&E(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++)E(t[n])&&(t[n]=$(t[n]));return W(...t)}var W=(...r)=>{let e;for(;r.length>0;)e=r.shift()(e);return e},L=r=>r?.[Symbol.asyncIterator]!=null,P=r=>r?.[Symbol.iterator]!=null,E=r=>r==null?!1:r.sink!=null&&r.source!=null,$=r=>e=>{let t=r.sink(e);if(t?.then!=null){let n=m({objectMode:!0});t.then(()=>{n.end()},l=>{n.end(l)});let s,i=r.source;if(L(i))s=async function*(){yield*i,n.end()};else if(P(i))s=function*(){yield*i,n.end()};else throw new Error("Unknown duplex source type - must be Iterable or AsyncIterable");return O(n,s())}return r.source};var k="1.0.0",N="echo";var b=class{protocol;components;started;init;log;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:echo"),this.started=!1,this.components=e,this.protocol=`/${[t.protocolPrefix,N,k].filter(Boolean).join("/")}`,this.init=t}[Symbol.toStringTag]="@libp2p/echo";async start(){await this.components.registrar.handle(this.protocol,({stream:e})=>{I(e,e).catch(t=>{this.log.error("error piping stream",t)})},{maxInboundStreams:this.init.maxInboundStreams,maxOutboundStreams:this.init.maxOutboundStreams}),this.started=!0}async stop(){await this.components.registrar.unhandle(this.protocol),this.started=!1}isStarted(){return this.started}};function G(r={}){return e=>new b(e,r)}return D(H);})();
2
+ "use strict";var Libp2PEcho=(()=>{var P=Object.defineProperty;var Y=Object.getOwnPropertyDescriptor;var Z=Object.getOwnPropertyNames;var Q=Object.prototype.hasOwnProperty;var tt=(s,t)=>{for(var e in t)P(s,e,{get:t[e],enumerable:!0})},et=(s,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Z(t))!Q.call(s,n)&&n!==e&&P(s,n,{get:()=>t[n],enumerable:!(r=Y(t,n))||r.enumerable});return s};var rt=s=>et(P({},"__esModule",{value:!0}),s);var ht={};tt(ht,{echo:()=>at});function w(){let s={};return s.promise=new Promise((t,e)=>{s.resolve=t,s.reject=e}),s}var E=class extends Error{type;code;constructor(t,e,r){super(t??"The operation was aborted"),this.type="aborted",this.name=r??"AbortError",this.code=e??"ABORT_ERR"}};async function C(s,t,e){if(t==null)return s;if(t.aborted)return Promise.reject(new E(e?.errorMessage,e?.errorCode,e?.errorName));let r,n=new E(e?.errorMessage,e?.errorCode,e?.errorName);try{return await Promise.race([s,new Promise((i,o)=>{r=()=>{o(n)},t.addEventListener("abort",r)})])}finally{r!=null&&t.removeEventListener("abort",r)}}var I=class{readNext;haveNext;ended;nextResult;constructor(){this.ended=!1,this.readNext=w(),this.haveNext=w()}[Symbol.asyncIterator](){return this}async next(){if(this.nextResult==null&&await this.haveNext.promise,this.nextResult==null)throw new Error("HaveNext promise resolved but nextResult was undefined");let t=this.nextResult;return this.nextResult=void 0,this.readNext.resolve(),this.readNext=w(),t}async throw(t){return this.ended=!0,t!=null&&(this.haveNext.promise.catch(()=>{}),this.haveNext.reject(t)),{done:!0,value:void 0}}async return(){let t={done:!0,value:void 0};return await this._push(void 0),t}async push(t,e){await this._push(t,e)}async end(t,e){t!=null?await this.throw(t):await this._push(void 0,e)}async _push(t,e){if(t!=null&&this.ended)throw new Error("Cannot push value onto an ended pushable");for(;this.nextResult!=null;)await this.readNext.promise;t!=null?this.nextResult={done:!1,value:t}:(this.ended=!0,this.nextResult={done:!0,value:void 0}),this.haveNext.resolve(),this.haveNext=w(),await C(this.readNext.promise,e?.signal,e)}};function M(){return new I}function d(s=0){return new Uint8Array(s)}function x(s=0){return new Uint8Array(s)}function D(s,t){t==null&&(t=s.reduce((n,i)=>n+i.length,0));let e=x(t),r=0;for(let n of s)e.set(n,r),r+=n.length;return e}function T(s,t){if(s===t)return!0;if(s.byteLength!==t.byteLength)return!1;for(let e=0;e<s.byteLength;e++)if(s[e]!==t[e])return!1;return!0}var z=Symbol.for("@achingbrain/uint8arraylist");function F(s,t){if(t==null||t<0)throw new RangeError("index is out of bounds");let e=0;for(let r of s){let n=e+r.byteLength;if(t<n)return{buf:r,index:t-e};e=n}throw new RangeError("index is out of bounds")}function A(s){return!!s?.[z]}var L=class s{bufs;length;[z]=!0;constructor(...t){this.bufs=[],this.length=0,t.length>0&&this.appendAll(t)}*[Symbol.iterator](){yield*this.bufs}get byteLength(){return this.length}append(...t){this.appendAll(t)}appendAll(t){let e=0;for(let r of t)if(r instanceof Uint8Array)e+=r.byteLength,this.bufs.push(r);else if(A(r))e+=r.byteLength,this.bufs.push(...r.bufs);else throw new Error("Could not append value, must be an Uint8Array or a Uint8ArrayList");this.length+=e}prepend(...t){this.prependAll(t)}prependAll(t){let e=0;for(let r of t.reverse())if(r instanceof Uint8Array)e+=r.byteLength,this.bufs.unshift(r);else if(A(r))e+=r.byteLength,this.bufs.unshift(...r.bufs);else throw new Error("Could not prepend value, must be an Uint8Array or a Uint8ArrayList");this.length+=e}get(t){let e=F(this.bufs,t);return e.buf[e.index]}set(t,e){let r=F(this.bufs,t);r.buf[r.index]=e}write(t,e=0){if(t instanceof Uint8Array)for(let r=0;r<t.length;r++)this.set(e+r,t[r]);else if(A(t))for(let r=0;r<t.length;r++)this.set(e+r,t.get(r));else throw new Error("Could not write value, must be an Uint8Array or a Uint8ArrayList")}consume(t){if(t=Math.trunc(t),!(Number.isNaN(t)||t<=0)){if(t===this.byteLength){this.bufs=[],this.length=0;return}for(;this.bufs.length>0;)if(t>=this.bufs[0].byteLength)t-=this.bufs[0].byteLength,this.length-=this.bufs[0].byteLength,this.bufs.shift();else{this.bufs[0]=this.bufs[0].subarray(t),this.length-=t;break}}}slice(t,e){let{bufs:r,length:n}=this._subList(t,e);return D(r,n)}subarray(t,e){let{bufs:r,length:n}=this._subList(t,e);return r.length===1?r[0]:D(r,n)}sublist(t,e){let{bufs:r,length:n}=this._subList(t,e),i=new s;return i.length=n,i.bufs=[...r],i}_subList(t,e){if(t=t??0,e=e??this.length,t<0&&(t=this.length+t),e<0&&(e=this.length+e),t<0||e>this.length)throw new RangeError("index is out of bounds");if(t===e)return{bufs:[],length:0};if(t===0&&e===this.length)return{bufs:this.bufs,length:this.length};let r=[],n=0;for(let i=0;i<this.bufs.length;i++){let o=this.bufs[i],u=n,l=u+o.byteLength;if(n=l,t>=l)continue;let b=t>=u&&t<l,c=e>u&&e<=l;if(b&&c){if(t===u&&e===l){r.push(o);break}let a=t-u;r.push(o.subarray(a,a+(e-t)));break}if(b){if(t===0){r.push(o);continue}r.push(o.subarray(t-u));continue}if(c){if(e===l){r.push(o);break}r.push(o.subarray(0,e-u));break}r.push(o)}return{bufs:r,length:e-t}}indexOf(t,e=0){if(!A(t)&&!(t instanceof Uint8Array))throw new TypeError('The "value" argument must be a Uint8ArrayList or Uint8Array');let r=t instanceof Uint8Array?t:t.subarray();if(e=Number(e??0),isNaN(e)&&(e=0),e<0&&(e=this.length+e),e<0&&(e=0),t.length===0)return e>this.length?this.length:e;let n=r.byteLength;if(n===0)throw new TypeError("search must be at least 1 byte long");let i=256,o=new Int32Array(i);for(let a=0;a<i;a++)o[a]=-1;for(let a=0;a<n;a++)o[r[a]]=a;let u=o,l=this.byteLength-r.byteLength,b=r.byteLength-1,c;for(let a=e;a<=l;a+=c){c=0;for(let f=b;f>=0;f--){let v=this.get(a+f);if(r[f]!==v){c=Math.max(1,f-u[v]);break}}if(c===0)return a}return-1}getInt8(t){let e=this.subarray(t,t+1);return new DataView(e.buffer,e.byteOffset,e.byteLength).getInt8(0)}setInt8(t,e){let r=x(1);new DataView(r.buffer,r.byteOffset,r.byteLength).setInt8(0,e),this.write(r,t)}getInt16(t,e){let r=this.subarray(t,t+2);return new DataView(r.buffer,r.byteOffset,r.byteLength).getInt16(0,e)}setInt16(t,e,r){let n=d(2);new DataView(n.buffer,n.byteOffset,n.byteLength).setInt16(0,e,r),this.write(n,t)}getInt32(t,e){let r=this.subarray(t,t+4);return new DataView(r.buffer,r.byteOffset,r.byteLength).getInt32(0,e)}setInt32(t,e,r){let n=d(4);new DataView(n.buffer,n.byteOffset,n.byteLength).setInt32(0,e,r),this.write(n,t)}getBigInt64(t,e){let r=this.subarray(t,t+8);return new DataView(r.buffer,r.byteOffset,r.byteLength).getBigInt64(0,e)}setBigInt64(t,e,r){let n=d(8);new DataView(n.buffer,n.byteOffset,n.byteLength).setBigInt64(0,e,r),this.write(n,t)}getUint8(t){let e=this.subarray(t,t+1);return new DataView(e.buffer,e.byteOffset,e.byteLength).getUint8(0)}setUint8(t,e){let r=x(1);new DataView(r.buffer,r.byteOffset,r.byteLength).setUint8(0,e),this.write(r,t)}getUint16(t,e){let r=this.subarray(t,t+2);return new DataView(r.buffer,r.byteOffset,r.byteLength).getUint16(0,e)}setUint16(t,e,r){let n=d(2);new DataView(n.buffer,n.byteOffset,n.byteLength).setUint16(0,e,r),this.write(n,t)}getUint32(t,e){let r=this.subarray(t,t+4);return new DataView(r.buffer,r.byteOffset,r.byteLength).getUint32(0,e)}setUint32(t,e,r){let n=d(4);new DataView(n.buffer,n.byteOffset,n.byteLength).setUint32(0,e,r),this.write(n,t)}getBigUint64(t,e){let r=this.subarray(t,t+8);return new DataView(r.buffer,r.byteOffset,r.byteLength).getBigUint64(0,e)}setBigUint64(t,e,r){let n=d(8);new DataView(n.buffer,n.byteOffset,n.byteLength).setBigUint64(0,e,r),this.write(n,t)}getFloat32(t,e){let r=this.subarray(t,t+4);return new DataView(r.buffer,r.byteOffset,r.byteLength).getFloat32(0,e)}setFloat32(t,e,r){let n=d(4);new DataView(n.buffer,n.byteOffset,n.byteLength).setFloat32(0,e,r),this.write(n,t)}getFloat64(t,e){let r=this.subarray(t,t+8);return new DataView(r.buffer,r.byteOffset,r.byteLength).getFloat64(0,e)}setFloat64(t,e,r){let n=d(8);new DataView(n.buffer,n.byteOffset,n.byteLength).setFloat64(0,e,r),this.write(n,t)}equals(t){if(t==null||!(t instanceof s)||t.bufs.length!==this.bufs.length)return!1;for(let e=0;e<this.bufs.length;e++)if(!T(this.bufs[e],t.bufs[e]))return!1;return!0}static fromUint8Arrays(t,e){let r=new s;return r.bufs=t,e==null&&(e=t.reduce((n,i)=>n+i.byteLength,0)),r.length=e,r}};var O=class extends Error{name="UnexpectedEOFError";code="ERR_UNEXPECTED_EOF"};var V=class extends Error{code;constructor(t,e){super(t),this.code=e}},k=class extends V{type;constructor(t){super(t,"ABORT_ERR"),this.type="aborted",this.name="AbortError"}};function j(s,t){let e=M();s.sink(e).catch(async o=>{await e.end(o)}),s.sink=async o=>{for await(let u of o)await e.push(u);await e.end()};let r=s.source;s.source[Symbol.iterator]!=null?r=s.source[Symbol.iterator]():s.source[Symbol.asyncIterator]!=null&&(r=s.source[Symbol.asyncIterator]());let n=new L;return{read:async(o,u)=>{u?.signal?.throwIfAborted();let l,b=new Promise((c,a)=>{l=()=>{a(new k("Read aborted"))},u?.signal?.addEventListener("abort",l)});try{if(o==null){let{done:a,value:f}=await Promise.race([r.next(),b]);return a===!0?new L:f}for(;n.byteLength<o;){let{value:a,done:f}=await Promise.race([r.next(),b]);if(f===!0)throw new O("unexpected end of input");n.append(a)}let c=n.sublist(0,o);return n.consume(o),c}finally{l!=null&&u?.signal?.removeEventListener("abort",l)}},write:async(o,u)=>{u?.signal?.throwIfAborted(),o instanceof Uint8Array?await e.push(o,u):await e.push(o.subarray(),u)},unwrap:()=>{if(n.byteLength>0){let o=s.source;s.source=async function*(){t?.yieldBytes===!1?yield n:yield*n,yield*o}()}return s}}}var N=class{buffer;mask;top;btm;next;constructor(t){if(!(t>0)||t-1&t)throw new Error("Max size for a FixedFIFO should be a power of two");this.buffer=new Array(t),this.mask=t-1,this.top=0,this.btm=0,this.next=null}push(t){return this.buffer[this.top]!==void 0?!1:(this.buffer[this.top]=t,this.top=this.top+1&this.mask,!0)}shift(){let t=this.buffer[this.btm];if(t!==void 0)return this.buffer[this.btm]=void 0,this.btm=this.btm+1&this.mask,t}isEmpty(){return this.buffer[this.btm]===void 0}},m=class{size;hwm;head;tail;constructor(t={}){this.hwm=t.splitLimit??16,this.head=new N(this.hwm),this.tail=this.head,this.size=0}calculateSize(t){return t?.byteLength!=null?t.byteLength:1}push(t){if(t?.value!=null&&(this.size+=this.calculateSize(t.value)),!this.head.push(t)){let e=this.head;this.head=e.next=new N(2*this.head.buffer.length),this.head.push(t)}}shift(){let t=this.tail.shift();if(t===void 0&&this.tail.next!=null){let e=this.tail.next;this.tail.next=null,this.tail=e,t=this.tail.shift()}return t?.value!=null&&(this.size-=this.calculateSize(t.value)),t}isEmpty(){return this.head.isEmpty()}};var B=class extends Error{type;code;constructor(t,e){super(t??"The operation was aborted"),this.type="aborted",this.code=e??"ABORT_ERR"}};function S(s={}){return nt(e=>{let r=e.shift();if(r==null)return{done:!0};if(r.error!=null)throw r.error;return{done:r.done===!0,value:r.value}},s)}function nt(s,t){t=t??{};let e=t.onEnd,r=new m,n,i,o,u=w(),l=async()=>{try{return r.isEmpty()?o?{done:!0}:await new Promise((h,y)=>{i=U=>{i=null,r.push(U);try{h(s(r))}catch(g){y(g)}return n}}):s(r)}finally{r.isEmpty()&&queueMicrotask(()=>{u.resolve(),u=w()})}},b=h=>i!=null?i(h):(r.push(h),n),c=h=>(r=new m,i!=null?i({error:h}):(r.push({error:h}),n)),a=h=>{if(o)return n;if(t?.objectMode!==!0&&h?.byteLength==null)throw new Error("objectMode was not true but tried to push non-Uint8Array value");return b({done:!1,value:h})},f=h=>o?n:(o=!0,h!=null?c(h):b({done:!0})),v=()=>(r=new m,f(),{done:!0}),J=h=>(f(h),{done:!0});if(n={[Symbol.asyncIterator](){return this},next:l,return:v,throw:J,push:a,end:f,get readableLength(){return r.size},onEmpty:async h=>{let y=h?.signal;if(y?.throwIfAborted(),r.isEmpty())return;let U,g;y!=null&&(U=new Promise((lt,K)=>{g=()=>{K(new B)},y.addEventListener("abort",g)}));try{await Promise.race([u.promise,U])}finally{g!=null&&y!=null&&y?.removeEventListener("abort",g)}}},e==null)return n;let p=n;return n={[Symbol.asyncIterator](){return this},next(){return p.next()},throw(h){return p.throw(h),e!=null&&(e(h),e=void 0),{done:!0}},return(){return p.return(),e!=null&&(e(),e=void 0),{done:!0}},push:a,end(h){return p.end(h),e!=null&&(e(h),e=void 0),n},get readableLength(){return p.readableLength},onEmpty:h=>p.onEmpty(h)},n}function st(s){return s[Symbol.asyncIterator]!=null}function it(...s){let t=[];for(let e of s)st(e)||t.push(e);return t.length===s.length?function*(){for(let e of t)yield*e}():async function*(){let e=S({objectMode:!0});Promise.resolve().then(async()=>{try{await Promise.all(s.map(async r=>{for await(let n of r)e.push(n)})),e.end()}catch(r){e.end(r)}}),yield*e}()}var q=it;function W(s,...t){if(s==null)throw new Error("Empty pipeline");if(_(s)){let r=s;s=()=>r.source}else if(X(s)||H(s)){let r=s;s=()=>r}let e=[s,...t];if(e.length>1&&_(e[e.length-1])&&(e[e.length-1]=e[e.length-1].sink),e.length>2)for(let r=1;r<e.length-1;r++)_(e[r])&&(e[r]=ut(e[r]));return ot(...e)}var ot=(...s)=>{let t;for(;s.length>0;)t=s.shift()(t);return t},H=s=>s?.[Symbol.asyncIterator]!=null,X=s=>s?.[Symbol.iterator]!=null,_=s=>s==null?!1:s.sink!=null&&s.source!=null,ut=s=>t=>{let e=s.sink(t);if(e?.then!=null){let r=S({objectMode:!0});e.then(()=>{r.end()},o=>{r.end(o)});let n,i=s.source;if(H(i))n=async function*(){yield*i,r.end()};else if(X(i))n=function*(){yield*i,r.end()};else throw new Error("Unknown duplex source type - must be Iterable or AsyncIterable");return q(r,n())}return s.source};var $="1.0.0",G="echo";var R=class{protocol;components;started;init;log;constructor(t,e={}){this.log=t.logger.forComponent("libp2p:echo"),this.started=!1,this.components=t,this.protocol=`/${[e.protocolPrefix,G,$].filter(Boolean).join("/")}`,this.init=e}[Symbol.toStringTag]="@libp2p/echo";async start(){await this.components.registrar.handle(this.protocol,({stream:t})=>{W(t,t).catch(e=>{this.log.error("error piping stream",e)})},{maxInboundStreams:this.init.maxInboundStreams,maxOutboundStreams:this.init.maxOutboundStreams,runOnLimitedConnection:this.init.runOnLimitedConnection}),this.started=!0}async stop(){await this.components.registrar.unhandle(this.protocol),this.started=!1}isStarted(){return this.started}async echo(t,e,r){let i=await(await this.components.connectionManager.openConnection(t,r)).newStream(this.protocol,{...this.init,...r}),o=j(i),[,u]=await Promise.all([o.write(e,r),o.read(e.byteLength,r)]);return await i.close(r),u.subarray()}};function at(s={}){return t=>new R(t,s)}return rt(ht);})();
3
3
  return Libp2PEcho}));
@@ -1,5 +1,6 @@
1
1
  import type { Echo as EchoInterface, EchoComponents, EchoInit } from './index.js';
2
- import type { Startable } from '@libp2p/interface';
2
+ import type { AbortOptions, PeerId, Startable } from '@libp2p/interface';
3
+ import type { Multiaddr } from '@multiformats/multiaddr';
3
4
  /**
4
5
  * A simple echo stream, any data received will be sent back to the sender
5
6
  */
@@ -14,5 +15,6 @@ export declare class Echo implements Startable, EchoInterface {
14
15
  start(): Promise<void>;
15
16
  stop(): Promise<void>;
16
17
  isStarted(): boolean;
18
+ echo(peer: PeerId | Multiaddr | Multiaddr[], buf: Uint8Array, options?: AbortOptions): Promise<Uint8Array>;
17
19
  }
18
20
  //# sourceMappingURL=echo.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"echo.d.ts","sourceRoot":"","sources":["../../src/echo.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,IAAI,aAAa,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACjF,OAAO,KAAK,EAAU,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAE1D;;GAEG;AACH,qBAAa,IAAK,YAAW,SAAS,EAAE,aAAa;IACnD,SAAgB,QAAQ,EAAE,MAAM,CAAA;IAChC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgB;IAC3C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAU;IAC/B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;gBAEf,UAAU,EAAE,cAAc,EAAE,IAAI,GAAE,QAAa;IAQ5D,QAAQ,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,kBAAiB;IAExC,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IAavB,IAAI,IAAK,OAAO,CAAC,IAAI,CAAC;IAK5B,SAAS,IAAK,OAAO;CAGtB"}
1
+ {"version":3,"file":"echo.d.ts","sourceRoot":"","sources":["../../src/echo.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,IAAI,aAAa,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACjF,OAAO,KAAK,EAAE,YAAY,EAAU,MAAM,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAChF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAExD;;GAEG;AACH,qBAAa,IAAK,YAAW,SAAS,EAAE,aAAa;IACnD,SAAgB,QAAQ,EAAE,MAAM,CAAA;IAChC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgB;IAC3C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAU;IAC/B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;gBAEf,UAAU,EAAE,cAAc,EAAE,IAAI,GAAE,QAAa;IAQ5D,QAAQ,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,kBAAiB;IAExC,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IAcvB,IAAI,IAAK,OAAO,CAAC,IAAI,CAAC;IAK5B,SAAS,IAAK,OAAO;IAIf,IAAI,CAAE,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC;CAiBlH"}
package/dist/src/echo.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { byteStream } from 'it-byte-stream';
1
2
  import { pipe } from 'it-pipe';
2
3
  import { PROTOCOL_NAME, PROTOCOL_VERSION } from './constants.js';
3
4
  /**
@@ -25,7 +26,8 @@ export class Echo {
25
26
  });
26
27
  }, {
27
28
  maxInboundStreams: this.init.maxInboundStreams,
28
- maxOutboundStreams: this.init.maxOutboundStreams
29
+ maxOutboundStreams: this.init.maxOutboundStreams,
30
+ runOnLimitedConnection: this.init.runOnLimitedConnection
29
31
  });
30
32
  this.started = true;
31
33
  }
@@ -36,5 +38,19 @@ export class Echo {
36
38
  isStarted() {
37
39
  return this.started;
38
40
  }
41
+ async echo(peer, buf, options) {
42
+ const conn = await this.components.connectionManager.openConnection(peer, options);
43
+ const stream = await conn.newStream(this.protocol, {
44
+ ...this.init,
45
+ ...options
46
+ });
47
+ const bytes = byteStream(stream);
48
+ const [, output] = await Promise.all([
49
+ bytes.write(buf, options),
50
+ bytes.read(buf.byteLength, options)
51
+ ]);
52
+ await stream.close(options);
53
+ return output.subarray();
54
+ }
39
55
  }
40
56
  //# sourceMappingURL=echo.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"echo.js","sourceRoot":"","sources":["../../src/echo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAC9B,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAIhE;;GAEG;AACH,MAAM,OAAO,IAAI;IACC,QAAQ,CAAQ;IACf,UAAU,CAAgB;IACnC,OAAO,CAAS;IACP,IAAI,CAAU;IACd,GAAG,CAAQ;IAE5B,YAAa,UAA0B,EAAE,OAAiB,EAAE;QAC1D,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,CAAA;QACxD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;QACpB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,aAAa,EAAE,gBAAgB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAA;QACtG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;IAEQ,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,cAAc,CAAA;IAE9C,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;YACnE,KAAK,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;iBACtB,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE;gBAClB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAA;YAC5C,CAAC,CAAC,CAAA;QACN,CAAC,EAAE;YACD,iBAAiB,EAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB;YAC9C,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,kBAAkB;SACjD,CAAC,CAAA;QACF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;IACrB,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACvD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;IACtB,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;CACF"}
1
+ {"version":3,"file":"echo.js","sourceRoot":"","sources":["../../src/echo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAC9B,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAKhE;;GAEG;AACH,MAAM,OAAO,IAAI;IACC,QAAQ,CAAQ;IACf,UAAU,CAAgB;IACnC,OAAO,CAAS;IACP,IAAI,CAAU;IACd,GAAG,CAAQ;IAE5B,YAAa,UAA0B,EAAE,OAAiB,EAAE;QAC1D,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,CAAA;QACxD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;QACpB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,aAAa,EAAE,gBAAgB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAA;QACtG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;IAEQ,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,cAAc,CAAA;IAE9C,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;YACnE,KAAK,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;iBACtB,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE;gBAClB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAA;YAC5C,CAAC,CAAC,CAAA;QACN,CAAC,EAAE;YACD,iBAAiB,EAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB;YAC9C,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,kBAAkB;YAChD,sBAAsB,EAAE,IAAI,CAAC,IAAI,CAAC,sBAAsB;SACzD,CAAC,CAAA;QACF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;IACrB,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACvD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;IACtB,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED,KAAK,CAAC,IAAI,CAAE,IAAsC,EAAE,GAAe,EAAE,OAAsB;QACzF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAClF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE;YACjD,GAAG,IAAI,CAAC,IAAI;YACZ,GAAG,OAAO;SACX,CAAC,CAAA;QACF,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,CAAA;QAEhC,MAAM,CAAC,EAAE,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACnC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC;YACzB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC;SACpC,CAAC,CAAA;QAEF,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAE3B,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAA;IAC1B,CAAC;CACF"}
@@ -41,12 +41,14 @@
41
41
  * // write/read stream
42
42
  * ```
43
43
  */
44
- import type { ComponentLogger } from '@libp2p/interface';
44
+ import type { ComponentLogger, PeerId } from '@libp2p/interface';
45
45
  import type { ConnectionManager, Registrar } from '@libp2p/interface-internal';
46
+ import type { Multiaddr } from '@multiformats/multiaddr';
46
47
  export interface EchoInit {
47
48
  protocolPrefix?: string;
48
49
  maxInboundStreams?: number;
49
50
  maxOutboundStreams?: number;
51
+ runOnLimitedConnection?: boolean;
50
52
  }
51
53
  export interface EchoComponents {
52
54
  registrar: Registrar;
@@ -55,6 +57,7 @@ export interface EchoComponents {
55
57
  }
56
58
  export interface Echo {
57
59
  protocol: string;
60
+ echo(peer: PeerId | Multiaddr | Multiaddr[], buf: Uint8Array): Promise<Uint8Array>;
58
61
  }
59
62
  export declare function echo(init?: EchoInit): (components: EchoComponents) => Echo;
60
63
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AAE9E,MAAM,WAAW,QAAQ;IACvB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,SAAS,CAAA;IACpB,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,MAAM,EAAE,eAAe,CAAA;CACxB;AAED,MAAM,WAAW,IAAI;IACnB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,wBAAgB,IAAI,CAAE,IAAI,GAAE,QAAa,GAAG,CAAC,UAAU,EAAE,cAAc,KAAK,IAAI,CAE/E"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AAC9E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAExD,MAAM,WAAW,QAAQ;IACvB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,sBAAsB,CAAC,EAAE,OAAO,CAAA;CACjC;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,SAAS,CAAA;IACpB,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,MAAM,EAAE,eAAe,CAAA;CACxB;AAED,MAAM,WAAW,IAAI;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,EAAE,EAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;CACnF;AAED,wBAAgB,IAAI,CAAE,IAAI,GAAE,QAAa,GAAG,CAAC,UAAU,EAAE,cAAc,KAAK,IAAI,CAE/E"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,OAAO,EAAE,IAAI,IAAI,SAAS,EAAE,MAAM,WAAW,CAAA;AAoB7C,MAAM,UAAU,IAAI,CAAE,OAAiB,EAAE;IACvC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;AACxD,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,OAAO,EAAE,IAAI,IAAI,SAAS,EAAE,MAAM,WAAW,CAAA;AAuB7C,MAAM,UAAU,IAAI,CAAE,OAAiB,EAAE;IACvC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;AACxD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@libp2p/echo",
3
- "version": "2.0.7-e99e8f448",
3
+ "version": "2.0.8-3244ed086",
4
4
  "description": "Implementation of an Echo protocol",
5
5
  "license": "Apache-2.0 OR MIT",
6
6
  "homepage": "https://github.com/libp2p/js-libp2p/tree/main/packages/protocol-echo#readme",
@@ -51,12 +51,14 @@
51
51
  "doc-check": "aegir doc-check"
52
52
  },
53
53
  "dependencies": {
54
- "@libp2p/interface": "2.1.2-e99e8f448",
55
- "@libp2p/interface-internal": "2.0.7-e99e8f448",
54
+ "@libp2p/interface": "2.1.3-3244ed086",
55
+ "@libp2p/interface-internal": "2.0.8-3244ed086",
56
+ "@multiformats/multiaddr": "^12.3.1",
57
+ "it-byte-stream": "^1.1.0",
56
58
  "it-pipe": "^3.0.1"
57
59
  },
58
60
  "devDependencies": {
59
- "@libp2p/logger": "5.1.0-e99e8f448",
61
+ "@libp2p/logger": "5.1.1-3244ed086",
60
62
  "aegir": "^44.0.1",
61
63
  "it-all": "^3.0.6",
62
64
  "it-pair": "^2.0.6",
package/src/echo.ts CHANGED
@@ -1,7 +1,9 @@
1
+ import { byteStream } from 'it-byte-stream'
1
2
  import { pipe } from 'it-pipe'
2
3
  import { PROTOCOL_NAME, PROTOCOL_VERSION } from './constants.js'
3
4
  import type { Echo as EchoInterface, EchoComponents, EchoInit } from './index.js'
4
- import type { Logger, Startable } from '@libp2p/interface'
5
+ import type { AbortOptions, Logger, PeerId, Startable } from '@libp2p/interface'
6
+ import type { Multiaddr } from '@multiformats/multiaddr'
5
7
 
6
8
  /**
7
9
  * A simple echo stream, any data received will be sent back to the sender
@@ -31,7 +33,8 @@ export class Echo implements Startable, EchoInterface {
31
33
  })
32
34
  }, {
33
35
  maxInboundStreams: this.init.maxInboundStreams,
34
- maxOutboundStreams: this.init.maxOutboundStreams
36
+ maxOutboundStreams: this.init.maxOutboundStreams,
37
+ runOnLimitedConnection: this.init.runOnLimitedConnection
35
38
  })
36
39
  this.started = true
37
40
  }
@@ -44,4 +47,22 @@ export class Echo implements Startable, EchoInterface {
44
47
  isStarted (): boolean {
45
48
  return this.started
46
49
  }
50
+
51
+ async echo (peer: PeerId | Multiaddr | Multiaddr[], buf: Uint8Array, options?: AbortOptions): Promise<Uint8Array> {
52
+ const conn = await this.components.connectionManager.openConnection(peer, options)
53
+ const stream = await conn.newStream(this.protocol, {
54
+ ...this.init,
55
+ ...options
56
+ })
57
+ const bytes = byteStream(stream)
58
+
59
+ const [, output] = await Promise.all([
60
+ bytes.write(buf, options),
61
+ bytes.read(buf.byteLength, options)
62
+ ])
63
+
64
+ await stream.close(options)
65
+
66
+ return output.subarray()
67
+ }
47
68
  }
package/src/index.ts CHANGED
@@ -43,13 +43,15 @@
43
43
  */
44
44
 
45
45
  import { Echo as EchoClass } from './echo.js'
46
- import type { ComponentLogger } from '@libp2p/interface'
46
+ import type { ComponentLogger, PeerId } from '@libp2p/interface'
47
47
  import type { ConnectionManager, Registrar } from '@libp2p/interface-internal'
48
+ import type { Multiaddr } from '@multiformats/multiaddr'
48
49
 
49
50
  export interface EchoInit {
50
51
  protocolPrefix?: string
51
52
  maxInboundStreams?: number
52
53
  maxOutboundStreams?: number
54
+ runOnLimitedConnection?: boolean
53
55
  }
54
56
 
55
57
  export interface EchoComponents {
@@ -60,6 +62,7 @@ export interface EchoComponents {
60
62
 
61
63
  export interface Echo {
62
64
  protocol: string
65
+ echo(peer: PeerId | Multiaddr | Multiaddr[], buf: Uint8Array): Promise<Uint8Array>
63
66
  }
64
67
 
65
68
  export function echo (init: EchoInit = {}): (components: EchoComponents) => Echo {