it-length-prefixed-stream
Advanced tools
Comparing version
(function (root, factory) {(typeof module === 'object' && module.exports) ? module.exports = factory() : root.ItLengthPrefixedStream = factory()}(typeof self !== 'undefined' ? self : this, function () { | ||
"use strict";var ItLengthPrefixedStream=(()=>{var et=Object.create;var U=Object.defineProperty;var nt=Object.getOwnPropertyDescriptor;var rt=Object.getOwnPropertyNames;var it=Object.getPrototypeOf,st=Object.prototype.hasOwnProperty;var ot=(r,t)=>()=>(t||r((t={exports:{}}).exports,t),t.exports),at=(r,t)=>{for(var e in t)U(r,e,{get:t[e],enumerable:!0})},j=(r,t,e,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of rt(t))!st.call(r,i)&&i!==e&&U(r,i,{get:()=>t[i],enumerable:!(n=nt(t,i))||n.enumerable});return r};var ht=(r,t,e)=>(e=r!=null?et(it(r)):{},j(t||!r||!r.__esModule?U(e,"default",{value:r,enumerable:!0}):e,r)),ut=r=>j(U({},"__esModule",{value:!0}),r);var z=ot((Zt,Q)=>{"use strict";function $(r,t){for(let e in t)Object.defineProperty(r,e,{value:t[e],enumerable:!0,configurable:!0});return r}function dt(r,t,e){if(!r||typeof r=="string")throw new TypeError("Please pass an Error to err-code");e||(e={}),typeof t=="object"&&(e=t,t=""),t&&(e.code=t);try{return $(r,e)}catch{e.message=r.message,e.stack=r.stack;let i=function(){};return i.prototype=Object.create(Object.getPrototypeOf(r)),$(new i,e)}}Q.exports=dt});var At={};at(At,{lpStream:()=>xt});function A(r){return globalThis.Buffer!=null?new Uint8Array(r.buffer,r.byteOffset,r.byteLength):r}function b(r=0){return globalThis.Buffer?.alloc!=null?A(globalThis.Buffer.alloc(r)):new Uint8Array(r)}function d(r=0){return globalThis.Buffer?.allocUnsafe!=null?A(globalThis.Buffer.allocUnsafe(r)):new Uint8Array(r)}function S(r,t){t==null&&(t=r.reduce((i,s)=>i+s.length,0));let e=d(t),n=0;for(let i of r)e.set(i,n),n+=i.length;return A(e)}function X(r,t){if(r===t)return!0;if(r.byteLength!==t.byteLength)return!1;for(let e=0;e<r.byteLength;e++)if(r[e]!==t[e])return!1;return!0}var q=Symbol.for("@achingbrain/uint8arraylist");function W(r,t){if(t==null||t<0)throw new RangeError("index is out of bounds");let e=0;for(let n of r){let i=e+n.byteLength;if(t<i)return{buf:n,index:t-e};e=i}throw new RangeError("index is out of bounds")}function N(r){return!!r?.[q]}var w=class r{constructor(...t){Object.defineProperty(this,q,{value:!0}),this.bufs=[],this.length=0,t.length>0&&this.appendAll(t)}*[Symbol.iterator](){yield*this.bufs}get byteLength(){return this.length}append(...t){this.appendAll(t)}appendAll(t){let e=0;for(let n of t)if(n instanceof Uint8Array)e+=n.byteLength,this.bufs.push(n);else if(N(n))e+=n.byteLength,this.bufs.push(...n.bufs);else throw new Error("Could not append value, must be an Uint8Array or a Uint8ArrayList");this.length+=e}prepend(...t){this.prependAll(t)}prependAll(t){let e=0;for(let n of t.reverse())if(n instanceof Uint8Array)e+=n.byteLength,this.bufs.unshift(n);else if(N(n))e+=n.byteLength,this.bufs.unshift(...n.bufs);else throw new Error("Could not prepend value, must be an Uint8Array or a Uint8ArrayList");this.length+=e}get(t){let e=W(this.bufs,t);return e.buf[e.index]}set(t,e){let n=W(this.bufs,t);n.buf[n.index]=e}write(t,e=0){if(t instanceof Uint8Array)for(let n=0;n<t.length;n++)this.set(e+n,t[n]);else if(N(t))for(let n=0;n<t.length;n++)this.set(e+n,t.get(n));else throw new Error("Could not write value, must be an Uint8Array or a Uint8ArrayList")}consume(t){if(t=Math.trunc(t),!(Number.isNaN(t)||t<=0)){if(t===this.byteLength){this.bufs=[],this.length=0;return}for(;this.bufs.length>0;)if(t>=this.bufs[0].byteLength)t-=this.bufs[0].byteLength,this.length-=this.bufs[0].byteLength,this.bufs.shift();else{this.bufs[0]=this.bufs[0].subarray(t),this.length-=t;break}}}slice(t,e){let{bufs:n,length:i}=this._subList(t,e);return S(n,i)}subarray(t,e){let{bufs:n,length:i}=this._subList(t,e);return n.length===1?n[0]:S(n,i)}sublist(t,e){let{bufs:n,length:i}=this._subList(t,e),s=new r;return s.length=i,s.bufs=n,s}_subList(t,e){if(t=t??0,e=e??this.length,t<0&&(t=this.length+t),e<0&&(e=this.length+e),t<0||e>this.length)throw new RangeError("index is out of bounds");if(t===e)return{bufs:[],length:0};if(t===0&&e===this.length)return{bufs:[...this.bufs],length:this.length};let n=[],i=0;for(let s=0;s<this.bufs.length;s++){let o=this.bufs[s],h=i,f=h+o.byteLength;if(i=f,t>=f)continue;let c=t>=h&&t<f,g=e>h&&e<=f;if(c&&g){if(t===h&&e===f){n.push(o);break}let u=t-h;n.push(o.subarray(u,u+(e-t)));break}if(c){if(t===0){n.push(o);continue}n.push(o.subarray(t-h));continue}if(g){if(e===f){n.push(o);break}n.push(o.subarray(0,e-h));break}n.push(o)}return{bufs:n,length:e-t}}indexOf(t,e=0){if(!N(t)&&!(t instanceof Uint8Array))throw new TypeError('The "value" argument must be a Uint8ArrayList or Uint8Array');let n=t instanceof Uint8Array?t:t.subarray();if(e=Number(e??0),isNaN(e)&&(e=0),e<0&&(e=this.length+e),e<0&&(e=0),t.length===0)return e>this.length?this.length:e;let i=n.byteLength;if(i===0)throw new TypeError("search must be at least 1 byte long");let s=256,o=new Int32Array(s);for(let u=0;u<s;u++)o[u]=-1;for(let u=0;u<i;u++)o[n[u]]=u;let h=o,f=this.byteLength-n.byteLength,c=n.byteLength-1,g;for(let u=e;u<=f;u+=g){g=0;for(let y=c;y>=0;y--){let H=this.get(u+y);if(n[y]!==H){g=Math.max(1,y-h[H]);break}}if(g===0)return u}return-1}getInt8(t){let e=this.subarray(t,t+1);return new DataView(e.buffer,e.byteOffset,e.byteLength).getInt8(0)}setInt8(t,e){let n=d(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setInt8(0,e),this.write(n,t)}getInt16(t,e){let n=this.subarray(t,t+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt16(0,e)}setInt16(t,e,n){let i=b(2);new DataView(i.buffer,i.byteOffset,i.byteLength).setInt16(0,e,n),this.write(i,t)}getInt32(t,e){let n=this.subarray(t,t+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt32(0,e)}setInt32(t,e,n){let i=b(4);new DataView(i.buffer,i.byteOffset,i.byteLength).setInt32(0,e,n),this.write(i,t)}getBigInt64(t,e){let n=this.subarray(t,t+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigInt64(0,e)}setBigInt64(t,e,n){let i=b(8);new DataView(i.buffer,i.byteOffset,i.byteLength).setBigInt64(0,e,n),this.write(i,t)}getUint8(t){let e=this.subarray(t,t+1);return new DataView(e.buffer,e.byteOffset,e.byteLength).getUint8(0)}setUint8(t,e){let n=d(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setUint8(0,e),this.write(n,t)}getUint16(t,e){let n=this.subarray(t,t+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint16(0,e)}setUint16(t,e,n){let i=b(2);new DataView(i.buffer,i.byteOffset,i.byteLength).setUint16(0,e,n),this.write(i,t)}getUint32(t,e){let n=this.subarray(t,t+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint32(0,e)}setUint32(t,e,n){let i=b(4);new DataView(i.buffer,i.byteOffset,i.byteLength).setUint32(0,e,n),this.write(i,t)}getBigUint64(t,e){let n=this.subarray(t,t+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigUint64(0,e)}setBigUint64(t,e,n){let i=b(8);new DataView(i.buffer,i.byteOffset,i.byteLength).setBigUint64(0,e,n),this.write(i,t)}getFloat32(t,e){let n=this.subarray(t,t+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat32(0,e)}setFloat32(t,e,n){let i=b(4);new DataView(i.buffer,i.byteOffset,i.byteLength).setFloat32(0,e,n),this.write(i,t)}getFloat64(t,e){let n=this.subarray(t,t+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat64(0,e)}setFloat64(t,e,n){let i=b(8);new DataView(i.buffer,i.byteOffset,i.byteLength).setFloat64(0,e,n),this.write(i,t)}equals(t){if(t==null||!(t instanceof r)||t.bufs.length!==this.bufs.length)return!1;for(let e=0;e<this.bufs.length;e++)if(!X(this.bufs[e],t.bufs[e]))return!1;return!0}static fromUint8Arrays(t,e){let n=new r;return n.bufs=t,e==null&&(e=t.reduce((i,s)=>i+s.byteLength,0)),n.length=e,n}};function p(){let r={};return r.promise=new Promise((t,e)=>{r.resolve=t,r.reject=e}),r}var D=class extends Error{type;code;constructor(t,e){super(t??"The operation was aborted"),this.type="aborted",this.name="AbortError",this.code=e??"ABORT_ERR"}};async function Y(r,t,e){if(t==null)return r;if(t.aborted)return Promise.reject(new D(e?.errorMessage,e?.errorCode));let n,i=new D(e?.errorMessage,e?.errorCode);try{return await Promise.race([r,new Promise((s,o)=>{n=()=>{o(i)},t.addEventListener("abort",n)})])}finally{n!=null&&t.removeEventListener("abort",n)}}var B=class{needNext;haveNext;ended;nextResult;constructor(){this.ended=!1,this.needNext=p(),this.needNext.resolve(),this.haveNext=p()}[Symbol.asyncIterator](){return this}async next(){if(this.nextResult==null&&await this.haveNext.promise,this.nextResult==null)throw new Error("Have next but next was undefined");let t=this.nextResult;return this.nextResult=void 0,this.needNext.resolve(),this.needNext=p(),t}async throw(t){return this.ended=!0,t!=null&&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");this.nextResult!=null&&await this.needNext.promise,t!=null?this.nextResult={done:!1,value:t}:(this.ended=!0,this.nextResult={done:!0,value:void 0}),this.haveNext.resolve(),this.haveNext=p(),await Y(this.needNext.promise,e?.signal,e)}};function J(){return new B}var R=class extends Error{code;constructor(t,e){super(t),this.code=e}},G=class extends R{type;constructor(t){super(t,"ABORT_ERR"),this.type="aborted"}};function K(r,t){let e=J();r.sink(e).catch(async o=>{await e.end(o)}),r.sink=async o=>{for await(let h of o)await e.push(h);await e.end()};let n=r.source;r.source[Symbol.iterator]!=null?n=r.source[Symbol.iterator]():r.source[Symbol.asyncIterator]!=null&&(n=r.source[Symbol.asyncIterator]());let i=new w;return{read:async(o,h)=>{h?.signal?.throwIfAborted();let f,c=new Promise((g,u)=>{f=()=>{u(new G("Read aborted"))},h?.signal?.addEventListener("abort",f)});try{if(o==null){let{done:u,value:y}=await Promise.race([n.next(),c]);return u===!0?new w:y}for(;i.byteLength<o;){let{value:u,done:y}=await Promise.race([n.next(),c]);if(y===!0)throw new R("unexpected end of input","ERR_UNEXPECTED_EOF");i.append(u)}let g=i.sublist(0,o);return i.consume(o),g}finally{f!=null&&h?.signal?.removeEventListener("abort",f)}},write:async(o,h)=>{h?.signal?.throwIfAborted(),o instanceof Uint8Array?await e.push(o,h):await e.push(o.subarray(),h)},unwrap:()=>{if(i.byteLength>0){let o=r.source;r.source=async function*(){t?.yieldBytes===!1?yield i:yield*i,yield*o}()}return r}}}var ft=Math.pow(2,7),ct=Math.pow(2,14),lt=Math.pow(2,21),V=Math.pow(2,28),M=Math.pow(2,35),I=Math.pow(2,42),v=Math.pow(2,49),a=128,l=127;function L(r){if(r<ft)return 1;if(r<ct)return 2;if(r<lt)return 3;if(r<V)return 4;if(r<M)return 5;if(r<I)return 6;if(r<v)return 7;if(Number.MAX_SAFE_INTEGER!=null&&r>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function wt(r,t,e=0){switch(L(r)){case 8:t[e++]=r&255|a,r/=128;case 7:t[e++]=r&255|a,r/=128;case 6:t[e++]=r&255|a,r/=128;case 5:t[e++]=r&255|a,r/=128;case 4:t[e++]=r&255|a,r>>>=7;case 3:t[e++]=r&255|a,r>>>=7;case 2:t[e++]=r&255|a,r>>>=7;case 1:{t[e++]=r&255,r>>>=7;break}default:throw new Error("unreachable")}return t}function gt(r,t,e=0){switch(L(r)){case 8:t.set(e++,r&255|a),r/=128;case 7:t.set(e++,r&255|a),r/=128;case 6:t.set(e++,r&255|a),r/=128;case 5:t.set(e++,r&255|a),r/=128;case 4:t.set(e++,r&255|a),r>>>=7;case 3:t.set(e++,r&255|a),r>>>=7;case 2:t.set(e++,r&255|a),r>>>=7;case 1:{t.set(e++,r&255),r>>>=7;break}default:throw new Error("unreachable")}return t}function yt(r,t){let e=r[t],n=0;if(n+=e&l,e<a||(e=r[t+1],n+=(e&l)<<7,e<a)||(e=r[t+2],n+=(e&l)<<14,e<a)||(e=r[t+3],n+=(e&l)<<21,e<a)||(e=r[t+4],n+=(e&l)*V,e<a)||(e=r[t+5],n+=(e&l)*M,e<a)||(e=r[t+6],n+=(e&l)*I,e<a)||(e=r[t+7],n+=(e&l)*v,e<a))return n;throw new RangeError("Could not decode varint")}function bt(r,t){let e=r.get(t),n=0;if(n+=e&l,e<a||(e=r.get(t+1),n+=(e&l)<<7,e<a)||(e=r.get(t+2),n+=(e&l)<<14,e<a)||(e=r.get(t+3),n+=(e&l)<<21,e<a)||(e=r.get(t+4),n+=(e&l)*V,e<a)||(e=r.get(t+5),n+=(e&l)*M,e<a)||(e=r.get(t+6),n+=(e&l)*I,e<a)||(e=r.get(t+7),n+=(e&l)*v,e<a))return n;throw new RangeError("Could not decode varint")}function Z(r,t,e=0){return t==null&&(t=d(L(r))),t instanceof Uint8Array?wt(r,t,e):gt(r,t,e)}function F(r,t=0){return r instanceof Uint8Array?yt(r,t):bt(r,t)}function _(r){return r[Symbol.asyncIterator]!=null}var T=r=>{let t=L(r),e=d(t);return Z(r,e),T.bytes=t,e};T.bytes=0;function E(r,t){t=t??{};let e=t.lengthEncoder??T;function*n(i){let s=e(i.byteLength);s instanceof Uint8Array?yield s:yield*s,i instanceof Uint8Array?yield i:yield*i}return _(r)?async function*(){for await(let i of r)yield*n(i)}():function*(){for(let i of r)yield*n(i)}()}E.single=(r,t)=>{t=t??{};let e=t.lengthEncoder??T;return new w(e(r.byteLength),r)};var x=ht(z(),1);var Lt=8,mt=1024*1024*4,m;(function(r){r[r.LENGTH=0]="LENGTH",r[r.DATA=1]="DATA"})(m||(m={}));var C=r=>{let t=F(r);return C.bytes=L(t),t};C.bytes=0;function k(r,t){let e=new w,n=m.LENGTH,i=-1,s=t?.lengthDecoder??C,o=t?.maxLengthLength??Lt,h=t?.maxDataLength??mt;function*f(){for(;e.byteLength>0;){if(n===m.LENGTH)try{if(i=s(e),i<0)throw(0,x.default)(new Error("invalid message length"),"ERR_INVALID_MSG_LENGTH");if(i>h)throw(0,x.default)(new Error("message length too long"),"ERR_MSG_DATA_TOO_LONG");let c=s.bytes;e.consume(c),t?.onLength!=null&&t.onLength(i),n=m.DATA}catch(c){if(c instanceof RangeError){if(e.byteLength>o)throw(0,x.default)(new Error("message length length too long"),"ERR_MSG_LENGTH_TOO_LONG");break}throw c}if(n===m.DATA){if(e.byteLength<i)break;let c=e.sublist(0,i);e.consume(i),t?.onData!=null&&t.onData(c),yield c,n=m.LENGTH}}}return _(r)?async function*(){for await(let c of r)e.append(c),yield*f();if(e.byteLength>0)throw(0,x.default)(new Error("unexpected end of input"),"ERR_UNEXPECTED_EOF")}():function*(){for(let c of r)e.append(c),yield*f();if(e.byteLength>0)throw(0,x.default)(new Error("unexpected end of input"),"ERR_UNEXPECTED_EOF")}()}k.fromReader=(r,t)=>{let e=1,n=async function*(){for(;;)try{let{done:s,value:o}=await r.next(e);if(s===!0)return;o!=null&&(yield o)}catch(s){if(s.code==="ERR_UNDER_READ")return{done:!0,value:null};throw s}finally{e=1}}();return k(n,{...t??{},onLength:s=>{e=s}})};var O=class extends Error{code;constructor(t,e){super(t),this.code=e}},tt=r=>F(r);tt.bytes=0;function xt(r,t={}){let e=K(r,t);return t.maxDataLength!=null&&t.maxLengthLength==null&&(t.maxLengthLength=L(t.maxDataLength)),{read:async i=>{let s=-1,o=new w,h=t?.lengthDecoder??tt;for(;;){o.append(await e.read(1,i));try{s=h(o)}catch(f){if(f instanceof RangeError)continue;throw f}if(t?.maxLengthLength!=null&&o.byteLength>t.maxLengthLength)throw new O("message length length too long","ERR_MSG_LENGTH_TOO_LONG");if(s>-1)break}if(t?.maxDataLength!=null&&s>t.maxDataLength)throw new O("message length too long","ERR_MSG_DATA_TOO_LONG");return e.read(s,i)},write:async(i,s)=>{await e.write(E.single(i,t),s)},writeV:async(i,s)=>{let o=new w(...i.map(h=>E.single(h,t)));await e.write(o,s)},unwrap:()=>e.unwrap()}}return ut(At);})(); | ||
"use strict";var ItLengthPrefixedStream=(()=>{var et=Object.create;var U=Object.defineProperty;var nt=Object.getOwnPropertyDescriptor;var rt=Object.getOwnPropertyNames;var it=Object.getPrototypeOf,st=Object.prototype.hasOwnProperty;var ot=(r,t)=>()=>(t||r((t={exports:{}}).exports,t),t.exports),at=(r,t)=>{for(var e in t)U(r,e,{get:t[e],enumerable:!0})},j=(r,t,e,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of rt(t))!st.call(r,i)&&i!==e&&U(r,i,{get:()=>t[i],enumerable:!(n=nt(t,i))||n.enumerable});return r};var ht=(r,t,e)=>(e=r!=null?et(it(r)):{},j(t||!r||!r.__esModule?U(e,"default",{value:r,enumerable:!0}):e,r)),ut=r=>j(U({},"__esModule",{value:!0}),r);var z=ot((Zt,Q)=>{"use strict";function $(r,t){for(let e in t)Object.defineProperty(r,e,{value:t[e],enumerable:!0,configurable:!0});return r}function dt(r,t,e){if(!r||typeof r=="string")throw new TypeError("Please pass an Error to err-code");e||(e={}),typeof t=="object"&&(e=t,t=""),t&&(e.code=t);try{return $(r,e)}catch{e.message=r.message,e.stack=r.stack;let i=function(){};return i.prototype=Object.create(Object.getPrototypeOf(r)),$(new i,e)}}Q.exports=dt});var At={};at(At,{lpStream:()=>xt});function A(r){return globalThis.Buffer!=null?new Uint8Array(r.buffer,r.byteOffset,r.byteLength):r}function b(r=0){return globalThis.Buffer?.alloc!=null?A(globalThis.Buffer.alloc(r)):new Uint8Array(r)}function d(r=0){return globalThis.Buffer?.allocUnsafe!=null?A(globalThis.Buffer.allocUnsafe(r)):new Uint8Array(r)}function S(r,t){t==null&&(t=r.reduce((i,s)=>i+s.length,0));let e=d(t),n=0;for(let i of r)e.set(i,n),n+=i.length;return A(e)}function X(r,t){if(r===t)return!0;if(r.byteLength!==t.byteLength)return!1;for(let e=0;e<r.byteLength;e++)if(r[e]!==t[e])return!1;return!0}var q=Symbol.for("@achingbrain/uint8arraylist");function W(r,t){if(t==null||t<0)throw new RangeError("index is out of bounds");let e=0;for(let n of r){let i=e+n.byteLength;if(t<i)return{buf:n,index:t-e};e=i}throw new RangeError("index is out of bounds")}function N(r){return!!r?.[q]}var w=class r{bufs;length;[q]=!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 n of t)if(n instanceof Uint8Array)e+=n.byteLength,this.bufs.push(n);else if(N(n))e+=n.byteLength,this.bufs.push(...n.bufs);else throw new Error("Could not append value, must be an Uint8Array or a Uint8ArrayList");this.length+=e}prepend(...t){this.prependAll(t)}prependAll(t){let e=0;for(let n of t.reverse())if(n instanceof Uint8Array)e+=n.byteLength,this.bufs.unshift(n);else if(N(n))e+=n.byteLength,this.bufs.unshift(...n.bufs);else throw new Error("Could not prepend value, must be an Uint8Array or a Uint8ArrayList");this.length+=e}get(t){let e=W(this.bufs,t);return e.buf[e.index]}set(t,e){let n=W(this.bufs,t);n.buf[n.index]=e}write(t,e=0){if(t instanceof Uint8Array)for(let n=0;n<t.length;n++)this.set(e+n,t[n]);else if(N(t))for(let n=0;n<t.length;n++)this.set(e+n,t.get(n));else throw new Error("Could not write value, must be an Uint8Array or a Uint8ArrayList")}consume(t){if(t=Math.trunc(t),!(Number.isNaN(t)||t<=0)){if(t===this.byteLength){this.bufs=[],this.length=0;return}for(;this.bufs.length>0;)if(t>=this.bufs[0].byteLength)t-=this.bufs[0].byteLength,this.length-=this.bufs[0].byteLength,this.bufs.shift();else{this.bufs[0]=this.bufs[0].subarray(t),this.length-=t;break}}}slice(t,e){let{bufs:n,length:i}=this._subList(t,e);return S(n,i)}subarray(t,e){let{bufs:n,length:i}=this._subList(t,e);return n.length===1?n[0]:S(n,i)}sublist(t,e){let{bufs:n,length:i}=this._subList(t,e),s=new r;return s.length=i,s.bufs=[...n],s}_subList(t,e){if(t=t??0,e=e??this.length,t<0&&(t=this.length+t),e<0&&(e=this.length+e),t<0||e>this.length)throw new RangeError("index is out of bounds");if(t===e)return{bufs:[],length:0};if(t===0&&e===this.length)return{bufs:this.bufs,length:this.length};let n=[],i=0;for(let s=0;s<this.bufs.length;s++){let o=this.bufs[s],h=i,f=h+o.byteLength;if(i=f,t>=f)continue;let c=t>=h&&t<f,g=e>h&&e<=f;if(c&&g){if(t===h&&e===f){n.push(o);break}let u=t-h;n.push(o.subarray(u,u+(e-t)));break}if(c){if(t===0){n.push(o);continue}n.push(o.subarray(t-h));continue}if(g){if(e===f){n.push(o);break}n.push(o.subarray(0,e-h));break}n.push(o)}return{bufs:n,length:e-t}}indexOf(t,e=0){if(!N(t)&&!(t instanceof Uint8Array))throw new TypeError('The "value" argument must be a Uint8ArrayList or Uint8Array');let n=t instanceof Uint8Array?t:t.subarray();if(e=Number(e??0),isNaN(e)&&(e=0),e<0&&(e=this.length+e),e<0&&(e=0),t.length===0)return e>this.length?this.length:e;let i=n.byteLength;if(i===0)throw new TypeError("search must be at least 1 byte long");let s=256,o=new Int32Array(s);for(let u=0;u<s;u++)o[u]=-1;for(let u=0;u<i;u++)o[n[u]]=u;let h=o,f=this.byteLength-n.byteLength,c=n.byteLength-1,g;for(let u=e;u<=f;u+=g){g=0;for(let y=c;y>=0;y--){let H=this.get(u+y);if(n[y]!==H){g=Math.max(1,y-h[H]);break}}if(g===0)return u}return-1}getInt8(t){let e=this.subarray(t,t+1);return new DataView(e.buffer,e.byteOffset,e.byteLength).getInt8(0)}setInt8(t,e){let n=d(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setInt8(0,e),this.write(n,t)}getInt16(t,e){let n=this.subarray(t,t+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt16(0,e)}setInt16(t,e,n){let i=b(2);new DataView(i.buffer,i.byteOffset,i.byteLength).setInt16(0,e,n),this.write(i,t)}getInt32(t,e){let n=this.subarray(t,t+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt32(0,e)}setInt32(t,e,n){let i=b(4);new DataView(i.buffer,i.byteOffset,i.byteLength).setInt32(0,e,n),this.write(i,t)}getBigInt64(t,e){let n=this.subarray(t,t+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigInt64(0,e)}setBigInt64(t,e,n){let i=b(8);new DataView(i.buffer,i.byteOffset,i.byteLength).setBigInt64(0,e,n),this.write(i,t)}getUint8(t){let e=this.subarray(t,t+1);return new DataView(e.buffer,e.byteOffset,e.byteLength).getUint8(0)}setUint8(t,e){let n=d(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setUint8(0,e),this.write(n,t)}getUint16(t,e){let n=this.subarray(t,t+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint16(0,e)}setUint16(t,e,n){let i=b(2);new DataView(i.buffer,i.byteOffset,i.byteLength).setUint16(0,e,n),this.write(i,t)}getUint32(t,e){let n=this.subarray(t,t+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint32(0,e)}setUint32(t,e,n){let i=b(4);new DataView(i.buffer,i.byteOffset,i.byteLength).setUint32(0,e,n),this.write(i,t)}getBigUint64(t,e){let n=this.subarray(t,t+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigUint64(0,e)}setBigUint64(t,e,n){let i=b(8);new DataView(i.buffer,i.byteOffset,i.byteLength).setBigUint64(0,e,n),this.write(i,t)}getFloat32(t,e){let n=this.subarray(t,t+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat32(0,e)}setFloat32(t,e,n){let i=b(4);new DataView(i.buffer,i.byteOffset,i.byteLength).setFloat32(0,e,n),this.write(i,t)}getFloat64(t,e){let n=this.subarray(t,t+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat64(0,e)}setFloat64(t,e,n){let i=b(8);new DataView(i.buffer,i.byteOffset,i.byteLength).setFloat64(0,e,n),this.write(i,t)}equals(t){if(t==null||!(t instanceof r)||t.bufs.length!==this.bufs.length)return!1;for(let e=0;e<this.bufs.length;e++)if(!X(this.bufs[e],t.bufs[e]))return!1;return!0}static fromUint8Arrays(t,e){let n=new r;return n.bufs=t,e==null&&(e=t.reduce((i,s)=>i+s.byteLength,0)),n.length=e,n}};function p(){let r={};return r.promise=new Promise((t,e)=>{r.resolve=t,r.reject=e}),r}var D=class extends Error{type;code;constructor(t,e){super(t??"The operation was aborted"),this.type="aborted",this.name="AbortError",this.code=e??"ABORT_ERR"}};async function Y(r,t,e){if(t==null)return r;if(t.aborted)return Promise.reject(new D(e?.errorMessage,e?.errorCode));let n,i=new D(e?.errorMessage,e?.errorCode);try{return await Promise.race([r,new Promise((s,o)=>{n=()=>{o(i)},t.addEventListener("abort",n)})])}finally{n!=null&&t.removeEventListener("abort",n)}}var B=class{needNext;haveNext;ended;nextResult;constructor(){this.ended=!1,this.needNext=p(),this.haveNext=p()}[Symbol.asyncIterator](){return this}async next(){if(this.nextResult==null&&await this.haveNext.promise,this.nextResult==null)throw new Error("Have next but next was undefined");let t=this.nextResult;return this.nextResult=void 0,this.needNext.resolve(),this.needNext=p(),t}async throw(t){return this.ended=!0,t!=null&&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");this.nextResult!=null&&await this.needNext.promise,t!=null?this.nextResult={done:!1,value:t}:(this.ended=!0,this.nextResult={done:!0,value:void 0}),this.haveNext.resolve(),this.haveNext=p(),await Y(this.needNext.promise,e?.signal,e)}};function J(){return new B}var R=class extends Error{code;constructor(t,e){super(t),this.code=e}},G=class extends R{type;constructor(t){super(t,"ABORT_ERR"),this.type="aborted"}};function K(r,t){let e=J();r.sink(e).catch(async o=>{await e.end(o)}),r.sink=async o=>{for await(let h of o)await e.push(h);await e.end()};let n=r.source;r.source[Symbol.iterator]!=null?n=r.source[Symbol.iterator]():r.source[Symbol.asyncIterator]!=null&&(n=r.source[Symbol.asyncIterator]());let i=new w;return{read:async(o,h)=>{h?.signal?.throwIfAborted();let f,c=new Promise((g,u)=>{f=()=>{u(new G("Read aborted"))},h?.signal?.addEventListener("abort",f)});try{if(o==null){let{done:u,value:y}=await Promise.race([n.next(),c]);return u===!0?new w:y}for(;i.byteLength<o;){let{value:u,done:y}=await Promise.race([n.next(),c]);if(y===!0)throw new R("unexpected end of input","ERR_UNEXPECTED_EOF");i.append(u)}let g=i.sublist(0,o);return i.consume(o),g}finally{f!=null&&h?.signal?.removeEventListener("abort",f)}},write:async(o,h)=>{h?.signal?.throwIfAborted(),o instanceof Uint8Array?await e.push(o,h):await e.push(o.subarray(),h)},unwrap:()=>{if(i.byteLength>0){let o=r.source;r.source=async function*(){t?.yieldBytes===!1?yield i:yield*i,yield*o}()}return r}}}var ft=Math.pow(2,7),ct=Math.pow(2,14),lt=Math.pow(2,21),V=Math.pow(2,28),M=Math.pow(2,35),I=Math.pow(2,42),k=Math.pow(2,49),a=128,l=127;function L(r){if(r<ft)return 1;if(r<ct)return 2;if(r<lt)return 3;if(r<V)return 4;if(r<M)return 5;if(r<I)return 6;if(r<k)return 7;if(Number.MAX_SAFE_INTEGER!=null&&r>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function wt(r,t,e=0){switch(L(r)){case 8:t[e++]=r&255|a,r/=128;case 7:t[e++]=r&255|a,r/=128;case 6:t[e++]=r&255|a,r/=128;case 5:t[e++]=r&255|a,r/=128;case 4:t[e++]=r&255|a,r>>>=7;case 3:t[e++]=r&255|a,r>>>=7;case 2:t[e++]=r&255|a,r>>>=7;case 1:{t[e++]=r&255,r>>>=7;break}default:throw new Error("unreachable")}return t}function gt(r,t,e=0){switch(L(r)){case 8:t.set(e++,r&255|a),r/=128;case 7:t.set(e++,r&255|a),r/=128;case 6:t.set(e++,r&255|a),r/=128;case 5:t.set(e++,r&255|a),r/=128;case 4:t.set(e++,r&255|a),r>>>=7;case 3:t.set(e++,r&255|a),r>>>=7;case 2:t.set(e++,r&255|a),r>>>=7;case 1:{t.set(e++,r&255),r>>>=7;break}default:throw new Error("unreachable")}return t}function yt(r,t){let e=r[t],n=0;if(n+=e&l,e<a||(e=r[t+1],n+=(e&l)<<7,e<a)||(e=r[t+2],n+=(e&l)<<14,e<a)||(e=r[t+3],n+=(e&l)<<21,e<a)||(e=r[t+4],n+=(e&l)*V,e<a)||(e=r[t+5],n+=(e&l)*M,e<a)||(e=r[t+6],n+=(e&l)*I,e<a)||(e=r[t+7],n+=(e&l)*k,e<a))return n;throw new RangeError("Could not decode varint")}function bt(r,t){let e=r.get(t),n=0;if(n+=e&l,e<a||(e=r.get(t+1),n+=(e&l)<<7,e<a)||(e=r.get(t+2),n+=(e&l)<<14,e<a)||(e=r.get(t+3),n+=(e&l)<<21,e<a)||(e=r.get(t+4),n+=(e&l)*V,e<a)||(e=r.get(t+5),n+=(e&l)*M,e<a)||(e=r.get(t+6),n+=(e&l)*I,e<a)||(e=r.get(t+7),n+=(e&l)*k,e<a))return n;throw new RangeError("Could not decode varint")}function Z(r,t,e=0){return t==null&&(t=d(L(r))),t instanceof Uint8Array?wt(r,t,e):gt(r,t,e)}function F(r,t=0){return r instanceof Uint8Array?yt(r,t):bt(r,t)}function _(r){return r[Symbol.asyncIterator]!=null}var T=r=>{let t=L(r),e=d(t);return Z(r,e),T.bytes=t,e};T.bytes=0;function E(r,t){t=t??{};let e=t.lengthEncoder??T;function*n(i){let s=e(i.byteLength);s instanceof Uint8Array?yield s:yield*s,i instanceof Uint8Array?yield i:yield*i}return _(r)?async function*(){for await(let i of r)yield*n(i)}():function*(){for(let i of r)yield*n(i)}()}E.single=(r,t)=>{t=t??{};let e=t.lengthEncoder??T;return new w(e(r.byteLength),r)};var x=ht(z(),1);var Lt=8,mt=1024*1024*4,m;(function(r){r[r.LENGTH=0]="LENGTH",r[r.DATA=1]="DATA"})(m||(m={}));var C=r=>{let t=F(r);return C.bytes=L(t),t};C.bytes=0;function v(r,t){let e=new w,n=m.LENGTH,i=-1,s=t?.lengthDecoder??C,o=t?.maxLengthLength??Lt,h=t?.maxDataLength??mt;function*f(){for(;e.byteLength>0;){if(n===m.LENGTH)try{if(i=s(e),i<0)throw(0,x.default)(new Error("invalid message length"),"ERR_INVALID_MSG_LENGTH");if(i>h)throw(0,x.default)(new Error("message length too long"),"ERR_MSG_DATA_TOO_LONG");let c=s.bytes;e.consume(c),t?.onLength!=null&&t.onLength(i),n=m.DATA}catch(c){if(c instanceof RangeError){if(e.byteLength>o)throw(0,x.default)(new Error("message length length too long"),"ERR_MSG_LENGTH_TOO_LONG");break}throw c}if(n===m.DATA){if(e.byteLength<i)break;let c=e.sublist(0,i);e.consume(i),t?.onData!=null&&t.onData(c),yield c,n=m.LENGTH}}}return _(r)?async function*(){for await(let c of r)e.append(c),yield*f();if(e.byteLength>0)throw(0,x.default)(new Error("unexpected end of input"),"ERR_UNEXPECTED_EOF")}():function*(){for(let c of r)e.append(c),yield*f();if(e.byteLength>0)throw(0,x.default)(new Error("unexpected end of input"),"ERR_UNEXPECTED_EOF")}()}v.fromReader=(r,t)=>{let e=1,n=async function*(){for(;;)try{let{done:s,value:o}=await r.next(e);if(s===!0)return;o!=null&&(yield o)}catch(s){if(s.code==="ERR_UNDER_READ")return{done:!0,value:null};throw s}finally{e=1}}();return v(n,{...t??{},onLength:s=>{e=s}})};var O=class extends Error{code;constructor(t,e){super(t),this.code=e}},tt=r=>F(r);tt.bytes=0;function xt(r,t={}){let e=K(r,t);return t.maxDataLength!=null&&t.maxLengthLength==null&&(t.maxLengthLength=L(t.maxDataLength)),{read:async i=>{let s=-1,o=new w,h=t?.lengthDecoder??tt;for(;;){o.append(await e.read(1,i));try{s=h(o)}catch(f){if(f instanceof RangeError)continue;throw f}if(t?.maxLengthLength!=null&&o.byteLength>t.maxLengthLength)throw new O("message length length too long","ERR_MSG_LENGTH_TOO_LONG");if(s>-1)break}if(t?.maxDataLength!=null&&s>t.maxDataLength)throw new O("message length too long","ERR_MSG_DATA_TOO_LONG");return e.read(s,i)},write:async(i,s)=>{await e.write(E.single(i,t),s)},writeV:async(i,s)=>{let o=new w(...i.map(h=>E.single(h,t)));await e.write(o,s)},unwrap:()=>e.unwrap()}}return ut(At);})(); | ||
return ItLengthPrefixedStream})); |
{ | ||
"name": "it-length-prefixed-stream", | ||
"version": "1.1.4", | ||
"version": "1.1.5", | ||
"description": "Read and write length-prefixed byte arrays over a duplex stream", | ||
@@ -38,3 +38,3 @@ "author": "Alex Potsides <alex@achingbrain.net>", | ||
"branches": [ | ||
"master" | ||
"main" | ||
], | ||
@@ -145,4 +145,4 @@ "plugins": [ | ||
"it-pair": "^2.0.2", | ||
"uint8arrays": "^4.0.2" | ||
"uint8arrays": "^5.0.0" | ||
} | ||
} |
[](https://codecov.io/gh/achingbrain/it) | ||
[](https://github.com/achingbrain/it/actions/workflows/js-test-and-release.yml?query=branch%3Amaster) | ||
[](https://github.com/achingbrain/it/actions/workflows/js-test-and-release.yml?query=branch%3Amain) | ||
@@ -44,2 +44,6 @@ > Read and write length-prefixed byte arrays over a duplex stream | ||
# API Docs | ||
- <https://achingbrain.github.io/it/modules/it_length_prefixed_stream.html> | ||
# License | ||
@@ -46,0 +50,0 @@ |
Sorry, the diff of this file is not supported yet
34304
3.19%10
11.11%338
2.74%58
7.41%