it-split
Version:
Splits Uint8Arrays emitted by an (async) iterable by a delimiter
6 lines (5 loc) • 7.32 kB
JavaScript
(function (root, factory) {(typeof module === 'object' && module.exports) ? module.exports = factory() : root.ItSplit = factory()}(typeof self !== 'undefined' ? self : this, function () {
"use strict";var ItSplit=(()=>{var L=Object.defineProperty;var V=Object.getOwnPropertyDescriptor;var v=Object.getOwnPropertyNames;var O=Object.prototype.hasOwnProperty;var B=(i,t)=>{for(var e in t)L(i,e,{get:t[e],enumerable:!0})},F=(i,t,e,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of v(t))!O.call(i,r)&&r!==e&&L(i,r,{get:()=>t[r],enumerable:!(n=V(t,r))||n.enumerable});return i};var k=i=>F(L({},"__esModule",{value:!0}),i);var S={};B(S,{default:()=>N});function a(i=0){return new Uint8Array(i)}function w(i=0){return new Uint8Array(i)}function U(i,t){t==null&&(t=i.reduce((r,s)=>r+s.length,0));let e=w(t),n=0;for(let r of i)e.set(r,n),n+=r.length;return e}function m(i,t){if(i===t)return!0;if(i.byteLength!==t.byteLength)return!1;for(let e=0;e<i.byteLength;e++)if(i[e]!==t[e])return!1;return!0}var D=Symbol.for("@achingbrain/uint8arraylist");function A(i,t){if(t==null||t<0)throw new RangeError("index is out of bounds");let e=0;for(let n of i){let r=e+n.byteLength;if(t<r)return{buf:n,index:t-e};e=r}throw new RangeError("index is out of bounds")}function y(i){return!!i?.[D]}var c=class i{bufs;length;[D]=!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(y(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(y(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=A(this.bufs,t);return e.buf[e.index]}set(t,e){let n=A(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(y(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:r}=this._subList(t,e);return U(n,r)}subarray(t,e){let{bufs:n,length:r}=this._subList(t,e);return n.length===1?n[0]:U(n,r)}sublist(t,e){let{bufs:n,length:r}=this._subList(t,e),s=new i;return s.length=r,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=[],r=0;for(let s=0;s<this.bufs.length;s++){let o=this.bufs[s],u=r,h=u+o.byteLength;if(r=h,t>=h)continue;let g=t>=u&&t<h,b=e>u&&e<=h;if(g&&b){if(t===u&&e===h){n.push(o);break}let f=t-u;n.push(o.subarray(f,f+(e-t)));break}if(g){if(t===0){n.push(o);continue}n.push(o.subarray(t-u));continue}if(b){if(e===h){n.push(o);break}n.push(o.subarray(0,e-u));break}n.push(o)}return{bufs:n,length:e-t}}indexOf(t,e=0){if(!y(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 r=n.byteLength;if(r===0)throw new TypeError("search must be at least 1 byte long");let s=256,o=new Int32Array(s);for(let f=0;f<s;f++)o[f]=-1;for(let f=0;f<r;f++)o[n[f]]=f;let u=o,h=this.byteLength-n.byteLength,g=n.byteLength-1,b;for(let f=e;f<=h;f+=b){b=0;for(let l=g;l>=0;l--){let d=this.get(f+l);if(n[l]!==d){b=Math.max(1,l-u[d]);break}}if(b===0)return f}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=w(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 r=a(2);new DataView(r.buffer,r.byteOffset,r.byteLength).setInt16(0,e,n),this.write(r,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 r=a(4);new DataView(r.buffer,r.byteOffset,r.byteLength).setInt32(0,e,n),this.write(r,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 r=a(8);new DataView(r.buffer,r.byteOffset,r.byteLength).setBigInt64(0,e,n),this.write(r,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=w(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 r=a(2);new DataView(r.buffer,r.byteOffset,r.byteLength).setUint16(0,e,n),this.write(r,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 r=a(4);new DataView(r.buffer,r.byteOffset,r.byteLength).setUint32(0,e,n),this.write(r,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 r=a(8);new DataView(r.buffer,r.byteOffset,r.byteLength).setBigUint64(0,e,n),this.write(r,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 r=a(4);new DataView(r.buffer,r.byteOffset,r.byteLength).setFloat32(0,e,n),this.write(r,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 r=a(8);new DataView(r.buffer,r.byteOffset,r.byteLength).setFloat64(0,e,n),this.write(r,t)}equals(t){if(t==null||!(t instanceof i)||t.bufs.length!==this.bufs.length)return!1;for(let e=0;e<this.bufs.length;e++)if(!m(this.bufs[e],t.bufs[e]))return!1;return!0}static fromUint8Arrays(t,e){let n=new i;return n.bufs=t,e==null&&(e=t.reduce((r,s)=>r+s.byteLength,0)),n.length=e,n}};function I(i){return i[Symbol.asyncIterator]!=null}function x(i,t={}){let e=new c,n=t.delimiter??new TextEncoder().encode(`
`);return I(i)?async function*(){for await(let r of i)e.append(r),yield*p(e,n);yield*p(e,n),e.length>0&&(yield e.slice())}():function*(){for(let r of i)e.append(r),yield*p(e,n);yield*p(e,n),e.length>0&&(yield e.slice())}()}function*p(i,t){let e=i.indexOf(t);for(;e!==-1;)yield i.slice(0,e),i.consume(e+t.length),e=i.indexOf(t)}var N=x;return k(S);})();
return ItSplit}));
//# sourceMappingURL=index.min.js.map