UNPKG

@uwdata/flechette

Version:

Fast, lightweight access to Apache Arrow data.

3 lines (2 loc) 44 kB
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).fl={})}(this,(function(t){"use strict";const e=Uint8Array.of(65,82,82,79,87,49),n=Uint8Array.of(255,255,255,255,0,0,0,0),s={V1:0,V2:1,V3:2,V4:3,V5:4},r={Little:0,Big:1},i={NONE:0,Schema:1,DictionaryBatch:2,RecordBatch:3,Tensor:4,SparseTensor:5},a={Dictionary:-1,NONE:0,Null:1,Int:2,Float:3,Binary:4,Utf8:5,Bool:6,Decimal:7,Date:8,Time:9,Timestamp:10,Interval:11,List:12,Struct:13,Union:14,FixedSizeBinary:15,FixedSizeList:16,Map:17,Duration:18,LargeBinary:19,LargeUtf8:20,LargeList:21,RunEndEncoded:22,BinaryView:23,Utf8View:24,ListView:25,LargeListView:26},c={HALF:0,SINGLE:1,DOUBLE:2},u={DAY:0,MILLISECOND:1},o={SECOND:0,MILLISECOND:1,MICROSECOND:2,NANOSECOND:3},d={YEAR_MONTH:0,DAY_TIME:1,MONTH_DAY_NANO:2},l={Sparse:0,Dense:1},h=Uint8Array,f=Uint16Array,y=Uint32Array,p=BigUint64Array,b=Int8Array,I=Int16Array,g=Int32Array,v=BigInt64Array,w=Float32Array,m=Float64Array;function x(t,e){const n=Math.log2(t)-3;return(e?[b,I,g,v]:[h,f,y,p])[n]}const O=Object.getPrototypeOf(Int8Array);function L(t){return t instanceof O}function E(t){return Array.isArray(t)||L(t)}function D(t){return t===v||t===p}function A(t,e){let n=0,s=t.length;if(s<=2147483648)do{const r=n+s>>>1;t[r]<=e?n=r+1:s=r}while(n<s);else do{const r=Math.trunc((n+s)/2);t[r]<=e?n=r+1:s=r}while(n<s);return n}function N(t,e,n=0){const s=new t.constructor(e);return s.set(t,n),s}function S(t,e,n){for(;t.length<=e;)t=N(t,t.length<<1,n?t.length:0);return t}function B(t,e,n){if(e(t))return t;throw new Error(n(t))}function M(t,e,n){return e=Array.isArray(e)?e:Object.values(e),B(t,(t=>e.includes(t)),n??(()=>`${t} must be one of ${e}`))}function C(t,e){for(const[n,s]of Object.entries(t))if(s===e)return n;return"<Unknown>"}const U=t=>`Unsupported data type: "${C(a,t)}" (id ${t})`,V=(t,e,n=!0,s=null)=>({name:t,type:e,nullable:n,metadata:s});function T(t){return Object.hasOwn(t,"name")&&F(t.type)}function F(t){return"number"==typeof t?.typeId}function j(t,e="",n=!0){return T(t)?t:V(e,B(t,F,(()=>"Data type expected.")),n)}const k=t=>({typeId:t}),z=(t,e,n=!1,s=-1)=>({typeId:a.Dictionary,id:s,dictionary:t,indices:e||P(),ordered:n}),R=()=>k(a.Null),_=(t=32,e=!0)=>({typeId:a.Int,bitWidth:M(t,[8,16,32,64]),signed:e,values:x(t,e)}),$=()=>_(8),Y=()=>_(16),P=()=>_(32),H=()=>_(64),W=()=>_(8,!1),G=()=>_(16,!1),J=()=>_(32,!1),X=()=>_(64,!1),q=(t=2)=>({typeId:a.Float,precision:M(t,c),values:[f,w,m][t]}),K=()=>q(c.SINGLE),Q=()=>q(c.DOUBLE),Z=()=>({typeId:a.Binary,offsets:g}),tt=()=>({typeId:a.Utf8,offsets:g}),et=()=>k(a.Bool),nt=(t,e,n=128)=>({typeId:a.Decimal,precision:t,scale:e,bitWidth:M(n,[32,64,128,256]),values:32===n?g:p}),st=t=>({typeId:a.Date,unit:M(t,u),values:t===u.DAY?g:v}),rt=()=>st(u.DAY),it=(t=o.MILLISECOND,e=32)=>({typeId:a.Time,unit:M(t,o),bitWidth:M(e,[32,64]),values:32===e?g:v}),at=(t=o.MILLISECOND,e=null)=>({typeId:a.Timestamp,unit:M(t,o),timezone:e,values:v}),ct=(t=d.MONTH_DAY_NANO)=>({typeId:a.Interval,unit:M(t,d),values:t===d.MONTH_DAY_NANO?void 0:g}),ut=t=>({typeId:a.List,children:[j(t)],offsets:g}),ot=t=>({typeId:a.Struct,children:Array.isArray(t)&&T(t[0])?t:Object.entries(t).map((([t,e])=>V(t,e)))}),dt=(t,e,n,s)=>(n??=e.map(((t,e)=>e)),{typeId:a.Union,mode:M(t,l),typeIds:n,typeMap:n.reduce(((t,e,n)=>(t[e]=n,t)),{}),children:e.map(((t,e)=>j(t,`_${e}`))),typeIdForValue:s,offsets:g}),lt=t=>({typeId:a.FixedSizeBinary,stride:t}),ht=(t,e)=>({typeId:a.FixedSizeList,stride:e,children:[j(t)]}),ft=(t,e)=>({typeId:a.Map,keysSorted:t,children:[e],offsets:g}),yt=(t=o.MILLISECOND)=>({typeId:a.Duration,unit:M(t,o),values:v}),pt=()=>({typeId:a.LargeBinary,offsets:v}),bt=()=>({typeId:a.LargeUtf8,offsets:v}),It=t=>({typeId:a.LargeList,children:[j(t)],offsets:v}),gt=(t,e)=>({typeId:a.RunEndEncoded,children:[B(j(t,"run_ends"),(t=>t.type.typeId===a.Int),(()=>"Run-ends must have an integer type.")),j(e,"values")]}),vt=t=>({typeId:a.ListView,children:[j(t,"value")],offsets:g}),wt=t=>({typeId:a.LargeListView,children:[j(t,"value")],offsets:v}),mt=new m(2),xt=mt.buffer,Ot=new v(xt),Lt=new y(xt),Et=new g(xt),Dt=new h(xt);function At(t){return t}function Nt(t){return BigInt(t)}function St(t){return D(t)?Nt:At}function Bt(t){return t/864e5|0}function Mt(t){if(t>Number.MAX_SAFE_INTEGER||t<Number.MIN_SAFE_INTEGER)throw Error(`BigInt exceeds integer number representation: ${t}`);return Number(t)}function Ct(t,e){return Number(t/e)+Number(t%e)/Number(e)}const Ut=t=>BigInt.asUintN(64,t);function Vt(t,e){return BigInt.asIntN(64,t[e])}function Tt(t,e){const n=e<<1;let s;return BigInt.asIntN(64,t[n+1])<0?(s=Ut(~t[n])|Ut(~t[n+1])<<64n,s=-(s+1n)):s=t[n]|t[n+1]<<64n,s}function Ft(t,e){const n=e<<2;let s;return BigInt.asIntN(64,t[n+3])<0?(s=Ut(~t[n])|Ut(~t[n+1])<<64n|Ut(~t[n+2])<<128n|Ut(~t[n+3])<<192n,s=-(s+1n)):s=t[n]|t[n+1]<<64n|t[n+2]<<128n|t[n+3]<<192n,s}function jt(t){if(t!=t)return 32256;mt[0]=t;const e=(2147483648&Lt[1])>>16&65535;let n=2146435072&Lt[1],s=0;return n>=1089470464?Lt[0]>0?n=31744:(n=(2080374784&n)>>16,s=(1048575&Lt[1])>>10):n<=1056964608?(s=1048576+(1048575&Lt[1]),s=1048576+(s<<(n>>20)-998)>>21,n=0):(n=n-1056964608>>10,s=512+(1048575&Lt[1])>>10),e|n|65535&s}const kt=new TextDecoder("utf-8"),zt=new TextEncoder;function Rt(t){return kt.decode(t)}function _t(t){return zt.encode(t)}function $t(t){return`${"object"==typeof t&&t?function(t){return t instanceof Date}(t)?+t:E(t)?`[${t.map($t)}]`:function(t){let e="",n=-1;for(const s in t)++n>0&&(e+=","),e+=`"${s}":${$t(t[s])}`;return`{${e}}`}(t):t??null}`}const Yt=4;function Pt(t,e){return!!(t[e>>3]&1<<e%8)}function Ht(t,e){const n=e+qt(t,e),s=n-qt(t,n),r=Xt(t,s);return(e,i,a=null)=>{if(e<r){const r=Xt(t,s+e);if(r)return i(t,n+r)}return a}}function Wt(t,e){return e}function Gt(t,e){return!!function(t,e){return Jt(t,e)<<24>>24}(t,e)}function Jt(t,e){return t[e]}function Xt(t,e){return function(t,e){return t[e]|t[e+1]<<8}(t,e)<<16>>16}function qt(t,e){return t[e]|t[e+1]<<8|t[e+2]<<16|t[e+3]<<24}function Kt(t,e){return qt(t,e)>>>0}function Qt(t,e){return Mt(BigInt.asIntN(64,BigInt(Kt(t,e))+(BigInt(Kt(t,e+Yt))<<32n)))}function Zt(t,e){let n=e+qt(t,e);const s=qt(t,n);return n+=Yt,Rt(t.subarray(n,n+s))}function te(t,e,n,s){if(!e)return[];const r=e+qt(t,e);return Array.from({length:qt(t,r)},((e,i)=>s(t,r+Yt+i*n)))}const ee=Symbol("rowIndex");function ne(t,e){class n{constructor(t){this[ee]=t}toJSON(){return re(t,e,this[ee])}}const s=n.prototype;for(let n=0;n<t.length;++n){if(Object.hasOwn(s,t[n]))continue;const r=e[n];Object.defineProperty(s,t[n],{get(){return r.at(this[ee])},enumerable:!0})}return t=>new n(t)}function se(t,e){return n=>re(t,e,n)}function re(t,e,n){const s={};for(let r=0;r<t.length;++r)s[t[r]]=e[r].at(n);return s}class ie{static ArrayType=null;constructor({length:t,nullCount:e,type:n,validity:s,values:r,offsets:i,sizes:a,children:c}){this.length=t,this.nullCount=e,this.type=n,this.validity=s,this.values=r,this.offsets=i,this.sizes=a,this.children=c,e&&this.validity||(this.at=t=>this.value(t))}get[Symbol.toStringTag](){return"Batch"}at(t){return this.isValid(t)?this.value(t):null}isValid(t){return Pt(this.validity,t)}value(t){return this.values[t]}slice(t,e){const n=e-t,s=Array(n);for(let e=0;e<n;++e)s[e]=this.at(t+e);return s}*[Symbol.iterator](){for(let t=0;t<this.length;++t)yield this.at(t)}}class ae extends ie{constructor(t){super(t);const{length:e,values:n}=this;this.values=n.subarray(0,e)}slice(t,e){return this.nullCount?super.slice(t,e):this.values.subarray(t,e)}[Symbol.iterator](){return this.nullCount?super[Symbol.iterator]():this.values[Symbol.iterator]()}}class ce extends ie{static ArrayType=m}class ue extends ie{static ArrayType=Array}class oe extends ue{value(t){return null}}class de extends ce{value(t){return Mt(this.values[t])}}class le extends ce{value(t){const e=this.values[t],n=(31744&e)>>10,s=(1023&e)/1024,r=(-1)**((32768&e)>>15);switch(n){case 31:return r*(s?Number.NaN:1/0);case 0:return r*(s?6103515625e-14*s:0)}return r*2**(n-15)*(1+s)}}class he extends ue{value(t){return Pt(this.values,t)}}class fe extends ce{constructor(t){super(t);const{scale:e}=this.type;this.scale=10**e}value(t){return this.values[t]/this.scale}}class ye extends ie{constructor(t){super(t);const{bitWidth:e,scale:n}=this.type;this.decimal=64===e?Vt:128===e?Tt:Ft,this.scale=10n**BigInt(n)}}class pe extends ye{static ArrayType=m;value(t){return Ct(this.decimal(this.values,t),this.scale)}}class be extends ye{static ArrayType=Array;value(t){return this.decimal(this.values,t)}}class Ie extends ue{constructor(t){super(t),this.source=t}value(t){return new Date(this.source.value(t))}}class ge extends ce{value(t){return 864e5*this.values[t]}}const ve=de;class we extends de{value(t){return 1e3*super.value(t)}}const me=de;class xe extends de{value(t){return Ct(this.values[t],1000n)}}class Oe extends de{value(t){return Ct(this.values[t],1000000n)}}class Le extends ue{value(t){return this.values.subarray(t<<1,t+1<<1)}}class Ee extends ue{value(t){const e=this.values,n=t<<4;return Float64Array.of(qt(e,n),qt(e,n+4),Qt(e,n+8))}}const De=({values:t,offsets:e},n)=>t.subarray(e[n],e[n+1]),Ae=({values:t,offsets:e},n)=>t.subarray(Mt(e[n]),Mt(e[n+1]));class Ne extends ue{value(t){return De(this,t)}}class Se extends ue{value(t){return Ae(this,t)}}class Be extends ue{value(t){return Rt(De(this,t))}}class Me extends ue{value(t){return Rt(Ae(this,t))}}class Ce extends ue{value(t){const e=this.offsets;return this.children[0].slice(e[t],e[t+1])}}class Ue extends ue{value(t){const e=this.offsets;return this.children[0].slice(Mt(e[t]),Mt(e[t+1]))}}class Ve extends ue{value(t){const e=this.offsets[t],n=e+this.sizes[t];return this.children[0].slice(e,n)}}class Te extends ue{value(t){const e=this.offsets[t],n=e+this.sizes[t];return this.children[0].slice(Mt(e),Mt(n))}}class Fe extends ue{constructor(t){super(t),this.stride=this.type.stride}}class je extends Fe{value(t){const{stride:e,values:n}=this;return n.subarray(t*e,(t+1)*e)}}class ke extends Fe{value(t){const{children:e,stride:n}=this;return e[0].slice(t*n,(t+1)*n)}}function ze({children:t,offsets:e},n){const[s,r]=t[0].children,i=e[n],a=e[n+1],c=[];for(let t=i;t<a;++t)c.push([s.at(t),r.at(t)]);return c}class Re extends ue{value(t){return ze(this,t)}}class _e extends ue{value(t){return new Map(ze(this,t))}}class $e extends ue{constructor({typeIds:t,...e}){super(e),this.typeIds=t,this.typeMap=this.type.typeMap}value(t,e=t){const{typeIds:n,children:s,typeMap:r}=this;return s[r[n[t]]].at(e)}}class Ye extends $e{value(t){return super.value(t,this.offsets[t])}}class Pe extends ue{constructor(t,e=se){super(t),this.names=this.type.children.map((t=>t.name)),this.factory=e(this.names,this.children)}value(t){return this.factory(t)}}class He extends Pe{constructor(t){super(t,ne)}}class We extends ue{value(t){const[{values:e},n]=this.children;return n.at(A(e,t))}}class Ge extends ue{setDictionary(t){return this.dictionary=t,this.cache=t.cache(),this}value(t){return this.cache[this.key(t)]}key(t){return this.values[t]}}class Je extends ue{constructor({data:t,...e}){super(e),this.data=t}view(t){const{values:e,data:n}=this,s=t<<4;let r=s+4,i=e;const a=qt(i,s);return a>12&&(r=qt(i,s+12),i=n[qt(i,s+8)]),i.subarray(r,r+a)}}class Xe extends Je{value(t){return this.view(t)}}class qe extends Je{value(t){return Rt(this.view(t))}}function Ke(t){let e=[];return{add(t){return e.push(t),this},clear:()=>e=[],done:()=>new Qe(e,t)}}class Qe{constructor(t,e=t[0]?.type){this.type=e,this.length=t.reduce(((t,e)=>t+e.length),0),this.nullCount=t.reduce(((t,e)=>t+e.nullCount),0),this.data=t;const n=t.length,s=new Int32Array(n+1);if(1===n){const[e]=t;s[1]=e.length,this.at=t=>e.at(t)}else for(let e=0,r=0;e<n;++e)s[e+1]=r+=t[e].length;this.offsets=s}get[Symbol.toStringTag](){return"Column"}[Symbol.iterator](){const t=this.data;return 1===t.length?t[0][Symbol.iterator]():function*(t){for(let e=0;e<t.length;++e){const n=t[e][Symbol.iterator]();for(let t=n.next();!t.done;t=n.next())yield t.value}}(t)}at(t){const{data:e,offsets:n}=this,s=A(n,t)-1;return e[s]?.at(t-n[s])}get(t){return this.at(t)}toArray(){const{length:t,nullCount:e,data:n}=this,s=!e&&n[0]instanceof ae;const r=n.length;if(s&&1===r)return n[0].values;const i=new(!r||e>0?Array:n[0].constructor.ArrayType??n[0].values.constructor)(t);return s?function(t,e){for(let n=0,s=0;n<e.length;++n){const{values:r}=e[n];t.set(r,s),s+=r.length}return t}(i,n):function(t,e){let n=-1;for(let s=0;s<e.length;++s){const r=e[s];for(let e=0;e<r.length;++e)t[++n]=r.at(e)}return t}(i,n)}cache(){return this._cache??(this._cache=this.toArray())}}class Ze{constructor(t,e,n=!1){const s=t.fields.map((t=>t.name));this.schema=t,this.names=s,this.children=e,this.factory=n?ne:se;const r=[];this.getFactory=t=>r[t]??(r[t]=this.factory(s,e.map((e=>e.data[t]))))}get[Symbol.toStringTag](){return"Table"}get numCols(){return this.names.length}get numRows(){return this.children[0]?.length??0}getChildAt(t){return this.children[t]}getChild(t){const e=this.names.findIndex((e=>e===t));return e>-1?this.children[e]:void 0}selectAt(t,e=[]){const{children:n,factory:s,schema:r}=this,{fields:i}=r;return new Ze({...r,fields:t.map(((t,n)=>function(t,e){return null!=e&&e!==t.name?{...t,name:e}:t}(i[t],e[n])))},t.map((t=>n[t])),s===ne)}select(t,e){const n=this.names,s=t.map((t=>n.indexOf(t)));return this.selectAt(s,e)}toColumns(){const{children:t,names:e}=this,n={};return e.forEach(((e,s)=>n[e]=t[s]?.toArray()??[])),n}toArray(){const{children:t,getFactory:e,numRows:n}=this,s=t[0]?.data??[],r=Array(n);for(let t=0,n=-1;t<s.length;++t){const i=e(t);for(let e=0;e<s[t].length;++e)r[++n]=i(e)}return r}*[Symbol.iterator](){const{children:t,getFactory:e}=this,n=t[0]?.data??[];for(let t=0;t<n.length;++t){const s=e(t);for(let e=0;e<n[t].length;++e)yield s(e)}}at(t){const{children:e,getFactory:n,numRows:s}=this;if(t<0||t>=s)return null;const[{offsets:r}]=e,i=A(r,t)-1;return n(i)(t-r[i])}get(t){return this.at(t)}}function tn(t,e={}){const{typeId:n,bitWidth:s,precision:r,unit:i}=t,{useBigInt:c,useDate:l,useDecimalInt:h,useMap:f,useProxy:y}=e;switch(n){case a.Null:return oe;case a.Bool:return he;case a.Int:case a.Time:case a.Duration:return c||s<64?ae:de;case a.Float:return r?ae:le;case a.Date:return en(i===u.DAY?ge:ve,l&&Ie);case a.Timestamp:return en(i===o.SECOND?we:i===o.MILLISECOND?me:i===o.MICROSECOND?xe:Oe,l&&Ie);case a.Decimal:return 32===s?h?ae:fe:h?be:pe;case a.Interval:return i===d.DAY_TIME?Le:i===d.YEAR_MONTH?ae:Ee;case a.FixedSizeBinary:return je;case a.Utf8:return Be;case a.LargeUtf8:return Me;case a.Binary:return Ne;case a.LargeBinary:return Se;case a.BinaryView:return Xe;case a.Utf8View:return qe;case a.List:return Ce;case a.LargeList:return Ue;case a.Map:return f?_e:Re;case a.ListView:return Ve;case a.LargeListView:return Te;case a.FixedSizeList:return ke;case a.Struct:return y?He:Pe;case a.RunEndEncoded:return We;case a.Dictionary:return Ge;case a.Union:return t.mode?Ye:$e}throw new Error(U(n))}function en(t,e){return e?class extends e{constructor(e){super(new t(e))}}:t}function nn(t,e){return{offset:Qt(t,e),metadataLength:qt(t,e+8),bodyLength:Qt(t,e+16)}}function sn(t,e){return te(t,e,24,nn)}function rn(t,e,n){const r=Ht(t,e);if(r(10,Wt,0))throw new Error("Record batch compression not implemented");const i=n<s.V4?8:0;return{length:r(4,Qt,0),nodes:te(t,r(6,Wt),16,((t,e)=>({length:Qt(t,e),nullCount:Qt(t,e+8)}))),regions:te(t,r(8,Wt),16+i,((t,e)=>({offset:Qt(t,e+i),length:Qt(t,e+i+8)}))),variadic:te(t,r(12,Wt),8,Qt)}}function an(t,e,n){const s=Ht(t,e);return{id:s(4,Qt,0),data:s(6,((t,e)=>rn(t,e,n))),isDelta:s(8,Gt,!1)}}function cn(t,e,n,s){M(n,a,U);const r=Ht(t,e);switch(n){case a.Binary:return Z();case a.Utf8:return tt();case a.LargeBinary:return pt();case a.LargeUtf8:return bt();case a.List:return ut(s[0]);case a.ListView:return vt(s[0]);case a.LargeList:return It(s[0]);case a.LargeListView:return wt(s[0]);case a.Struct:return ot(s);case a.RunEndEncoded:return gt(s[0],s[1]);case a.Int:return _(r(4,qt,0),r(6,Gt,!1));case a.Float:return q(r(4,Xt,c.HALF));case a.Decimal:return nt(r(4,qt,0),r(6,qt,0),r(8,qt,128));case a.Date:return st(r(4,Xt,u.MILLISECOND));case a.Time:return it(r(4,Xt,o.MILLISECOND),r(6,qt,32));case a.Timestamp:return at(r(4,Xt,o.SECOND),r(6,Zt));case a.Interval:return ct(r(4,Xt,d.YEAR_MONTH));case a.Duration:return yt(r(4,Xt,o.MILLISECOND));case a.FixedSizeBinary:return lt(r(4,qt,0));case a.FixedSizeList:return ht(s[0],r(4,qt,0));case a.Map:return ft(r(4,Gt,!1),s[0]);case a.Union:return dt(r(4,Xt,l.Sparse),s,te(t,r(6,Wt),4,qt))}return{typeId:n}}function un(t,e){const n=te(t,e,4,((t,e)=>{const n=Ht(t,e);return[n(4,Zt),n(6,Zt)]}));return n.length?new Map(n):null}function on(t,e,n){const s=Ht(t,e);return{version:n,endianness:s(4,Xt,0),fields:s(6,dn,[]),metadata:s(8,un)}}function dn(t,e){return te(t,e,4,ln)}function ln(t,e){const n=Ht(t,e),s=n(8,Jt,a.NONE),r=n(10,Wt,0),i=n(12,hn),c=n(14,((t,e)=>function(t,e){const n=te(t,e,4,ln);return n.length?n:null}(t,e)));let u=cn(t,r,s,c);return i&&(i.dictionary=u,u=i),{name:n(4,Zt),type:u,nullable:n(6,Gt,!1),metadata:n(16,un)}}function hn(t,e){if(!e)return null;const n=Ht(t,e);return z(null,n(6,fn,P()),n(8,Gt,!1),n(4,Qt,0))}function fn(t,e){return cn(t,e,a.Int)}const yn=(t,e)=>`Expected to read ${t} metadata bytes, but only read ${e}.`,pn=(t,e)=>`Expected to read ${t} bytes for message body, but only read ${e}.`,bn=t=>`Unsupported message type: ${t} (${C(i,t)})`;function In(t,e){let n=qt(t,e)||0;if(e+=Yt,-1===n&&(n=qt(t,e)||0,e+=Yt),0===n)return null;const r=t.subarray(e,e+=n);if(r.byteLength<n)throw new Error(yn(n,r.byteLength));const a=Ht(r,0),c=a(4,Xt,s.V1),u=a(6,Jt,i.NONE),o=a(8,Wt,0),d=a(10,Qt,0);let l;if(o){const n=u===i.Schema?on:u===i.DictionaryBatch?an:u===i.RecordBatch?rn:null;if(!n)throw new Error(bn(u));if(l=n(r,o,c),d>0){const n=t.subarray(e,e+=d);if(n.byteLength<d)throw new Error(pn(d,n.byteLength));l.body=n}}return{version:c,type:u,index:e,content:l}}function gn(t){const n=t instanceof ArrayBuffer?new Uint8Array(t):t;return n instanceof Uint8Array&&function(t){if(!t||t.length<4)return!1;for(let n=0;n<6;++n)if(e[n]!==t[n])return!1;return!0}(n)?function(t){const n=t.byteLength-(e.length+4),r=qt(t,n),i=Ht(t,n-r),a=i(4,Xt,s.V1),c=i(8,sn,[]),u=i(10,sn,[]);return{schema:i(6,((t,e)=>on(t,e,a))),dictionaries:c.map((({offset:e})=>In(t,e).content)),records:u.map((({offset:e})=>In(t,e).content)),metadata:i(12,un)}}(n):function(t){const e=[t].flat();let n;const s=[],r=[];for(const t of e){if(!(t instanceof Uint8Array))throw new Error("IPC data batch was not a Uint8Array.");let e=0;for(;;){const a=In(t,e);if(null===a)break;if(e=a.index,a.content)switch(a.type){case i.Schema:n||(n=a.content);break;case i.RecordBatch:s.push(a.content);break;case i.DictionaryBatch:r.push(a.content)}}}return{schema:n,dictionaries:r,records:s,metadata:null}}(n)}function vn(t,e){const{typeId:n}=t,{length:r,options:i,node:c,buffer:u,variadic:o,version:d}=e,h=tn(t,i);if(n===a.Null)return new h({length:r,nullCount:r,type:t});const f={...c(),type:t};switch(n){case a.Bool:case a.Int:case a.Time:case a.Duration:case a.Float:case a.Decimal:case a.Date:case a.Timestamp:case a.Interval:case a.FixedSizeBinary:return new h({...f,validity:u(),values:u(t.values)});case a.Utf8:case a.LargeUtf8:case a.Binary:case a.LargeBinary:return new h({...f,validity:u(),offsets:u(t.offsets),values:u()});case a.BinaryView:case a.Utf8View:return new h({...f,validity:u(),values:u(),data:Array.from({length:o()},(()=>u()))});case a.List:case a.LargeList:case a.Map:return new h({...f,validity:u(),offsets:u(t.offsets),children:e.visit(t.children)});case a.ListView:case a.LargeListView:return new h({...f,validity:u(),offsets:u(t.offsets),sizes:u(t.offsets),children:e.visit(t.children)});case a.FixedSizeList:case a.Struct:return new h({...f,validity:u(),children:e.visit(t.children)});case a.RunEndEncoded:return new h({...f,children:e.visit(t.children)});case a.Dictionary:{const{id:n,indices:s}=t;return new h({...f,validity:u(),values:u(s.values)}).setDictionary(e.dictionary(n))}case a.Union:return d<s.V5&&u(),new h({...f,typeIds:u(b),offsets:t.mode===l.Sparse?null:u(t.offsets),children:e.visit(t.children)});default:throw new Error(U(n))}}function wn(t,e,n){t[e]=n,t[e+1]=n>>8,t[e+2]=n>>16,t[e+3]=n>>24}const mn=1024;class xn{constructor(t){this.sink=t,this.minalign=1,this.buf=new Uint8Array(mn),this.space=mn,this.vtables=[],this.outputBytes=0}offset(){return this.buf.length-this.space}writeInt8(t){this.buf[this.space-=1]=t}writeInt16(t){this.buf[this.space-=2]=t,this.buf[this.space+1]=t>>8}writeInt32(t){wn(this.buf,this.space-=4,t)}writeInt64(t){const e=BigInt(t);this.writeInt32(Number(BigInt.asIntN(32,e>>BigInt(32)))),this.writeInt32(Number(BigInt.asIntN(32,e)))}addInt8(t){On(this,1,0),this.writeInt8(t)}addInt16(t){On(this,2,0),this.writeInt16(t)}addInt32(t){On(this,4,0),this.writeInt32(t)}addInt64(t){On(this,8,0),this.writeInt64(t)}addOffset(t){On(this,Yt,0),this.writeInt32(this.offset()-t+Yt)}addObject(t,e){const n=function(t,e){const n=Array(e).fill(0),s=t.offset();function r(e){n[e]=t.offset()}return{addInt8(e,n,s){n!=s&&(t.addInt8(n),r(e))},addInt16(e,n,s){n!=s&&(t.addInt16(n),r(e))},addInt32(e,n,s){n!=s&&(t.addInt32(n),r(e))},addInt64(e,n,s){n!=s&&(t.addInt64(n),r(e))},addOffset(e,n,s){n!=s&&(t.addOffset(n),r(e))},finish(){t.addInt32(0);const r=t.offset();let i=e;for(;--i>=0&&0===n[i];);const a=i+1;for(;i>=0;--i)t.addInt16(n[i]?r-n[i]:0);const c=2;t.addInt16(r-s);const u=2*(a+c);t.addInt16(u);let o=0;const{buf:d,vtables:l,space:h}=t;t:for(i=0;i<l.length;++i){const t=d.length-l[i];if(u==Xt(d,t)){for(let e=2;e<u;e+=2)if(Xt(d,h+e)!=Xt(d,t+e))continue t;o=l[i];break}}if(o)t.space=d.length-r,wn(d,t.space,o-r);else{const e=t.offset();l.push(e),wn(d,d.length-r,e-r)}return r}}}(this,t);return e?.(n),n.finish()}addVector(t,e,n,s){const r=t?.length;if(!r)return 0;On(this,Yt,e*r),On(this,n,e*r);for(let e=r;--e>=0;)s(this,t[e]);return this.writeInt32(r),this.offset()}addOffsetVector(t){return this.addVector(t,4,4,((t,e)=>t.addOffset(e)))}addString(t){if(null==t)return 0;const e=_t(t),n=e.length;return this.addInt8(0),On(this,Yt,n),this.buf.set(e,this.space-=n),this.writeInt32(n),this.offset()}finish(t){On(this,this.minalign,Yt),this.addOffset(t)}flush(){const{buf:t,sink:e}=this,n=t.subarray(this.space,t.length);e.write(n),this.outputBytes+=n.byteLength,this.minalign=1,this.vtables=[],this.buf=new Uint8Array(mn),this.space=mn}addBuffer(t){const e=t.byteLength;if(!e)return 0;this.sink.write(t),this.outputBytes+=e;const n=(e+7&-8)-e;return this.addPadding(n),e+n}addPadding(t){t>0&&(this.sink.write(new Uint8Array(t)),this.outputBytes+=t)}}function On(t,e,n){let{buf:s,space:r,minalign:i}=t;e>i&&(t.minalign=e);const a=s.length,c=a-r+n,u=1+~c&e-1;s=S(s,c+u+e-1,!0),r+=s.length-a;for(let t=0;t<u;++t)s[--r]=0;t.buf=s,t.space=r}function Ln(t,e){const{nodes:n,regions:s,variadic:r}=e,i=t.addVector(n,16,8,((t,e)=>(t.writeInt64(e.nullCount),t.writeInt64(e.length),t.offset()))),a=t.addVector(s,16,8,((t,e)=>(t.writeInt64(e.length),t.writeInt64(e.offset),t.offset()))),c=t.addVector(r,8,8,((t,e)=>t.addInt64(e)));return t.addObject(5,(t=>{t.addInt64(0,n[0].length,0),t.addOffset(1,i,0),t.addOffset(2,a,0),t.addOffset(4,c,0)}))}function En(t,e){const n=Ln(t,e.data);return t.addObject(3,(t=>{t.addInt64(0,e.id,0),t.addOffset(1,n,0),t.addInt8(2,+e.isDelta,0)}))}function Dn(t,e){return e?.size>0?t.addOffsetVector(Array.from(e,(([e,n])=>{const s=t.addString(`${e}`),r=t.addString(`${n}`);return t.addObject(2,(t=>{t.addOffset(0,s,0),t.addOffset(1,r,0)}))}))):0}function An(t,e){switch(M(e.typeId,a,U)){case a.Dictionary:return function(t,e){return t.addObject(4,(n=>{n.addInt64(0,e.id,0),n.addOffset(1,An(t,e.indices),0),n.addInt8(2,+e.ordered,0)}))}(t,e);case a.Int:return function(t,e){return t.addObject(2,(t=>{t.addInt32(0,e.bitWidth,0),t.addInt8(1,+e.signed,0)}))}(t,e);case a.Float:return function(t,e){return t.addObject(1,(t=>{t.addInt16(0,e.precision,c.HALF)}))}(t,e);case a.Decimal:return function(t,e){return t.addObject(3,(t=>{t.addInt32(0,e.precision,0),t.addInt32(1,e.scale,0),t.addInt32(2,e.bitWidth,128)}))}(t,e);case a.Date:return function(t,e){return t.addObject(1,(t=>{t.addInt16(0,e.unit,u.MILLISECOND)}))}(t,e);case a.Time:return function(t,e){return t.addObject(2,(t=>{t.addInt16(0,e.unit,o.MILLISECOND),t.addInt32(1,e.bitWidth,32)}))}(t,e);case a.Timestamp:return function(t,e){const n=t.addString(e.timezone);return t.addObject(2,(t=>{t.addInt16(0,e.unit,o.SECOND),t.addOffset(1,n,0)}))}(t,e);case a.Interval:return function(t,e){return t.addObject(1,(t=>{t.addInt16(0,e.unit,d.YEAR_MONTH)}))}(t,e);case a.Duration:return function(t,e){return t.addObject(1,(t=>{t.addInt16(0,e.unit,o.MILLISECOND)}))}(t,e);case a.FixedSizeBinary:case a.FixedSizeList:return function(t,e){return t.addObject(1,(t=>{t.addInt32(0,e.stride,0)}))}(t,e);case a.Map:return function(t,e){return t.addObject(1,(t=>{t.addInt8(0,+e.keysSorted,0)}))}(t,e);case a.Union:return function(t,e){const n=t.addVector(e.typeIds,4,4,((t,e)=>t.addInt32(e)));return t.addObject(2,(t=>{t.addInt16(0,e.mode,l.Sparse),t.addOffset(1,n,0)}))}(t,e)}return t.addObject(0)}const Nn=1===new Uint16Array(new Uint8Array([1,0]).buffer)[0];function Sn(t,e){const{fields:n,metadata:s}=e,r=n.map((e=>Bn(t,e))),i=t.addOffsetVector(r),a=Dn(t,s);return t.addObject(4,(t=>{t.addInt16(0,+!Nn,0),t.addOffset(1,i,0),t.addOffset(2,a,0)}))}function Bn(t,e){const{name:n,nullable:s,type:r,metadata:i}=e;let{typeId:c}=r,u=0,o=0;if(c!==a.Dictionary)u=An(t,r);else{const e=r.dictionary;c=e.typeId,o=An(t,r),u=An(t,e)}const d=(r.children||[]).map((e=>Bn(t,e))),l=t.addOffsetVector(d),h=Dn(t,i),f=t.addString(n);return t.addObject(7,(t=>{t.addOffset(0,f,0),t.addInt8(1,+s,0),t.addInt8(2,c,a.NONE),t.addOffset(3,u,0),t.addOffset(4,o,0),t.addOffset(5,l,0),t.addOffset(6,h,0)}))}function Mn(t,{offset:e,metadataLength:n,bodyLength:s}){return t.writeInt64(s),t.writeInt32(0),t.writeInt32(n),t.writeInt64(e),t.offset()}function Cn(t,e,n,r,a){t.finish(t.addObject(5,(t=>{t.addInt16(0,s.V5,s.V1),t.addInt8(1,e,i.NONE),t.addOffset(2,n,0),t.addInt64(3,r,0)})));const c=t.offset(),u=c+8+7&-8;a?.push({offset:t.outputBytes,metadataLength:u,bodyLength:r}),t.addInt32(u-8),t.addInt32(-1),t.flush(),t.addPadding(u-c-8)}class Un{write(t){}pad(t){this.write(new Uint8Array(t))}finish(){return null}}class Vn extends Un{constructor(){super(),this.buffers=[]}write(t){this.buffers.push(t)}finish(){const t=this.buffers,e=t.reduce(((t,e)=>t+e.byteLength),0),n=new Uint8Array(e);for(let e=0,s=0;e<t.length;++e)n.set(t[e],s),s+=t[e].byteLength;return n}}const Tn="stream",Fn="file";function jn(t,{sink:r,format:a=Tn}={}){if(a!==Tn&&a!==Fn)throw new Error(`Unrecognized Arrow IPC format: ${a}`);const{schema:c,dictionaries:u=[],records:o=[],metadata:d}=t,l=new xn(r||new Vn),h=a===Fn,f=[],y=[];h&&l.addBuffer(e),c&&Cn(l,i.Schema,Sn(l,c),0);for(const t of u){const{data:e}=t;Cn(l,i.DictionaryBatch,En(l,t),e.byteLength,f),kn(l,e.buffers)}for(const t of o)Cn(l,i.RecordBatch,Ln(l,t),t.byteLength,y),kn(l,t.buffers);return l.addBuffer(n),h&&function(t,n,r,i,a){const c=Dn(t,a),u=t.addVector(i,24,8,Mn),o=t.addVector(r,24,8,Mn),d=Sn(t,n);t.finish(t.addObject(5,(t=>{t.addInt16(0,s.V5,s.V1),t.addOffset(1,d,0),t.addOffset(2,o,0),t.addOffset(3,u,0),t.addOffset(4,c,0)})));const l=t.offset();t.addInt32(0),t.addInt32(-1),t.flush(),t.sink.write(new Uint8Array(Int32Array.of(l).buffer)),t.sink.write(e)}(l,c,f,y,d),l.sink}function kn(t,e){for(let n=0;n<e.length;++n)t.addBuffer(e[n])}function zn(t,e){if(t?.type.typeId===a.Dictionary){const n=t.dictionary;e(n),zn(n.data[0],e)}t?.children?.forEach((t=>zn(t,e)))}function Rn(t,e=0){const n=function(){let t=0;const e=[],n=[],s=[],r=[];return{node(t,n){e.push({length:t,nullCount:n})},buffer(e){const r=e.byteLength,i=r+7&-8;n.push({offset:t,length:i}),t+=i,s.push(new Uint8Array(e.buffer,e.byteOffset,r))},variadic(t){r.push(t)},children(t,e){t.children.forEach(((t,n)=>{_n(t.type,e.children[n],this)}))},done:()=>({byteLength:t,nodes:e,regions:n,variadic:r,buffers:s})}}();return t.forEach((t=>{_n(t.type,t.data[e],n)})),n.done()}function _n(t,e,n){const{typeId:s}=t;if(s!==a.Null)switch(n.node(e.length,e.nullCount),s){case a.Bool:case a.Int:case a.Time:case a.Duration:case a.Float:case a.Date:case a.Timestamp:case a.Decimal:case a.Interval:case a.FixedSizeBinary:case a.Dictionary:return n.buffer(e.validity),void n.buffer(e.values);case a.Utf8:case a.LargeUtf8:case a.Binary:case a.LargeBinary:return n.buffer(e.validity),n.buffer(e.offsets),void n.buffer(e.values);case a.BinaryView:case a.Utf8View:return n.buffer(e.validity),n.buffer(e.values),n.variadic(e.data.length),void e.data.forEach((t=>n.buffer(t)));case a.List:case a.LargeList:case a.Map:return n.buffer(e.validity),n.buffer(e.offsets),void n.children(t,e);case a.ListView:case a.LargeListView:return n.buffer(e.validity),n.buffer(e.offsets),n.buffer(e.sizes),void n.children(t,e);case a.FixedSizeList:case a.Struct:return n.buffer(e.validity),void n.children(t,e);case a.RunEndEncoded:return void n.children(t,e);case a.Union:return n.buffer(e.typeIds),t.mode===l.Dense&&n.buffer(e.offsets),void n.children(t,e);default:throw new Error(U(s))}}function $n(t){return new Yn(t)}class Yn{constructor(t=h){this.buf=new t(512)}array(t){return function(t,e=t.length){const n=function(t,e=1){return(t*e+7&-8)/e}(e,t.BYTES_PER_ELEMENT);return t.length>n?t.subarray(0,n):t.length<n?N(t,n):t}(this.buf,t)}prep(t){t>=this.buf.length&&(this.buf=S(this.buf,t))}get(t){return this.buf[t]}set(t,e){this.prep(e),this.buf[e]=t}write(t,e){this.prep(e+t.length),this.buf.set(t,e)}}function Pn(){return new Hn}class Hn extends Yn{set(t){const e=t>>3;this.prep(e),this.buf[e]|=1<<t%8}}class Wn{constructor(t,e){this.type=t,this.ctx=e,this.batchClass=e.batchType(t)}init(){return this.index=-1,this}set(t,e){return this.index=e,!1}done(){return null}batch(){const t=new this.batchClass(this.done());return this.init(),t}}class Gn extends Wn{constructor(t,e){super(t,e)}init(){return this.nullCount=0,this.validity=Pn(),super.init()}set(t,e){this.index=e;const n=null!=t;return n?this.validity.set(e):this.nullCount++,n}done(){const{index:t,nullCount:e,type:n,validity:s}=this;return{length:t+1,nullCount:e,type:n,validity:e?s.array(1+(t>>3)):new h(0)}}}function Jn(){const t=new Map,e=new Set;return{get(n,s){const r=n.id;if(r>=0&&t.has(r))return t.get(r);{const i=function(t,e){const n=Object.create(null),s=e.builder(t.dictionary),r=[];s.init();let i=-1;return{type:t,values:s,add:t=>(r.push(t),t),key(t){const e=$t(t);let r=n[e];return void 0===r&&(n[e]=r=++i,s.set(t,r)),r},finish(e){const n=new(tn(t.dictionary,e))(s.done()),i=new Qe([n]);r.forEach((t=>t.setDictionary(i)))}}}(n,s);return r>=0&&t.set(r,i),e.add(i),i}},finish(t){e.forEach((e=>e.finish(t)))}}}class Xn extends Gn{constructor(t,e){super(t,e),this.dict=e.dictionary(t)}init(){return this.values=$n(this.type.indices.values),super.init()}set(t,e){super.set(t,e)&&this.values.set(this.dict.key(t),e)}done(){return{...super.done(),values:this.values.array(this.index+1)}}batch(){return this.dict.add(super.batch())}}function qn(t){const e=Kn();return t((t=>e.add(t))),e.type()}function Kn(){let t,e,n,s=0,r=0,i=0,a=0,c=0,u=0,o=0,d=0,l=0,h=0,f=0,y=1/0,p=-1/0,b=1/0,I=-1/0,g={};return{add(v){if(s++,null!=v)switch(typeof v){case"string":l++;break;case"number":a++,v<y&&(y=v),v>p&&(p=v),Number.isInteger(v)&&c++;break;case"bigint":u++,void 0===t?t=e=v:(v<t&&(t=v),v>e&&(e=v));break;case"boolean":i++;break;case"object":if(v instanceof Date)o++,+v%864e5==0&&d++;else if(E(v)){h++;const t=v.length;t<b&&(b=t),t>I&&(I=t),n??=Kn(),v.forEach(n.add)}else{f++;for(const t in v){(g[t]??(g[t]=Kn())).add(v[t])}}}else r++},type(){const v=s-r;return 0===v?R():c===v?function(t,e){const n=Math.max(Math.abs(t)-1,e);return n<128?$():n<32768?Y():n<2**31?P():Q()}(y,p):a===v?Q():u===v?function(t,e){const n=-t>e?-t-1n:e;if(n>=2**63)throw new Error(`BigInt exceeds 64 bits: ${n}`);return H()}(t,e):i===v?et():d===v?rt():o===v?at():l===v?z(tt()):h===v?function(t,e,n){return n===e?ht(t,e):ut(t)}(n.type(),b,I):f===v?ot(Object.entries(g).map((t=>V(t[0],t[1].type())))):function(){throw new Error("Mixed types detected, please define a union type.")}()}}}class Qn extends Gn{constructor(t,e){super(t,e),this.toOffset=St(t.offsets)}init(){return this.offsets=$n(this.type.offsets),this.values=$n(),this.pos=0,super.init()}set(t,e){const{offsets:n,values:s,toOffset:r}=this;super.set(t,e)&&(s.write(t,this.pos),this.pos+=t.length),n.set(r(this.pos),e+1)}done(){return{...super.done(),offsets:this.offsets.array(this.index+2),values:this.values.array(this.pos+1)}}}class Zn extends Gn{constructor(t,e){super(t,e)}init(){return this.values=Pn(),super.init()}set(t,e){super.set(t,e),t&&this.values.set(e)}done(){return{...super.done(),values:this.values.array(1+(this.index>>3))}}}class ts extends Gn{constructor(t,e){super(t,e),this.scale=10**t.scale,this.stride=t.bitWidth>>6}init(){return this.values=$n(this.type.values),super.init()}set(t,e){const{scale:n,stride:s,values:r}=this;super.set(t,e)&&(r.prep((e+1)*s),function(t,e,n,s,r){const i="bigint"==typeof t?t:Nt(Math.trunc(t*r));e[n]=i,s>1&&(e[n+1]=i>>64n,s>2&&(e[n+2]=i>>128n,e[n+3]=i>>192n))}(t,r.buf,e*s,s,n))}done(){const{index:t,stride:e,values:n}=this;return{...super.done(),values:n.array((t+1)*e)}}}class es extends Gn{constructor(t,e){super(t,e),this.stride=t.stride}init(){return this.values=$n(),super.init()}set(t,e){super.set(t,e)&&this.values.write(t,e*this.stride)}done(){const{stride:t,values:e}=this;return{...super.done(),values:e.array(t*(this.index+1))}}}class ns extends Gn{constructor(t,e){super(t,e),this.child=e.builder(this.type.children[0].type),this.stride=t.stride}init(){return this.child.init(),super.init()}set(t,e){const{child:n,stride:s}=this,r=e*s;if(super.set(t,e))for(let e=0;e<s;++e)n.set(t[e],r+e);else n.index=r+s}done(){const{child:t}=this;return{...super.done(),children:[t.batch()]}}}class ss extends Gn{init(){return this.values=$n(this.type.values),super.init()}set(t,e){if(super.set(t,e)){const n=e<<1;this.values.set(t[0],n),this.values.set(t[1],n+1)}}done(){return{...super.done(),values:this.values.array(this.index+1<<1)}}}class rs extends Gn{init(){return this.values=$n(),super.init()}set(t,e){super.set(t,e)&&this.values.write(function([t,e,n]){return Et[0]=t,Et[1]=e,Ot[1]=Nt(n),Dt}(t),e<<4)}done(){return{...super.done(),values:this.values.array(this.index+1<<4)}}}class is extends Gn{constructor(t,e,n){super(t,e),this.child=n}init(){this.child.init();const t=this.type.offsets;return this.offsets=$n(t),this.toOffset=St(t),this.pos=0,super.init()}done(){return{...super.done(),offsets:this.offsets.array(this.index+2),children:[this.child.batch()]}}}class as extends is{constructor(t,e){super(t,e,e.builder(t.children[0].type))}set(t,e){const{child:n,offsets:s,toOffset:r}=this;super.set(t,e)&&t.forEach((t=>n.set(t,this.pos++))),s.set(r(this.pos),e+1)}}class cs extends Gn{constructor(t,e){super(t,e),this.children=t.children.map((t=>e.builder(t.type)))}init(){return this.children.forEach((t=>t.init())),super.init()}done(){const{children:t}=this;return t.forEach((t=>t.index=this.index)),{...super.done(),children:t.map((t=>t.batch()))}}}class us extends cs{constructor(t,e){super(t,e),this.setters=this.children.map(((e,n)=>{const s=t.children[n].name;return(t,n)=>e.set(t?.[s],n)}))}set(t,e){super.set(t,e);const n=this.setters;for(let s=0;s<n.length;++s)n[s](t,e)}}class os extends is{constructor(t,e){super(t,e,new ds(t.children[0].type,e))}set(t,e){const{child:n,offsets:s,toOffset:r}=this;if(super.set(t,e))for(const e of t)n.set(e,this.pos++);s.set(r(this.pos),e+1)}}class ds extends cs{set(t,e){super.set(t,e);const[n,s]=this.children;n.set(t[0],e),s.set(t[1],e)}}const ls={};class hs extends Wn{constructor(t,e){super(t,e),this.children=t.children.map((t=>e.builder(t.type)))}init(){return this.pos=0,this.key=null,this.value=ls,this.children.forEach((t=>t.init())),super.init()}next(){const[t,e]=this.children;t.set(this.index+1,this.pos),e.set(this.value,this.pos++)}set(t,e){if(t!==this.value){const e=$t(t);e!==this.key&&(this.key&&this.next(),this.key=e,this.value=t)}this.index=e}done(){this.next();const{children:t,index:e,type:n}=this;return{length:e+1,nullCount:0,type:n,children:t.map((t=>t.batch()))}}}class fs extends Wn{constructor(t,e){super(t,e),this.children=t.children.map((t=>e.builder(t.type))),this.typeMap=t.typeMap,this.lookup=t.typeIdForValue}init(){return this.nullCount=0,this.typeIds=$n(b),this.children.forEach((t=>t.init())),super.init()}set(t,e){const{children:n,lookup:s,typeMap:r,typeIds:i}=this;this.index=e;const a=s(t,e),c=n[r[a]];i.set(a,e),null==t&&++this.nullCount,this.update(t,e,c)}done(){const{children:t,nullCount:e,type:n,typeIds:s}=this,r=this.index+1;return{length:r,nullCount:e,type:n,typeIds:s.array(r),children:t.map((t=>t.batch()))}}}class ys extends fs{update(t,e,n){n.set(t,e),this.children.forEach((t=>{t!==n&&t.set(null,e)}))}}class ps extends fs{init(){return this.offsets=$n(this.type.offsets),super.init()}update(t,e,n){const s=n.index+1;n.set(t,s),this.offsets.set(s,e)}done(){return{...super.done(),offsets:this.offsets.array(this.index+1)}}}class bs extends Qn{set(t,e){super.set(t&&_t(t),e)}}class Is extends Gn{constructor(t,e){super(t,e),this.values=$n(t.values)}init(){return this.values=$n(this.type.values),super.init()}set(t,e){super.set(t,e)&&this.values.set(t,e)}done(){return{...super.done(),values:this.values.array(this.index+1)}}}class gs extends Is{set(t,e){super.set(null==t?t:Nt(t),e)}}class vs extends Is{constructor(t,e,n){super(t,e),this.transform=n}set(t,e){super.set(null==t?t:this.transform(t),e)}}function ws(t={},e=Jn()){return{batchType:e=>tn(e,t),builder(t){return ms(t,this)},dictionary(t){return e.get(t,this)},finish:()=>e.finish(t)}}function ms(t,e=ws()){const{typeId:n}=t;switch(n){case a.Int:case a.Time:case a.Duration:return D(t.values)?new gs(t,e):new Is(t,e);case a.Float:return t.precision?new Is(t,e):new vs(t,e,jt);case a.Binary:case a.LargeBinary:return new Qn(t,e);case a.Utf8:case a.LargeUtf8:return new bs(t,e);case a.Bool:return new Zn(t,e);case a.Decimal:return 32===t.bitWidth?new vs(t,e,(r=t.scale,t=>"bigint"==typeof t?Number(t):Math.trunc(t*r))):new ts(t,e);case a.Date:return new vs(t,e,t.unit?Nt:Bt);case a.Timestamp:return new vs(t,e,(s=t.unit)===o.SECOND?t=>Nt(t/1e3):s===o.MILLISECOND?Nt:s===o.MICROSECOND?t=>Nt(1e3*t):t=>Nt(1e6*t));case a.Interval:switch(t.unit){case d.DAY_TIME:return new ss(t,e);case d.MONTH_DAY_NANO:return new rs(t,e)}return new Is(t,e);case a.List:case a.LargeList:return new as(t,e);case a.Struct:return new us(t,e);case a.Union:return t.mode?new ps(t,e):new ys(t,e);case a.FixedSizeBinary:return new es(t,e);case a.FixedSizeList:return new ns(t,e);case a.Map:return new os(t,e);case a.RunEndEncoded:return new hs(t,e);case a.Dictionary:return new Xn(t,e)}var s,r;throw new Error(U(n))}function xs(t,e,n={},s){const r="function"==typeof t[Symbol.iterator]?e=>{for(const n of t)e(n)}:t;e??=qn(r);const{maxBatchRows:i=1/0,...c}=n;let u;if(e.typeId===a.Null){let t=0;r((()=>++t)),u=function(t,e,n){const s=[],r=e=>new oe({length:e,nullCount:e,type:t}),i=Math.floor(e/n);for(let t=0;t<i;++t)s.push(r(n));const a=e%n;a&&s.push(r(a));return s}(e,t,i)}else{const t=ws(c,s),n=ms(e,t).init(),a=t=>u.push(t.batch());u=[];let o=0;r((t=>{n.set(t,o++),o>=i&&(a(n),o=0)})),o&&a(n),t.finish()}return new Qe(u,e)}function Os(t,e,n={},s){return!e&&L(t)?function(t,{maxBatchRows:e,useBigInt:n}){const s=t.constructor,r=function(t){switch(t){case w:return K();case m:return Q();case b:return $();case I:return Y();case g:return P();case v:return H();case h:return W();case f:return G();case y:return J();case p:return X()}}(s),i=t.length,a=Math.min(e||1/0,i),c=Math.floor(i/a),u=[],o=D(s)&&!n?de:ae,d=(e,n)=>u.push(new o({length:n-e,nullCount:0,type:r,validity:new h(0),values:t.subarray(e,n)}));let l=0;for(let t=0;t<c;++t)d(l,l+=a);l<i&&d(l,i);return new Qe(u)}(t,n):xs((e=>t.forEach(e)),e,n,s)}function Ls(t,e){const n=[],i=Array.isArray(t)?t:Object.entries(t),a=i[0]?.[1].length,c=i.map((([t,e])=>{if(e.length!==a)throw new Error("All columns must have the same length.");return n.push(V(t,e.type)),e})),u={version:s.V5,endianness:r.Little,fields:n,metadata:null};return new Ze(u,c,e)}t.Batch=ie,t.Column=Qe,t.DateUnit=u,t.Endianness=r,t.IntervalUnit=d,t.Precision=c,t.Table=Ze,t.TimeUnit=o,t.Type=a,t.UnionMode=l,t.Version=s,t.batchType=tn,t.binary=Z,t.binaryView=()=>k(a.BinaryView),t.bool=et,t.columnFromArray=Os,t.columnFromValues=xs,t.date=st,t.dateDay=rt,t.dateMillisecond=()=>st(u.MILLISECOND),t.decimal=nt,t.decimal128=(t,e)=>nt(t,e,128),t.decimal256=(t,e)=>nt(t,e,256),t.decimal32=(t,e)=>nt(t,e,32),t.decimal64=(t,e)=>nt(t,e,64),t.dictionary=z,t.dictionaryContext=Jn,t.duration=yt,t.field=V,t.fixedSizeBinary=lt,t.fixedSizeList=ht,t.float=q,t.float16=()=>q(c.HALF),t.float32=K,t.float64=Q,t.int=_,t.int16=Y,t.int32=P,t.int64=H,t.int8=$,t.interval=ct,t.largeBinary=pt,t.largeList=It,t.largeListView=wt,t.largeUtf8=bt,t.list=ut,t.listView=vt,t.map=(t,e,n=!1)=>ft(n,V("entries",ot([j(t,"key",!1),j(e,"value")]),!1)),t.nullType=R,t.runEndEncoded=gt,t.struct=ot,t.tableFromArrays=function(t,e={}){const{types:n={},...s}=e,r=Jn();return Ls((Array.isArray(t)?t:Object.entries(t)).map((([t,e])=>[t,Os(e,n[t],s,r)])),e.useProxy)},t.tableFromColumns=Ls,t.tableFromIPC=function(t,e){return function(t,e={}){const{schema:n={fields:[]},dictionaries:s,records:r}=t,{version:i,fields:c}=n,u=new Map,o=function(t,e,n){const s={version:e,options:t,dictionary:t=>n.get(t)};return t=>{const{length:e,nodes:n,regions:r,variadic:i,body:a}=t;let c=-1,u=-1,o=-1;return{...s,length:e,node:()=>n[++c],buffer:t=>{const{length:e,offset:n}=r[++u];return t?new t(a.buffer,a.byteOffset+n,e/t.BYTES_PER_ELEMENT):a.subarray(n,n+e)},variadic:()=>i[++o],visit(t){return t.map((t=>vn(t.type,this)))}}}}(e,i,u),d=new Map;!function(t,e){t.fields.forEach((function t(n){e(n),n.type.dictionary?.children?.forEach(t),n.type.children?.forEach(t)}))}(n,(t=>{const e=t.type;e.typeId===a.Dictionary&&d.set(e.id,e.dictionary)}));const l=new Map;for(const t of s){const{id:e,data:n,isDelta:s,body:r}=t,i=d.get(e),a=vn(i,o({...n,body:r}));if(l.has(e)){const t=l.get(e);s||t.clear(),t.add(a)}else{if(s)throw new Error("Delta update can not be first dictionary batch.");l.set(e,Ke(i).add(a))}}l.forEach(((t,e)=>u.set(e,t.done())));const h=c.map((t=>Ke(t.type)));for(const t of r){const e=o(t);c.forEach(((t,n)=>h[n].add(vn(t.type,e))))}return new Ze(n,h.map((t=>t.done())),e.useProxy)}(gn(t),e)},t.tableToIPC=function(t,e){"string"==typeof e&&(e={format:e});const n=t.children;!function(t){const e=t[0]?.data.map((t=>t.length));t.forEach((({data:t})=>{if(t.length!==e.length||t.some(((t,n)=>t.length!==e[n])))throw new Error("Columns have inconsistent batch sizes.")}))}(n);const{dictionaries:s,idMap:r}=function(t){const e=[],n=new Map,s=new Map;let r=-1;const i=t=>{if(n.has(t))s.set(t.type,n.get(t));else{n.set(t,++r);for(let n=0;n<t.data.length;++n)e.push({id:r,isDelta:n>0,data:Rn([t],n)});s.set(t.type,r)}};return t.forEach((t=>zn(t.data[0],i))),{dictionaries:e,idMap:s}}(n),i=function(t){return(t[0]?.data||[]).map(((e,n)=>Rn(t,n)))}(n),c=function(t,e){if(!e.size)return t;const n=t=>{t.typeId===a.Dictionary&&(t.id=e.get(t.dictionary),r(t)),t.children&&(t.children=t.children.slice()).forEach(s)},s=(t,e,s)=>{const r={...t.type};s[e]={...t,type:r},n(r)},r=t=>{const e={...t.dictionary};t.dictionary=e,n(e)};return t={...t,fields:t.fields.slice()},t.fields.forEach(s),t}(t.schema,r);return jn({schema:c,dictionaries:s,records:i},e).finish()},t.time=it,t.timeMicrosecond=()=>it(o.MICROSECOND,64),t.timeMillisecond=()=>it(o.MILLISECOND,32),t.timeNanosecond=()=>it(o.NANOSECOND,64),t.timeSecond=()=>it(o.SECOND,32),t.timestamp=at,t.uint16=G,t.uint32=J,t.uint64=X,t.uint8=W,t.union=dt,t.utf8=tt,t.utf8View=()=>k(a.Utf8View)})); //# sourceMappingURL=flechette.min.js.map