UNPKG

@uwdata/flechette

Version:

Fast, lightweight access to Apache Arrow data.

3 lines (2 loc) 43.8 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}`}function Yt(t,e){return!!(t[e>>3]&1<<e%8)}function Pt(t,e){const n=e+Xt(t,e),s=n-Xt(t,n),r=Jt(t,s);return(e,i,a=null)=>{if(e<r){const r=Jt(t,s+e);if(r)return i(t,n+r)}return a}}function Ht(t,e){return e}function Wt(t,e){return!!function(t,e){return Gt(t,e)<<24>>24}(t,e)}function Gt(t,e){return t[e]}function Jt(t,e){return function(t,e){return t[e]|t[e+1]<<8}(t,e)<<16>>16}function Xt(t,e){return t[e]|t[e+1]<<8|t[e+2]<<16|t[e+3]<<24}function qt(t,e){return Xt(t,e)>>>0}function Kt(t,e){return Mt(BigInt.asIntN(64,BigInt(qt(t,e))+(BigInt(qt(t,e+4))<<32n)))}function Qt(t,e){let n=e+Xt(t,e);const s=Xt(t,n);return n+=4,Rt(t.subarray(n,n+s))}function Zt(t,e,n,s){if(!e)return[];const r=e+Xt(t,e);return Array.from({length:Xt(t,r)},(e,i)=>s(t,r+4+i*n))}const te=Symbol("rowIndex");function ee(t,e){class n{constructor(t){this[te]=t}toJSON(){return se(t,e,this[te])}}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[te])},enumerable:!0})}return t=>new n(t)}function ne(t,e){return n=>se(t,e,n)}function se(t,e,n){const s={};for(let r=0;r<t.length;++r)s[t[r]]=e[r].at(n);return s}class re{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 Yt(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 ie extends re{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 ae extends re{static ArrayType=m}class ce extends re{static ArrayType=Array}class ue extends ce{value(t){return null}}class oe extends ae{value(t){return Mt(this.values[t])}}class de extends ae{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 le extends ce{value(t){return Yt(this.values,t)}}class he extends ae{constructor(t){super(t);const{scale:e}=this.type;this.scale=10**e}value(t){return this.values[t]/this.scale}}class fe extends re{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 ye extends fe{static ArrayType=m;value(t){return Ct(this.decimal(this.values,t),this.scale)}}class pe extends fe{static ArrayType=Array;value(t){return this.decimal(this.values,t)}}class be extends ce{constructor(t){super(t),this.source=t}value(t){return new Date(this.source.value(t))}}class Ie extends ae{value(t){return 864e5*this.values[t]}}const ge=oe;class ve extends oe{value(t){return 1e3*super.value(t)}}const we=oe;class me extends oe{value(t){return Ct(this.values[t],1000n)}}class xe extends oe{value(t){return Ct(this.values[t],1000000n)}}class Oe extends ce{value(t){return this.values.subarray(t<<1,t+1<<1)}}class Le extends ce{value(t){const e=this.values,n=t<<4;return Float64Array.of(Xt(e,n),Xt(e,n+4),Kt(e,n+8))}}const Ee=({values:t,offsets:e},n)=>t.subarray(e[n],e[n+1]),De=({values:t,offsets:e},n)=>t.subarray(Mt(e[n]),Mt(e[n+1]));class Ae extends ce{value(t){return Ee(this,t)}}class Ne extends ce{value(t){return De(this,t)}}class Se extends ce{value(t){return Rt(Ee(this,t))}}class Be extends ce{value(t){return Rt(De(this,t))}}class Me extends ce{value(t){const e=this.offsets;return this.children[0].slice(e[t],e[t+1])}}class Ce extends ce{value(t){const e=this.offsets;return this.children[0].slice(Mt(e[t]),Mt(e[t+1]))}}class Ue extends ce{value(t){const e=this.offsets[t],n=e+this.sizes[t];return this.children[0].slice(e,n)}}class Ve extends ce{value(t){const e=this.offsets[t],n=e+this.sizes[t];return this.children[0].slice(Mt(e),Mt(n))}}class Te extends ce{constructor(t){super(t),this.stride=this.type.stride}}class Fe extends Te{value(t){const{stride:e,values:n}=this;return n.subarray(t*e,(t+1)*e)}}class je extends Te{value(t){const{children:e,stride:n}=this;return e[0].slice(t*n,(t+1)*n)}}function ke({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 ze extends ce{value(t){return ke(this,t)}}class Re extends ce{value(t){return new Map(ke(this,t))}}class _e extends ce{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 $e extends _e{value(t){return super.value(t,this.offsets[t])}}class Ye extends ce{constructor(t,e=ne){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 Pe extends Ye{constructor(t){super(t,ee)}}class He extends ce{value(t){const[{values:e},n]=this.children;return n.at(A(e,t))}}class We extends ce{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 Ge extends ce{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=Xt(i,s);return a>12&&(r=Xt(i,s+12),i=n[Xt(i,s+8)]),i.subarray(r,r+a)}}class Je extends Ge{value(t){return this.view(t)}}class Xe extends Ge{value(t){return Rt(this.view(t))}}function qe(t){let e=[];return{add(t){return e.push(t),this},clear:()=>e=[],done:()=>new Ke(e,t)}}class Ke{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 ie;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 Qe{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?ee:ne;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 Qe({...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===ee)}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 Ze(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 ue;case a.Bool:return le;case a.Int:case a.Time:case a.Duration:return c||s<64?ie:oe;case a.Float:return r?ie:de;case a.Date:return tn(i===u.DAY?Ie:ge,l&&be);case a.Timestamp:return tn(i===o.SECOND?ve:i===o.MILLISECOND?we:i===o.MICROSECOND?me:xe,l&&be);case a.Decimal:return 32===s?h?ie:he:h?pe:ye;case a.Interval:return i===d.DAY_TIME?Oe:i===d.YEAR_MONTH?ie:Le;case a.FixedSizeBinary:return Fe;case a.Utf8:return Se;case a.LargeUtf8:return Be;case a.Binary:return Ae;case a.LargeBinary:return Ne;case a.BinaryView:return Je;case a.Utf8View:return Xe;case a.List:return Me;case a.LargeList:return Ce;case a.Map:return f?Re:ze;case a.ListView:return Ue;case a.LargeListView:return Ve;case a.FixedSizeList:return je;case a.Struct:return y?Pe:Ye;case a.RunEndEncoded:return He;case a.Dictionary:return We;case a.Union:return t.mode?$e:_e}throw new Error(U(n))}function tn(t,e){return e?class extends e{constructor(e){super(new t(e))}}:t}function en(t,e){return{offset:Kt(t,e),metadataLength:Xt(t,e+8),bodyLength:Kt(t,e+16)}}function nn(t,e){return Zt(t,e,24,en)}function sn(t,e,n){const r=Pt(t,e);if(r(10,Ht,0))throw new Error("Record batch compression not implemented");const i=n<s.V4?8:0;return{length:r(4,Kt,0),nodes:Zt(t,r(6,Ht),16,(t,e)=>({length:Kt(t,e),nullCount:Kt(t,e+8)})),regions:Zt(t,r(8,Ht),16+i,(t,e)=>({offset:Kt(t,e+i),length:Kt(t,e+i+8)})),variadic:Zt(t,r(12,Ht),8,Kt)}}function rn(t,e,n){const s=Pt(t,e);return{id:s(4,Kt,0),data:s(6,(t,e)=>sn(t,e,n)),isDelta:s(8,Wt,!1)}}function an(t,e,n,s){M(n,a,U);const r=Pt(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,Xt,0),r(6,Wt,!1));case a.Float:return q(r(4,Jt,c.HALF));case a.Decimal:return nt(r(4,Xt,0),r(6,Xt,0),r(8,Xt,128));case a.Date:return st(r(4,Jt,u.MILLISECOND));case a.Time:return it(r(4,Jt,o.MILLISECOND),r(6,Xt,32));case a.Timestamp:return at(r(4,Jt,o.SECOND),r(6,Qt));case a.Interval:return ct(r(4,Jt,d.YEAR_MONTH));case a.Duration:return yt(r(4,Jt,o.MILLISECOND));case a.FixedSizeBinary:return lt(r(4,Xt,0));case a.FixedSizeList:return ht(s[0],r(4,Xt,0));case a.Map:return ft(r(4,Wt,!1),s[0]);case a.Union:return dt(r(4,Jt,l.Sparse),s,Zt(t,r(6,Ht),4,Xt))}return{typeId:n}}function cn(t,e){const n=Zt(t,e,4,(t,e)=>{const n=Pt(t,e);return[n(4,Qt),n(6,Qt)]});return n.length?new Map(n):null}function un(t,e,n){const s=Pt(t,e);return{version:n,endianness:s(4,Jt,0),fields:s(6,on,[]),metadata:s(8,cn)}}function on(t,e){return Zt(t,e,4,dn)}function dn(t,e){const n=Pt(t,e),s=n(8,Gt,a.NONE),r=n(10,Ht,0),i=n(12,ln),c=n(14,(t,e)=>function(t,e){const n=Zt(t,e,4,dn);return n.length?n:null}(t,e));let u=an(t,r,s,c);return i&&(i.dictionary=u,u=i),{name:n(4,Qt),type:u,nullable:n(6,Wt,!1),metadata:n(16,cn)}}function ln(t,e){if(!e)return null;const n=Pt(t,e);return z(null,n(6,hn,P()),n(8,Wt,!1),n(4,Kt,0))}function hn(t,e){return an(t,e,a.Int)}function fn(t,e){let n=Xt(t,e)||0;if(e+=4,-1===n&&(n=Xt(t,e)||0,e+=4),0===n)return null;const r=t.subarray(e,e+=n);if(r.byteLength<n)throw new Error((a=n,c=r.byteLength,`Expected to read ${a} metadata bytes, but only read ${c}.`));var a,c;const u=Pt(r,0),o=u(4,Jt,s.V1),d=u(6,Gt,i.NONE),l=u(8,Ht,0),h=u(10,Kt,0);let f;if(l){const n=d===i.Schema?un:d===i.DictionaryBatch?rn:d===i.RecordBatch?sn:null;if(!n)throw new Error((t=>`Unsupported message type: ${t} (${C(i,t)})`)(d));if(f=n(r,l,o),h>0){const n=t.subarray(e,e+=h);if(n.byteLength<h)throw new Error(((t,e)=>`Expected to read ${t} bytes for message body, but only read ${e}.`)(h,n.byteLength));f.body=n}}return{version:o,type:d,index:e,content:f}}function yn(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=Xt(t,n),i=Pt(t,n-r),a=i(4,Jt,s.V1),c=i(8,nn,[]),u=i(10,nn,[]);return{schema:i(6,(t,e)=>un(t,e,a)),dictionaries:c.map(({offset:e})=>fn(t,e).content),records:u.map(({offset:e})=>fn(t,e).content),metadata:i(12,cn)}}(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=fn(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 pn(t,e){const{typeId:n}=t,{length:r,options:i,node:c,buffer:u,variadic:o,version:d}=e,h=Ze(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 bn(t,e,n){t[e]=n,t[e+1]=n>>8,t[e+2]=n>>16,t[e+3]=n>>24}const In=1024;class gn{constructor(t){this.sink=t,this.minalign=1,this.buf=new Uint8Array(In),this.space=In,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){bn(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){vn(this,1,0),this.writeInt8(t)}addInt16(t){vn(this,2,0),this.writeInt16(t)}addInt32(t){vn(this,4,0),this.writeInt32(t)}addInt64(t){vn(this,8,0),this.writeInt64(t)}addOffset(t){vn(this,4,0),this.writeInt32(this.offset()-t+4)}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==Jt(d,t)){for(let e=2;e<u;e+=2)if(Jt(d,h+e)!=Jt(d,t+e))continue t;o=l[i];break}}if(o)t.space=d.length-r,bn(d,t.space,o-r);else{const e=t.offset();l.push(e),bn(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;vn(this,4,e*r),vn(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),vn(this,4,n),this.buf.set(e,this.space-=n),this.writeInt32(n),this.offset()}finish(t){vn(this,this.minalign,4),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(In),this.space=In}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 vn(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 wn(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 mn(t,e){const n=wn(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 xn(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 On(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,On(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 Ln=1===new Uint16Array(new Uint8Array([1,0]).buffer)[0];function En(t,e){const{fields:n,metadata:s}=e,r=n.map(e=>Dn(t,e)),i=t.addOffsetVector(r),a=xn(t,s);return t.addObject(4,t=>{t.addInt16(0,+!Ln,0),t.addOffset(1,i,0),t.addOffset(2,a,0)})}function Dn(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=On(t,r);else{const e=r.dictionary;c=e.typeId,o=On(t,r),u=On(t,e)}const d=(r.children||[]).map(e=>Dn(t,e)),l=t.addOffsetVector(d),h=xn(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 An(t,{offset:e,metadataLength:n,bodyLength:s}){return t.writeInt64(s),t.writeInt32(0),t.writeInt32(n),t.writeInt64(e),t.offset()}function Nn(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 Sn{write(t){}pad(t){this.write(new Uint8Array(t))}finish(){return null}}class Bn extends Sn{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 Mn="stream",Cn="file";function Un(t,{sink:r,format:a=Mn}={}){if(a!==Mn&&a!==Cn)throw new Error(`Unrecognized Arrow IPC format: ${a}`);const{schema:c,dictionaries:u=[],records:o=[],metadata:d}=t,l=new gn(r||new Bn),h=a===Cn,f=[],y=[];h&&l.addBuffer(e),c&&Nn(l,i.Schema,En(l,c),0);for(const t of u){const{data:e}=t;Nn(l,i.DictionaryBatch,mn(l,t),e.byteLength,f),Vn(l,e.buffers)}for(const t of o)Nn(l,i.RecordBatch,wn(l,t),t.byteLength,y),Vn(l,t.buffers);return l.addBuffer(n),h&&function(t,n,r,i,a){const c=xn(t,a),u=t.addVector(i,24,8,An),o=t.addVector(r,24,8,An),d=En(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 Vn(t,e){for(let n=0;n<e.length;++n)t.addBuffer(e[n])}function Tn(t,e){if(t?.type.typeId===a.Dictionary){const n=t.dictionary;e(n),Tn(n.data[0],e)}t?.children?.forEach(t=>Tn(t,e))}function Fn(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)=>{jn(t.type,e.children[n],this)})},done:()=>({byteLength:t,nodes:e,regions:n,variadic:r,buffers:s})}}();return t.forEach(t=>{jn(t.type,t.data[e],n)}),n.done()}function jn(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 kn(t){return new zn(t)}class zn{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 Rn(){return new _n}class _n extends zn{set(t){const e=t>>3;this.prep(e),this.buf[e]|=1<<t%8}}class $n{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 Yn extends $n{constructor(t,e){super(t,e)}init(){return this.nullCount=0,this.validity=Rn(),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 Pn(){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(Ze(t.dictionary,e))(s.done()),i=new Ke([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 Hn extends Yn{constructor(t,e){super(t,e),this.dict=e.dictionary(t)}init(){return this.values=kn(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 Wn(t){const e=Gn();return t(t=>e.add(t)),e.type()}function Gn(){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??=Gn(),v.forEach(n.add)}else{f++;for(const t in v){(g[t]??(g[t]=Gn())).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 Jn extends Yn{constructor(t,e){super(t,e),this.toOffset=St(t.offsets)}init(){return this.offsets=kn(this.type.offsets),this.values=kn(),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 Xn extends Yn{constructor(t,e){super(t,e)}init(){return this.values=Rn(),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 qn extends Yn{constructor(t,e){super(t,e),this.scale=10**t.scale,this.stride=t.bitWidth>>6}init(){return this.values=kn(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 Kn extends Yn{constructor(t,e){super(t,e),this.stride=t.stride}init(){return this.values=kn(),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 Qn extends Yn{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 Zn extends Yn{init(){return this.values=kn(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 ts extends Yn{init(){return this.values=kn(),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 es extends Yn{constructor(t,e,n){super(t,e),this.child=n}init(){this.child.init();const t=this.type.offsets;return this.offsets=kn(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 ns extends es{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 ss extends Yn{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 rs extends ss{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 is extends es{constructor(t,e){super(t,e,new as(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 as extends ss{set(t,e){super.set(t,e);const[n,s]=this.children;n.set(t[0],e),s.set(t[1],e)}}const cs={};class us extends $n{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=cs,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 os extends $n{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=kn(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 ds extends os{update(t,e,n){n.set(t,e),this.children.forEach(t=>{t!==n&&t.set(null,e)})}}class ls extends os{init(){return this.offsets=kn(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 hs extends Jn{set(t,e){super.set(t&&_t(t),e)}}class fs extends Yn{constructor(t,e){super(t,e),this.values=kn(t.values)}init(){return this.values=kn(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 ys extends fs{set(t,e){super.set(null==t?t:Nt(t),e)}}class ps extends fs{constructor(t,e,n){super(t,e),this.transform=n}set(t,e){super.set(null==t?t:this.transform(t),e)}}function bs(t={},e=Pn()){return{batchType:e=>Ze(e,t),builder(t){return Is(t,this)},dictionary(t){return e.get(t,this)},finish:()=>e.finish(t)}}function Is(t,e=bs()){const{typeId:n}=t;switch(n){case a.Int:case a.Time:case a.Duration:return D(t.values)?new ys(t,e):new fs(t,e);case a.Float:return t.precision?new fs(t,e):new ps(t,e,jt);case a.Binary:case a.LargeBinary:return new Jn(t,e);case a.Utf8:case a.LargeUtf8:return new hs(t,e);case a.Bool:return new Xn(t,e);case a.Decimal:return 32===t.bitWidth?new ps(t,e,(r=t.scale,t=>"bigint"==typeof t?Number(t):Math.trunc(t*r))):new qn(t,e);case a.Date:return new ps(t,e,t.unit?Nt:Bt);case a.Timestamp:return new ps(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 Zn(t,e);case d.MONTH_DAY_NANO:return new ts(t,e)}return new fs(t,e);case a.List:case a.LargeList:return new ns(t,e);case a.Struct:return new rs(t,e);case a.Union:return t.mode?new ls(t,e):new ds(t,e);case a.FixedSizeBinary:return new Kn(t,e);case a.FixedSizeList:return new Qn(t,e);case a.Map:return new is(t,e);case a.RunEndEncoded:return new us(t,e);case a.Dictionary:return new Hn(t,e)}var s,r;throw new Error(U(n))}function gs(t,e,n={},s){const r="function"==typeof t[Symbol.iterator]?e=>{for(const n of t)e(n)}:t;e??=Wn(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 ue({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=bs(c,s),n=Is(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 Ke(u,e)}function vs(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?oe:ie,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 Ke(u)}(t,n):gs(e=>t.forEach(e),e,n,s)}function ws(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});return new Qe({version:s.V5,endianness:r.Little,fields:n,metadata:null},c,e)}t.Batch=re,t.Column=Ke,t.DateUnit=u,t.Endianness=r,t.IntervalUnit=d,t.Precision=c,t.Table=Qe,t.TimeUnit=o,t.Type=a,t.UnionMode=l,t.Version=s,t.batchType=Ze,t.binary=Z,t.binaryView=()=>k(a.BinaryView),t.bool=et,t.columnFromArray=vs,t.columnFromValues=gs,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=Pn,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=Pn();return ws((Array.isArray(t)?t:Object.entries(t)).map(([t,e])=>[t,vs(e,n[t],s,r)]),e.useProxy)},t.tableFromColumns=ws,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=>pn(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=pn(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,qe(i).add(a))}}l.forEach((t,e)=>u.set(e,t.done()));const h=c.map(t=>qe(t.type));for(const t of r){const e=o(t);c.forEach((t,n)=>h[n].add(pn(t.type,e)))}return new Qe(n,h.map(t=>t.done()),e.useProxy)}(yn(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:Fn([t],n)});s.set(t.type,r)}};return t.forEach(t=>Tn(t.data[0],i)),{dictionaries:e,idMap:s}}(n),i=function(t){return(t[0]?.data||[]).map((e,n)=>Fn(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 Un({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