@loaders.gl/schema 4.3.0-alpha.8 → 4.3.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/dist.dev.js CHANGED
@@ -105,6 +105,7 @@ var __exports__ = (() => {
105
105
  getMeshBoundingBox: () => getMeshBoundingBox,
106
106
  getMeshSize: () => getMeshSize,
107
107
  getTableCell: () => getTableCell,
108
+ getTableCellAt: () => getTableCellAt,
108
109
  getTableColumnIndex: () => getTableColumnIndex,
109
110
  getTableColumnName: () => getTableColumnName,
110
111
  getTableLength: () => getTableLength,
@@ -678,6 +679,27 @@ var __exports__ = (() => {
678
679
  throw new Error("todo");
679
680
  }
680
681
  }
682
+ function getTableCellAt(table, rowIndex, columnIndex) {
683
+ switch (table.shape) {
684
+ case "array-row-table":
685
+ return table.data[rowIndex][columnIndex];
686
+ case "object-row-table":
687
+ const columnName1 = getTableColumnName(table, columnIndex);
688
+ return table.data[rowIndex][columnName1];
689
+ case "geojson-table":
690
+ const columnName2 = getTableColumnName(table, columnIndex);
691
+ return table.features[rowIndex][columnName2];
692
+ case "columnar-table":
693
+ const columnName3 = getTableColumnName(table, columnIndex);
694
+ const column = table.data[columnName3];
695
+ return column[rowIndex];
696
+ case "arrow-table":
697
+ const arrowTable = table.data;
698
+ return arrowTable.getChildAt(columnIndex)?.get(rowIndex);
699
+ default:
700
+ throw new Error("todo");
701
+ }
702
+ }
681
703
  function getTableRowShape(table) {
682
704
  switch (table.shape) {
683
705
  case "array-row-table":
package/dist/dist.min.js CHANGED
@@ -4,6 +4,6 @@
4
4
  else if (typeof define === 'function' && define.amd) define([], factory);
5
5
  else if (typeof exports === 'object') exports['loaders'] = factory();
6
6
  else root['loaders'] = factory();})(globalThis, function () {
7
- "use strict";var __exports__=(()=>{var Kt=Object.create;var F=Object.defineProperty;var Qt=Object.getOwnPropertyDescriptor;var te=Object.getOwnPropertyNames;var ee=Object.getPrototypeOf,re=Object.prototype.hasOwnProperty;var se=(t,e,r)=>e in t?F(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var ae=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),oe=(t,e)=>{for(var r in e)F(t,r,{get:e[r],enumerable:!0})},M=(t,e,r,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of te(e))!re.call(t,a)&&a!==r&&F(t,a,{get:()=>e[a],enumerable:!(s=Qt(e,a))||s.enumerable});return t},U=(t,e,r)=>(M(t,e,"default"),r&&M(r,e,"default")),ne=(t,e,r)=>(r=t!=null?Kt(ee(t)):{},M(e||!t||!t.__esModule?F(r,"default",{value:t,enumerable:!0}):r,t)),ie=t=>M(F({},"__esModule",{value:!0}),t);var Bt=(t,e,r)=>(se(t,typeof e!="symbol"?e+"":e,r),r);var Dt=ae((Se,Ct)=>{Ct.exports=globalThis.loaders});var C={};oe(C,{ArrowLikeDataType:()=>m,ArrowLikeField:()=>p,ArrowLikeSchema:()=>d,ArrowLikeTable:()=>q,AsyncQueue:()=>B,Binary:()=>ot,Bool:()=>J,ColumnarTableBatchAggregator:()=>S,Date:()=>I,DateDay:()=>it,DateMillisecond:()=>ct,FixedSizeList:()=>wt,Float:()=>x,Float16:()=>rt,Float32:()=>st,Float64:()=>at,Int:()=>f,Int16:()=>G,Int32:()=>X,Int64:()=>Z,Int8:()=>V,Interval:()=>O,IntervalDayTime:()=>pt,IntervalYearMonth:()=>gt,Null:()=>H,RowTableBatchAggregator:()=>A,Struct:()=>bt,TableBatchBuilder:()=>R,Time:()=>T,TimeMillisecond:()=>ut,TimeSecond:()=>lt,Timestamp:()=>b,TimestampMicrosecond:()=>dt,TimestampMillisecond:()=>mt,TimestampNanosecond:()=>ft,TimestampSecond:()=>ht,Uint16:()=>Q,Uint32:()=>tt,Uint64:()=>et,Uint8:()=>K,Utf8:()=>nt,convertTable:()=>Jt,convertToArrayRow:()=>W,convertToObjectRow:()=>$,deduceMeshField:()=>Ot,deduceMeshSchema:()=>Xt,deduceTableSchema:()=>w,getArrayTypeFromDataType:()=>L,getDataTypeFromArray:()=>v,getMeshBoundingBox:()=>Gt,getMeshSize:()=>Vt,getTableCell:()=>j,getTableColumnIndex:()=>St,getTableColumnName:()=>Lt,getTableLength:()=>h,getTableNumCols:()=>P,getTableRowAsArray:()=>E,getTableRowAsObject:()=>N,getTableRowShape:()=>vt,getTypeInfo:()=>Zt,isTable:()=>kt,makeArrayRowIterator:()=>jt,makeBatchFromTable:()=>Pt,makeMeshAttributeMetadata:()=>Ft,makeObjectRowIterator:()=>It,makeRowIterator:()=>zt,makeTableFromBatches:()=>qt,makeTableFromData:()=>Yt});U(C,ne(Dt(),1));function k(t,e="float32"){return t instanceof Date?"date-millisecond":t instanceof Number?e:typeof t=="string"?"utf8":(t===null||t==="undefined","null")}function v(t){let e=At(t);return e!=="null"?{type:e,nullable:!1}:t.length>0?(e=k(t[0]),{type:e,nullable:!0}):{type:"null",nullable:!0}}function At(t){switch(t.constructor){case Int8Array:return"int8";case Uint8Array:case Uint8ClampedArray:return"uint8";case Int16Array:return"int16";case Uint16Array:return"uint16";case Int32Array:return"int32";case Uint32Array:return"uint32";case Float32Array:return"float32";case Float64Array:return"float64";default:return"null"}}function L(t,e){if(!e)switch(t){case"int8":return Int8Array;case"uint8":return Uint8Array;case"int16":return Int16Array;case"uint16":return Uint16Array;case"int32":return Int32Array;case"uint32":return Uint32Array;case"float32":return Float32Array;case"float64":return Float64Array;default:break}return Array}var z=class{schema;options;shape;length=0;rows=null;cursor=0;_headers=[];constructor(e,r){if(this.options=r,this.schema=e,!Array.isArray(e)){this._headers=[];for(let s in e)this._headers[e[s].index]=e[s].name}}rowCount(){return this.length}addArrayRow(e,r){Number.isFinite(r)&&(this.cursor=r),this.shape="array-row-table",this.rows=this.rows||new Array(100),this.rows[this.length]=e,this.length++}addObjectRow(e,r){Number.isFinite(r)&&(this.cursor=r),this.shape="object-row-table",this.rows=this.rows||new Array(100),this.rows[this.length]=e,this.length++}getBatch(){let e=this.rows;return e?(e=e.slice(0,this.length),this.rows=null,{shape:this.shape||"array-row-table",batchType:"data",data:e,length:this.length,schema:this.schema,cursor:this.cursor}):null}};function $(t,e){if(!t)throw new Error("null row");let r={};if(e)for(let s=0;s<e.length;s++)r[e[s]]=t[s];else for(let s=0;s<t.length;s++){let a=`column-${s}`;r[a]=t[s]}return r}function W(t,e){if(!t)throw new Error("null row");if(e){let r=new Array(e.length);for(let s=0;s<e.length;s++)r[s]=t[e[s]];return r}return Object.values(t)}function _t(t){let e=[];for(let r=0;r<t.length;r++){let s=`column-${r}`;e.push(s)}return e}function Mt(t){return Object.keys(t)}var Ut=100,A=class{schema;options;length=0;objectRows=null;arrayRows=null;cursor=0;_headers=null;constructor(e,r){if(this.options=r,this.schema=e,e){this._headers=[];for(let s in e)this._headers[e[s].index]=e[s].name}}rowCount(){return this.length}addArrayRow(e,r){switch(Number.isFinite(r)&&(this.cursor=r),this._headers||=_t(e),this.options.shape){case"object-row-table":let s=$(e,this._headers);this.addObjectRow(s,r);break;case"array-row-table":this.arrayRows=this.arrayRows||new Array(Ut),this.arrayRows[this.length]=e,this.length++;break}}addObjectRow(e,r){switch(Number.isFinite(r)&&(this.cursor=r),this._headers||=Mt(e),this.options.shape){case"array-row-table":let s=W(e,this._headers);this.addArrayRow(s,r);break;case"object-row-table":this.objectRows=this.objectRows||new Array(Ut),this.objectRows[this.length]=e,this.length++;break}}getBatch(){let e=this.arrayRows||this.objectRows;return e?(e=e.slice(0,this.length),this.arrayRows=null,this.objectRows=null,{shape:this.options.shape,batchType:"data",data:e,length:this.length,schema:this.schema,cursor:this.cursor}):null}};var S=class{schema;length=0;allocated=0;columns={};constructor(e,r){this.schema=e,this._reallocateColumns()}rowCount(){return this.length}addArrayRow(e){this._reallocateColumns();let r=0;for(let s in this.columns)this.columns[s][this.length]=e[r++];this.length++}addObjectRow(e){this._reallocateColumns();for(let r in e)this.columns[r][this.length]=e[r];this.length++}getBatch(){this._pruneColumns();let e=Array.isArray(this.schema)?this.columns:{};if(!Array.isArray(this.schema))for(let s in this.schema){let a=this.schema[s];e[a.name]=this.columns[a.index]}return this.columns={},{shape:"columnar-table",batchType:"data",data:e,schema:this.schema,length:this.length}}_reallocateColumns(){if(!(this.length<this.allocated)){this.allocated=this.allocated>0?this.allocated*=2:100,this.columns={};for(let e in this.schema){let r=this.schema[e],s=r.type||Float32Array,a=this.columns[r.index];if(a&&ArrayBuffer.isView(a)){let u=new s(this.allocated);u.set(a),this.columns[r.index]=u}else a?(a.length=this.allocated,this.columns[r.index]=a):this.columns[r.index]=new s(this.allocated)}}}_pruneColumns(){for(let[e,r]of Object.entries(this.columns))this.columns[e]=r.slice(0,this.length)}};var ce={shape:void 0,batchSize:"auto",batchDebounceMs:0,limit:0,_limitMB:0},le="TableBatchBuilder",Y=class{schema;options;aggregator=null;batchCount=0;bytesUsed=0;isChunkComplete=!1;lastBatchEmittedMs=Date.now();totalLength=0;totalBytes=0;rowBytes=0;constructor(e,r){this.schema=e,this.options={...ce,...r}}limitReached(){return!!(Boolean(this.options?.limit)&&this.totalLength>=this.options.limit||Boolean(this.options?._limitMB)&&this.totalBytes/1e6>=this.options._limitMB)}addRow(e){this.limitReached()||(this.totalLength++,this.rowBytes=this.rowBytes||this._estimateRowMB(e),this.totalBytes+=this.rowBytes,Array.isArray(e)?this.addArrayRow(e):this.addObjectRow(e))}addArrayRow(e){if(!this.aggregator){let r=this._getTableBatchType();this.aggregator=new r(this.schema,this.options)}this.aggregator.addArrayRow(e)}addObjectRow(e){if(!this.aggregator){let r=this._getTableBatchType();this.aggregator=new r(this.schema,this.options)}this.aggregator.addObjectRow(e)}chunkComplete(e){e instanceof ArrayBuffer&&(this.bytesUsed+=e.byteLength),typeof e=="string"&&(this.bytesUsed+=e.length),this.isChunkComplete=!0}getFullBatch(e){return this._isFull()?this._getBatch(e):null}getFinalBatch(e){return this._getBatch(e)}_estimateRowMB(e){return Array.isArray(e)?e.length*8:Object.keys(e).length*8}_isFull(){if(!this.aggregator||this.aggregator.rowCount()===0)return!1;if(this.options.batchSize==="auto"){if(!this.isChunkComplete)return!1}else if(this.options.batchSize>this.aggregator.rowCount())return!1;return this.options.batchDebounceMs>Date.now()-this.lastBatchEmittedMs?!1:(this.isChunkComplete=!1,this.lastBatchEmittedMs=Date.now(),!0)}_getBatch(e){if(!this.aggregator)return null;e?.bytesUsed&&(this.bytesUsed=e.bytesUsed);let r=this.aggregator.getBatch();return r.count=this.batchCount,r.bytesUsed=this.bytesUsed,Object.assign(r,e),this.batchCount++,this.aggregator=null,r}_getTableBatchType(){switch(this.options.shape){case"array-row-table":case"object-row-table":return A;case"columnar-table":return S;case"arrow-table":if(!Y.ArrowBatch)throw new Error(le);return Y.ArrowBatch;default:return z}}},R=Y;Bt(R,"ArrowBatch");function kt(t){switch(typeof t=="object"&&t?.shape){case"array-row-table":case"object-row-table":return Array.isArray(t.data);case"geojson-table":return Array.isArray(t.features);case"columnar-table":return t.data&&typeof t.data=="object";case"arrow-table":return Boolean(t?.data?.numRows!==void 0);default:return!1}}function h(t){switch(t.shape){case"array-row-table":case"object-row-table":return t.data.length;case"geojson-table":return t.features.length;case"arrow-table":return t.data.numRows;case"columnar-table":for(let r of Object.values(t.data))return r.length||0;return 0;default:throw new Error("table")}}function P(t){if(t.schema)return t.schema.fields.length;if(h(t)===0)throw new Error("empty table");switch(t.shape){case"array-row-table":return t.data[0].length;case"object-row-table":return Object.keys(t.data[0]).length;case"geojson-table":return Object.keys(t.features[0]).length;case"columnar-table":return Object.keys(t.data).length;case"arrow-table":return t.data.numCols;default:throw new Error("table")}}function j(t,e,r){switch(t.shape){case"array-row-table":let s=St(t,r);return t.data[e][s];case"object-row-table":return t.data[e][r];case"geojson-table":return t.features[e][r];case"columnar-table":return t.data[r][e];case"arrow-table":let u=t.data,c=u.schema.fields.findIndex(l=>l.name===r);return u.getChildAt(c)?.get(e);default:throw new Error("todo")}}function vt(t){switch(t.shape){case"array-row-table":case"object-row-table":return t.shape;case"geojson-table":return"object-row-table";case"columnar-table":default:throw new Error("Not a row table")}}function St(t,e){let r=t.schema?.fields.findIndex(s=>s.name===e);if(r===void 0)throw new Error(e);return r}function Lt(t,e){let r=t.schema?.fields[e]?.name;if(!r)throw new Error(`${e}`);return r}function N(t,e,r,s){switch(t.shape){case"object-row-table":return s?Object.fromEntries(Object.entries(t.data[e])):t.data[e];case"array-row-table":if(t.schema){let o=r||{};for(let n=0;n<t.schema.fields.length;n++)o[t.schema.fields[n].name]=t.data[e][n];return o}throw new Error("no schema");case"geojson-table":if(t.schema){let o=r||{};for(let n=0;n<t.schema.fields.length;n++)o[t.schema.fields[n].name]=t.features[e][n];return o}throw new Error("no schema");case"columnar-table":if(t.schema){let o=r||{};for(let n=0;n<t.schema.fields.length;n++)o[t.schema.fields[n].name]=t.data[t.schema.fields[n].name][e];return o}else{let o=r||{};for(let[n,g]of Object.entries(t.data))o[n]=g[e];return o}case"arrow-table":let a=t.data,u=r||{},c=a.get(e),l=a.schema;for(let o=0;o<l.fields.length;o++)u[l.fields[o].name]=c?.[l.fields[o].name];return u;default:throw new Error("shape")}}function E(t,e,r,s){switch(t.shape){case"array-row-table":return s?Array.from(t.data[e]):t.data[e];case"object-row-table":if(t.schema){let o=r||[];for(let n=0;n<t.schema.fields.length;n++)o[n]=t.data[e][t.schema.fields[n].name];return o}return Object.values(t.data[e]);case"geojson-table":if(t.schema){let o=r||[];for(let n=0;n<t.schema.fields.length;n++)o[n]=t.features[e][t.schema.fields[n].name];return o}return Object.values(t.features[e]);case"columnar-table":if(t.schema){let o=r||[];for(let n=0;n<t.schema.fields.length;n++)o[n]=t.data[t.schema.fields[n].name][e];return o}else{let o=r||[],n=0;for(let g of Object.values(t.data))o[n]=g[e],n++;return o}case"arrow-table":let a=t.data,u=r||[],c=a.get(e),l=a.schema;for(let o=0;o<l.fields.length;o++)u[o]=c?.[l.fields[o].name];return u;default:throw new Error("shape")}}function*zt(t,e){switch(e){case"array-row-table":yield*jt(t);break;case"object-row-table":yield*It(t);break;default:throw new Error(`Unknown row type ${e}`)}}function*jt(t,e=[]){let r=h(t);for(let s=0;s<r;s++)yield E(t,s,e)}function*It(t,e={}){let r=h(t);for(let s=0;s<r;s++)yield N(t,s,e)}var p=class{name;type;nullable;metadata;constructor(e,r,s=!1,a=new Map){this.name=e,this.type=r,this.nullable=s,this.metadata=a}get typeId(){return this.type&&this.type.typeId}clone(){return new p(this.name,this.type,this.nullable,this.metadata)}compareTo(e){return this.name===e.name&&this.type===e.type&&this.nullable===e.nullable&&this.metadata===e.metadata}toString(){return`${JSON.stringify(this.type)}${this.nullable?", nullable":""}${this.metadata?`, metadata: ${JSON.stringify(this.metadata)}`:""}`}};var d=class{fields;metadata;constructor(e,r=new Map){this.fields=e.map(s=>new p(s.name,s.type,s.nullable,s.metadata)),this.metadata=r instanceof Map?r:new Map(Object.entries(r))}compareTo(e){if(this.metadata!==e.metadata||this.fields.length!==e.fields.length)return!1;for(let r=0;r<this.fields.length;++r)if(!this.fields[r].compareTo(e.fields[r]))return!1;return!0}select(...e){let r=Object.create(null);for(let a of e)r[a]=!0;let s=this.fields.filter(a=>r[a.name]);return new d(s,this.metadata)}selectAt(...e){let r=e.map(s=>this.fields[s]).filter(Boolean);return new d(r,this.metadata)}assign(e){let r,s=this.metadata;if(e instanceof d){let c=e;r=c.fields,s=$t($t(new Map,this.metadata),c.metadata)}else r=e;let a=Object.create(null);for(let c of this.fields)a[c.name]=c;for(let c of r)a[c.name]=c;let u=Object.values(a);return new d(u,s)}};function $t(t,e){return new Map([...t||new Map,...e||new Map])}function w(t){switch(t.shape){case"array-row-table":case"object-row-table":return he(t.data);case"geojson-table":return me(t.features);case"columnar-table":return ue(t.data);case"arrow-table":default:throw new Error("Deduce schema")}}function ue(t){let e=[];for(let[r,s]of Object.entries(t)){let a=de(s,r);e.push(a)}return{fields:e,metadata:{}}}function he(t){if(!t.length)throw new Error("deduce from empty table");let e=[],r=t[0];for(let[s,a]of Object.entries(r))e.push(Wt(a,s));return{fields:e,metadata:{}}}function me(t){if(!t.length)throw new Error("deduce from empty table");let e=[],r=t[0].properties||{};for(let[s,a]of Object.entries(r))e.push(Wt(a,s));return{fields:e,metadata:{}}}function de(t,e){if(ArrayBuffer.isView(t)){let r=v(t);return{name:e,type:r.type||"null",nullable:r.nullable}}if(Array.isArray(t)&&t.length>0){let r=t[0],s=k(r);return{name:e,type:s,nullable:!0}}throw new Error("empty table")}function Wt(t,e){let r=k(t);return{name:e,type:r,nullable:!0}}var Tt=class{table;columnName;constructor(e,r){this.table=e,this.columnName=r}get(e){return j(this.table,e,this.columnName)}toArray(){switch(this.table.shape){case"arrow-table":return this.table.data.getChild(this.columnName)?.toArray();case"columnar-table":return this.table.data[this.columnName];default:throw new Error(this.table.shape)}}},q=class{schema;table;constructor(e){let r=e.schema||w(e);this.schema=new d(r.fields,r.metadata),this.table={...e,schema:r}}get data(){return this.table.shape==="geojson-table"?this.table.features:this.table.data}get numCols(){return P(this.table)}get length(){return h(this.table)}getChild(e){return new Tt(this.table,e)}};function Yt(t){let e;switch(fe(t)){case"array-row-table":e={shape:"array-row-table",data:t};break;case"object-row-table":e={shape:"object-row-table",data:t};break;case"columnar-table":e={shape:"columnar-table",data:t};break;default:throw new Error("table")}let r=w(e);return{...e,schema:r}}function fe(t){if(Array.isArray(t)){if(t.length===0)throw new Error("cannot deduce type of empty table");let e=t[0];if(Array.isArray(e))return"array-row-table";if(e&&typeof e=="object")return"object-row-table"}if(t&&typeof t=="object")return"columnar-table";throw new Error("invalid table")}function Pt(t){return{...t,length:h(t),batchType:"data"}}async function qt(t){let e,r,s,a=null,u;for await(let c of t)switch(a=a||c.shape,u=u||c.schema,c.shape){case"array-row-table":e=e||[];for(let l=0;l<h(c);l++){let o=c.data[l];e.push(o)}break;case"object-row-table":r=r||[];for(let l=0;l<h(c);l++){let o=c.data[l];r.push(o)}break;case"geojson-table":s=s||[];for(let l=0;l<h(c);l++){let o=c.features[l];s.push(o)}break;case"columnar-table":case"arrow-table":default:throw new Error("shape")}if(!a)return null;switch(a){case"array-row-table":return{shape:"array-row-table",data:e,schema:u};case"object-row-table":return{shape:"object-row-table",data:r,schema:u};case"geojson-table":return{shape:"geojson-table",type:"FeatureCollection",features:s,schema:u};default:return null}}function Ht(t,e){let r=L(t.type,t.nullable);return new r(e)}function Jt(t,e){switch(e){case"object-row-table":return be(t);case"array-row-table":return we(t);case"columnar-table":return ge(t);case"arrow-table":return pe(t);default:throw new Error(e)}}function pe(t){let e=globalThis.__loaders?._makeArrowTable;if(!e)throw new Error("");return e(t)}function ge(t){let e=t.schema||w(t),r=t.schema?.fields||[];if(t.shape==="columnar-table")return{...t,schema:e};let s=h(t),a={};for(let u of r){let c=Ht(u,s);a[u.name]=c;for(let l=0;l<s;l++)c[l]=j(t,l,u.name)}return{shape:"columnar-table",schema:e,data:a}}function we(t){if(t.shape==="array-row-table")return t;let e=h(t),r=new Array(e);for(let s=0;s<e;s++)r[s]=E(t,s);return{shape:"array-row-table",schema:t.schema,data:r}}function be(t){if(t.shape==="object-row-table")return t;let e=h(t),r=new Array(e);for(let s=0;s<e;s++)r[s]=N(t,s);return{shape:"object-row-table",schema:t.schema,data:r}}function Vt(t){let e=0;for(let r in t){let s=t[r];ArrayBuffer.isView(s)&&(e+=s.byteLength*s.BYTES_PER_ELEMENT)}return e}function Gt(t){let e=1/0,r=1/0,s=1/0,a=-1/0,u=-1/0,c=-1/0,l=t.POSITION?t.POSITION.value:[],o=l&&l.length;for(let n=0;n<o;n+=3){let g=l[n],D=l[n+1],_=l[n+2];e=g<e?g:e,r=D<r?D:r,s=_<s?_:s,a=g>a?g:a,u=D>u?D:u,c=_>c?_:c}return[[e,r,s],[a,u,c]]}function Xt(t,e={}){return{fields:ye(t),metadata:e}}function Ot(t,e,r){let s=At(e.value),a=r||Ft(e);return{name:t,type:{type:"fixed-size-list",listSize:e.size,children:[{name:"value",type:s}]},nullable:!1,metadata:a}}function ye(t){let e=[];for(let r in t){let s=t[r];e.push(Ot(r,s))}return e}function Ft(t){let e={};return"byteOffset"in t&&(e.byteOffset=t.byteOffset.toString(10)),"byteStride"in t&&(e.byteStride=t.byteStride.toString(10)),"normalized"in t&&(e.normalized=t.normalized.toString()),e}var i;(function(t){t[t.NONE=0]="NONE",t[t.Null=1]="Null",t[t.Int=2]="Int",t[t.Float=3]="Float",t[t.Binary=4]="Binary",t[t.Utf8=5]="Utf8",t[t.Bool=6]="Bool",t[t.Decimal=7]="Decimal",t[t.Date=8]="Date",t[t.Time=9]="Time",t[t.Timestamp=10]="Timestamp",t[t.Interval=11]="Interval",t[t.List=12]="List",t[t.Struct=13]="Struct",t[t.Union=14]="Union",t[t.FixedSizeBinary=15]="FixedSizeBinary",t[t.FixedSizeList=16]="FixedSizeList",t[t.Map=17]="Map",t[t.Dictionary=-1]="Dictionary",t[t.Int8=-2]="Int8",t[t.Int16=-3]="Int16",t[t.Int32=-4]="Int32",t[t.Int64=-5]="Int64",t[t.Uint8=-6]="Uint8",t[t.Uint16=-7]="Uint16",t[t.Uint32=-8]="Uint32",t[t.Uint64=-9]="Uint64",t[t.Float16=-10]="Float16",t[t.Float32=-11]="Float32",t[t.Float64=-12]="Float64",t[t.DateDay=-13]="DateDay",t[t.DateMillisecond=-14]="DateMillisecond",t[t.TimestampSecond=-15]="TimestampSecond",t[t.TimestampMillisecond=-16]="TimestampMillisecond",t[t.TimestampMicrosecond=-17]="TimestampMicrosecond",t[t.TimestampNanosecond=-18]="TimestampNanosecond",t[t.TimeSecond=-19]="TimeSecond",t[t.TimeMillisecond=-20]="TimeMillisecond",t[t.TimeMicrosecond=-21]="TimeMicrosecond",t[t.TimeNanosecond=-22]="TimeNanosecond",t[t.DenseUnion=-23]="DenseUnion",t[t.SparseUnion=-24]="SparseUnion",t[t.IntervalDayTime=-25]="IntervalDayTime",t[t.IntervalYearMonth=-26]="IntervalYearMonth"})(i||(i={}));var m=class{static isNull(e){return e&&e.typeId===i.Null}static isInt(e){return e&&e.typeId===i.Int}static isFloat(e){return e&&e.typeId===i.Float}static isBinary(e){return e&&e.typeId===i.Binary}static isUtf8(e){return e&&e.typeId===i.Utf8}static isBool(e){return e&&e.typeId===i.Bool}static isDecimal(e){return e&&e.typeId===i.Decimal}static isDate(e){return e&&e.typeId===i.Date}static isTime(e){return e&&e.typeId===i.Time}static isTimestamp(e){return e&&e.typeId===i.Timestamp}static isInterval(e){return e&&e.typeId===i.Interval}static isList(e){return e&&e.typeId===i.List}static isStruct(e){return e&&e.typeId===i.Struct}static isUnion(e){return e&&e.typeId===i.Union}static isFixedSizeBinary(e){return e&&e.typeId===i.FixedSizeBinary}static isFixedSizeList(e){return e&&e.typeId===i.FixedSizeList}static isMap(e){return e&&e.typeId===i.Map}static isDictionary(e){return e&&e.typeId===i.Dictionary}get typeId(){return i.NONE}compareTo(e){return this===e}},H=class extends m{get typeId(){return i.Null}get[Symbol.toStringTag](){return"Null"}toString(){return"Null"}},J=class extends m{get typeId(){return i.Bool}get[Symbol.toStringTag](){return"Bool"}toString(){return"Bool"}},f=class extends m{isSigned;bitWidth;constructor(e,r){super(),this.isSigned=e,this.bitWidth=r}get typeId(){return i.Int}get[Symbol.toStringTag](){return"Int"}toString(){return`${this.isSigned?"I":"Ui"}nt${this.bitWidth}`}},V=class extends f{constructor(){super(!0,8)}},G=class extends f{constructor(){super(!0,16)}},X=class extends f{constructor(){super(!0,32)}},Z=class extends f{constructor(){super(!0,64)}},K=class extends f{constructor(){super(!1,8)}},Q=class extends f{constructor(){super(!1,16)}},tt=class extends f{constructor(){super(!1,32)}},et=class extends f{constructor(){super(!1,64)}},Rt={HALF:16,SINGLE:32,DOUBLE:64},x=class extends m{precision;constructor(e){super(),this.precision=e}get typeId(){return i.Float}get[Symbol.toStringTag](){return"Float"}toString(){return`Float${this.precision}`}},rt=class extends x{constructor(){super(Rt.HALF)}},st=class extends x{constructor(){super(Rt.SINGLE)}},at=class extends x{constructor(){super(Rt.DOUBLE)}},ot=class extends m{constructor(){super()}get typeId(){return i.Binary}toString(){return"Binary"}get[Symbol.toStringTag](){return"Binary"}},nt=class extends m{get typeId(){return i.Utf8}get[Symbol.toStringTag](){return"Utf8"}toString(){return"Utf8"}},Nt={DAY:0,MILLISECOND:1},I=class extends m{unit;constructor(e){super(),this.unit=e}get typeId(){return i.Date}get[Symbol.toStringTag](){return"Date"}toString(){return`Date${(this.unit+1)*32}<${Nt[this.unit]}>`}},it=class extends I{constructor(){super(Nt.DAY)}},ct=class extends I{constructor(){super(Nt.MILLISECOND)}},y={SECOND:1,MILLISECOND:1e3,MICROSECOND:1e6,NANOSECOND:1e9},T=class extends m{unit;bitWidth;constructor(e,r){super(),this.unit=e,this.bitWidth=r}get typeId(){return i.Time}toString(){return`Time${this.bitWidth}<${y[this.unit]}>`}get[Symbol.toStringTag](){return"Time"}},lt=class extends T{constructor(){super(y.SECOND,32)}},ut=class extends T{constructor(){super(y.MILLISECOND,32)}},b=class extends m{unit;timezone;constructor(e,r=null){super(),this.unit=e,this.timezone=r}get typeId(){return i.Timestamp}get[Symbol.toStringTag](){return"Timestamp"}toString(){return`Timestamp<${y[this.unit]}${this.timezone?`, ${this.timezone}`:""}>`}},ht=class extends b{constructor(e=null){super(y.SECOND,e)}},mt=class extends b{constructor(e=null){super(y.MILLISECOND,e)}},dt=class extends b{constructor(e=null){super(y.MICROSECOND,e)}},ft=class extends b{constructor(e=null){super(y.NANOSECOND,e)}},Et={DAY_TIME:0,YEAR_MONTH:1},O=class extends m{unit;constructor(e){super(),this.unit=e}get typeId(){return i.Interval}get[Symbol.toStringTag](){return"Interval"}toString(){return`Interval<${Et[this.unit]}>`}},pt=class extends O{constructor(){super(Et.DAY_TIME)}},gt=class extends O{constructor(){super(Et.YEAR_MONTH)}},wt=class extends m{listSize;children;constructor(e,r){super(),this.listSize=e,this.children=[r]}get typeId(){return i.FixedSizeList}get valueType(){return this.children[0].type}get valueField(){return this.children[0]}get[Symbol.toStringTag](){return"FixedSizeList"}toString(){return`FixedSizeList[${this.listSize}]<${JSON.stringify(this.valueType)}>`}},bt=class extends m{children;constructor(e){super(),this.children=e}get typeId(){return i.Struct}toString(){return`Struct<{${this.children.map(e=>`${e.name}:${JSON.stringify(e.type)}`).join(", ")}}>`}get[Symbol.toStringTag](){return"Struct"}};function Zt(t){return{typeId:t.typeId,ArrayType:t.ArrayType,typeName:t.toString(),typeEnumName:xe(t.typeId),precision:t.precision}}var yt=null;function xe(t){if(!yt){yt={};for(let e in i)yt[i[e]]=e}return yt[t]}var xt=class extends Array{enqueue(e){return this.push(e)}dequeue(){return this.shift()}},B=class{_values;_settlers;_closed;constructor(){this._values=new xt,this._settlers=new xt,this._closed=!1}close(){for(;this._settlers.length>0;)this._settlers.dequeue().resolve({done:!0});this._closed=!0}[Symbol.asyncIterator](){return this}enqueue(e){if(this._closed)throw new Error("Closed");if(this._settlers.length>0){if(this._values.length>0)throw new Error("Illegal internal state");let r=this._settlers.dequeue();e instanceof Error?r.reject(e):r.resolve({value:e})}else this._values.enqueue(e)}next(){if(this._values.length>0){let e=this._values.dequeue();return e instanceof Error?Promise.reject(e):Promise.resolve({value:e})}if(this._closed){if(this._settlers.length>0)throw new Error("Illegal internal state");return Promise.resolve({done:!0})}return new Promise((e,r)=>{this._settlers.enqueue({resolve:e,reject:r})})}};return ie(C);})();
7
+ "use strict";var __exports__=(()=>{var Qt=Object.create;var F=Object.defineProperty;var te=Object.getOwnPropertyDescriptor;var ee=Object.getOwnPropertyNames;var re=Object.getPrototypeOf,se=Object.prototype.hasOwnProperty;var ae=(t,e,r)=>e in t?F(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var oe=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),ne=(t,e)=>{for(var r in e)F(t,r,{get:e[r],enumerable:!0})},U=(t,e,r,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of ee(e))!se.call(t,a)&&a!==r&&F(t,a,{get:()=>e[a],enumerable:!(s=te(e,a))||s.enumerable});return t},k=(t,e,r)=>(U(t,e,"default"),r&&U(r,e,"default")),ie=(t,e,r)=>(r=t!=null?Qt(re(t)):{},U(e||!t||!t.__esModule?F(r,"default",{value:t,enumerable:!0}):r,t)),ce=t=>U(F({},"__esModule",{value:!0}),t);var Bt=(t,e,r)=>(ae(t,typeof e!="symbol"?e+"":e,r),r);var _t=oe((je,Dt)=>{Dt.exports=globalThis.loaders});var D={};ne(D,{ArrowLikeDataType:()=>m,ArrowLikeField:()=>p,ArrowLikeSchema:()=>d,ArrowLikeTable:()=>H,AsyncQueue:()=>B,Binary:()=>nt,Bool:()=>V,ColumnarTableBatchAggregator:()=>S,Date:()=>I,DateDay:()=>ct,DateMillisecond:()=>lt,FixedSizeList:()=>bt,Float:()=>x,Float16:()=>st,Float32:()=>at,Float64:()=>ot,Int:()=>f,Int16:()=>X,Int32:()=>Z,Int64:()=>K,Int8:()=>G,Interval:()=>O,IntervalDayTime:()=>gt,IntervalYearMonth:()=>wt,Null:()=>J,RowTableBatchAggregator:()=>A,Struct:()=>yt,TableBatchBuilder:()=>R,Time:()=>T,TimeMillisecond:()=>ht,TimeSecond:()=>ut,Timestamp:()=>b,TimestampMicrosecond:()=>ft,TimestampMillisecond:()=>dt,TimestampNanosecond:()=>pt,TimestampSecond:()=>mt,Uint16:()=>tt,Uint32:()=>et,Uint64:()=>rt,Uint8:()=>Q,Utf8:()=>it,convertTable:()=>Vt,convertToArrayRow:()=>Y,convertToObjectRow:()=>W,deduceMeshField:()=>Ft,deduceMeshSchema:()=>Zt,deduceTableSchema:()=>w,getArrayTypeFromDataType:()=>z,getDataTypeFromArray:()=>L,getMeshBoundingBox:()=>Xt,getMeshSize:()=>Gt,getTableCell:()=>j,getTableCellAt:()=>Lt,getTableColumnIndex:()=>jt,getTableColumnName:()=>N,getTableLength:()=>h,getTableNumCols:()=>q,getTableRowAsArray:()=>C,getTableRowAsObject:()=>E,getTableRowShape:()=>zt,getTypeInfo:()=>Kt,isTable:()=>vt,makeArrayRowIterator:()=>It,makeBatchFromTable:()=>qt,makeMeshAttributeMetadata:()=>Rt,makeObjectRowIterator:()=>Tt,makeRowIterator:()=>$t,makeTableFromBatches:()=>Ht,makeTableFromData:()=>Pt});k(D,ie(_t(),1));function v(t,e="float32"){return t instanceof Date?"date-millisecond":t instanceof Number?e:typeof t=="string"?"utf8":(t===null||t==="undefined","null")}function L(t){let e=St(t);return e!=="null"?{type:e,nullable:!1}:t.length>0?(e=v(t[0]),{type:e,nullable:!0}):{type:"null",nullable:!0}}function St(t){switch(t.constructor){case Int8Array:return"int8";case Uint8Array:case Uint8ClampedArray:return"uint8";case Int16Array:return"int16";case Uint16Array:return"uint16";case Int32Array:return"int32";case Uint32Array:return"uint32";case Float32Array:return"float32";case Float64Array:return"float64";default:return"null"}}function z(t,e){if(!e)switch(t){case"int8":return Int8Array;case"uint8":return Uint8Array;case"int16":return Int16Array;case"uint16":return Uint16Array;case"int32":return Int32Array;case"uint32":return Uint32Array;case"float32":return Float32Array;case"float64":return Float64Array;default:break}return Array}var $=class{schema;options;shape;length=0;rows=null;cursor=0;_headers=[];constructor(e,r){if(this.options=r,this.schema=e,!Array.isArray(e)){this._headers=[];for(let s in e)this._headers[e[s].index]=e[s].name}}rowCount(){return this.length}addArrayRow(e,r){Number.isFinite(r)&&(this.cursor=r),this.shape="array-row-table",this.rows=this.rows||new Array(100),this.rows[this.length]=e,this.length++}addObjectRow(e,r){Number.isFinite(r)&&(this.cursor=r),this.shape="object-row-table",this.rows=this.rows||new Array(100),this.rows[this.length]=e,this.length++}getBatch(){let e=this.rows;return e?(e=e.slice(0,this.length),this.rows=null,{shape:this.shape||"array-row-table",batchType:"data",data:e,length:this.length,schema:this.schema,cursor:this.cursor}):null}};function W(t,e){if(!t)throw new Error("null row");let r={};if(e)for(let s=0;s<e.length;s++)r[e[s]]=t[s];else for(let s=0;s<t.length;s++){let a=`column-${s}`;r[a]=t[s]}return r}function Y(t,e){if(!t)throw new Error("null row");if(e){let r=new Array(e.length);for(let s=0;s<e.length;s++)r[s]=t[e[s]];return r}return Object.values(t)}function Mt(t){let e=[];for(let r=0;r<t.length;r++){let s=`column-${r}`;e.push(s)}return e}function Ut(t){return Object.keys(t)}var kt=100,A=class{schema;options;length=0;objectRows=null;arrayRows=null;cursor=0;_headers=null;constructor(e,r){if(this.options=r,this.schema=e,e){this._headers=[];for(let s in e)this._headers[e[s].index]=e[s].name}}rowCount(){return this.length}addArrayRow(e,r){switch(Number.isFinite(r)&&(this.cursor=r),this._headers||=Mt(e),this.options.shape){case"object-row-table":let s=W(e,this._headers);this.addObjectRow(s,r);break;case"array-row-table":this.arrayRows=this.arrayRows||new Array(kt),this.arrayRows[this.length]=e,this.length++;break}}addObjectRow(e,r){switch(Number.isFinite(r)&&(this.cursor=r),this._headers||=Ut(e),this.options.shape){case"array-row-table":let s=Y(e,this._headers);this.addArrayRow(s,r);break;case"object-row-table":this.objectRows=this.objectRows||new Array(kt),this.objectRows[this.length]=e,this.length++;break}}getBatch(){let e=this.arrayRows||this.objectRows;return e?(e=e.slice(0,this.length),this.arrayRows=null,this.objectRows=null,{shape:this.options.shape,batchType:"data",data:e,length:this.length,schema:this.schema,cursor:this.cursor}):null}};var S=class{schema;length=0;allocated=0;columns={};constructor(e,r){this.schema=e,this._reallocateColumns()}rowCount(){return this.length}addArrayRow(e){this._reallocateColumns();let r=0;for(let s in this.columns)this.columns[s][this.length]=e[r++];this.length++}addObjectRow(e){this._reallocateColumns();for(let r in e)this.columns[r][this.length]=e[r];this.length++}getBatch(){this._pruneColumns();let e=Array.isArray(this.schema)?this.columns:{};if(!Array.isArray(this.schema))for(let s in this.schema){let a=this.schema[s];e[a.name]=this.columns[a.index]}return this.columns={},{shape:"columnar-table",batchType:"data",data:e,schema:this.schema,length:this.length}}_reallocateColumns(){if(!(this.length<this.allocated)){this.allocated=this.allocated>0?this.allocated*=2:100,this.columns={};for(let e in this.schema){let r=this.schema[e],s=r.type||Float32Array,a=this.columns[r.index];if(a&&ArrayBuffer.isView(a)){let u=new s(this.allocated);u.set(a),this.columns[r.index]=u}else a?(a.length=this.allocated,this.columns[r.index]=a):this.columns[r.index]=new s(this.allocated)}}}_pruneColumns(){for(let[e,r]of Object.entries(this.columns))this.columns[e]=r.slice(0,this.length)}};var le={shape:void 0,batchSize:"auto",batchDebounceMs:0,limit:0,_limitMB:0},ue="TableBatchBuilder",P=class{schema;options;aggregator=null;batchCount=0;bytesUsed=0;isChunkComplete=!1;lastBatchEmittedMs=Date.now();totalLength=0;totalBytes=0;rowBytes=0;constructor(e,r){this.schema=e,this.options={...le,...r}}limitReached(){return!!(Boolean(this.options?.limit)&&this.totalLength>=this.options.limit||Boolean(this.options?._limitMB)&&this.totalBytes/1e6>=this.options._limitMB)}addRow(e){this.limitReached()||(this.totalLength++,this.rowBytes=this.rowBytes||this._estimateRowMB(e),this.totalBytes+=this.rowBytes,Array.isArray(e)?this.addArrayRow(e):this.addObjectRow(e))}addArrayRow(e){if(!this.aggregator){let r=this._getTableBatchType();this.aggregator=new r(this.schema,this.options)}this.aggregator.addArrayRow(e)}addObjectRow(e){if(!this.aggregator){let r=this._getTableBatchType();this.aggregator=new r(this.schema,this.options)}this.aggregator.addObjectRow(e)}chunkComplete(e){e instanceof ArrayBuffer&&(this.bytesUsed+=e.byteLength),typeof e=="string"&&(this.bytesUsed+=e.length),this.isChunkComplete=!0}getFullBatch(e){return this._isFull()?this._getBatch(e):null}getFinalBatch(e){return this._getBatch(e)}_estimateRowMB(e){return Array.isArray(e)?e.length*8:Object.keys(e).length*8}_isFull(){if(!this.aggregator||this.aggregator.rowCount()===0)return!1;if(this.options.batchSize==="auto"){if(!this.isChunkComplete)return!1}else if(this.options.batchSize>this.aggregator.rowCount())return!1;return this.options.batchDebounceMs>Date.now()-this.lastBatchEmittedMs?!1:(this.isChunkComplete=!1,this.lastBatchEmittedMs=Date.now(),!0)}_getBatch(e){if(!this.aggregator)return null;e?.bytesUsed&&(this.bytesUsed=e.bytesUsed);let r=this.aggregator.getBatch();return r.count=this.batchCount,r.bytesUsed=this.bytesUsed,Object.assign(r,e),this.batchCount++,this.aggregator=null,r}_getTableBatchType(){switch(this.options.shape){case"array-row-table":case"object-row-table":return A;case"columnar-table":return S;case"arrow-table":if(!P.ArrowBatch)throw new Error(ue);return P.ArrowBatch;default:return $}}},R=P;Bt(R,"ArrowBatch");function vt(t){switch(typeof t=="object"&&t?.shape){case"array-row-table":case"object-row-table":return Array.isArray(t.data);case"geojson-table":return Array.isArray(t.features);case"columnar-table":return t.data&&typeof t.data=="object";case"arrow-table":return Boolean(t?.data?.numRows!==void 0);default:return!1}}function h(t){switch(t.shape){case"array-row-table":case"object-row-table":return t.data.length;case"geojson-table":return t.features.length;case"arrow-table":return t.data.numRows;case"columnar-table":for(let r of Object.values(t.data))return r.length||0;return 0;default:throw new Error("table")}}function q(t){if(t.schema)return t.schema.fields.length;if(h(t)===0)throw new Error("empty table");switch(t.shape){case"array-row-table":return t.data[0].length;case"object-row-table":return Object.keys(t.data[0]).length;case"geojson-table":return Object.keys(t.features[0]).length;case"columnar-table":return Object.keys(t.data).length;case"arrow-table":return t.data.numCols;default:throw new Error("table")}}function j(t,e,r){switch(t.shape){case"array-row-table":let s=jt(t,r);return t.data[e][s];case"object-row-table":return t.data[e][r];case"geojson-table":return t.features[e][r];case"columnar-table":return t.data[r][e];case"arrow-table":let u=t.data,c=u.schema.fields.findIndex(l=>l.name===r);return u.getChildAt(c)?.get(e);default:throw new Error("todo")}}function Lt(t,e,r){switch(t.shape){case"array-row-table":return t.data[e][r];case"object-row-table":let s=N(t,r);return t.data[e][s];case"geojson-table":let a=N(t,r);return t.features[e][a];case"columnar-table":let u=N(t,r);return t.data[u][e];case"arrow-table":return t.data.getChildAt(r)?.get(e);default:throw new Error("todo")}}function zt(t){switch(t.shape){case"array-row-table":case"object-row-table":return t.shape;case"geojson-table":return"object-row-table";case"columnar-table":default:throw new Error("Not a row table")}}function jt(t,e){let r=t.schema?.fields.findIndex(s=>s.name===e);if(r===void 0)throw new Error(e);return r}function N(t,e){let r=t.schema?.fields[e]?.name;if(!r)throw new Error(`${e}`);return r}function E(t,e,r,s){switch(t.shape){case"object-row-table":return s?Object.fromEntries(Object.entries(t.data[e])):t.data[e];case"array-row-table":if(t.schema){let o=r||{};for(let n=0;n<t.schema.fields.length;n++)o[t.schema.fields[n].name]=t.data[e][n];return o}throw new Error("no schema");case"geojson-table":if(t.schema){let o=r||{};for(let n=0;n<t.schema.fields.length;n++)o[t.schema.fields[n].name]=t.features[e][n];return o}throw new Error("no schema");case"columnar-table":if(t.schema){let o=r||{};for(let n=0;n<t.schema.fields.length;n++)o[t.schema.fields[n].name]=t.data[t.schema.fields[n].name][e];return o}else{let o=r||{};for(let[n,g]of Object.entries(t.data))o[n]=g[e];return o}case"arrow-table":let a=t.data,u=r||{},c=a.get(e),l=a.schema;for(let o=0;o<l.fields.length;o++)u[l.fields[o].name]=c?.[l.fields[o].name];return u;default:throw new Error("shape")}}function C(t,e,r,s){switch(t.shape){case"array-row-table":return s?Array.from(t.data[e]):t.data[e];case"object-row-table":if(t.schema){let o=r||[];for(let n=0;n<t.schema.fields.length;n++)o[n]=t.data[e][t.schema.fields[n].name];return o}return Object.values(t.data[e]);case"geojson-table":if(t.schema){let o=r||[];for(let n=0;n<t.schema.fields.length;n++)o[n]=t.features[e][t.schema.fields[n].name];return o}return Object.values(t.features[e]);case"columnar-table":if(t.schema){let o=r||[];for(let n=0;n<t.schema.fields.length;n++)o[n]=t.data[t.schema.fields[n].name][e];return o}else{let o=r||[],n=0;for(let g of Object.values(t.data))o[n]=g[e],n++;return o}case"arrow-table":let a=t.data,u=r||[],c=a.get(e),l=a.schema;for(let o=0;o<l.fields.length;o++)u[o]=c?.[l.fields[o].name];return u;default:throw new Error("shape")}}function*$t(t,e){switch(e){case"array-row-table":yield*It(t);break;case"object-row-table":yield*Tt(t);break;default:throw new Error(`Unknown row type ${e}`)}}function*It(t,e=[]){let r=h(t);for(let s=0;s<r;s++)yield C(t,s,e)}function*Tt(t,e={}){let r=h(t);for(let s=0;s<r;s++)yield E(t,s,e)}var p=class{name;type;nullable;metadata;constructor(e,r,s=!1,a=new Map){this.name=e,this.type=r,this.nullable=s,this.metadata=a}get typeId(){return this.type&&this.type.typeId}clone(){return new p(this.name,this.type,this.nullable,this.metadata)}compareTo(e){return this.name===e.name&&this.type===e.type&&this.nullable===e.nullable&&this.metadata===e.metadata}toString(){return`${JSON.stringify(this.type)}${this.nullable?", nullable":""}${this.metadata?`, metadata: ${JSON.stringify(this.metadata)}`:""}`}};var d=class{fields;metadata;constructor(e,r=new Map){this.fields=e.map(s=>new p(s.name,s.type,s.nullable,s.metadata)),this.metadata=r instanceof Map?r:new Map(Object.entries(r))}compareTo(e){if(this.metadata!==e.metadata||this.fields.length!==e.fields.length)return!1;for(let r=0;r<this.fields.length;++r)if(!this.fields[r].compareTo(e.fields[r]))return!1;return!0}select(...e){let r=Object.create(null);for(let a of e)r[a]=!0;let s=this.fields.filter(a=>r[a.name]);return new d(s,this.metadata)}selectAt(...e){let r=e.map(s=>this.fields[s]).filter(Boolean);return new d(r,this.metadata)}assign(e){let r,s=this.metadata;if(e instanceof d){let c=e;r=c.fields,s=Wt(Wt(new Map,this.metadata),c.metadata)}else r=e;let a=Object.create(null);for(let c of this.fields)a[c.name]=c;for(let c of r)a[c.name]=c;let u=Object.values(a);return new d(u,s)}};function Wt(t,e){return new Map([...t||new Map,...e||new Map])}function w(t){switch(t.shape){case"array-row-table":case"object-row-table":return me(t.data);case"geojson-table":return de(t.features);case"columnar-table":return he(t.data);case"arrow-table":default:throw new Error("Deduce schema")}}function he(t){let e=[];for(let[r,s]of Object.entries(t)){let a=fe(s,r);e.push(a)}return{fields:e,metadata:{}}}function me(t){if(!t.length)throw new Error("deduce from empty table");let e=[],r=t[0];for(let[s,a]of Object.entries(r))e.push(Yt(a,s));return{fields:e,metadata:{}}}function de(t){if(!t.length)throw new Error("deduce from empty table");let e=[],r=t[0].properties||{};for(let[s,a]of Object.entries(r))e.push(Yt(a,s));return{fields:e,metadata:{}}}function fe(t,e){if(ArrayBuffer.isView(t)){let r=L(t);return{name:e,type:r.type||"null",nullable:r.nullable}}if(Array.isArray(t)&&t.length>0){let r=t[0],s=v(r);return{name:e,type:s,nullable:!0}}throw new Error("empty table")}function Yt(t,e){let r=v(t);return{name:e,type:r,nullable:!0}}var Ot=class{table;columnName;constructor(e,r){this.table=e,this.columnName=r}get(e){return j(this.table,e,this.columnName)}toArray(){switch(this.table.shape){case"arrow-table":return this.table.data.getChild(this.columnName)?.toArray();case"columnar-table":return this.table.data[this.columnName];default:throw new Error(this.table.shape)}}},H=class{schema;table;constructor(e){let r=e.schema||w(e);this.schema=new d(r.fields,r.metadata),this.table={...e,schema:r}}get data(){return this.table.shape==="geojson-table"?this.table.features:this.table.data}get numCols(){return q(this.table)}get length(){return h(this.table)}getChild(e){return new Ot(this.table,e)}};function Pt(t){let e;switch(pe(t)){case"array-row-table":e={shape:"array-row-table",data:t};break;case"object-row-table":e={shape:"object-row-table",data:t};break;case"columnar-table":e={shape:"columnar-table",data:t};break;default:throw new Error("table")}let r=w(e);return{...e,schema:r}}function pe(t){if(Array.isArray(t)){if(t.length===0)throw new Error("cannot deduce type of empty table");let e=t[0];if(Array.isArray(e))return"array-row-table";if(e&&typeof e=="object")return"object-row-table"}if(t&&typeof t=="object")return"columnar-table";throw new Error("invalid table")}function qt(t){return{...t,length:h(t),batchType:"data"}}async function Ht(t){let e,r,s,a=null,u;for await(let c of t)switch(a=a||c.shape,u=u||c.schema,c.shape){case"array-row-table":e=e||[];for(let l=0;l<h(c);l++){let o=c.data[l];e.push(o)}break;case"object-row-table":r=r||[];for(let l=0;l<h(c);l++){let o=c.data[l];r.push(o)}break;case"geojson-table":s=s||[];for(let l=0;l<h(c);l++){let o=c.features[l];s.push(o)}break;case"columnar-table":case"arrow-table":default:throw new Error("shape")}if(!a)return null;switch(a){case"array-row-table":return{shape:"array-row-table",data:e,schema:u};case"object-row-table":return{shape:"object-row-table",data:r,schema:u};case"geojson-table":return{shape:"geojson-table",type:"FeatureCollection",features:s,schema:u};default:return null}}function Jt(t,e){let r=z(t.type,t.nullable);return new r(e)}function Vt(t,e){switch(e){case"object-row-table":return ye(t);case"array-row-table":return be(t);case"columnar-table":return we(t);case"arrow-table":return ge(t);default:throw new Error(e)}}function ge(t){let e=globalThis.__loaders?._makeArrowTable;if(!e)throw new Error("");return e(t)}function we(t){let e=t.schema||w(t),r=t.schema?.fields||[];if(t.shape==="columnar-table")return{...t,schema:e};let s=h(t),a={};for(let u of r){let c=Jt(u,s);a[u.name]=c;for(let l=0;l<s;l++)c[l]=j(t,l,u.name)}return{shape:"columnar-table",schema:e,data:a}}function be(t){if(t.shape==="array-row-table")return t;let e=h(t),r=new Array(e);for(let s=0;s<e;s++)r[s]=C(t,s);return{shape:"array-row-table",schema:t.schema,data:r}}function ye(t){if(t.shape==="object-row-table")return t;let e=h(t),r=new Array(e);for(let s=0;s<e;s++)r[s]=E(t,s);return{shape:"object-row-table",schema:t.schema,data:r}}function Gt(t){let e=0;for(let r in t){let s=t[r];ArrayBuffer.isView(s)&&(e+=s.byteLength*s.BYTES_PER_ELEMENT)}return e}function Xt(t){let e=1/0,r=1/0,s=1/0,a=-1/0,u=-1/0,c=-1/0,l=t.POSITION?t.POSITION.value:[],o=l&&l.length;for(let n=0;n<o;n+=3){let g=l[n],_=l[n+1],M=l[n+2];e=g<e?g:e,r=_<r?_:r,s=M<s?M:s,a=g>a?g:a,u=_>u?_:u,c=M>c?M:c}return[[e,r,s],[a,u,c]]}function Zt(t,e={}){return{fields:xe(t),metadata:e}}function Ft(t,e,r){let s=St(e.value),a=r||Rt(e);return{name:t,type:{type:"fixed-size-list",listSize:e.size,children:[{name:"value",type:s}]},nullable:!1,metadata:a}}function xe(t){let e=[];for(let r in t){let s=t[r];e.push(Ft(r,s))}return e}function Rt(t){let e={};return"byteOffset"in t&&(e.byteOffset=t.byteOffset.toString(10)),"byteStride"in t&&(e.byteStride=t.byteStride.toString(10)),"normalized"in t&&(e.normalized=t.normalized.toString()),e}var i;(function(t){t[t.NONE=0]="NONE",t[t.Null=1]="Null",t[t.Int=2]="Int",t[t.Float=3]="Float",t[t.Binary=4]="Binary",t[t.Utf8=5]="Utf8",t[t.Bool=6]="Bool",t[t.Decimal=7]="Decimal",t[t.Date=8]="Date",t[t.Time=9]="Time",t[t.Timestamp=10]="Timestamp",t[t.Interval=11]="Interval",t[t.List=12]="List",t[t.Struct=13]="Struct",t[t.Union=14]="Union",t[t.FixedSizeBinary=15]="FixedSizeBinary",t[t.FixedSizeList=16]="FixedSizeList",t[t.Map=17]="Map",t[t.Dictionary=-1]="Dictionary",t[t.Int8=-2]="Int8",t[t.Int16=-3]="Int16",t[t.Int32=-4]="Int32",t[t.Int64=-5]="Int64",t[t.Uint8=-6]="Uint8",t[t.Uint16=-7]="Uint16",t[t.Uint32=-8]="Uint32",t[t.Uint64=-9]="Uint64",t[t.Float16=-10]="Float16",t[t.Float32=-11]="Float32",t[t.Float64=-12]="Float64",t[t.DateDay=-13]="DateDay",t[t.DateMillisecond=-14]="DateMillisecond",t[t.TimestampSecond=-15]="TimestampSecond",t[t.TimestampMillisecond=-16]="TimestampMillisecond",t[t.TimestampMicrosecond=-17]="TimestampMicrosecond",t[t.TimestampNanosecond=-18]="TimestampNanosecond",t[t.TimeSecond=-19]="TimeSecond",t[t.TimeMillisecond=-20]="TimeMillisecond",t[t.TimeMicrosecond=-21]="TimeMicrosecond",t[t.TimeNanosecond=-22]="TimeNanosecond",t[t.DenseUnion=-23]="DenseUnion",t[t.SparseUnion=-24]="SparseUnion",t[t.IntervalDayTime=-25]="IntervalDayTime",t[t.IntervalYearMonth=-26]="IntervalYearMonth"})(i||(i={}));var m=class{static isNull(e){return e&&e.typeId===i.Null}static isInt(e){return e&&e.typeId===i.Int}static isFloat(e){return e&&e.typeId===i.Float}static isBinary(e){return e&&e.typeId===i.Binary}static isUtf8(e){return e&&e.typeId===i.Utf8}static isBool(e){return e&&e.typeId===i.Bool}static isDecimal(e){return e&&e.typeId===i.Decimal}static isDate(e){return e&&e.typeId===i.Date}static isTime(e){return e&&e.typeId===i.Time}static isTimestamp(e){return e&&e.typeId===i.Timestamp}static isInterval(e){return e&&e.typeId===i.Interval}static isList(e){return e&&e.typeId===i.List}static isStruct(e){return e&&e.typeId===i.Struct}static isUnion(e){return e&&e.typeId===i.Union}static isFixedSizeBinary(e){return e&&e.typeId===i.FixedSizeBinary}static isFixedSizeList(e){return e&&e.typeId===i.FixedSizeList}static isMap(e){return e&&e.typeId===i.Map}static isDictionary(e){return e&&e.typeId===i.Dictionary}get typeId(){return i.NONE}compareTo(e){return this===e}},J=class extends m{get typeId(){return i.Null}get[Symbol.toStringTag](){return"Null"}toString(){return"Null"}},V=class extends m{get typeId(){return i.Bool}get[Symbol.toStringTag](){return"Bool"}toString(){return"Bool"}},f=class extends m{isSigned;bitWidth;constructor(e,r){super(),this.isSigned=e,this.bitWidth=r}get typeId(){return i.Int}get[Symbol.toStringTag](){return"Int"}toString(){return`${this.isSigned?"I":"Ui"}nt${this.bitWidth}`}},G=class extends f{constructor(){super(!0,8)}},X=class extends f{constructor(){super(!0,16)}},Z=class extends f{constructor(){super(!0,32)}},K=class extends f{constructor(){super(!0,64)}},Q=class extends f{constructor(){super(!1,8)}},tt=class extends f{constructor(){super(!1,16)}},et=class extends f{constructor(){super(!1,32)}},rt=class extends f{constructor(){super(!1,64)}},Nt={HALF:16,SINGLE:32,DOUBLE:64},x=class extends m{precision;constructor(e){super(),this.precision=e}get typeId(){return i.Float}get[Symbol.toStringTag](){return"Float"}toString(){return`Float${this.precision}`}},st=class extends x{constructor(){super(Nt.HALF)}},at=class extends x{constructor(){super(Nt.SINGLE)}},ot=class extends x{constructor(){super(Nt.DOUBLE)}},nt=class extends m{constructor(){super()}get typeId(){return i.Binary}toString(){return"Binary"}get[Symbol.toStringTag](){return"Binary"}},it=class extends m{get typeId(){return i.Utf8}get[Symbol.toStringTag](){return"Utf8"}toString(){return"Utf8"}},Et={DAY:0,MILLISECOND:1},I=class extends m{unit;constructor(e){super(),this.unit=e}get typeId(){return i.Date}get[Symbol.toStringTag](){return"Date"}toString(){return`Date${(this.unit+1)*32}<${Et[this.unit]}>`}},ct=class extends I{constructor(){super(Et.DAY)}},lt=class extends I{constructor(){super(Et.MILLISECOND)}},y={SECOND:1,MILLISECOND:1e3,MICROSECOND:1e6,NANOSECOND:1e9},T=class extends m{unit;bitWidth;constructor(e,r){super(),this.unit=e,this.bitWidth=r}get typeId(){return i.Time}toString(){return`Time${this.bitWidth}<${y[this.unit]}>`}get[Symbol.toStringTag](){return"Time"}},ut=class extends T{constructor(){super(y.SECOND,32)}},ht=class extends T{constructor(){super(y.MILLISECOND,32)}},b=class extends m{unit;timezone;constructor(e,r=null){super(),this.unit=e,this.timezone=r}get typeId(){return i.Timestamp}get[Symbol.toStringTag](){return"Timestamp"}toString(){return`Timestamp<${y[this.unit]}${this.timezone?`, ${this.timezone}`:""}>`}},mt=class extends b{constructor(e=null){super(y.SECOND,e)}},dt=class extends b{constructor(e=null){super(y.MILLISECOND,e)}},ft=class extends b{constructor(e=null){super(y.MICROSECOND,e)}},pt=class extends b{constructor(e=null){super(y.NANOSECOND,e)}},Ct={DAY_TIME:0,YEAR_MONTH:1},O=class extends m{unit;constructor(e){super(),this.unit=e}get typeId(){return i.Interval}get[Symbol.toStringTag](){return"Interval"}toString(){return`Interval<${Ct[this.unit]}>`}},gt=class extends O{constructor(){super(Ct.DAY_TIME)}},wt=class extends O{constructor(){super(Ct.YEAR_MONTH)}},bt=class extends m{listSize;children;constructor(e,r){super(),this.listSize=e,this.children=[r]}get typeId(){return i.FixedSizeList}get valueType(){return this.children[0].type}get valueField(){return this.children[0]}get[Symbol.toStringTag](){return"FixedSizeList"}toString(){return`FixedSizeList[${this.listSize}]<${JSON.stringify(this.valueType)}>`}},yt=class extends m{children;constructor(e){super(),this.children=e}get typeId(){return i.Struct}toString(){return`Struct<{${this.children.map(e=>`${e.name}:${JSON.stringify(e.type)}`).join(", ")}}>`}get[Symbol.toStringTag](){return"Struct"}};function Kt(t){return{typeId:t.typeId,ArrayType:t.ArrayType,typeName:t.toString(),typeEnumName:Ae(t.typeId),precision:t.precision}}var xt=null;function Ae(t){if(!xt){xt={};for(let e in i)xt[i[e]]=e}return xt[t]}var At=class extends Array{enqueue(e){return this.push(e)}dequeue(){return this.shift()}},B=class{_values;_settlers;_closed;constructor(){this._values=new At,this._settlers=new At,this._closed=!1}close(){for(;this._settlers.length>0;)this._settlers.dequeue().resolve({done:!0});this._closed=!0}[Symbol.asyncIterator](){return this}enqueue(e){if(this._closed)throw new Error("Closed");if(this._settlers.length>0){if(this._values.length>0)throw new Error("Illegal internal state");let r=this._settlers.dequeue();e instanceof Error?r.reject(e):r.resolve({value:e})}else this._values.enqueue(e)}next(){if(this._values.length>0){let e=this._values.dequeue();return e instanceof Error?Promise.reject(e):Promise.resolve({value:e})}if(this._closed){if(this._settlers.length>0)throw new Error("Illegal internal state");return Promise.resolve({done:!0})}return new Promise((e,r)=>{this._settlers.enqueue({resolve:e,reject:r})})}};return ce(D);})();
8
8
  return __exports__;
9
9
  });
package/dist/index.cjs CHANGED
@@ -77,6 +77,7 @@ __export(dist_exports, {
77
77
  getMeshBoundingBox: () => getMeshBoundingBox,
78
78
  getMeshSize: () => getMeshSize,
79
79
  getTableCell: () => getTableCell,
80
+ getTableCellAt: () => getTableCellAt,
80
81
  getTableColumnIndex: () => getTableColumnIndex,
81
82
  getTableColumnName: () => getTableColumnName,
82
83
  getTableLength: () => getTableLength,
@@ -651,6 +652,28 @@ function getTableCell(table, rowIndex, columnName) {
651
652
  throw new Error("todo");
652
653
  }
653
654
  }
655
+ function getTableCellAt(table, rowIndex, columnIndex) {
656
+ var _a;
657
+ switch (table.shape) {
658
+ case "array-row-table":
659
+ return table.data[rowIndex][columnIndex];
660
+ case "object-row-table":
661
+ const columnName1 = getTableColumnName(table, columnIndex);
662
+ return table.data[rowIndex][columnName1];
663
+ case "geojson-table":
664
+ const columnName2 = getTableColumnName(table, columnIndex);
665
+ return table.features[rowIndex][columnName2];
666
+ case "columnar-table":
667
+ const columnName3 = getTableColumnName(table, columnIndex);
668
+ const column = table.data[columnName3];
669
+ return column[rowIndex];
670
+ case "arrow-table":
671
+ const arrowTable = table.data;
672
+ return (_a = arrowTable.getChildAt(columnIndex)) == null ? void 0 : _a.get(rowIndex);
673
+ default:
674
+ throw new Error("todo");
675
+ }
676
+ }
654
677
  function getTableRowShape(table) {
655
678
  switch (table.shape) {
656
679
  case "array-row-table":
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["index.js", "lib/table/simple-table/data-type.js", "lib/table/batches/base-table-batch-aggregator.js", "lib/table/simple-table/row-utils.js", "lib/table/batches/row-table-batch-aggregator.js", "lib/table/batches/columnar-table-batch-aggregator.js", "lib/table/batches/table-batch-builder.js", "lib/table/simple-table/table-accessors.js", "lib/table/arrow-api/arrow-like-field.js", "lib/table/arrow-api/arrow-like-schema.js", "lib/table/simple-table/table-schema.js", "lib/table/arrow-api/arrow-like-table.js", "lib/table/simple-table/make-table.js", "lib/table/simple-table/make-table-from-batches.js", "lib/table/simple-table/table-column.js", "lib/table/simple-table/convert-table.js", "lib/mesh/mesh-utils.js", "lib/mesh/deduce-mesh-schema.js", "lib/table/arrow-api/enum.js", "lib/table/arrow-api/arrow-like-type.js", "lib/table/arrow-api/get-type-info.js", "lib/utils/async-queue.js"],
4
- "sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nexport { getArrayTypeFromDataType } from \"./lib/table/simple-table/data-type.js\";\n// TABLE CATEGORY UTILS\nexport { TableBatchBuilder } from \"./lib/table/batches/table-batch-builder.js\";\nexport { RowTableBatchAggregator } from \"./lib/table/batches/row-table-batch-aggregator.js\";\nexport { ColumnarTableBatchAggregator } from \"./lib/table/batches/columnar-table-batch-aggregator.js\";\nexport { isTable, getTableLength, getTableNumCols, getTableCell, getTableRowShape, getTableColumnIndex, getTableColumnName, getTableRowAsObject, getTableRowAsArray, makeRowIterator, makeArrayRowIterator, makeObjectRowIterator } from \"./lib/table/simple-table/table-accessors.js\";\nexport { ArrowLikeTable } from \"./lib/table/arrow-api/arrow-like-table.js\";\nexport { makeTableFromData } from \"./lib/table/simple-table/make-table.js\";\nexport { makeTableFromBatches, makeBatchFromTable } from \"./lib/table/simple-table/make-table-from-batches.js\";\nexport { convertTable } from \"./lib/table/simple-table/convert-table.js\";\nexport { deduceTableSchema } from \"./lib/table/simple-table/table-schema.js\";\nexport { convertToObjectRow, convertToArrayRow } from \"./lib/table/simple-table/row-utils.js\";\nexport { getDataTypeFromArray } from \"./lib/table/simple-table/data-type.js\";\nexport { getMeshSize, getMeshBoundingBox } from \"./lib/mesh/mesh-utils.js\";\n// Commented out due to https://github.com/visgl/deck.gl/issues/6906 and https://github.com/visgl/loaders.gl/issues/2177\n// export {convertMesh} from './category/mesh/convert-mesh';\nexport { deduceMeshSchema, deduceMeshField, makeMeshAttributeMetadata } from \"./lib/mesh/deduce-mesh-schema.js\";\n// SCHEMA\nexport { Schema as ArrowLikeSchema, Field as ArrowLikeField, DataType as ArrowLikeDataType, Null, Binary, Bool, Int, Int8, Int16, Int32, Int64, Uint8, Uint16, Uint32, Uint64, Float, Float16, Float32, Float64, Utf8, Date, DateDay, DateMillisecond, Time, TimeMillisecond, TimeSecond, Timestamp, TimestampSecond, TimestampMillisecond, TimestampMicrosecond, TimestampNanosecond, Interval, IntervalDayTime, IntervalYearMonth, FixedSizeList, Struct } from \"./lib/table/arrow-api/index.js\";\n// EXPERIMENTAL APIs\n// SCHEMA UTILS\nexport { getTypeInfo } from \"./lib/table/arrow-api/get-type-info.js\";\nexport { default as AsyncQueue } from \"./lib/utils/async-queue.js\";\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n/** Deduce column types from values */\nexport function getDataTypeFromValue(value, defaultNumberType = 'float32') {\n if (value instanceof Date) {\n return 'date-millisecond';\n }\n if (value instanceof Number) {\n return defaultNumberType;\n }\n if (typeof value === 'string') {\n return 'utf8';\n }\n if (value === null || value === 'undefined') {\n return 'null';\n }\n return 'null';\n}\n/**\n * Deduces a simple data type \"descriptor from a typed array instance\n */\nexport function getDataTypeFromArray(array) {\n let type = getDataTypeFromTypedArray(array);\n if (type !== 'null') {\n return { type, nullable: false };\n }\n if (array.length > 0) {\n type = getDataTypeFromValue(array[0]);\n return { type, nullable: true };\n }\n return { type: 'null', nullable: true };\n}\n/**\n * Deduces a simple data type \"descriptor from a typed array instance\n */\nexport function getDataTypeFromTypedArray(array) {\n switch (array.constructor) {\n case Int8Array:\n return 'int8';\n case Uint8Array:\n case Uint8ClampedArray:\n return 'uint8';\n case Int16Array:\n return 'int16';\n case Uint16Array:\n return 'uint16';\n case Int32Array:\n return 'int32';\n case Uint32Array:\n return 'uint32';\n case Float32Array:\n return 'float32';\n case Float64Array:\n return 'float64';\n default:\n return 'null';\n }\n}\nexport function getArrayTypeFromDataType(type, nullable) {\n if (!nullable) {\n switch (type) {\n case 'int8':\n return Int8Array;\n case 'uint8':\n return Uint8Array;\n case 'int16':\n return Int16Array;\n case 'uint16':\n return Uint16Array;\n case 'int32':\n return Int32Array;\n case 'uint32':\n return Uint32Array;\n case 'float32':\n return Float32Array;\n case 'float64':\n return Float64Array;\n default:\n break;\n }\n }\n // if (typeof BigInt64Array !== 'undefined') {\n // TYPED_ARRAY_TO_TYPE.BigInt64Array = new Int64();\n // TYPED_ARRAY_TO_TYPE.BigUint64Array = new Uint64();\n // }\n return Array;\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nconst DEFAULT_ROW_COUNT = 100;\nexport class BaseTableBatchAggregator {\n schema;\n options;\n shape;\n length = 0;\n rows = null;\n cursor = 0;\n _headers = [];\n constructor(schema, options) {\n this.options = options;\n this.schema = schema;\n // schema is an array if there're no headers\n // object if there are headers\n if (!Array.isArray(schema)) {\n this._headers = [];\n for (const key in schema) {\n this._headers[schema[key].index] = schema[key].name;\n }\n }\n }\n rowCount() {\n return this.length;\n }\n addArrayRow(row, cursor) {\n if (Number.isFinite(cursor)) {\n this.cursor = cursor;\n }\n this.shape = 'array-row-table';\n this.rows = this.rows || new Array(DEFAULT_ROW_COUNT);\n this.rows[this.length] = row;\n this.length++;\n }\n addObjectRow(row, cursor) {\n if (Number.isFinite(cursor)) {\n this.cursor = cursor;\n }\n this.shape = 'object-row-table';\n this.rows = this.rows || new Array(DEFAULT_ROW_COUNT);\n this.rows[this.length] = row;\n this.length++;\n }\n getBatch() {\n let rows = this.rows;\n if (!rows) {\n return null;\n }\n rows = rows.slice(0, this.length);\n this.rows = null;\n const batch = {\n shape: this.shape || 'array-row-table',\n batchType: 'data',\n data: rows,\n length: this.length,\n schema: this.schema,\n cursor: this.cursor\n };\n return batch;\n }\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n/** Convert an object row to an array row */\nexport function convertToObjectRow(arrayRow, headers) {\n if (!arrayRow) {\n throw new Error('null row');\n }\n const objectRow = {};\n if (headers) {\n for (let i = 0; i < headers.length; i++) {\n objectRow[headers[i]] = arrayRow[i];\n }\n }\n else {\n for (let i = 0; i < arrayRow.length; i++) {\n const columnName = `column-${i}`;\n objectRow[columnName] = arrayRow[i];\n }\n }\n return objectRow;\n}\n/** Convert an object row to an array row */\nexport function convertToArrayRow(objectRow, headers) {\n if (!objectRow) {\n throw new Error('null row');\n }\n if (headers) {\n const arrayRow = new Array(headers.length);\n for (let i = 0; i < headers.length; i++) {\n arrayRow[i] = objectRow[headers[i]];\n }\n return arrayRow;\n }\n return Object.values(objectRow);\n}\n/** Get headers from a sample array row */\nexport function inferHeadersFromArrayRow(arrayRow) {\n const headers = [];\n for (let i = 0; i < arrayRow.length; i++) {\n const columnName = `column-${i}`;\n headers.push(columnName);\n }\n return headers;\n}\n/** Get headers from a smaple object row */\nexport function inferHeadersFromObjectRow(row) {\n return Object.keys(row);\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { convertToArrayRow, convertToObjectRow, inferHeadersFromArrayRow, inferHeadersFromObjectRow } from \"../simple-table/row-utils.js\";\nconst DEFAULT_ROW_COUNT = 100;\nexport class RowTableBatchAggregator {\n schema;\n options;\n length = 0;\n objectRows = null;\n arrayRows = null;\n cursor = 0;\n _headers = null;\n constructor(schema, options) {\n this.options = options;\n this.schema = schema;\n // schema is an array if there're no headers\n // object if there are headers\n if (schema) {\n this._headers = [];\n for (const key in schema) {\n this._headers[schema[key].index] = schema[key].name;\n }\n }\n }\n rowCount() {\n return this.length;\n }\n addArrayRow(row, cursor) {\n if (Number.isFinite(cursor)) {\n this.cursor = cursor;\n }\n // TODO - infer schema at a higher level, instead of hacking headers here?\n this._headers ||= inferHeadersFromArrayRow(row);\n // eslint-disable-next-line default-case\n switch (this.options.shape) {\n case 'object-row-table':\n const rowObject = convertToObjectRow(row, this._headers);\n this.addObjectRow(rowObject, cursor);\n break;\n case 'array-row-table':\n this.arrayRows = this.arrayRows || new Array(DEFAULT_ROW_COUNT);\n this.arrayRows[this.length] = row;\n this.length++;\n break;\n }\n }\n addObjectRow(row, cursor) {\n if (Number.isFinite(cursor)) {\n this.cursor = cursor;\n }\n // TODO - infer schema at a higher level, instead of hacking headers here?\n this._headers ||= inferHeadersFromObjectRow(row);\n // eslint-disable-next-line default-case\n switch (this.options.shape) {\n case 'array-row-table':\n const rowArray = convertToArrayRow(row, this._headers);\n this.addArrayRow(rowArray, cursor);\n break;\n case 'object-row-table':\n this.objectRows = this.objectRows || new Array(DEFAULT_ROW_COUNT);\n this.objectRows[this.length] = row;\n this.length++;\n break;\n }\n }\n getBatch() {\n let rows = this.arrayRows || this.objectRows;\n if (!rows) {\n return null;\n }\n rows = rows.slice(0, this.length);\n this.arrayRows = null;\n this.objectRows = null;\n return {\n shape: this.options.shape,\n batchType: 'data',\n data: rows,\n length: this.length,\n // @ts-expect-error we should infer a schema\n schema: this.schema,\n cursor: this.cursor\n };\n }\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nconst DEFAULT_ROW_COUNT = 100;\nexport class ColumnarTableBatchAggregator {\n schema;\n length = 0;\n allocated = 0;\n columns = {};\n constructor(schema, options) {\n this.schema = schema;\n this._reallocateColumns();\n }\n rowCount() {\n return this.length;\n }\n addArrayRow(row) {\n // If user keeps pushing rows beyond batch size, reallocate\n this._reallocateColumns();\n let i = 0;\n // TODO what if no csv header, columns not populated?\n for (const fieldName in this.columns) {\n this.columns[fieldName][this.length] = row[i++];\n }\n this.length++;\n }\n addObjectRow(row) {\n // If user keeps pushing rows beyond batch size, reallocate\n this._reallocateColumns();\n for (const fieldName in row) {\n this.columns[fieldName][this.length] = row[fieldName];\n }\n this.length++;\n }\n getBatch() {\n this._pruneColumns();\n const columns = Array.isArray(this.schema) ? this.columns : {};\n // schema is an array if there're no headers\n // object if there are headers\n // columns should match schema format\n if (!Array.isArray(this.schema)) {\n for (const fieldName in this.schema) {\n const field = this.schema[fieldName];\n columns[field.name] = this.columns[field.index];\n }\n }\n this.columns = {};\n const batch = {\n shape: 'columnar-table',\n batchType: 'data',\n data: columns,\n schema: this.schema,\n length: this.length\n };\n return batch;\n }\n // HELPERS\n _reallocateColumns() {\n if (this.length < this.allocated) {\n return;\n }\n // @ts-ignore TODO\n this.allocated = this.allocated > 0 ? (this.allocated *= 2) : DEFAULT_ROW_COUNT;\n this.columns = {};\n for (const fieldName in this.schema) {\n const field = this.schema[fieldName];\n const ArrayType = field.type || Float32Array;\n const oldColumn = this.columns[field.index];\n if (oldColumn && ArrayBuffer.isView(oldColumn)) {\n // Copy the old data to the new array\n const typedArray = new ArrayType(this.allocated);\n typedArray.set(oldColumn);\n this.columns[field.index] = typedArray;\n }\n else if (oldColumn) {\n // Plain array\n oldColumn.length = this.allocated;\n this.columns[field.index] = oldColumn;\n }\n else {\n // Create new\n this.columns[field.index] = new ArrayType(this.allocated);\n }\n }\n }\n _pruneColumns() {\n for (const [columnName, column] of Object.entries(this.columns)) {\n this.columns[columnName] = column.slice(0, this.length);\n }\n }\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { BaseTableBatchAggregator } from \"./base-table-batch-aggregator.js\";\nimport { RowTableBatchAggregator } from \"./row-table-batch-aggregator.js\";\nimport { ColumnarTableBatchAggregator } from \"./columnar-table-batch-aggregator.js\";\nconst DEFAULT_OPTIONS = {\n shape: undefined,\n batchSize: 'auto',\n batchDebounceMs: 0,\n limit: 0,\n _limitMB: 0\n};\nconst ERR_MESSAGE = 'TableBatchBuilder';\n/** Incrementally builds batches from a stream of rows */\nexport class TableBatchBuilder {\n schema;\n options;\n aggregator = null;\n batchCount = 0;\n bytesUsed = 0;\n isChunkComplete = false;\n lastBatchEmittedMs = Date.now();\n totalLength = 0;\n totalBytes = 0;\n rowBytes = 0;\n static ArrowBatch;\n constructor(schema, options) {\n this.schema = schema;\n this.options = { ...DEFAULT_OPTIONS, ...options };\n }\n limitReached() {\n if (Boolean(this.options?.limit) && this.totalLength >= this.options.limit) {\n return true;\n }\n if (Boolean(this.options?._limitMB) && this.totalBytes / 1e6 >= this.options._limitMB) {\n return true;\n }\n return false;\n }\n /** @deprecated Use addArrayRow or addObjectRow */\n addRow(row) {\n if (this.limitReached()) {\n return;\n }\n this.totalLength++;\n this.rowBytes = this.rowBytes || this._estimateRowMB(row);\n this.totalBytes += this.rowBytes;\n if (Array.isArray(row)) {\n this.addArrayRow(row);\n }\n else {\n this.addObjectRow(row);\n }\n }\n /** Add one row to the batch */\n addArrayRow(row) {\n if (!this.aggregator) {\n const TableBatchType = this._getTableBatchType();\n this.aggregator = new TableBatchType(this.schema, this.options);\n }\n this.aggregator.addArrayRow(row);\n }\n /** Add one row to the batch */\n addObjectRow(row) {\n if (!this.aggregator) {\n const TableBatchType = this._getTableBatchType();\n this.aggregator = new TableBatchType(this.schema, this.options);\n }\n this.aggregator.addObjectRow(row);\n }\n /** Mark an incoming raw memory chunk has completed */\n chunkComplete(chunk) {\n if (chunk instanceof ArrayBuffer) {\n this.bytesUsed += chunk.byteLength;\n }\n if (typeof chunk === 'string') {\n this.bytesUsed += chunk.length;\n }\n this.isChunkComplete = true;\n }\n getFullBatch(options) {\n return this._isFull() ? this._getBatch(options) : null;\n }\n getFinalBatch(options) {\n return this._getBatch(options);\n }\n // INTERNAL\n _estimateRowMB(row) {\n return Array.isArray(row) ? row.length * 8 : Object.keys(row).length * 8;\n }\n _isFull() {\n // No batch, not ready\n if (!this.aggregator || this.aggregator.rowCount() === 0) {\n return false;\n }\n // if batchSize === 'auto' we wait for chunk to complete\n // if batchSize === number, ensure we have enough rows\n if (this.options.batchSize === 'auto') {\n if (!this.isChunkComplete) {\n return false;\n }\n }\n else if (this.options.batchSize > this.aggregator.rowCount()) {\n return false;\n }\n // Debounce batches\n if (this.options.batchDebounceMs > Date.now() - this.lastBatchEmittedMs) {\n return false;\n }\n // Emit batch\n this.isChunkComplete = false;\n this.lastBatchEmittedMs = Date.now();\n return true;\n }\n /**\n * bytesUsed can be set via chunkComplete or via getBatch*\n */\n _getBatch(options) {\n if (!this.aggregator) {\n return null;\n }\n // TODO - this can overly increment bytes used?\n if (options?.bytesUsed) {\n this.bytesUsed = options.bytesUsed;\n }\n const normalizedBatch = this.aggregator.getBatch();\n normalizedBatch.count = this.batchCount;\n normalizedBatch.bytesUsed = this.bytesUsed;\n Object.assign(normalizedBatch, options);\n this.batchCount++;\n this.aggregator = null;\n return normalizedBatch;\n }\n _getTableBatchType() {\n switch (this.options.shape) {\n case 'array-row-table':\n case 'object-row-table':\n return RowTableBatchAggregator;\n case 'columnar-table':\n return ColumnarTableBatchAggregator;\n case 'arrow-table':\n if (!TableBatchBuilder.ArrowBatch) {\n throw new Error(ERR_MESSAGE);\n }\n return TableBatchBuilder.ArrowBatch;\n default:\n return BaseTableBatchAggregator;\n }\n }\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nexport function isTable(table) {\n const shape = typeof table === 'object' && table?.shape;\n switch (shape) {\n case 'array-row-table':\n case 'object-row-table':\n return Array.isArray(table.data);\n case 'geojson-table':\n return Array.isArray(table.features);\n case 'columnar-table':\n return table.data && typeof table.data === 'object';\n case 'arrow-table':\n return Boolean(table?.data?.numRows !== undefined);\n default:\n return false;\n }\n}\n/**\n * Returns the length of the table (i.e. the number of rows)\n */\nexport function getTableLength(table) {\n switch (table.shape) {\n case 'array-row-table':\n case 'object-row-table':\n return table.data.length;\n case 'geojson-table':\n return table.features.length;\n case 'arrow-table':\n const arrowTable = table.data;\n return arrowTable.numRows;\n case 'columnar-table':\n for (const column of Object.values(table.data)) {\n return column.length || 0;\n }\n return 0;\n default:\n throw new Error('table');\n }\n}\n/**\n * Returns the number of columns in the table\n * @throws Fails to deduce number of columns if the table has no schema and is empty\n */\nexport function getTableNumCols(table) {\n if (table.schema) {\n return table.schema.fields.length;\n }\n if (getTableLength(table) === 0) {\n throw new Error('empty table');\n }\n switch (table.shape) {\n case 'array-row-table':\n return table.data[0].length;\n case 'object-row-table':\n return Object.keys(table.data[0]).length;\n case 'geojson-table':\n return Object.keys(table.features[0]).length;\n case 'columnar-table':\n return Object.keys(table.data).length;\n case 'arrow-table':\n const arrowTable = table.data;\n return arrowTable.numCols;\n default:\n throw new Error('table');\n }\n}\n/** Get a table cell value at row index and column name */\nexport function getTableCell(table, rowIndex, columnName) {\n switch (table.shape) {\n case 'array-row-table':\n const columnIndex = getTableColumnIndex(table, columnName);\n return table.data[rowIndex][columnIndex];\n case 'object-row-table':\n return table.data[rowIndex][columnName];\n case 'geojson-table':\n return table.features[rowIndex][columnName];\n case 'columnar-table':\n const column = table.data[columnName];\n return column[rowIndex];\n case 'arrow-table':\n const arrowTable = table.data;\n const arrowColumnIndex = arrowTable.schema.fields.findIndex((field) => field.name === columnName);\n return arrowTable.getChildAt(arrowColumnIndex)?.get(rowIndex);\n default:\n throw new Error('todo');\n }\n}\n/** Get a table cell value at row index and column name */\nexport function getTableCellAt(table, rowIndex, columnIndex) {\n switch (table.shape) {\n case 'array-row-table':\n return table.data[rowIndex][columnIndex];\n case 'object-row-table':\n const columnName1 = getTableColumnName(table, columnIndex);\n return table.data[rowIndex][columnName1];\n case 'geojson-table':\n const columnName2 = getTableColumnName(table, columnIndex);\n return table.features[rowIndex][columnName2];\n case 'columnar-table':\n const columnName3 = getTableColumnName(table, columnIndex);\n const column = table.data[columnName3];\n return column[rowIndex];\n case 'arrow-table':\n const arrowTable = table.data;\n return arrowTable.getChildAt(columnIndex)?.get(rowIndex);\n default:\n throw new Error('todo');\n }\n}\n/** Deduce the table row shape */\nexport function getTableRowShape(table) {\n switch (table.shape) {\n case 'array-row-table':\n case 'object-row-table':\n return table.shape;\n case 'geojson-table':\n // TODO - this is not correct, geojson-table is not a row table\n return 'object-row-table';\n case 'columnar-table':\n default:\n throw new Error('Not a row table');\n }\n}\n/** Get the index of a named table column. Requires the table to have a schema */\nexport function getTableColumnIndex(table, columnName) {\n const columnIndex = table.schema?.fields.findIndex((field) => field.name === columnName);\n if (columnIndex === undefined) {\n throw new Error(columnName);\n }\n return columnIndex;\n}\n/** Get the name of a table column by index. Requires the table to have a schema */\nexport function getTableColumnName(table, columnIndex) {\n const columnName = table.schema?.fields[columnIndex]?.name;\n if (!columnName) {\n throw new Error(`${columnIndex}`);\n }\n return columnName;\n}\n/**\n * Returns one row of the table in object format.\n * @param target Optional parameter will be used if needed to store the row. Can be reused between calls to improve performance\n * @returns an array representing the row. May be the original array in the row, a new object, or the target parameter\n */\n// eslint-disable-next-line complexity\nexport function getTableRowAsObject(table, rowIndex, target, copy) {\n switch (table.shape) {\n case 'object-row-table':\n return copy ? Object.fromEntries(Object.entries(table.data[rowIndex])) : table.data[rowIndex];\n case 'array-row-table':\n if (table.schema) {\n const objectRow = target || {};\n for (let i = 0; i < table.schema.fields.length; i++) {\n objectRow[table.schema.fields[i].name] = table.data[rowIndex][i];\n }\n return objectRow;\n }\n throw new Error('no schema');\n case 'geojson-table':\n if (table.schema) {\n const objectRow = target || {};\n // TODO - should lift properties to top level\n for (let i = 0; i < table.schema.fields.length; i++) {\n objectRow[table.schema.fields[i].name] = table.features[rowIndex][i];\n }\n return objectRow;\n }\n throw new Error('no schema');\n case 'columnar-table':\n if (table.schema) {\n const objectRow = target || {};\n for (let i = 0; i < table.schema.fields.length; i++) {\n objectRow[table.schema.fields[i].name] =\n table.data[table.schema.fields[i].name][rowIndex];\n }\n return objectRow;\n }\n else {\n // eslint-disable-line no-else-return\n const objectRow = target || {};\n for (const [name, column] of Object.entries(table.data)) {\n objectRow[name] = column[rowIndex];\n }\n return objectRow;\n }\n case 'arrow-table':\n const arrowTable = table.data;\n const objectRow = target || {};\n const row = arrowTable.get(rowIndex);\n const schema = arrowTable.schema;\n for (let i = 0; i < schema.fields.length; i++) {\n objectRow[schema.fields[i].name] = row?.[schema.fields[i].name];\n }\n return objectRow;\n default:\n throw new Error('shape');\n }\n}\n/**\n * Returns one row of the table in array format.\n * @param target Optional parameter will be used if needed to store the row. Can be reused between calls to improve performance.\n * @returns an array representing the row. May be the original array in the row, a new object, or the target parameter\n */\n// eslint-disable-next-line complexity\nexport function getTableRowAsArray(table, rowIndex, target, copy) {\n switch (table.shape) {\n case 'array-row-table':\n return copy ? Array.from(table.data[rowIndex]) : table.data[rowIndex];\n case 'object-row-table':\n if (table.schema) {\n const arrayRow = target || [];\n for (let i = 0; i < table.schema.fields.length; i++) {\n arrayRow[i] = table.data[rowIndex][table.schema.fields[i].name];\n }\n return arrayRow;\n }\n // Warning: just slap on the values, this risks mismatches between rows\n return Object.values(table.data[rowIndex]);\n case 'geojson-table':\n if (table.schema) {\n const arrayRow = target || [];\n // TODO - should lift properties to top level\n for (let i = 0; i < table.schema.fields.length; i++) {\n arrayRow[i] = table.features[rowIndex][table.schema.fields[i].name];\n }\n return arrayRow;\n }\n // Warning: just slap on the values, this risks mismatches between rows\n return Object.values(table.features[rowIndex]);\n case 'columnar-table':\n if (table.schema) {\n const arrayRow = target || [];\n for (let i = 0; i < table.schema.fields.length; i++) {\n arrayRow[i] = table.data[table.schema.fields[i].name][rowIndex];\n }\n return arrayRow;\n }\n else {\n // eslint-disable-line no-else-return\n const arrayRow = target || [];\n let i = 0;\n for (const column of Object.values(table.data)) {\n arrayRow[i] = column[rowIndex];\n i++;\n }\n return arrayRow;\n }\n case 'arrow-table':\n const arrowTable = table.data;\n const arrayRow = target || [];\n const row = arrowTable.get(rowIndex);\n const schema = arrowTable.schema;\n for (let i = 0; i < schema.fields.length; i++) {\n arrayRow[i] = row?.[schema.fields[i].name];\n }\n return arrayRow;\n default:\n throw new Error('shape');\n }\n}\n/** Convert any table into array row format */\nexport function makeArrayRowTable(table) {\n if (table.shape === 'array-row-table') {\n return table;\n }\n const length = getTableLength(table);\n const data = new Array(length);\n for (let rowIndex = 0; rowIndex < length; rowIndex++) {\n data[rowIndex] = getTableRowAsArray(table, rowIndex);\n }\n return {\n shape: 'array-row-table',\n schema: table.schema,\n data\n };\n}\n/** Convert any table into object row format */\nexport function makeObjectRowTable(table) {\n if (table.shape === 'object-row-table') {\n return table;\n }\n const length = getTableLength(table);\n const data = new Array(length);\n for (let rowIndex = 0; rowIndex < length; rowIndex++) {\n data[rowIndex] = getTableRowAsObject(table, rowIndex);\n }\n return {\n shape: 'object-row-table',\n schema: table.schema,\n data\n };\n}\n/** Convert any table into object row format */\nexport function makeColumnarTable(table) {\n if (table.shape === 'object-row-table') {\n return table;\n }\n const length = getTableLength(table);\n const data = new Array(length);\n for (let rowIndex = 0; rowIndex < length; rowIndex++) {\n data[rowIndex] = getTableRowAsObject(table, rowIndex);\n }\n return {\n shape: 'object-row-table',\n schema: table.schema,\n data\n };\n}\n// Row Iterators\n/**\n * Iterate over table rows\n * @param table\n * @param shape\n */\nexport function* makeRowIterator(table, shape) {\n switch (shape) {\n case 'array-row-table':\n yield* makeArrayRowIterator(table);\n break;\n case 'object-row-table':\n yield* makeObjectRowIterator(table);\n break;\n default:\n throw new Error(`Unknown row type ${shape}`);\n }\n}\n/**\n * Streaming processing: Iterate over table, yielding array rows\n * @param table\n * @param shape\n */\nexport function* makeArrayRowIterator(table, target = []) {\n const length = getTableLength(table);\n for (let rowIndex = 0; rowIndex < length; rowIndex++) {\n yield getTableRowAsArray(table, rowIndex, target);\n }\n}\n/**\n * Streaming processing: Iterate over table, yielding object rows\n * @param table\n * @param shape\n */\nexport function* makeObjectRowIterator(table, target = {}) {\n const length = getTableLength(table);\n for (let rowIndex = 0; rowIndex < length; rowIndex++) {\n yield getTableRowAsObject(table, rowIndex, target);\n }\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n/**\n * ArrowJS `Field` API-compatible class for row-based tables\n * https://loaders.gl/arrowjs/docs/api-reference/field\n * A field holds name, nullable, and metadata information about a table \"column\"\n * A Schema is essentially a list of fields\n */\nexport class ArrowLikeField {\n name;\n type;\n nullable;\n metadata;\n constructor(name, type, nullable = false, metadata = new Map()) {\n this.name = name;\n this.type = type;\n this.nullable = nullable;\n this.metadata = metadata;\n }\n get typeId() {\n return this.type && this.type.typeId;\n }\n clone() {\n return new ArrowLikeField(this.name, this.type, this.nullable, this.metadata);\n }\n compareTo(other) {\n return (this.name === other.name &&\n this.type === other.type &&\n this.nullable === other.nullable &&\n this.metadata === other.metadata);\n }\n toString() {\n return `${JSON.stringify(this.type)}${this.nullable ? ', nullable' : ''}${this.metadata ? `, metadata: ${JSON.stringify(this.metadata)}` : ''}`;\n }\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { ArrowLikeField } from \"./arrow-like-field.js\";\nexport class ArrowLikeSchema {\n fields;\n metadata;\n constructor(fields, metadata = new Map()) {\n // checkNames(fields);\n // For kepler fields, create arrow compatible `Fields` that have kepler fields as `metadata`\n this.fields = fields.map((field) => new ArrowLikeField(field.name, field.type, field.nullable, field.metadata));\n this.metadata =\n metadata instanceof Map ? metadata : new Map(Object.entries(metadata));\n }\n // TODO - arrow only seems to compare fields, not metadata\n compareTo(other) {\n if (this.metadata !== other.metadata) {\n return false;\n }\n if (this.fields.length !== other.fields.length) {\n return false;\n }\n for (let i = 0; i < this.fields.length; ++i) {\n if (!this.fields[i].compareTo(other.fields[i])) {\n return false;\n }\n }\n return true;\n }\n select(...columnNames) {\n // Ensure column names reference valid fields\n const nameMap = Object.create(null);\n for (const name of columnNames) {\n nameMap[name] = true;\n }\n const selectedFields = this.fields.filter((field) => nameMap[field.name]);\n return new ArrowLikeSchema(selectedFields, this.metadata);\n }\n selectAt(...columnIndices) {\n // Ensure column indices reference valid fields\n const selectedFields = columnIndices.map((index) => this.fields[index]).filter(Boolean);\n return new ArrowLikeSchema(selectedFields, this.metadata);\n }\n assign(schemaOrFields) {\n let fields;\n let metadata = this.metadata;\n if (schemaOrFields instanceof ArrowLikeSchema) {\n const otherArrowLikeSchema = schemaOrFields;\n fields = otherArrowLikeSchema.fields;\n metadata = mergeMaps(mergeMaps(new Map(), this.metadata), otherArrowLikeSchema.metadata);\n }\n else {\n fields = schemaOrFields;\n }\n // Create a merged list of fields, overwrite fields in place, new fields at end\n const fieldMap = Object.create(null);\n for (const field of this.fields) {\n fieldMap[field.name] = field;\n }\n for (const field of fields) {\n fieldMap[field.name] = field;\n }\n const mergedFields = Object.values(fieldMap);\n return new ArrowLikeSchema(mergedFields, metadata);\n }\n}\n// Warn if any duplicated field names\n// function checkNames(fields: Field[]): void {\n// const usedNames: Record<string, boolean> = {};\n// for (const field of fields) {\n// if (usedNames[field.name]) {\n// // eslint-disable-next-line\n// console.warn('ArrowLikeSchema: duplicated field name', field.name, field);\n// }\n// usedNames[field.name] = true;\n// }\n// }\nfunction mergeMaps(m1, m2) {\n // @ts-ignore\n return new Map([...(m1 || new Map()), ...(m2 || new Map())]);\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { getDataTypeFromArray, getDataTypeFromValue } from \"./data-type.js\";\n/**\n * SCHEMA SUPPORT - AUTODEDUCTION\n * @param {*} table\n * @param {*} schema\n * @returns\n */\nexport function deduceTableSchema(table) {\n switch (table.shape) {\n case 'array-row-table':\n case 'object-row-table':\n return deduceSchemaFromRows(table.data);\n case 'geojson-table':\n return deduceSchemaFromGeoJSON(table.features);\n case 'columnar-table':\n return deduceSchemaFromColumns(table.data);\n case 'arrow-table':\n default:\n throw new Error('Deduce schema');\n }\n}\nexport function deduceSchema(data) {\n return Array.isArray(data) ? deduceSchemaFromRows(data) : deduceSchemaFromColumns(data);\n}\n/** Given an object with columnar arrays, try to deduce a schema */\nfunction deduceSchemaFromColumns(columnarTable) {\n const fields = [];\n for (const [columnName, column] of Object.entries(columnarTable)) {\n const field = deduceFieldFromColumn(column, columnName);\n fields.push(field);\n }\n return { fields, metadata: {} };\n}\n/** Given an array of rows, try to deduce a schema */\nfunction deduceSchemaFromRows(rowTable) {\n if (!rowTable.length) {\n throw new Error('deduce from empty table');\n }\n const fields = [];\n const row0 = rowTable[0];\n // TODO - fields can be nullable, false detection...\n // Could look at additional rows if nulls in first row\n // TODO - if array, column names will be numbers\n for (const [columnName, value] of Object.entries(row0)) {\n fields.push(deduceFieldFromValue(value, columnName));\n }\n return { fields, metadata: {} };\n}\n/** Given a GeoJSON, try to deduce a schema */\nfunction deduceSchemaFromGeoJSON(features) {\n if (!features.length) {\n throw new Error('deduce from empty table');\n }\n const fields = [];\n const row0 = features[0].properties || {};\n // TODO - fields can be nullable, false detection...\n // Could look at additional rows if nulls in first row\n // TODO - if array, column names will be numbers\n for (const [columnName, value] of Object.entries(row0)) {\n fields.push(deduceFieldFromValue(value, columnName));\n }\n return { fields, metadata: {} };\n}\n/** Given a column (i.e. array), attempt to deduce an appropriate `Field` */\nfunction deduceFieldFromColumn(column, name) {\n if (ArrayBuffer.isView(column)) {\n const type = getDataTypeFromArray(column);\n return {\n name,\n type: type.type || 'null',\n nullable: type.nullable\n // metadata: {}\n };\n }\n if (Array.isArray(column) && column.length > 0) {\n const value = column[0];\n const type = getDataTypeFromValue(value);\n // TODO - support nested schemas?\n return {\n name,\n type,\n nullable: true\n // metadata: {},\n };\n }\n throw new Error('empty table');\n}\n/** Given a value, attempt to deduce an appropriate `Field` */\nfunction deduceFieldFromValue(value, name) {\n const type = getDataTypeFromValue(value);\n return {\n name,\n type,\n nullable: true\n // metadata: {}\n };\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { ArrowLikeSchema } from \"./arrow-like-schema.js\";\nimport { deduceTableSchema } from \"../simple-table/table-schema.js\";\nimport { getTableCell, getTableLength, getTableNumCols\n// getTableCell,\n// getTableRowShape,\n// getTableColumnIndex,\n// getTableColumnName,\n// getTableRowAsObject,\n// getTableRowAsArray\n } from \"../simple-table/table-accessors.js\";\nclass ArrowLikeVector {\n table;\n columnName;\n constructor(table, columnName) {\n this.table = table;\n this.columnName = columnName;\n }\n get(rowIndex) {\n return getTableCell(this.table, rowIndex, this.columnName);\n }\n toArray() {\n switch (this.table.shape) {\n case 'arrow-table':\n const arrowTable = this.table.data;\n return arrowTable.getChild(this.columnName)?.toArray();\n case 'columnar-table':\n return this.table.data[this.columnName];\n default:\n throw new Error(this.table.shape);\n }\n }\n}\n/**\n * Class that provides an API similar to Apache Arrow Table class\n * Forwards methods directly if the underlying table is Arrow, otherwise calls accessor functions\n */\nexport class ArrowLikeTable {\n schema;\n table;\n constructor(table) {\n const schema = table.schema || deduceTableSchema(table);\n this.schema = new ArrowLikeSchema(schema.fields, schema.metadata);\n this.table = { ...table, schema };\n }\n // get schema() {\n // return this.table.schema;\n // }\n get data() {\n return this.table.shape === 'geojson-table' ? this.table.features : this.table.data;\n }\n get numCols() {\n return getTableNumCols(this.table);\n }\n get length() {\n return getTableLength(this.table);\n }\n getChild(columnName) {\n return new ArrowLikeVector(this.table, columnName);\n }\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { deduceTableSchema } from \"./table-schema.js\";\nexport function makeTableFromData(data) {\n let table;\n switch (getTableShapeFromData(data)) {\n case 'array-row-table':\n table = { shape: 'array-row-table', data: data };\n break;\n case 'object-row-table':\n table = { shape: 'object-row-table', data: data };\n break;\n case 'columnar-table':\n table = { shape: 'columnar-table', data: data };\n break;\n default:\n throw new Error('table');\n }\n const schema = deduceTableSchema(table);\n return { ...table, schema };\n}\n/** Helper function to get shape of data */\nfunction getTableShapeFromData(data) {\n if (Array.isArray(data)) {\n if (data.length === 0) {\n throw new Error('cannot deduce type of empty table');\n }\n // Deduce the table shape from the first row\n const firstRow = data[0];\n if (Array.isArray(firstRow)) {\n return 'array-row-table';\n }\n if (firstRow && typeof firstRow === 'object') {\n return 'object-row-table';\n }\n }\n if (data && typeof data === 'object') {\n return 'columnar-table';\n }\n throw new Error('invalid table');\n}\n/** Convert any table into object row format *\nexport function makeColumnarTable(table: Table): ColumnarTable {\n if (table.shape === 'columnar-table') {\n return table;\n }\n const length = getTableLength(table);\n const data = new Array<{[key: string]: unknown}>(length);\n for (let rowIndex = 0; rowIndex < length; rowIndex++) {\n data[rowIndex] = getTableRowAsObject(table, rowIndex);\n }\n return {\n shape: 'columnar-table',\n schema: table.schema,\n data\n };\n}\n\n\n/** Convert any table into array row format *\nexport function makeArrayRowTable(table: TableLike): ArrayRowTable {\n if (table.shape === 'array-row-table') {\n return table;\n }\n const length = getTableLength(table);\n const data = new Array<unknown[]>(length);\n for (let rowIndex = 0; rowIndex < length; rowIndex++) {\n data[rowIndex] = getTableRowAsArray(table, rowIndex);\n }\n return {\n shape: 'array-row-table',\n schema: table.schema,\n data\n };\n}\n\n/** Convert any table into object row format *\nexport function makeObjectRowTable(table: Table): ObjectRowTable {\n if (table.shape === 'object-row-table') {\n return table;\n }\n const length = getTableLength(table);\n const data = new Array<{[key: string]: unknown}>(length);\n for (let rowIndex = 0; rowIndex < length; rowIndex++) {\n data[rowIndex] = getTableRowAsObject(table, rowIndex);\n }\n return {\n shape: 'object-row-table',\n schema: table.schema,\n data\n };\n}\n*/\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { getTableLength } from \"./table-accessors.js\";\n/**\n * Returns an iterator that yields a single table as a sequence of batches.\n * @note Currently only a single batch is yielded.\n * @note All batches will have the same shape and schema as the original table.\n * @returns\n */\nexport function* makeBatchesFromTable(table) {\n yield makeBatchFromTable(table);\n}\n/**\n * Returns a table packaged as a single table batch\n * @note The batch will have the same shape and schema as the original table.\n * @returns `null` if no batches are yielded by the async iterator\n */\nexport function makeBatchFromTable(table) {\n return { ...table, length: getTableLength(table), batchType: 'data' };\n}\n/**\n * Assembles all batches from an async iterator into a single table.\n * @note All batches must have the same shape and schema\n * @param batchIterator\n * @returns `null` if no batches are yielded by the async iterator\n */\n// eslint-disable-next-line complexity\nexport async function makeTableFromBatches(batchIterator) {\n let arrayRows;\n let objectRows;\n let features;\n let shape = null;\n let schema;\n for await (const batch of batchIterator) {\n shape = shape || batch.shape;\n schema = schema || batch.schema;\n switch (batch.shape) {\n case 'array-row-table':\n arrayRows = arrayRows || [];\n for (let rowIndex = 0; rowIndex < getTableLength(batch); rowIndex++) {\n const row = batch.data[rowIndex];\n arrayRows.push(row);\n }\n break;\n case 'object-row-table':\n objectRows = objectRows || [];\n for (let rowIndex = 0; rowIndex < getTableLength(batch); rowIndex++) {\n const row = batch.data[rowIndex];\n objectRows.push(row);\n }\n break;\n case 'geojson-table':\n features = features || [];\n for (let rowIndex = 0; rowIndex < getTableLength(batch); rowIndex++) {\n const row = batch.features[rowIndex];\n features.push(row);\n }\n break;\n case 'columnar-table':\n case 'arrow-table':\n default:\n throw new Error('shape');\n }\n }\n if (!shape) {\n return null;\n }\n switch (shape) {\n case 'array-row-table':\n return { shape: 'array-row-table', data: arrayRows, schema };\n case 'object-row-table':\n return { shape: 'object-row-table', data: objectRows, schema };\n case 'geojson-table':\n return { shape: 'geojson-table', type: 'FeatureCollection', features: features, schema };\n default:\n return null;\n }\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { getArrayTypeFromDataType } from \"./data-type.js\";\nexport function makeColumnFromField(field, length) {\n const ArrayType = getArrayTypeFromDataType(field.type, field.nullable);\n return new ArrayType(length);\n}\n/*\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction deduceSchema(rows) {\n const row = rows[0];\n\n const schema = {};\n let i = 0;\n for (const columnName in row) {\n const value = row[columnName];\n switch (typeof value) {\n case 'number':\n case 'boolean':\n // TODO - booleans could be handled differently...\n schema[columnName] = {name: String(columnName), index: i, type: Float32Array};\n break;\n\n case 'object':\n schema[columnName] = {name: String(columnName), index: i, type: Array};\n break;\n\n case 'string':\n default:\n schema[columnName] = {name: String(columnName), index: i, type: Array};\n // We currently only handle numeric rows\n // TODO we could offer a function to map strings to numbers?\n }\n i++;\n }\n return schema;\n}\n*/\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { getTableCell, getTableLength, getTableRowAsArray, getTableRowAsObject } from \"./table-accessors.js\";\nimport { deduceTableSchema } from \"./table-schema.js\";\nimport { makeColumnFromField } from \"./table-column.js\";\n/**\n * Convert a table to a different shape\n * @param table\n * @param shape\n * @returns\n */\nexport function convertTable(table, shape) {\n switch (shape) {\n case 'object-row-table':\n return makeObjectRowTable(table);\n case 'array-row-table':\n return makeArrayRowTable(table);\n case 'columnar-table':\n return makeColumnarTable(table);\n case 'arrow-table':\n return makeArrowTable(table);\n default:\n throw new Error(shape);\n }\n}\n/**\n * Convert a table to apache arrow format\n * @note this depends on the `@loaders.gl/arrow module being imported\n */\nexport function makeArrowTable(table) {\n const _makeArrowTable = globalThis.__loaders?._makeArrowTable;\n if (!_makeArrowTable) {\n throw new Error('');\n }\n return _makeArrowTable(table);\n}\n/** Convert any simple table into columnar format */\nexport function makeColumnarTable(table) {\n // TODO - should schema really be optional?\n const schema = table.schema || deduceTableSchema(table);\n const fields = table.schema?.fields || [];\n if (table.shape === 'columnar-table') {\n return { ...table, schema };\n }\n const length = getTableLength(table);\n const columns = {};\n for (const field of fields) {\n const column = makeColumnFromField(field, length);\n columns[field.name] = column;\n for (let rowIndex = 0; rowIndex < length; rowIndex++) {\n column[rowIndex] = getTableCell(table, rowIndex, field.name);\n }\n }\n return {\n shape: 'columnar-table',\n schema,\n data: columns\n };\n}\n/** Convert any table into array row format */\nexport function makeArrayRowTable(table) {\n if (table.shape === 'array-row-table') {\n return table;\n }\n const length = getTableLength(table);\n const data = new Array(length);\n for (let rowIndex = 0; rowIndex < length; rowIndex++) {\n data[rowIndex] = getTableRowAsArray(table, rowIndex);\n }\n return {\n shape: 'array-row-table',\n schema: table.schema,\n data\n };\n}\n/** Convert any table into object row format */\nexport function makeObjectRowTable(table) {\n if (table.shape === 'object-row-table') {\n return table;\n }\n const length = getTableLength(table);\n const data = new Array(length);\n for (let rowIndex = 0; rowIndex < length; rowIndex++) {\n data[rowIndex] = getTableRowAsObject(table, rowIndex);\n }\n return {\n shape: 'object-row-table',\n schema: table.schema,\n data\n };\n}\n/**\n/**\n *\n * @note - should be part of schema module\nexport function convertColumnarToRowFormatTable(columnarTable: ColumnarTable): ObjectRowTable {\n const tableKeys = ;\n const tableRowsCount = columnarTable[tableKeys[0]].length;\n\n const objectRows: ObjectRowTable['data'] = [];\n\n for (let index = 0; index < tableRowsCount; index++) {\n const objectRow = {};\n for (const fieldName of Object.keys(columnarTable.data)) {\n objectRow[fieldName] = columnarTable[fieldName][index];\n }\n objectRows.push(objectRow);\n }\n\n return {\n shape: 'object-row-table',\n data: objectRows\n };\n}\n */\n", "/**\n * Get number of vertices in mesh\n * @param attributes\n */\nexport function getMeshSize(attributes) {\n let size = 0;\n for (const attributeName in attributes) {\n const attribute = attributes[attributeName];\n if (ArrayBuffer.isView(attribute)) {\n // @ts-ignore DataView doesn't have BYTES_PER_ELEMENT\n size += attribute.byteLength * attribute.BYTES_PER_ELEMENT;\n }\n }\n return size;\n}\n/**\n * Get the (axis aligned) bounding box of a mesh\n * @param attributes\n * @returns array of two vectors representing the axis aligned bounding box\n */\n// eslint-disable-next-line complexity\nexport function getMeshBoundingBox(attributes) {\n let minX = Infinity;\n let minY = Infinity;\n let minZ = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n let maxZ = -Infinity;\n const positions = attributes.POSITION ? attributes.POSITION.value : [];\n const len = positions && positions.length;\n for (let i = 0; i < len; i += 3) {\n const x = positions[i];\n const y = positions[i + 1];\n const z = positions[i + 2];\n minX = x < minX ? x : minX;\n minY = y < minY ? y : minY;\n minZ = z < minZ ? z : minZ;\n maxX = x > maxX ? x : maxX;\n maxY = y > maxY ? y : maxY;\n maxZ = z > maxZ ? z : maxZ;\n }\n return [\n [minX, minY, minZ],\n [maxX, maxY, maxZ]\n ];\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { getDataTypeFromTypedArray } from \"../table/simple-table/data-type.js\";\n/**\n * Create a schema for mesh attributes data\n * @param attributes\n * @param metadata\n * @returns\n */\nexport function deduceMeshSchema(attributes, metadata = {}) {\n const fields = deduceMeshFields(attributes);\n return { fields, metadata };\n}\n/**\n * Create arrow-like schema field for mesh attribute\n * @param attributeName\n * @param attribute\n * @param optionalMetadata\n * @returns\n */\nexport function deduceMeshField(name, attribute, optionalMetadata) {\n const type = getDataTypeFromTypedArray(attribute.value);\n const metadata = optionalMetadata ? optionalMetadata : makeMeshAttributeMetadata(attribute);\n return {\n name,\n type: { type: 'fixed-size-list', listSize: attribute.size, children: [{ name: 'value', type }] },\n nullable: false,\n metadata\n };\n}\n/**\n * Create fields array for mesh attributes\n * @param attributes\n * @returns\n */\nfunction deduceMeshFields(attributes) {\n const fields = [];\n for (const attributeName in attributes) {\n const attribute = attributes[attributeName];\n fields.push(deduceMeshField(attributeName, attribute));\n }\n return fields;\n}\n/**\n * Make metadata by mesh attribute properties\n * @param attribute\n * @returns\n */\nexport function makeMeshAttributeMetadata(attribute) {\n const result = {};\n if ('byteOffset' in attribute) {\n result.byteOffset = attribute.byteOffset.toString(10);\n }\n if ('byteStride' in attribute) {\n result.byteStride = attribute.byteStride.toString(10);\n }\n if ('normalized' in attribute) {\n result.normalized = attribute.normalized.toString();\n }\n return result;\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n// This code is adapted from ArrowJS https://github.com/apache/arrow\n// under Apache license http://www.apache.org/licenses/LICENSE-2.0\n/**\n * Main data type enumeration.\n *\n * Data types in this library are all *logical*. They can be expressed as\n * either a primitive physical type (bytes or bits of some fixed size), a\n * nested type consisting of other data types, or another data type (e.g. a\n * timestamp encoded as an int64).\n *\n * **Note**: Only enum values 0-17 (NONE through Map) are written to an Arrow\n * IPC payload.\n *\n * The rest of the values are specified here so TypeScript can narrow the type\n * signatures further beyond the base Arrow Types. The Arrow DataTypes include\n * metadata like `bitWidth` that impact the type signatures of the values we\n * accept and return.\n *\n * For example, the `Int8Vector` reads 1-byte numbers from an `Int8Array`, an\n * `Int32Vector` reads a 4-byte number from an `Int32Array`, and an `Int64Vector`\n * reads a pair of 4-byte lo, hi 32-bit integers as a zero-copy slice from the\n * underlying `Int32Array`.\n *\n * Library consumers benefit by knowing the narrowest type, since we can ensure\n * the types across all public methods are propagated, and never bail to `any`.\n * These values are _never_ used at runtime, and they will _never_ be written\n * to the flatbuffers metadata of serialized Arrow IPC payloads.\n */\nexport var Type;\n(function (Type) {\n /** The default placeholder type */\n Type[Type[\"NONE\"] = 0] = \"NONE\";\n /** A NULL type having no physical storage */\n Type[Type[\"Null\"] = 1] = \"Null\";\n /** Signed or unsigned 8, 16, 32, or 64-bit little-endian integer */\n Type[Type[\"Int\"] = 2] = \"Int\";\n /** 2, 4, or 8-byte floating point value */\n Type[Type[\"Float\"] = 3] = \"Float\";\n /** Variable-length bytes (no guarantee of UTF8-ness) */\n Type[Type[\"Binary\"] = 4] = \"Binary\";\n /** UTF8 variable-length string as List<Char> */\n Type[Type[\"Utf8\"] = 5] = \"Utf8\";\n /** Boolean as 1 bit, LSB bit-packed ordering */\n Type[Type[\"Bool\"] = 6] = \"Bool\";\n /** Precision-and-scale-based decimal type. Storage type depends on the parameters. */\n Type[Type[\"Decimal\"] = 7] = \"Decimal\";\n /** int32_t days or int64_t milliseconds since the UNIX epoch */\n Type[Type[\"Date\"] = 8] = \"Date\";\n /** Time as signed 32 or 64-bit integer, representing either seconds, milliseconds, microseconds, or nanoseconds since midnight since midnight */\n Type[Type[\"Time\"] = 9] = \"Time\";\n /** Exact timestamp encoded with int64 since UNIX epoch (Default unit millisecond) */\n Type[Type[\"Timestamp\"] = 10] = \"Timestamp\";\n /** YEAR_MONTH or DAY_TIME interval in SQL style */\n Type[Type[\"Interval\"] = 11] = \"Interval\";\n /** A list of some logical data type */\n Type[Type[\"List\"] = 12] = \"List\";\n /** Struct of logical types */\n Type[Type[\"Struct\"] = 13] = \"Struct\";\n /** Union of logical types */\n Type[Type[\"Union\"] = 14] = \"Union\";\n /** Fixed-size binary. Each value occupies the same number of bytes */\n Type[Type[\"FixedSizeBinary\"] = 15] = \"FixedSizeBinary\";\n /** Fixed-size list. Each value occupies the same number of bytes */\n Type[Type[\"FixedSizeList\"] = 16] = \"FixedSizeList\";\n /** Map of named logical types */\n Type[Type[\"Map\"] = 17] = \"Map\";\n /** Dictionary aka Category type */\n Type[Type[\"Dictionary\"] = -1] = \"Dictionary\";\n Type[Type[\"Int8\"] = -2] = \"Int8\";\n Type[Type[\"Int16\"] = -3] = \"Int16\";\n Type[Type[\"Int32\"] = -4] = \"Int32\";\n Type[Type[\"Int64\"] = -5] = \"Int64\";\n Type[Type[\"Uint8\"] = -6] = \"Uint8\";\n Type[Type[\"Uint16\"] = -7] = \"Uint16\";\n Type[Type[\"Uint32\"] = -8] = \"Uint32\";\n Type[Type[\"Uint64\"] = -9] = \"Uint64\";\n Type[Type[\"Float16\"] = -10] = \"Float16\";\n Type[Type[\"Float32\"] = -11] = \"Float32\";\n Type[Type[\"Float64\"] = -12] = \"Float64\";\n Type[Type[\"DateDay\"] = -13] = \"DateDay\";\n Type[Type[\"DateMillisecond\"] = -14] = \"DateMillisecond\";\n Type[Type[\"TimestampSecond\"] = -15] = \"TimestampSecond\";\n Type[Type[\"TimestampMillisecond\"] = -16] = \"TimestampMillisecond\";\n Type[Type[\"TimestampMicrosecond\"] = -17] = \"TimestampMicrosecond\";\n Type[Type[\"TimestampNanosecond\"] = -18] = \"TimestampNanosecond\";\n Type[Type[\"TimeSecond\"] = -19] = \"TimeSecond\";\n Type[Type[\"TimeMillisecond\"] = -20] = \"TimeMillisecond\";\n Type[Type[\"TimeMicrosecond\"] = -21] = \"TimeMicrosecond\";\n Type[Type[\"TimeNanosecond\"] = -22] = \"TimeNanosecond\";\n Type[Type[\"DenseUnion\"] = -23] = \"DenseUnion\";\n Type[Type[\"SparseUnion\"] = -24] = \"SparseUnion\";\n Type[Type[\"IntervalDayTime\"] = -25] = \"IntervalDayTime\";\n Type[Type[\"IntervalYearMonth\"] = -26] = \"IntervalYearMonth\";\n})(Type || (Type = {}));\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n// This code is adapted from ArrowJS https://github.com/apache/arrow\n// under Apache license http://www.apache.org/licenses/LICENSE-2.0\nimport { Type } from \"./enum.js\";\nexport { Type } from \"./enum.js\";\n/** ArrowLike DataType class */\nexport class DataType {\n static isNull(x) {\n return x && x.typeId === Type.Null;\n }\n static isInt(x) {\n return x && x.typeId === Type.Int;\n }\n static isFloat(x) {\n return x && x.typeId === Type.Float;\n }\n static isBinary(x) {\n return x && x.typeId === Type.Binary;\n }\n static isUtf8(x) {\n return x && x.typeId === Type.Utf8;\n }\n static isBool(x) {\n return x && x.typeId === Type.Bool;\n }\n static isDecimal(x) {\n return x && x.typeId === Type.Decimal;\n }\n static isDate(x) {\n return x && x.typeId === Type.Date;\n }\n static isTime(x) {\n return x && x.typeId === Type.Time;\n }\n static isTimestamp(x) {\n return x && x.typeId === Type.Timestamp;\n }\n static isInterval(x) {\n return x && x.typeId === Type.Interval;\n }\n static isList(x) {\n return x && x.typeId === Type.List;\n }\n static isStruct(x) {\n return x && x.typeId === Type.Struct;\n }\n static isUnion(x) {\n return x && x.typeId === Type.Union;\n }\n static isFixedSizeBinary(x) {\n return x && x.typeId === Type.FixedSizeBinary;\n }\n static isFixedSizeList(x) {\n return x && x.typeId === Type.FixedSizeList;\n }\n static isMap(x) {\n return x && x.typeId === Type.Map;\n }\n static isDictionary(x) {\n return x && x.typeId === Type.Dictionary;\n }\n get typeId() {\n return Type.NONE;\n }\n // get ArrayType(): AnyArrayType {\n // return Int8Array;\n // }\n // get ArrayType() { return Array; }\n compareTo(other) {\n // TODO\n return this === other; // comparer.visit(this, other);\n }\n}\n// NULL\nexport class Null extends DataType {\n get typeId() {\n return Type.Null;\n }\n get [Symbol.toStringTag]() {\n return 'Null';\n }\n toString() {\n return 'Null';\n }\n}\n// BOOLEANS\nexport class Bool extends DataType {\n get typeId() {\n return Type.Bool;\n }\n // get ArrayType() {\n // return Uint8Array;\n // }\n get [Symbol.toStringTag]() {\n return 'Bool';\n }\n toString() {\n return 'Bool';\n }\n}\n// INTS\nexport class Int extends DataType {\n isSigned;\n bitWidth;\n constructor(isSigned, bitWidth) {\n super();\n this.isSigned = isSigned;\n this.bitWidth = bitWidth;\n }\n get typeId() {\n return Type.Int;\n }\n // get ArrayType() {\n // switch (this.bitWidth) {\n // case 8:\n // return this.isSigned ? Int8Array : Uint8Array;\n // case 16:\n // return this.isSigned ? Int16Array : Uint16Array;\n // case 32:\n // return this.isSigned ? Int32Array : Uint32Array;\n // case 64:\n // return this.isSigned ? Int32Array : Uint32Array;\n // default:\n // throw new Error(`Unrecognized ${this[Symbol.toStringTag]} type`);\n // }\n // }\n get [Symbol.toStringTag]() {\n return 'Int';\n }\n toString() {\n return `${this.isSigned ? 'I' : 'Ui'}nt${this.bitWidth}`;\n }\n}\nexport class Int8 extends Int {\n constructor() {\n super(true, 8);\n }\n}\nexport class Int16 extends Int {\n constructor() {\n super(true, 16);\n }\n}\nexport class Int32 extends Int {\n constructor() {\n super(true, 32);\n }\n}\nexport class Int64 extends Int {\n constructor() {\n super(true, 64);\n }\n}\nexport class Uint8 extends Int {\n constructor() {\n super(false, 8);\n }\n}\nexport class Uint16 extends Int {\n constructor() {\n super(false, 16);\n }\n}\nexport class Uint32 extends Int {\n constructor() {\n super(false, 32);\n }\n}\nexport class Uint64 extends Int {\n constructor() {\n super(false, 64);\n }\n}\n// FLOATS\nconst Precision = {\n HALF: 16,\n SINGLE: 32,\n DOUBLE: 64\n};\nexport class Float extends DataType {\n precision;\n constructor(precision) {\n super();\n this.precision = precision;\n }\n get typeId() {\n return Type.Float;\n }\n // get ArrayType() {\n // switch (this.precision) {\n // case Precision.HALF:\n // return Uint16Array;\n // case Precision.SINGLE:\n // return Float32Array;\n // case Precision.DOUBLE:\n // return Float64Array;\n // default:\n // throw new Error(`Unrecognized ${this[Symbol.toStringTag]} type`);\n // }\n // }\n get [Symbol.toStringTag]() {\n return 'Float';\n }\n toString() {\n return `Float${this.precision}`;\n }\n}\nexport class Float16 extends Float {\n constructor() {\n super(Precision.HALF);\n }\n}\nexport class Float32 extends Float {\n constructor() {\n super(Precision.SINGLE);\n }\n}\nexport class Float64 extends Float {\n constructor() {\n super(Precision.DOUBLE);\n }\n}\nexport class Binary extends DataType {\n constructor() {\n super();\n }\n get typeId() {\n return Type.Binary;\n }\n toString() {\n return 'Binary';\n }\n get [Symbol.toStringTag]() {\n return 'Binary';\n }\n}\n// STRINGS\nexport class Utf8 extends DataType {\n get typeId() {\n return Type.Utf8;\n }\n // get ArrayType() {\n // return Uint8Array;\n // }\n get [Symbol.toStringTag]() {\n return 'Utf8';\n }\n toString() {\n return 'Utf8';\n }\n}\n// DATES, TIMES AND INTERVALS\nconst DateUnit = {\n DAY: 0,\n MILLISECOND: 1\n};\nexport class Date extends DataType {\n unit;\n constructor(unit) {\n super();\n this.unit = unit;\n }\n get typeId() {\n return Type.Date;\n }\n // get ArrayType() {\n // return Int32Array;\n // }\n get [Symbol.toStringTag]() {\n return 'Date';\n }\n toString() {\n return `Date${(this.unit + 1) * 32}<${DateUnit[this.unit]}>`;\n }\n}\nexport class DateDay extends Date {\n constructor() {\n super(DateUnit.DAY);\n }\n}\nexport class DateMillisecond extends Date {\n constructor() {\n super(DateUnit.MILLISECOND);\n }\n}\nconst TimeUnit = {\n SECOND: 1,\n MILLISECOND: 1e3,\n MICROSECOND: 1e6,\n NANOSECOND: 1e9\n};\nexport class Time extends DataType {\n unit;\n bitWidth;\n constructor(unit, bitWidth) {\n super();\n this.unit = unit;\n this.bitWidth = bitWidth;\n }\n get typeId() {\n return Type.Time;\n }\n toString() {\n return `Time${this.bitWidth}<${TimeUnit[this.unit]}>`;\n }\n get [Symbol.toStringTag]() {\n return 'Time';\n }\n}\nexport class TimeSecond extends Time {\n constructor() {\n super(TimeUnit.SECOND, 32);\n }\n}\nexport class TimeMillisecond extends Time {\n constructor() {\n super(TimeUnit.MILLISECOND, 32);\n }\n}\n// export class TimeMicrosecond extends Time { constructor() { super(TimeUnit.MICROSECOND, 64); } }\n// export class TimeNanosecond extends Time { constructor() { super(TimeUnit.NANOSECOND, 64); } }\nexport class Timestamp extends DataType {\n unit;\n timezone;\n constructor(unit, timezone = null) {\n super();\n this.unit = unit;\n this.timezone = timezone;\n }\n get typeId() {\n return Type.Timestamp;\n }\n // get ArrayType() {\n // return Int32Array;\n // }\n get [Symbol.toStringTag]() {\n return 'Timestamp';\n }\n toString() {\n return `Timestamp<${TimeUnit[this.unit]}${this.timezone ? `, ${this.timezone}` : ''}>`;\n }\n}\nexport class TimestampSecond extends Timestamp {\n constructor(timezone = null) {\n super(TimeUnit.SECOND, timezone);\n }\n}\nexport class TimestampMillisecond extends Timestamp {\n constructor(timezone = null) {\n super(TimeUnit.MILLISECOND, timezone);\n }\n}\nexport class TimestampMicrosecond extends Timestamp {\n constructor(timezone = null) {\n super(TimeUnit.MICROSECOND, timezone);\n }\n}\nexport class TimestampNanosecond extends Timestamp {\n constructor(timezone = null) {\n super(TimeUnit.NANOSECOND, timezone);\n }\n}\nconst IntervalUnit = {\n DAY_TIME: 0,\n YEAR_MONTH: 1\n};\nexport class Interval extends DataType {\n unit;\n constructor(unit) {\n super();\n this.unit = unit;\n }\n get typeId() {\n return Type.Interval;\n }\n // get ArrayType() {\n // return Int32Array;\n // }\n get [Symbol.toStringTag]() {\n return 'Interval';\n }\n toString() {\n return `Interval<${IntervalUnit[this.unit]}>`;\n }\n}\nexport class IntervalDayTime extends Interval {\n constructor() {\n super(IntervalUnit.DAY_TIME);\n }\n}\nexport class IntervalYearMonth extends Interval {\n constructor() {\n super(IntervalUnit.YEAR_MONTH);\n }\n}\nexport class FixedSizeList extends DataType {\n listSize;\n children;\n constructor(listSize, child) {\n super();\n this.listSize = listSize;\n this.children = [child];\n }\n get typeId() {\n return Type.FixedSizeList;\n }\n get valueType() {\n return this.children[0].type;\n }\n get valueField() {\n return this.children[0];\n }\n // get ArrayType() {\n // return this.valueType.ArrayType;\n // }\n get [Symbol.toStringTag]() {\n return 'FixedSizeList';\n }\n toString() {\n return `FixedSizeList[${this.listSize}]<${JSON.stringify(this.valueType)}>`;\n }\n}\nexport class Struct extends DataType {\n children;\n constructor(children) {\n super();\n this.children = children;\n }\n get typeId() {\n return Type.Struct;\n }\n toString() {\n return `Struct<{${this.children\n .map((f) => `${f.name}:${JSON.stringify(f.type)}`)\n .join(', ')}}>`;\n }\n get [Symbol.toStringTag]() {\n return 'Struct';\n }\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { Type } from \"./arrow-like-type.js\";\n/**\n * Gets type information from an Arrow type object or \"mock\" Arrow type object\n * @param arrowTypeLike Arrow Type or type object of similar shape\n */\nexport function getTypeInfo(arrowTypeLike) {\n return {\n typeId: arrowTypeLike.typeId,\n ArrayType: arrowTypeLike.ArrayType,\n typeName: arrowTypeLike.toString(),\n typeEnumName: getTypeKey(arrowTypeLike.typeId),\n precision: arrowTypeLike.precision\n };\n}\nlet ReverseType = null;\nfunction getTypeKey(typeKey) {\n if (!ReverseType) {\n ReverseType = {};\n for (const key in Type) {\n ReverseType[Type[key]] = key;\n }\n }\n return ReverseType[typeKey];\n}\n", "// From https://github.com/rauschma/async-iter-demo/tree/master/src under MIT license\n// http://2ality.com/2016/10/asynchronous-iteration.html\nclass ArrayQueue extends Array {\n enqueue(value) {\n // Add at the end\n return this.push(value);\n }\n dequeue() {\n // Remove first element\n return this.shift();\n }\n}\nexport default class AsyncQueue {\n _values;\n _settlers;\n _closed;\n constructor() {\n // enqueues > dequeues\n this._values = new ArrayQueue();\n // dequeues > enqueues\n this._settlers = new ArrayQueue();\n this._closed = false;\n }\n close() {\n while (this._settlers.length > 0) {\n this._settlers.dequeue().resolve({ done: true });\n }\n this._closed = true;\n }\n [Symbol.asyncIterator]() {\n return this;\n }\n enqueue(value) {\n if (this._closed) {\n throw new Error('Closed');\n }\n if (this._settlers.length > 0) {\n if (this._values.length > 0) {\n throw new Error('Illegal internal state');\n }\n const settler = this._settlers.dequeue();\n if (value instanceof Error) {\n settler.reject(value);\n }\n else {\n settler.resolve({ value });\n }\n }\n else {\n this._values.enqueue(value);\n }\n }\n /**\n * @returns a Promise for an IteratorResult\n */\n next() {\n if (this._values.length > 0) {\n const value = this._values.dequeue();\n if (value instanceof Error) {\n return Promise.reject(value);\n }\n return Promise.resolve({ value });\n }\n if (this._closed) {\n if (this._settlers.length > 0) {\n throw new Error('Illegal internal state');\n }\n return Promise.resolve({ done: true });\n }\n // Wait for new values to be enqueued\n return new Promise((resolve, reject) => {\n this._settlers.enqueue({ resolve, reject });\n });\n }\n}\n/**\n * @returns a Promise for an Array with the elements in `asyncIterable`\n */\nexport async function takeAsync(asyncIterable, count = Infinity) {\n const result = [];\n const iterator = asyncIterable[Symbol.asyncIterator]();\n while (result.length < count) {\n const { value, done } = await iterator.next();\n if (done) {\n break;\n }\n result.push(value);\n }\n return result;\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nexport { getArrayTypeFromDataType } from \"./lib/table/simple-table/data-type.js\";\n// TABLE CATEGORY UTILS\nexport { TableBatchBuilder } from \"./lib/table/batches/table-batch-builder.js\";\nexport { RowTableBatchAggregator } from \"./lib/table/batches/row-table-batch-aggregator.js\";\nexport { ColumnarTableBatchAggregator } from \"./lib/table/batches/columnar-table-batch-aggregator.js\";\nexport { isTable, getTableLength, getTableNumCols, getTableCell, getTableCellAt, getTableRowShape, getTableColumnIndex, getTableColumnName, getTableRowAsObject, getTableRowAsArray, makeRowIterator, makeArrayRowIterator, makeObjectRowIterator } from \"./lib/table/simple-table/table-accessors.js\";\nexport { ArrowLikeTable } from \"./lib/table/arrow-api/arrow-like-table.js\";\nexport { makeTableFromData } from \"./lib/table/simple-table/make-table.js\";\nexport { makeTableFromBatches, makeBatchFromTable } from \"./lib/table/simple-table/make-table-from-batches.js\";\nexport { convertTable } from \"./lib/table/simple-table/convert-table.js\";\nexport { deduceTableSchema } from \"./lib/table/simple-table/table-schema.js\";\nexport { convertToObjectRow, convertToArrayRow } from \"./lib/table/simple-table/row-utils.js\";\nexport { getDataTypeFromArray } from \"./lib/table/simple-table/data-type.js\";\nexport { getMeshSize, getMeshBoundingBox } from \"./lib/mesh/mesh-utils.js\";\n// Commented out due to https://github.com/visgl/deck.gl/issues/6906 and https://github.com/visgl/loaders.gl/issues/2177\n// export {convertMesh} from './category/mesh/convert-mesh';\nexport { deduceMeshSchema, deduceMeshField, makeMeshAttributeMetadata } from \"./lib/mesh/deduce-mesh-schema.js\";\n// SCHEMA\nexport { Schema as ArrowLikeSchema, Field as ArrowLikeField, DataType as ArrowLikeDataType, Null, Binary, Bool, Int, Int8, Int16, Int32, Int64, Uint8, Uint16, Uint32, Uint64, Float, Float16, Float32, Float64, Utf8, Date, DateDay, DateMillisecond, Time, TimeMillisecond, TimeSecond, Timestamp, TimestampSecond, TimestampMillisecond, TimestampMicrosecond, TimestampNanosecond, Interval, IntervalDayTime, IntervalYearMonth, FixedSizeList, Struct } from \"./lib/table/arrow-api/index.js\";\n// EXPERIMENTAL APIs\n// SCHEMA UTILS\nexport { getTypeInfo } from \"./lib/table/arrow-api/get-type-info.js\";\nexport { default as AsyncQueue } from \"./lib/utils/async-queue.js\";\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n/** Deduce column types from values */\nexport function getDataTypeFromValue(value, defaultNumberType = 'float32') {\n if (value instanceof Date) {\n return 'date-millisecond';\n }\n if (value instanceof Number) {\n return defaultNumberType;\n }\n if (typeof value === 'string') {\n return 'utf8';\n }\n if (value === null || value === 'undefined') {\n return 'null';\n }\n return 'null';\n}\n/**\n * Deduces a simple data type \"descriptor from a typed array instance\n */\nexport function getDataTypeFromArray(array) {\n let type = getDataTypeFromTypedArray(array);\n if (type !== 'null') {\n return { type, nullable: false };\n }\n if (array.length > 0) {\n type = getDataTypeFromValue(array[0]);\n return { type, nullable: true };\n }\n return { type: 'null', nullable: true };\n}\n/**\n * Deduces a simple data type \"descriptor from a typed array instance\n */\nexport function getDataTypeFromTypedArray(array) {\n switch (array.constructor) {\n case Int8Array:\n return 'int8';\n case Uint8Array:\n case Uint8ClampedArray:\n return 'uint8';\n case Int16Array:\n return 'int16';\n case Uint16Array:\n return 'uint16';\n case Int32Array:\n return 'int32';\n case Uint32Array:\n return 'uint32';\n case Float32Array:\n return 'float32';\n case Float64Array:\n return 'float64';\n default:\n return 'null';\n }\n}\nexport function getArrayTypeFromDataType(type, nullable) {\n if (!nullable) {\n switch (type) {\n case 'int8':\n return Int8Array;\n case 'uint8':\n return Uint8Array;\n case 'int16':\n return Int16Array;\n case 'uint16':\n return Uint16Array;\n case 'int32':\n return Int32Array;\n case 'uint32':\n return Uint32Array;\n case 'float32':\n return Float32Array;\n case 'float64':\n return Float64Array;\n default:\n break;\n }\n }\n // if (typeof BigInt64Array !== 'undefined') {\n // TYPED_ARRAY_TO_TYPE.BigInt64Array = new Int64();\n // TYPED_ARRAY_TO_TYPE.BigUint64Array = new Uint64();\n // }\n return Array;\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nconst DEFAULT_ROW_COUNT = 100;\nexport class BaseTableBatchAggregator {\n schema;\n options;\n shape;\n length = 0;\n rows = null;\n cursor = 0;\n _headers = [];\n constructor(schema, options) {\n this.options = options;\n this.schema = schema;\n // schema is an array if there're no headers\n // object if there are headers\n if (!Array.isArray(schema)) {\n this._headers = [];\n for (const key in schema) {\n this._headers[schema[key].index] = schema[key].name;\n }\n }\n }\n rowCount() {\n return this.length;\n }\n addArrayRow(row, cursor) {\n if (Number.isFinite(cursor)) {\n this.cursor = cursor;\n }\n this.shape = 'array-row-table';\n this.rows = this.rows || new Array(DEFAULT_ROW_COUNT);\n this.rows[this.length] = row;\n this.length++;\n }\n addObjectRow(row, cursor) {\n if (Number.isFinite(cursor)) {\n this.cursor = cursor;\n }\n this.shape = 'object-row-table';\n this.rows = this.rows || new Array(DEFAULT_ROW_COUNT);\n this.rows[this.length] = row;\n this.length++;\n }\n getBatch() {\n let rows = this.rows;\n if (!rows) {\n return null;\n }\n rows = rows.slice(0, this.length);\n this.rows = null;\n const batch = {\n shape: this.shape || 'array-row-table',\n batchType: 'data',\n data: rows,\n length: this.length,\n schema: this.schema,\n cursor: this.cursor\n };\n return batch;\n }\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n/** Convert an object row to an array row */\nexport function convertToObjectRow(arrayRow, headers) {\n if (!arrayRow) {\n throw new Error('null row');\n }\n const objectRow = {};\n if (headers) {\n for (let i = 0; i < headers.length; i++) {\n objectRow[headers[i]] = arrayRow[i];\n }\n }\n else {\n for (let i = 0; i < arrayRow.length; i++) {\n const columnName = `column-${i}`;\n objectRow[columnName] = arrayRow[i];\n }\n }\n return objectRow;\n}\n/** Convert an object row to an array row */\nexport function convertToArrayRow(objectRow, headers) {\n if (!objectRow) {\n throw new Error('null row');\n }\n if (headers) {\n const arrayRow = new Array(headers.length);\n for (let i = 0; i < headers.length; i++) {\n arrayRow[i] = objectRow[headers[i]];\n }\n return arrayRow;\n }\n return Object.values(objectRow);\n}\n/** Get headers from a sample array row */\nexport function inferHeadersFromArrayRow(arrayRow) {\n const headers = [];\n for (let i = 0; i < arrayRow.length; i++) {\n const columnName = `column-${i}`;\n headers.push(columnName);\n }\n return headers;\n}\n/** Get headers from a smaple object row */\nexport function inferHeadersFromObjectRow(row) {\n return Object.keys(row);\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { convertToArrayRow, convertToObjectRow, inferHeadersFromArrayRow, inferHeadersFromObjectRow } from \"../simple-table/row-utils.js\";\nconst DEFAULT_ROW_COUNT = 100;\nexport class RowTableBatchAggregator {\n schema;\n options;\n length = 0;\n objectRows = null;\n arrayRows = null;\n cursor = 0;\n _headers = null;\n constructor(schema, options) {\n this.options = options;\n this.schema = schema;\n // schema is an array if there're no headers\n // object if there are headers\n if (schema) {\n this._headers = [];\n for (const key in schema) {\n this._headers[schema[key].index] = schema[key].name;\n }\n }\n }\n rowCount() {\n return this.length;\n }\n addArrayRow(row, cursor) {\n if (Number.isFinite(cursor)) {\n this.cursor = cursor;\n }\n // TODO - infer schema at a higher level, instead of hacking headers here?\n this._headers ||= inferHeadersFromArrayRow(row);\n // eslint-disable-next-line default-case\n switch (this.options.shape) {\n case 'object-row-table':\n const rowObject = convertToObjectRow(row, this._headers);\n this.addObjectRow(rowObject, cursor);\n break;\n case 'array-row-table':\n this.arrayRows = this.arrayRows || new Array(DEFAULT_ROW_COUNT);\n this.arrayRows[this.length] = row;\n this.length++;\n break;\n }\n }\n addObjectRow(row, cursor) {\n if (Number.isFinite(cursor)) {\n this.cursor = cursor;\n }\n // TODO - infer schema at a higher level, instead of hacking headers here?\n this._headers ||= inferHeadersFromObjectRow(row);\n // eslint-disable-next-line default-case\n switch (this.options.shape) {\n case 'array-row-table':\n const rowArray = convertToArrayRow(row, this._headers);\n this.addArrayRow(rowArray, cursor);\n break;\n case 'object-row-table':\n this.objectRows = this.objectRows || new Array(DEFAULT_ROW_COUNT);\n this.objectRows[this.length] = row;\n this.length++;\n break;\n }\n }\n getBatch() {\n let rows = this.arrayRows || this.objectRows;\n if (!rows) {\n return null;\n }\n rows = rows.slice(0, this.length);\n this.arrayRows = null;\n this.objectRows = null;\n return {\n shape: this.options.shape,\n batchType: 'data',\n data: rows,\n length: this.length,\n // @ts-expect-error we should infer a schema\n schema: this.schema,\n cursor: this.cursor\n };\n }\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nconst DEFAULT_ROW_COUNT = 100;\nexport class ColumnarTableBatchAggregator {\n schema;\n length = 0;\n allocated = 0;\n columns = {};\n constructor(schema, options) {\n this.schema = schema;\n this._reallocateColumns();\n }\n rowCount() {\n return this.length;\n }\n addArrayRow(row) {\n // If user keeps pushing rows beyond batch size, reallocate\n this._reallocateColumns();\n let i = 0;\n // TODO what if no csv header, columns not populated?\n for (const fieldName in this.columns) {\n this.columns[fieldName][this.length] = row[i++];\n }\n this.length++;\n }\n addObjectRow(row) {\n // If user keeps pushing rows beyond batch size, reallocate\n this._reallocateColumns();\n for (const fieldName in row) {\n this.columns[fieldName][this.length] = row[fieldName];\n }\n this.length++;\n }\n getBatch() {\n this._pruneColumns();\n const columns = Array.isArray(this.schema) ? this.columns : {};\n // schema is an array if there're no headers\n // object if there are headers\n // columns should match schema format\n if (!Array.isArray(this.schema)) {\n for (const fieldName in this.schema) {\n const field = this.schema[fieldName];\n columns[field.name] = this.columns[field.index];\n }\n }\n this.columns = {};\n const batch = {\n shape: 'columnar-table',\n batchType: 'data',\n data: columns,\n schema: this.schema,\n length: this.length\n };\n return batch;\n }\n // HELPERS\n _reallocateColumns() {\n if (this.length < this.allocated) {\n return;\n }\n // @ts-ignore TODO\n this.allocated = this.allocated > 0 ? (this.allocated *= 2) : DEFAULT_ROW_COUNT;\n this.columns = {};\n for (const fieldName in this.schema) {\n const field = this.schema[fieldName];\n const ArrayType = field.type || Float32Array;\n const oldColumn = this.columns[field.index];\n if (oldColumn && ArrayBuffer.isView(oldColumn)) {\n // Copy the old data to the new array\n const typedArray = new ArrayType(this.allocated);\n typedArray.set(oldColumn);\n this.columns[field.index] = typedArray;\n }\n else if (oldColumn) {\n // Plain array\n oldColumn.length = this.allocated;\n this.columns[field.index] = oldColumn;\n }\n else {\n // Create new\n this.columns[field.index] = new ArrayType(this.allocated);\n }\n }\n }\n _pruneColumns() {\n for (const [columnName, column] of Object.entries(this.columns)) {\n this.columns[columnName] = column.slice(0, this.length);\n }\n }\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { BaseTableBatchAggregator } from \"./base-table-batch-aggregator.js\";\nimport { RowTableBatchAggregator } from \"./row-table-batch-aggregator.js\";\nimport { ColumnarTableBatchAggregator } from \"./columnar-table-batch-aggregator.js\";\nconst DEFAULT_OPTIONS = {\n shape: undefined,\n batchSize: 'auto',\n batchDebounceMs: 0,\n limit: 0,\n _limitMB: 0\n};\nconst ERR_MESSAGE = 'TableBatchBuilder';\n/** Incrementally builds batches from a stream of rows */\nexport class TableBatchBuilder {\n schema;\n options;\n aggregator = null;\n batchCount = 0;\n bytesUsed = 0;\n isChunkComplete = false;\n lastBatchEmittedMs = Date.now();\n totalLength = 0;\n totalBytes = 0;\n rowBytes = 0;\n static ArrowBatch;\n constructor(schema, options) {\n this.schema = schema;\n this.options = { ...DEFAULT_OPTIONS, ...options };\n }\n limitReached() {\n if (Boolean(this.options?.limit) && this.totalLength >= this.options.limit) {\n return true;\n }\n if (Boolean(this.options?._limitMB) && this.totalBytes / 1e6 >= this.options._limitMB) {\n return true;\n }\n return false;\n }\n /** @deprecated Use addArrayRow or addObjectRow */\n addRow(row) {\n if (this.limitReached()) {\n return;\n }\n this.totalLength++;\n this.rowBytes = this.rowBytes || this._estimateRowMB(row);\n this.totalBytes += this.rowBytes;\n if (Array.isArray(row)) {\n this.addArrayRow(row);\n }\n else {\n this.addObjectRow(row);\n }\n }\n /** Add one row to the batch */\n addArrayRow(row) {\n if (!this.aggregator) {\n const TableBatchType = this._getTableBatchType();\n this.aggregator = new TableBatchType(this.schema, this.options);\n }\n this.aggregator.addArrayRow(row);\n }\n /** Add one row to the batch */\n addObjectRow(row) {\n if (!this.aggregator) {\n const TableBatchType = this._getTableBatchType();\n this.aggregator = new TableBatchType(this.schema, this.options);\n }\n this.aggregator.addObjectRow(row);\n }\n /** Mark an incoming raw memory chunk has completed */\n chunkComplete(chunk) {\n if (chunk instanceof ArrayBuffer) {\n this.bytesUsed += chunk.byteLength;\n }\n if (typeof chunk === 'string') {\n this.bytesUsed += chunk.length;\n }\n this.isChunkComplete = true;\n }\n getFullBatch(options) {\n return this._isFull() ? this._getBatch(options) : null;\n }\n getFinalBatch(options) {\n return this._getBatch(options);\n }\n // INTERNAL\n _estimateRowMB(row) {\n return Array.isArray(row) ? row.length * 8 : Object.keys(row).length * 8;\n }\n _isFull() {\n // No batch, not ready\n if (!this.aggregator || this.aggregator.rowCount() === 0) {\n return false;\n }\n // if batchSize === 'auto' we wait for chunk to complete\n // if batchSize === number, ensure we have enough rows\n if (this.options.batchSize === 'auto') {\n if (!this.isChunkComplete) {\n return false;\n }\n }\n else if (this.options.batchSize > this.aggregator.rowCount()) {\n return false;\n }\n // Debounce batches\n if (this.options.batchDebounceMs > Date.now() - this.lastBatchEmittedMs) {\n return false;\n }\n // Emit batch\n this.isChunkComplete = false;\n this.lastBatchEmittedMs = Date.now();\n return true;\n }\n /**\n * bytesUsed can be set via chunkComplete or via getBatch*\n */\n _getBatch(options) {\n if (!this.aggregator) {\n return null;\n }\n // TODO - this can overly increment bytes used?\n if (options?.bytesUsed) {\n this.bytesUsed = options.bytesUsed;\n }\n const normalizedBatch = this.aggregator.getBatch();\n normalizedBatch.count = this.batchCount;\n normalizedBatch.bytesUsed = this.bytesUsed;\n Object.assign(normalizedBatch, options);\n this.batchCount++;\n this.aggregator = null;\n return normalizedBatch;\n }\n _getTableBatchType() {\n switch (this.options.shape) {\n case 'array-row-table':\n case 'object-row-table':\n return RowTableBatchAggregator;\n case 'columnar-table':\n return ColumnarTableBatchAggregator;\n case 'arrow-table':\n if (!TableBatchBuilder.ArrowBatch) {\n throw new Error(ERR_MESSAGE);\n }\n return TableBatchBuilder.ArrowBatch;\n default:\n return BaseTableBatchAggregator;\n }\n }\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nexport function isTable(table) {\n const shape = typeof table === 'object' && table?.shape;\n switch (shape) {\n case 'array-row-table':\n case 'object-row-table':\n return Array.isArray(table.data);\n case 'geojson-table':\n return Array.isArray(table.features);\n case 'columnar-table':\n return table.data && typeof table.data === 'object';\n case 'arrow-table':\n return Boolean(table?.data?.numRows !== undefined);\n default:\n return false;\n }\n}\n/**\n * Returns the length of the table (i.e. the number of rows)\n */\nexport function getTableLength(table) {\n switch (table.shape) {\n case 'array-row-table':\n case 'object-row-table':\n return table.data.length;\n case 'geojson-table':\n return table.features.length;\n case 'arrow-table':\n const arrowTable = table.data;\n return arrowTable.numRows;\n case 'columnar-table':\n for (const column of Object.values(table.data)) {\n return column.length || 0;\n }\n return 0;\n default:\n throw new Error('table');\n }\n}\n/**\n * Returns the number of columns in the table\n * @throws Fails to deduce number of columns if the table has no schema and is empty\n */\nexport function getTableNumCols(table) {\n if (table.schema) {\n return table.schema.fields.length;\n }\n if (getTableLength(table) === 0) {\n throw new Error('empty table');\n }\n switch (table.shape) {\n case 'array-row-table':\n return table.data[0].length;\n case 'object-row-table':\n return Object.keys(table.data[0]).length;\n case 'geojson-table':\n return Object.keys(table.features[0]).length;\n case 'columnar-table':\n return Object.keys(table.data).length;\n case 'arrow-table':\n const arrowTable = table.data;\n return arrowTable.numCols;\n default:\n throw new Error('table');\n }\n}\n/** Get a table cell value at row index and column name */\nexport function getTableCell(table, rowIndex, columnName) {\n switch (table.shape) {\n case 'array-row-table':\n const columnIndex = getTableColumnIndex(table, columnName);\n return table.data[rowIndex][columnIndex];\n case 'object-row-table':\n return table.data[rowIndex][columnName];\n case 'geojson-table':\n return table.features[rowIndex][columnName];\n case 'columnar-table':\n const column = table.data[columnName];\n return column[rowIndex];\n case 'arrow-table':\n const arrowTable = table.data;\n const arrowColumnIndex = arrowTable.schema.fields.findIndex((field) => field.name === columnName);\n return arrowTable.getChildAt(arrowColumnIndex)?.get(rowIndex);\n default:\n throw new Error('todo');\n }\n}\n/** Get a table cell value at row index and column name */\nexport function getTableCellAt(table, rowIndex, columnIndex) {\n switch (table.shape) {\n case 'array-row-table':\n return table.data[rowIndex][columnIndex];\n case 'object-row-table':\n const columnName1 = getTableColumnName(table, columnIndex);\n return table.data[rowIndex][columnName1];\n case 'geojson-table':\n const columnName2 = getTableColumnName(table, columnIndex);\n return table.features[rowIndex][columnName2];\n case 'columnar-table':\n const columnName3 = getTableColumnName(table, columnIndex);\n const column = table.data[columnName3];\n return column[rowIndex];\n case 'arrow-table':\n const arrowTable = table.data;\n return arrowTable.getChildAt(columnIndex)?.get(rowIndex);\n default:\n throw new Error('todo');\n }\n}\n/** Deduce the table row shape */\nexport function getTableRowShape(table) {\n switch (table.shape) {\n case 'array-row-table':\n case 'object-row-table':\n return table.shape;\n case 'geojson-table':\n // TODO - this is not correct, geojson-table is not a row table\n return 'object-row-table';\n case 'columnar-table':\n default:\n throw new Error('Not a row table');\n }\n}\n/** Get the index of a named table column. Requires the table to have a schema */\nexport function getTableColumnIndex(table, columnName) {\n const columnIndex = table.schema?.fields.findIndex((field) => field.name === columnName);\n if (columnIndex === undefined) {\n throw new Error(columnName);\n }\n return columnIndex;\n}\n/** Get the name of a table column by index. Requires the table to have a schema */\nexport function getTableColumnName(table, columnIndex) {\n const columnName = table.schema?.fields[columnIndex]?.name;\n if (!columnName) {\n throw new Error(`${columnIndex}`);\n }\n return columnName;\n}\n/**\n * Returns one row of the table in object format.\n * @param target Optional parameter will be used if needed to store the row. Can be reused between calls to improve performance\n * @returns an array representing the row. May be the original array in the row, a new object, or the target parameter\n */\n// eslint-disable-next-line complexity\nexport function getTableRowAsObject(table, rowIndex, target, copy) {\n switch (table.shape) {\n case 'object-row-table':\n return copy ? Object.fromEntries(Object.entries(table.data[rowIndex])) : table.data[rowIndex];\n case 'array-row-table':\n if (table.schema) {\n const objectRow = target || {};\n for (let i = 0; i < table.schema.fields.length; i++) {\n objectRow[table.schema.fields[i].name] = table.data[rowIndex][i];\n }\n return objectRow;\n }\n throw new Error('no schema');\n case 'geojson-table':\n if (table.schema) {\n const objectRow = target || {};\n // TODO - should lift properties to top level\n for (let i = 0; i < table.schema.fields.length; i++) {\n objectRow[table.schema.fields[i].name] = table.features[rowIndex][i];\n }\n return objectRow;\n }\n throw new Error('no schema');\n case 'columnar-table':\n if (table.schema) {\n const objectRow = target || {};\n for (let i = 0; i < table.schema.fields.length; i++) {\n objectRow[table.schema.fields[i].name] =\n table.data[table.schema.fields[i].name][rowIndex];\n }\n return objectRow;\n }\n else {\n // eslint-disable-line no-else-return\n const objectRow = target || {};\n for (const [name, column] of Object.entries(table.data)) {\n objectRow[name] = column[rowIndex];\n }\n return objectRow;\n }\n case 'arrow-table':\n const arrowTable = table.data;\n const objectRow = target || {};\n const row = arrowTable.get(rowIndex);\n const schema = arrowTable.schema;\n for (let i = 0; i < schema.fields.length; i++) {\n objectRow[schema.fields[i].name] = row?.[schema.fields[i].name];\n }\n return objectRow;\n default:\n throw new Error('shape');\n }\n}\n/**\n * Returns one row of the table in array format.\n * @param target Optional parameter will be used if needed to store the row. Can be reused between calls to improve performance.\n * @returns an array representing the row. May be the original array in the row, a new object, or the target parameter\n */\n// eslint-disable-next-line complexity\nexport function getTableRowAsArray(table, rowIndex, target, copy) {\n switch (table.shape) {\n case 'array-row-table':\n return copy ? Array.from(table.data[rowIndex]) : table.data[rowIndex];\n case 'object-row-table':\n if (table.schema) {\n const arrayRow = target || [];\n for (let i = 0; i < table.schema.fields.length; i++) {\n arrayRow[i] = table.data[rowIndex][table.schema.fields[i].name];\n }\n return arrayRow;\n }\n // Warning: just slap on the values, this risks mismatches between rows\n return Object.values(table.data[rowIndex]);\n case 'geojson-table':\n if (table.schema) {\n const arrayRow = target || [];\n // TODO - should lift properties to top level\n for (let i = 0; i < table.schema.fields.length; i++) {\n arrayRow[i] = table.features[rowIndex][table.schema.fields[i].name];\n }\n return arrayRow;\n }\n // Warning: just slap on the values, this risks mismatches between rows\n return Object.values(table.features[rowIndex]);\n case 'columnar-table':\n if (table.schema) {\n const arrayRow = target || [];\n for (let i = 0; i < table.schema.fields.length; i++) {\n arrayRow[i] = table.data[table.schema.fields[i].name][rowIndex];\n }\n return arrayRow;\n }\n else {\n // eslint-disable-line no-else-return\n const arrayRow = target || [];\n let i = 0;\n for (const column of Object.values(table.data)) {\n arrayRow[i] = column[rowIndex];\n i++;\n }\n return arrayRow;\n }\n case 'arrow-table':\n const arrowTable = table.data;\n const arrayRow = target || [];\n const row = arrowTable.get(rowIndex);\n const schema = arrowTable.schema;\n for (let i = 0; i < schema.fields.length; i++) {\n arrayRow[i] = row?.[schema.fields[i].name];\n }\n return arrayRow;\n default:\n throw new Error('shape');\n }\n}\n/** Convert any table into array row format */\nexport function makeArrayRowTable(table) {\n if (table.shape === 'array-row-table') {\n return table;\n }\n const length = getTableLength(table);\n const data = new Array(length);\n for (let rowIndex = 0; rowIndex < length; rowIndex++) {\n data[rowIndex] = getTableRowAsArray(table, rowIndex);\n }\n return {\n shape: 'array-row-table',\n schema: table.schema,\n data\n };\n}\n/** Convert any table into object row format */\nexport function makeObjectRowTable(table) {\n if (table.shape === 'object-row-table') {\n return table;\n }\n const length = getTableLength(table);\n const data = new Array(length);\n for (let rowIndex = 0; rowIndex < length; rowIndex++) {\n data[rowIndex] = getTableRowAsObject(table, rowIndex);\n }\n return {\n shape: 'object-row-table',\n schema: table.schema,\n data\n };\n}\n/** Convert any table into object row format */\nexport function makeColumnarTable(table) {\n if (table.shape === 'object-row-table') {\n return table;\n }\n const length = getTableLength(table);\n const data = new Array(length);\n for (let rowIndex = 0; rowIndex < length; rowIndex++) {\n data[rowIndex] = getTableRowAsObject(table, rowIndex);\n }\n return {\n shape: 'object-row-table',\n schema: table.schema,\n data\n };\n}\n// Row Iterators\n/**\n * Iterate over table rows\n * @param table\n * @param shape\n */\nexport function* makeRowIterator(table, shape) {\n switch (shape) {\n case 'array-row-table':\n yield* makeArrayRowIterator(table);\n break;\n case 'object-row-table':\n yield* makeObjectRowIterator(table);\n break;\n default:\n throw new Error(`Unknown row type ${shape}`);\n }\n}\n/**\n * Streaming processing: Iterate over table, yielding array rows\n * @param table\n * @param shape\n */\nexport function* makeArrayRowIterator(table, target = []) {\n const length = getTableLength(table);\n for (let rowIndex = 0; rowIndex < length; rowIndex++) {\n yield getTableRowAsArray(table, rowIndex, target);\n }\n}\n/**\n * Streaming processing: Iterate over table, yielding object rows\n * @param table\n * @param shape\n */\nexport function* makeObjectRowIterator(table, target = {}) {\n const length = getTableLength(table);\n for (let rowIndex = 0; rowIndex < length; rowIndex++) {\n yield getTableRowAsObject(table, rowIndex, target);\n }\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n/**\n * ArrowJS `Field` API-compatible class for row-based tables\n * https://loaders.gl/arrowjs/docs/api-reference/field\n * A field holds name, nullable, and metadata information about a table \"column\"\n * A Schema is essentially a list of fields\n */\nexport class ArrowLikeField {\n name;\n type;\n nullable;\n metadata;\n constructor(name, type, nullable = false, metadata = new Map()) {\n this.name = name;\n this.type = type;\n this.nullable = nullable;\n this.metadata = metadata;\n }\n get typeId() {\n return this.type && this.type.typeId;\n }\n clone() {\n return new ArrowLikeField(this.name, this.type, this.nullable, this.metadata);\n }\n compareTo(other) {\n return (this.name === other.name &&\n this.type === other.type &&\n this.nullable === other.nullable &&\n this.metadata === other.metadata);\n }\n toString() {\n return `${JSON.stringify(this.type)}${this.nullable ? ', nullable' : ''}${this.metadata ? `, metadata: ${JSON.stringify(this.metadata)}` : ''}`;\n }\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { ArrowLikeField } from \"./arrow-like-field.js\";\nexport class ArrowLikeSchema {\n fields;\n metadata;\n constructor(fields, metadata = new Map()) {\n // checkNames(fields);\n // For kepler fields, create arrow compatible `Fields` that have kepler fields as `metadata`\n this.fields = fields.map((field) => new ArrowLikeField(field.name, field.type, field.nullable, field.metadata));\n this.metadata =\n metadata instanceof Map ? metadata : new Map(Object.entries(metadata));\n }\n // TODO - arrow only seems to compare fields, not metadata\n compareTo(other) {\n if (this.metadata !== other.metadata) {\n return false;\n }\n if (this.fields.length !== other.fields.length) {\n return false;\n }\n for (let i = 0; i < this.fields.length; ++i) {\n if (!this.fields[i].compareTo(other.fields[i])) {\n return false;\n }\n }\n return true;\n }\n select(...columnNames) {\n // Ensure column names reference valid fields\n const nameMap = Object.create(null);\n for (const name of columnNames) {\n nameMap[name] = true;\n }\n const selectedFields = this.fields.filter((field) => nameMap[field.name]);\n return new ArrowLikeSchema(selectedFields, this.metadata);\n }\n selectAt(...columnIndices) {\n // Ensure column indices reference valid fields\n const selectedFields = columnIndices.map((index) => this.fields[index]).filter(Boolean);\n return new ArrowLikeSchema(selectedFields, this.metadata);\n }\n assign(schemaOrFields) {\n let fields;\n let metadata = this.metadata;\n if (schemaOrFields instanceof ArrowLikeSchema) {\n const otherArrowLikeSchema = schemaOrFields;\n fields = otherArrowLikeSchema.fields;\n metadata = mergeMaps(mergeMaps(new Map(), this.metadata), otherArrowLikeSchema.metadata);\n }\n else {\n fields = schemaOrFields;\n }\n // Create a merged list of fields, overwrite fields in place, new fields at end\n const fieldMap = Object.create(null);\n for (const field of this.fields) {\n fieldMap[field.name] = field;\n }\n for (const field of fields) {\n fieldMap[field.name] = field;\n }\n const mergedFields = Object.values(fieldMap);\n return new ArrowLikeSchema(mergedFields, metadata);\n }\n}\n// Warn if any duplicated field names\n// function checkNames(fields: Field[]): void {\n// const usedNames: Record<string, boolean> = {};\n// for (const field of fields) {\n// if (usedNames[field.name]) {\n// // eslint-disable-next-line\n// console.warn('ArrowLikeSchema: duplicated field name', field.name, field);\n// }\n// usedNames[field.name] = true;\n// }\n// }\nfunction mergeMaps(m1, m2) {\n // @ts-ignore\n return new Map([...(m1 || new Map()), ...(m2 || new Map())]);\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { getDataTypeFromArray, getDataTypeFromValue } from \"./data-type.js\";\n/**\n * SCHEMA SUPPORT - AUTODEDUCTION\n * @param {*} table\n * @param {*} schema\n * @returns\n */\nexport function deduceTableSchema(table) {\n switch (table.shape) {\n case 'array-row-table':\n case 'object-row-table':\n return deduceSchemaFromRows(table.data);\n case 'geojson-table':\n return deduceSchemaFromGeoJSON(table.features);\n case 'columnar-table':\n return deduceSchemaFromColumns(table.data);\n case 'arrow-table':\n default:\n throw new Error('Deduce schema');\n }\n}\nexport function deduceSchema(data) {\n return Array.isArray(data) ? deduceSchemaFromRows(data) : deduceSchemaFromColumns(data);\n}\n/** Given an object with columnar arrays, try to deduce a schema */\nfunction deduceSchemaFromColumns(columnarTable) {\n const fields = [];\n for (const [columnName, column] of Object.entries(columnarTable)) {\n const field = deduceFieldFromColumn(column, columnName);\n fields.push(field);\n }\n return { fields, metadata: {} };\n}\n/** Given an array of rows, try to deduce a schema */\nfunction deduceSchemaFromRows(rowTable) {\n if (!rowTable.length) {\n throw new Error('deduce from empty table');\n }\n const fields = [];\n const row0 = rowTable[0];\n // TODO - fields can be nullable, false detection...\n // Could look at additional rows if nulls in first row\n // TODO - if array, column names will be numbers\n for (const [columnName, value] of Object.entries(row0)) {\n fields.push(deduceFieldFromValue(value, columnName));\n }\n return { fields, metadata: {} };\n}\n/** Given a GeoJSON, try to deduce a schema */\nfunction deduceSchemaFromGeoJSON(features) {\n if (!features.length) {\n throw new Error('deduce from empty table');\n }\n const fields = [];\n const row0 = features[0].properties || {};\n // TODO - fields can be nullable, false detection...\n // Could look at additional rows if nulls in first row\n // TODO - if array, column names will be numbers\n for (const [columnName, value] of Object.entries(row0)) {\n fields.push(deduceFieldFromValue(value, columnName));\n }\n return { fields, metadata: {} };\n}\n/** Given a column (i.e. array), attempt to deduce an appropriate `Field` */\nfunction deduceFieldFromColumn(column, name) {\n if (ArrayBuffer.isView(column)) {\n const type = getDataTypeFromArray(column);\n return {\n name,\n type: type.type || 'null',\n nullable: type.nullable\n // metadata: {}\n };\n }\n if (Array.isArray(column) && column.length > 0) {\n const value = column[0];\n const type = getDataTypeFromValue(value);\n // TODO - support nested schemas?\n return {\n name,\n type,\n nullable: true\n // metadata: {},\n };\n }\n throw new Error('empty table');\n}\n/** Given a value, attempt to deduce an appropriate `Field` */\nfunction deduceFieldFromValue(value, name) {\n const type = getDataTypeFromValue(value);\n return {\n name,\n type,\n nullable: true\n // metadata: {}\n };\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { ArrowLikeSchema } from \"./arrow-like-schema.js\";\nimport { deduceTableSchema } from \"../simple-table/table-schema.js\";\nimport { getTableCell, getTableLength, getTableNumCols\n// getTableCell,\n// getTableRowShape,\n// getTableColumnIndex,\n// getTableColumnName,\n// getTableRowAsObject,\n// getTableRowAsArray\n } from \"../simple-table/table-accessors.js\";\nclass ArrowLikeVector {\n table;\n columnName;\n constructor(table, columnName) {\n this.table = table;\n this.columnName = columnName;\n }\n get(rowIndex) {\n return getTableCell(this.table, rowIndex, this.columnName);\n }\n toArray() {\n switch (this.table.shape) {\n case 'arrow-table':\n const arrowTable = this.table.data;\n return arrowTable.getChild(this.columnName)?.toArray();\n case 'columnar-table':\n return this.table.data[this.columnName];\n default:\n throw new Error(this.table.shape);\n }\n }\n}\n/**\n * Class that provides an API similar to Apache Arrow Table class\n * Forwards methods directly if the underlying table is Arrow, otherwise calls accessor functions\n */\nexport class ArrowLikeTable {\n schema;\n table;\n constructor(table) {\n const schema = table.schema || deduceTableSchema(table);\n this.schema = new ArrowLikeSchema(schema.fields, schema.metadata);\n this.table = { ...table, schema };\n }\n // get schema() {\n // return this.table.schema;\n // }\n get data() {\n return this.table.shape === 'geojson-table' ? this.table.features : this.table.data;\n }\n get numCols() {\n return getTableNumCols(this.table);\n }\n get length() {\n return getTableLength(this.table);\n }\n getChild(columnName) {\n return new ArrowLikeVector(this.table, columnName);\n }\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { deduceTableSchema } from \"./table-schema.js\";\nexport function makeTableFromData(data) {\n let table;\n switch (getTableShapeFromData(data)) {\n case 'array-row-table':\n table = { shape: 'array-row-table', data: data };\n break;\n case 'object-row-table':\n table = { shape: 'object-row-table', data: data };\n break;\n case 'columnar-table':\n table = { shape: 'columnar-table', data: data };\n break;\n default:\n throw new Error('table');\n }\n const schema = deduceTableSchema(table);\n return { ...table, schema };\n}\n/** Helper function to get shape of data */\nfunction getTableShapeFromData(data) {\n if (Array.isArray(data)) {\n if (data.length === 0) {\n throw new Error('cannot deduce type of empty table');\n }\n // Deduce the table shape from the first row\n const firstRow = data[0];\n if (Array.isArray(firstRow)) {\n return 'array-row-table';\n }\n if (firstRow && typeof firstRow === 'object') {\n return 'object-row-table';\n }\n }\n if (data && typeof data === 'object') {\n return 'columnar-table';\n }\n throw new Error('invalid table');\n}\n/** Convert any table into object row format *\nexport function makeColumnarTable(table: Table): ColumnarTable {\n if (table.shape === 'columnar-table') {\n return table;\n }\n const length = getTableLength(table);\n const data = new Array<{[key: string]: unknown}>(length);\n for (let rowIndex = 0; rowIndex < length; rowIndex++) {\n data[rowIndex] = getTableRowAsObject(table, rowIndex);\n }\n return {\n shape: 'columnar-table',\n schema: table.schema,\n data\n };\n}\n\n\n/** Convert any table into array row format *\nexport function makeArrayRowTable(table: TableLike): ArrayRowTable {\n if (table.shape === 'array-row-table') {\n return table;\n }\n const length = getTableLength(table);\n const data = new Array<unknown[]>(length);\n for (let rowIndex = 0; rowIndex < length; rowIndex++) {\n data[rowIndex] = getTableRowAsArray(table, rowIndex);\n }\n return {\n shape: 'array-row-table',\n schema: table.schema,\n data\n };\n}\n\n/** Convert any table into object row format *\nexport function makeObjectRowTable(table: Table): ObjectRowTable {\n if (table.shape === 'object-row-table') {\n return table;\n }\n const length = getTableLength(table);\n const data = new Array<{[key: string]: unknown}>(length);\n for (let rowIndex = 0; rowIndex < length; rowIndex++) {\n data[rowIndex] = getTableRowAsObject(table, rowIndex);\n }\n return {\n shape: 'object-row-table',\n schema: table.schema,\n data\n };\n}\n*/\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { getTableLength } from \"./table-accessors.js\";\n/**\n * Returns an iterator that yields a single table as a sequence of batches.\n * @note Currently only a single batch is yielded.\n * @note All batches will have the same shape and schema as the original table.\n * @returns\n */\nexport function* makeBatchesFromTable(table) {\n yield makeBatchFromTable(table);\n}\n/**\n * Returns a table packaged as a single table batch\n * @note The batch will have the same shape and schema as the original table.\n * @returns `null` if no batches are yielded by the async iterator\n */\nexport function makeBatchFromTable(table) {\n return { ...table, length: getTableLength(table), batchType: 'data' };\n}\n/**\n * Assembles all batches from an async iterator into a single table.\n * @note All batches must have the same shape and schema\n * @param batchIterator\n * @returns `null` if no batches are yielded by the async iterator\n */\n// eslint-disable-next-line complexity\nexport async function makeTableFromBatches(batchIterator) {\n let arrayRows;\n let objectRows;\n let features;\n let shape = null;\n let schema;\n for await (const batch of batchIterator) {\n shape = shape || batch.shape;\n schema = schema || batch.schema;\n switch (batch.shape) {\n case 'array-row-table':\n arrayRows = arrayRows || [];\n for (let rowIndex = 0; rowIndex < getTableLength(batch); rowIndex++) {\n const row = batch.data[rowIndex];\n arrayRows.push(row);\n }\n break;\n case 'object-row-table':\n objectRows = objectRows || [];\n for (let rowIndex = 0; rowIndex < getTableLength(batch); rowIndex++) {\n const row = batch.data[rowIndex];\n objectRows.push(row);\n }\n break;\n case 'geojson-table':\n features = features || [];\n for (let rowIndex = 0; rowIndex < getTableLength(batch); rowIndex++) {\n const row = batch.features[rowIndex];\n features.push(row);\n }\n break;\n case 'columnar-table':\n case 'arrow-table':\n default:\n throw new Error('shape');\n }\n }\n if (!shape) {\n return null;\n }\n switch (shape) {\n case 'array-row-table':\n return { shape: 'array-row-table', data: arrayRows, schema };\n case 'object-row-table':\n return { shape: 'object-row-table', data: objectRows, schema };\n case 'geojson-table':\n return { shape: 'geojson-table', type: 'FeatureCollection', features: features, schema };\n default:\n return null;\n }\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { getArrayTypeFromDataType } from \"./data-type.js\";\nexport function makeColumnFromField(field, length) {\n const ArrayType = getArrayTypeFromDataType(field.type, field.nullable);\n return new ArrayType(length);\n}\n/*\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction deduceSchema(rows) {\n const row = rows[0];\n\n const schema = {};\n let i = 0;\n for (const columnName in row) {\n const value = row[columnName];\n switch (typeof value) {\n case 'number':\n case 'boolean':\n // TODO - booleans could be handled differently...\n schema[columnName] = {name: String(columnName), index: i, type: Float32Array};\n break;\n\n case 'object':\n schema[columnName] = {name: String(columnName), index: i, type: Array};\n break;\n\n case 'string':\n default:\n schema[columnName] = {name: String(columnName), index: i, type: Array};\n // We currently only handle numeric rows\n // TODO we could offer a function to map strings to numbers?\n }\n i++;\n }\n return schema;\n}\n*/\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { getTableCell, getTableLength, getTableRowAsArray, getTableRowAsObject } from \"./table-accessors.js\";\nimport { deduceTableSchema } from \"./table-schema.js\";\nimport { makeColumnFromField } from \"./table-column.js\";\n/**\n * Convert a table to a different shape\n * @param table\n * @param shape\n * @returns\n */\nexport function convertTable(table, shape) {\n switch (shape) {\n case 'object-row-table':\n return makeObjectRowTable(table);\n case 'array-row-table':\n return makeArrayRowTable(table);\n case 'columnar-table':\n return makeColumnarTable(table);\n case 'arrow-table':\n return makeArrowTable(table);\n default:\n throw new Error(shape);\n }\n}\n/**\n * Convert a table to apache arrow format\n * @note this depends on the `@loaders.gl/arrow module being imported\n */\nexport function makeArrowTable(table) {\n const _makeArrowTable = globalThis.__loaders?._makeArrowTable;\n if (!_makeArrowTable) {\n throw new Error('');\n }\n return _makeArrowTable(table);\n}\n/** Convert any simple table into columnar format */\nexport function makeColumnarTable(table) {\n // TODO - should schema really be optional?\n const schema = table.schema || deduceTableSchema(table);\n const fields = table.schema?.fields || [];\n if (table.shape === 'columnar-table') {\n return { ...table, schema };\n }\n const length = getTableLength(table);\n const columns = {};\n for (const field of fields) {\n const column = makeColumnFromField(field, length);\n columns[field.name] = column;\n for (let rowIndex = 0; rowIndex < length; rowIndex++) {\n column[rowIndex] = getTableCell(table, rowIndex, field.name);\n }\n }\n return {\n shape: 'columnar-table',\n schema,\n data: columns\n };\n}\n/** Convert any table into array row format */\nexport function makeArrayRowTable(table) {\n if (table.shape === 'array-row-table') {\n return table;\n }\n const length = getTableLength(table);\n const data = new Array(length);\n for (let rowIndex = 0; rowIndex < length; rowIndex++) {\n data[rowIndex] = getTableRowAsArray(table, rowIndex);\n }\n return {\n shape: 'array-row-table',\n schema: table.schema,\n data\n };\n}\n/** Convert any table into object row format */\nexport function makeObjectRowTable(table) {\n if (table.shape === 'object-row-table') {\n return table;\n }\n const length = getTableLength(table);\n const data = new Array(length);\n for (let rowIndex = 0; rowIndex < length; rowIndex++) {\n data[rowIndex] = getTableRowAsObject(table, rowIndex);\n }\n return {\n shape: 'object-row-table',\n schema: table.schema,\n data\n };\n}\n/**\n *\n * @note - should be part of schema module\n *\nexport function convertColumnarToRowFormatTable(columnarTable: ColumnarTable): ObjectRowTable {\n const tableKeys = Object.keys(columnarTable);\n const tableRowsCount = columnarTable[tableKeys[0]].length;\n\n const rowFormatTable: {}[] = [];\n\n for (let index = 0; index < tableRowsCount; index++) {\n const tableItem = {};\n for (let keyIndex = 0; keyIndex < tableKeys.length; keyIndex++) {\n const fieldName = tableKeys[keyIndex];\n tableItem[fieldName] = columnarTable[fieldName][index];\n }\n rowFormatTable.push(tableItem);\n }\n\n return {\n shape: 'object-row-table',\n schema: columnarTable.schema,\n data: rowFormatTable\n };\n}\n*/\n", "/**\n * Get number of vertices in mesh\n * @param attributes\n */\nexport function getMeshSize(attributes) {\n let size = 0;\n for (const attributeName in attributes) {\n const attribute = attributes[attributeName];\n if (ArrayBuffer.isView(attribute)) {\n // @ts-ignore DataView doesn't have BYTES_PER_ELEMENT\n size += attribute.byteLength * attribute.BYTES_PER_ELEMENT;\n }\n }\n return size;\n}\n/**\n * Get the (axis aligned) bounding box of a mesh\n * @param attributes\n * @returns array of two vectors representing the axis aligned bounding box\n */\n// eslint-disable-next-line complexity\nexport function getMeshBoundingBox(attributes) {\n let minX = Infinity;\n let minY = Infinity;\n let minZ = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n let maxZ = -Infinity;\n const positions = attributes.POSITION ? attributes.POSITION.value : [];\n const len = positions && positions.length;\n for (let i = 0; i < len; i += 3) {\n const x = positions[i];\n const y = positions[i + 1];\n const z = positions[i + 2];\n minX = x < minX ? x : minX;\n minY = y < minY ? y : minY;\n minZ = z < minZ ? z : minZ;\n maxX = x > maxX ? x : maxX;\n maxY = y > maxY ? y : maxY;\n maxZ = z > maxZ ? z : maxZ;\n }\n return [\n [minX, minY, minZ],\n [maxX, maxY, maxZ]\n ];\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { getDataTypeFromTypedArray } from \"../table/simple-table/data-type.js\";\n/**\n * Create a schema for mesh attributes data\n * @param attributes\n * @param metadata\n * @returns\n */\nexport function deduceMeshSchema(attributes, metadata = {}) {\n const fields = deduceMeshFields(attributes);\n return { fields, metadata };\n}\n/**\n * Create arrow-like schema field for mesh attribute\n * @param attributeName\n * @param attribute\n * @param optionalMetadata\n * @returns\n */\nexport function deduceMeshField(name, attribute, optionalMetadata) {\n const type = getDataTypeFromTypedArray(attribute.value);\n const metadata = optionalMetadata ? optionalMetadata : makeMeshAttributeMetadata(attribute);\n return {\n name,\n type: { type: 'fixed-size-list', listSize: attribute.size, children: [{ name: 'value', type }] },\n nullable: false,\n metadata\n };\n}\n/**\n * Create fields array for mesh attributes\n * @param attributes\n * @returns\n */\nfunction deduceMeshFields(attributes) {\n const fields = [];\n for (const attributeName in attributes) {\n const attribute = attributes[attributeName];\n fields.push(deduceMeshField(attributeName, attribute));\n }\n return fields;\n}\n/**\n * Make metadata by mesh attribute properties\n * @param attribute\n * @returns\n */\nexport function makeMeshAttributeMetadata(attribute) {\n const result = {};\n if ('byteOffset' in attribute) {\n result.byteOffset = attribute.byteOffset.toString(10);\n }\n if ('byteStride' in attribute) {\n result.byteStride = attribute.byteStride.toString(10);\n }\n if ('normalized' in attribute) {\n result.normalized = attribute.normalized.toString();\n }\n return result;\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n// This code is adapted from ArrowJS https://github.com/apache/arrow\n// under Apache license http://www.apache.org/licenses/LICENSE-2.0\n/**\n * Main data type enumeration.\n *\n * Data types in this library are all *logical*. They can be expressed as\n * either a primitive physical type (bytes or bits of some fixed size), a\n * nested type consisting of other data types, or another data type (e.g. a\n * timestamp encoded as an int64).\n *\n * **Note**: Only enum values 0-17 (NONE through Map) are written to an Arrow\n * IPC payload.\n *\n * The rest of the values are specified here so TypeScript can narrow the type\n * signatures further beyond the base Arrow Types. The Arrow DataTypes include\n * metadata like `bitWidth` that impact the type signatures of the values we\n * accept and return.\n *\n * For example, the `Int8Vector` reads 1-byte numbers from an `Int8Array`, an\n * `Int32Vector` reads a 4-byte number from an `Int32Array`, and an `Int64Vector`\n * reads a pair of 4-byte lo, hi 32-bit integers as a zero-copy slice from the\n * underlying `Int32Array`.\n *\n * Library consumers benefit by knowing the narrowest type, since we can ensure\n * the types across all public methods are propagated, and never bail to `any`.\n * These values are _never_ used at runtime, and they will _never_ be written\n * to the flatbuffers metadata of serialized Arrow IPC payloads.\n */\nexport var Type;\n(function (Type) {\n /** The default placeholder type */\n Type[Type[\"NONE\"] = 0] = \"NONE\";\n /** A NULL type having no physical storage */\n Type[Type[\"Null\"] = 1] = \"Null\";\n /** Signed or unsigned 8, 16, 32, or 64-bit little-endian integer */\n Type[Type[\"Int\"] = 2] = \"Int\";\n /** 2, 4, or 8-byte floating point value */\n Type[Type[\"Float\"] = 3] = \"Float\";\n /** Variable-length bytes (no guarantee of UTF8-ness) */\n Type[Type[\"Binary\"] = 4] = \"Binary\";\n /** UTF8 variable-length string as List<Char> */\n Type[Type[\"Utf8\"] = 5] = \"Utf8\";\n /** Boolean as 1 bit, LSB bit-packed ordering */\n Type[Type[\"Bool\"] = 6] = \"Bool\";\n /** Precision-and-scale-based decimal type. Storage type depends on the parameters. */\n Type[Type[\"Decimal\"] = 7] = \"Decimal\";\n /** int32_t days or int64_t milliseconds since the UNIX epoch */\n Type[Type[\"Date\"] = 8] = \"Date\";\n /** Time as signed 32 or 64-bit integer, representing either seconds, milliseconds, microseconds, or nanoseconds since midnight since midnight */\n Type[Type[\"Time\"] = 9] = \"Time\";\n /** Exact timestamp encoded with int64 since UNIX epoch (Default unit millisecond) */\n Type[Type[\"Timestamp\"] = 10] = \"Timestamp\";\n /** YEAR_MONTH or DAY_TIME interval in SQL style */\n Type[Type[\"Interval\"] = 11] = \"Interval\";\n /** A list of some logical data type */\n Type[Type[\"List\"] = 12] = \"List\";\n /** Struct of logical types */\n Type[Type[\"Struct\"] = 13] = \"Struct\";\n /** Union of logical types */\n Type[Type[\"Union\"] = 14] = \"Union\";\n /** Fixed-size binary. Each value occupies the same number of bytes */\n Type[Type[\"FixedSizeBinary\"] = 15] = \"FixedSizeBinary\";\n /** Fixed-size list. Each value occupies the same number of bytes */\n Type[Type[\"FixedSizeList\"] = 16] = \"FixedSizeList\";\n /** Map of named logical types */\n Type[Type[\"Map\"] = 17] = \"Map\";\n /** Dictionary aka Category type */\n Type[Type[\"Dictionary\"] = -1] = \"Dictionary\";\n Type[Type[\"Int8\"] = -2] = \"Int8\";\n Type[Type[\"Int16\"] = -3] = \"Int16\";\n Type[Type[\"Int32\"] = -4] = \"Int32\";\n Type[Type[\"Int64\"] = -5] = \"Int64\";\n Type[Type[\"Uint8\"] = -6] = \"Uint8\";\n Type[Type[\"Uint16\"] = -7] = \"Uint16\";\n Type[Type[\"Uint32\"] = -8] = \"Uint32\";\n Type[Type[\"Uint64\"] = -9] = \"Uint64\";\n Type[Type[\"Float16\"] = -10] = \"Float16\";\n Type[Type[\"Float32\"] = -11] = \"Float32\";\n Type[Type[\"Float64\"] = -12] = \"Float64\";\n Type[Type[\"DateDay\"] = -13] = \"DateDay\";\n Type[Type[\"DateMillisecond\"] = -14] = \"DateMillisecond\";\n Type[Type[\"TimestampSecond\"] = -15] = \"TimestampSecond\";\n Type[Type[\"TimestampMillisecond\"] = -16] = \"TimestampMillisecond\";\n Type[Type[\"TimestampMicrosecond\"] = -17] = \"TimestampMicrosecond\";\n Type[Type[\"TimestampNanosecond\"] = -18] = \"TimestampNanosecond\";\n Type[Type[\"TimeSecond\"] = -19] = \"TimeSecond\";\n Type[Type[\"TimeMillisecond\"] = -20] = \"TimeMillisecond\";\n Type[Type[\"TimeMicrosecond\"] = -21] = \"TimeMicrosecond\";\n Type[Type[\"TimeNanosecond\"] = -22] = \"TimeNanosecond\";\n Type[Type[\"DenseUnion\"] = -23] = \"DenseUnion\";\n Type[Type[\"SparseUnion\"] = -24] = \"SparseUnion\";\n Type[Type[\"IntervalDayTime\"] = -25] = \"IntervalDayTime\";\n Type[Type[\"IntervalYearMonth\"] = -26] = \"IntervalYearMonth\";\n})(Type || (Type = {}));\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n// This code is adapted from ArrowJS https://github.com/apache/arrow\n// under Apache license http://www.apache.org/licenses/LICENSE-2.0\nimport { Type } from \"./enum.js\";\nexport { Type } from \"./enum.js\";\n/** ArrowLike DataType class */\nexport class DataType {\n static isNull(x) {\n return x && x.typeId === Type.Null;\n }\n static isInt(x) {\n return x && x.typeId === Type.Int;\n }\n static isFloat(x) {\n return x && x.typeId === Type.Float;\n }\n static isBinary(x) {\n return x && x.typeId === Type.Binary;\n }\n static isUtf8(x) {\n return x && x.typeId === Type.Utf8;\n }\n static isBool(x) {\n return x && x.typeId === Type.Bool;\n }\n static isDecimal(x) {\n return x && x.typeId === Type.Decimal;\n }\n static isDate(x) {\n return x && x.typeId === Type.Date;\n }\n static isTime(x) {\n return x && x.typeId === Type.Time;\n }\n static isTimestamp(x) {\n return x && x.typeId === Type.Timestamp;\n }\n static isInterval(x) {\n return x && x.typeId === Type.Interval;\n }\n static isList(x) {\n return x && x.typeId === Type.List;\n }\n static isStruct(x) {\n return x && x.typeId === Type.Struct;\n }\n static isUnion(x) {\n return x && x.typeId === Type.Union;\n }\n static isFixedSizeBinary(x) {\n return x && x.typeId === Type.FixedSizeBinary;\n }\n static isFixedSizeList(x) {\n return x && x.typeId === Type.FixedSizeList;\n }\n static isMap(x) {\n return x && x.typeId === Type.Map;\n }\n static isDictionary(x) {\n return x && x.typeId === Type.Dictionary;\n }\n get typeId() {\n return Type.NONE;\n }\n // get ArrayType(): AnyArrayType {\n // return Int8Array;\n // }\n // get ArrayType() { return Array; }\n compareTo(other) {\n // TODO\n return this === other; // comparer.visit(this, other);\n }\n}\n// NULL\nexport class Null extends DataType {\n get typeId() {\n return Type.Null;\n }\n get [Symbol.toStringTag]() {\n return 'Null';\n }\n toString() {\n return 'Null';\n }\n}\n// BOOLEANS\nexport class Bool extends DataType {\n get typeId() {\n return Type.Bool;\n }\n // get ArrayType() {\n // return Uint8Array;\n // }\n get [Symbol.toStringTag]() {\n return 'Bool';\n }\n toString() {\n return 'Bool';\n }\n}\n// INTS\nexport class Int extends DataType {\n isSigned;\n bitWidth;\n constructor(isSigned, bitWidth) {\n super();\n this.isSigned = isSigned;\n this.bitWidth = bitWidth;\n }\n get typeId() {\n return Type.Int;\n }\n // get ArrayType() {\n // switch (this.bitWidth) {\n // case 8:\n // return this.isSigned ? Int8Array : Uint8Array;\n // case 16:\n // return this.isSigned ? Int16Array : Uint16Array;\n // case 32:\n // return this.isSigned ? Int32Array : Uint32Array;\n // case 64:\n // return this.isSigned ? Int32Array : Uint32Array;\n // default:\n // throw new Error(`Unrecognized ${this[Symbol.toStringTag]} type`);\n // }\n // }\n get [Symbol.toStringTag]() {\n return 'Int';\n }\n toString() {\n return `${this.isSigned ? 'I' : 'Ui'}nt${this.bitWidth}`;\n }\n}\nexport class Int8 extends Int {\n constructor() {\n super(true, 8);\n }\n}\nexport class Int16 extends Int {\n constructor() {\n super(true, 16);\n }\n}\nexport class Int32 extends Int {\n constructor() {\n super(true, 32);\n }\n}\nexport class Int64 extends Int {\n constructor() {\n super(true, 64);\n }\n}\nexport class Uint8 extends Int {\n constructor() {\n super(false, 8);\n }\n}\nexport class Uint16 extends Int {\n constructor() {\n super(false, 16);\n }\n}\nexport class Uint32 extends Int {\n constructor() {\n super(false, 32);\n }\n}\nexport class Uint64 extends Int {\n constructor() {\n super(false, 64);\n }\n}\n// FLOATS\nconst Precision = {\n HALF: 16,\n SINGLE: 32,\n DOUBLE: 64\n};\nexport class Float extends DataType {\n precision;\n constructor(precision) {\n super();\n this.precision = precision;\n }\n get typeId() {\n return Type.Float;\n }\n // get ArrayType() {\n // switch (this.precision) {\n // case Precision.HALF:\n // return Uint16Array;\n // case Precision.SINGLE:\n // return Float32Array;\n // case Precision.DOUBLE:\n // return Float64Array;\n // default:\n // throw new Error(`Unrecognized ${this[Symbol.toStringTag]} type`);\n // }\n // }\n get [Symbol.toStringTag]() {\n return 'Float';\n }\n toString() {\n return `Float${this.precision}`;\n }\n}\nexport class Float16 extends Float {\n constructor() {\n super(Precision.HALF);\n }\n}\nexport class Float32 extends Float {\n constructor() {\n super(Precision.SINGLE);\n }\n}\nexport class Float64 extends Float {\n constructor() {\n super(Precision.DOUBLE);\n }\n}\nexport class Binary extends DataType {\n constructor() {\n super();\n }\n get typeId() {\n return Type.Binary;\n }\n toString() {\n return 'Binary';\n }\n get [Symbol.toStringTag]() {\n return 'Binary';\n }\n}\n// STRINGS\nexport class Utf8 extends DataType {\n get typeId() {\n return Type.Utf8;\n }\n // get ArrayType() {\n // return Uint8Array;\n // }\n get [Symbol.toStringTag]() {\n return 'Utf8';\n }\n toString() {\n return 'Utf8';\n }\n}\n// DATES, TIMES AND INTERVALS\nconst DateUnit = {\n DAY: 0,\n MILLISECOND: 1\n};\nexport class Date extends DataType {\n unit;\n constructor(unit) {\n super();\n this.unit = unit;\n }\n get typeId() {\n return Type.Date;\n }\n // get ArrayType() {\n // return Int32Array;\n // }\n get [Symbol.toStringTag]() {\n return 'Date';\n }\n toString() {\n return `Date${(this.unit + 1) * 32}<${DateUnit[this.unit]}>`;\n }\n}\nexport class DateDay extends Date {\n constructor() {\n super(DateUnit.DAY);\n }\n}\nexport class DateMillisecond extends Date {\n constructor() {\n super(DateUnit.MILLISECOND);\n }\n}\nconst TimeUnit = {\n SECOND: 1,\n MILLISECOND: 1e3,\n MICROSECOND: 1e6,\n NANOSECOND: 1e9\n};\nexport class Time extends DataType {\n unit;\n bitWidth;\n constructor(unit, bitWidth) {\n super();\n this.unit = unit;\n this.bitWidth = bitWidth;\n }\n get typeId() {\n return Type.Time;\n }\n toString() {\n return `Time${this.bitWidth}<${TimeUnit[this.unit]}>`;\n }\n get [Symbol.toStringTag]() {\n return 'Time';\n }\n}\nexport class TimeSecond extends Time {\n constructor() {\n super(TimeUnit.SECOND, 32);\n }\n}\nexport class TimeMillisecond extends Time {\n constructor() {\n super(TimeUnit.MILLISECOND, 32);\n }\n}\n// export class TimeMicrosecond extends Time { constructor() { super(TimeUnit.MICROSECOND, 64); } }\n// export class TimeNanosecond extends Time { constructor() { super(TimeUnit.NANOSECOND, 64); } }\nexport class Timestamp extends DataType {\n unit;\n timezone;\n constructor(unit, timezone = null) {\n super();\n this.unit = unit;\n this.timezone = timezone;\n }\n get typeId() {\n return Type.Timestamp;\n }\n // get ArrayType() {\n // return Int32Array;\n // }\n get [Symbol.toStringTag]() {\n return 'Timestamp';\n }\n toString() {\n return `Timestamp<${TimeUnit[this.unit]}${this.timezone ? `, ${this.timezone}` : ''}>`;\n }\n}\nexport class TimestampSecond extends Timestamp {\n constructor(timezone = null) {\n super(TimeUnit.SECOND, timezone);\n }\n}\nexport class TimestampMillisecond extends Timestamp {\n constructor(timezone = null) {\n super(TimeUnit.MILLISECOND, timezone);\n }\n}\nexport class TimestampMicrosecond extends Timestamp {\n constructor(timezone = null) {\n super(TimeUnit.MICROSECOND, timezone);\n }\n}\nexport class TimestampNanosecond extends Timestamp {\n constructor(timezone = null) {\n super(TimeUnit.NANOSECOND, timezone);\n }\n}\nconst IntervalUnit = {\n DAY_TIME: 0,\n YEAR_MONTH: 1\n};\nexport class Interval extends DataType {\n unit;\n constructor(unit) {\n super();\n this.unit = unit;\n }\n get typeId() {\n return Type.Interval;\n }\n // get ArrayType() {\n // return Int32Array;\n // }\n get [Symbol.toStringTag]() {\n return 'Interval';\n }\n toString() {\n return `Interval<${IntervalUnit[this.unit]}>`;\n }\n}\nexport class IntervalDayTime extends Interval {\n constructor() {\n super(IntervalUnit.DAY_TIME);\n }\n}\nexport class IntervalYearMonth extends Interval {\n constructor() {\n super(IntervalUnit.YEAR_MONTH);\n }\n}\nexport class FixedSizeList extends DataType {\n listSize;\n children;\n constructor(listSize, child) {\n super();\n this.listSize = listSize;\n this.children = [child];\n }\n get typeId() {\n return Type.FixedSizeList;\n }\n get valueType() {\n return this.children[0].type;\n }\n get valueField() {\n return this.children[0];\n }\n // get ArrayType() {\n // return this.valueType.ArrayType;\n // }\n get [Symbol.toStringTag]() {\n return 'FixedSizeList';\n }\n toString() {\n return `FixedSizeList[${this.listSize}]<${JSON.stringify(this.valueType)}>`;\n }\n}\nexport class Struct extends DataType {\n children;\n constructor(children) {\n super();\n this.children = children;\n }\n get typeId() {\n return Type.Struct;\n }\n toString() {\n return `Struct<{${this.children\n .map((f) => `${f.name}:${JSON.stringify(f.type)}`)\n .join(', ')}}>`;\n }\n get [Symbol.toStringTag]() {\n return 'Struct';\n }\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { Type } from \"./arrow-like-type.js\";\n/**\n * Gets type information from an Arrow type object or \"mock\" Arrow type object\n * @param arrowTypeLike Arrow Type or type object of similar shape\n */\nexport function getTypeInfo(arrowTypeLike) {\n return {\n typeId: arrowTypeLike.typeId,\n ArrayType: arrowTypeLike.ArrayType,\n typeName: arrowTypeLike.toString(),\n typeEnumName: getTypeKey(arrowTypeLike.typeId),\n precision: arrowTypeLike.precision\n };\n}\nlet ReverseType = null;\nfunction getTypeKey(typeKey) {\n if (!ReverseType) {\n ReverseType = {};\n for (const key in Type) {\n ReverseType[Type[key]] = key;\n }\n }\n return ReverseType[typeKey];\n}\n", "// From https://github.com/rauschma/async-iter-demo/tree/master/src under MIT license\n// http://2ality.com/2016/10/asynchronous-iteration.html\nclass ArrayQueue extends Array {\n enqueue(value) {\n // Add at the end\n return this.push(value);\n }\n dequeue() {\n // Remove first element\n return this.shift();\n }\n}\nexport default class AsyncQueue {\n _values;\n _settlers;\n _closed;\n constructor() {\n // enqueues > dequeues\n this._values = new ArrayQueue();\n // dequeues > enqueues\n this._settlers = new ArrayQueue();\n this._closed = false;\n }\n close() {\n while (this._settlers.length > 0) {\n this._settlers.dequeue().resolve({ done: true });\n }\n this._closed = true;\n }\n [Symbol.asyncIterator]() {\n return this;\n }\n enqueue(value) {\n if (this._closed) {\n throw new Error('Closed');\n }\n if (this._settlers.length > 0) {\n if (this._values.length > 0) {\n throw new Error('Illegal internal state');\n }\n const settler = this._settlers.dequeue();\n if (value instanceof Error) {\n settler.reject(value);\n }\n else {\n settler.resolve({ value });\n }\n }\n else {\n this._values.enqueue(value);\n }\n }\n /**\n * @returns a Promise for an IteratorResult\n */\n next() {\n if (this._values.length > 0) {\n const value = this._values.dequeue();\n if (value instanceof Error) {\n return Promise.reject(value);\n }\n return Promise.resolve({ value });\n }\n if (this._closed) {\n if (this._settlers.length > 0) {\n throw new Error('Illegal internal state');\n }\n return Promise.resolve({ done: true });\n }\n // Wait for new values to be enqueued\n return new Promise((resolve, reject) => {\n this._settlers.enqueue({ resolve, reject });\n });\n }\n}\n/**\n * @returns a Promise for an Array with the elements in `asyncIterable`\n */\nexport async function takeAsync(asyncIterable, count = Infinity) {\n const result = [];\n const iterator = asyncIterable[Symbol.asyncIterator]();\n while (result.length < count) {\n const { value, done } = await iterator.next();\n if (done) {\n break;\n }\n result.push(value);\n }\n return result;\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["Date", "DEFAULT_ROW_COUNT", "DEFAULT_ROW_COUNT", "objectRow", "arrayRow", "Type", "Date"]
7
7
  }
package/dist/index.d.ts CHANGED
@@ -8,7 +8,7 @@ export { TableBatchBuilder } from "./lib/table/batches/table-batch-builder.js";
8
8
  export type { TableBatchAggregator } from "./lib/table/batches/table-batch-aggregator.js";
9
9
  export { RowTableBatchAggregator } from "./lib/table/batches/row-table-batch-aggregator.js";
10
10
  export { ColumnarTableBatchAggregator } from "./lib/table/batches/columnar-table-batch-aggregator.js";
11
- export { isTable, getTableLength, getTableNumCols, getTableCell, getTableRowShape, getTableColumnIndex, getTableColumnName, getTableRowAsObject, getTableRowAsArray, makeRowIterator, makeArrayRowIterator, makeObjectRowIterator } from "./lib/table/simple-table/table-accessors.js";
11
+ export { isTable, getTableLength, getTableNumCols, getTableCell, getTableCellAt, getTableRowShape, getTableColumnIndex, getTableColumnName, getTableRowAsObject, getTableRowAsArray, makeRowIterator, makeArrayRowIterator, makeObjectRowIterator } from "./lib/table/simple-table/table-accessors.js";
12
12
  export { ArrowLikeTable } from "./lib/table/arrow-api/arrow-like-table.js";
13
13
  export { makeTableFromData } from "./lib/table/simple-table/make-table.js";
14
14
  export { makeTableFromBatches, makeBatchFromTable } from "./lib/table/simple-table/make-table-from-batches.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,YAAY,EACV,UAAU,EACV,aAAa,EACb,qBAAqB,EACrB,wBAAwB,EACxB,WAAW,EACX,SAAS,EACT,QAAQ,EACT,yBAAsB;AAIvB,YAAY,EAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,aAAa,EAAC,0BAAuB;AAC3F,YAAY,EAAC,KAAK,EAAC,yBAAsB;AAEzC,OAAO,EAAC,wBAAwB,EAAC,8CAA2C;AAG5E,YAAY,EACV,KAAK,EACL,QAAQ,EACR,aAAa,EACb,cAAc,EACd,YAAY,EACZ,aAAa,EACb,UAAU,EACV,MAAM,EACP,kCAA+B;AAChC,YAAY,EACV,UAAU,EACV,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EAChB,kCAA+B;AAGhC,OAAO,EAAC,iBAAiB,EAAC,mDAAgD;AAC1E,YAAY,EAAC,oBAAoB,EAAC,sDAAmD;AACrF,OAAO,EAAC,uBAAuB,EAAC,0DAAuD;AACvF,OAAO,EAAC,4BAA4B,EAAC,+DAA4D;AAEjG,OAAO,EACL,OAAO,EACP,cAAc,EACd,eAAe,EACf,YAAY,EACZ,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,oBAAoB,EACpB,qBAAqB,EACtB,oDAAiD;AAElD,OAAO,EAAC,cAAc,EAAC,kDAA+C;AAEtE,OAAO,EAAC,iBAAiB,EAAC,+CAA4C;AACtE,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EACnB,4DAAyD;AAC1D,OAAO,EAAC,YAAY,EAAC,kDAA+C;AACpE,OAAO,EAAC,iBAAiB,EAAC,iDAA8C;AACxE,OAAO,EAAC,kBAAkB,EAAE,iBAAiB,EAAC,8CAA2C;AACzF,OAAO,EAAC,oBAAoB,EAAC,8CAA2C;AAGxE,YAAY,EACV,SAAS,EACT,cAAc,EACd,IAAI,EACJ,YAAY,EACZ,aAAa,EACb,cAAc,EACf,iCAA8B;AAE/B,OAAO,EAAC,WAAW,EAAE,kBAAkB,EAAC,iCAA8B;AAGtE,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,yBAAyB,EAC1B,yCAAsC;AAGvC,YAAY,EAAC,YAAY,EAAE,gBAAgB,EAAC,oCAAiC;AAG7E,YAAY,EAAC,aAAa,EAAE,SAAS,EAAE,aAAa,EAAC,kCAA+B;AAIpF,YAAY,EACV,OAAO,EACP,OAAO,EACP,iBAAiB,EACjB,QAAQ,EACR,QAAQ,EACR,iBAAiB,EACjB,KAAK,EACL,UAAU,EACV,UAAU,EACV,eAAe,EACf,OAAO,EACP,YAAY,EACZ,kBAAkB,EACnB,gCAA6B;AAE9B,YAAY,EAAC,mBAAmB,EAAC,gCAA6B;AAG9D,YAAY,EACV,WAAW,EACX,mBAAmB,EACnB,YAAY,EACZ,gBAAgB,EAChB,SAAS,EACT,cAAc,EACd,WAAW,EACZ,gCAA6B;AAG9B,YAAY,EACV,kBAAkB,EAClB,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,EAChB,gCAA6B;AAC9B,YAAY,EACV,uBAAuB,EACvB,aAAa,EACb,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACrB,gCAA6B;AAG9B,OAAO,EACL,MAAM,IAAI,eAAe,EACzB,KAAK,IAAI,cAAc,EACvB,QAAQ,IAAI,iBAAiB,EAC7B,IAAI,EACJ,MAAM,EACN,IAAI,EACJ,GAAG,EACH,IAAI,EACJ,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,MAAM,EACN,MAAM,EACN,MAAM,EACN,KAAK,EACL,OAAO,EACP,OAAO,EACP,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,OAAO,EACP,eAAe,EACf,IAAI,EACJ,eAAe,EACf,UAAU,EACV,SAAS,EACT,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,QAAQ,EACR,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,MAAM,EACP,uCAAoC;AAKrC,OAAO,EAAC,WAAW,EAAC,+CAA4C;AAEhE,OAAO,EAAC,OAAO,IAAI,UAAU,EAAC,mCAAgC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -6,7 +6,7 @@ export { getArrayTypeFromDataType } from "./lib/table/simple-table/data-type.js"
6
6
  export { TableBatchBuilder } from "./lib/table/batches/table-batch-builder.js";
7
7
  export { RowTableBatchAggregator } from "./lib/table/batches/row-table-batch-aggregator.js";
8
8
  export { ColumnarTableBatchAggregator } from "./lib/table/batches/columnar-table-batch-aggregator.js";
9
- export { isTable, getTableLength, getTableNumCols, getTableCell, getTableRowShape, getTableColumnIndex, getTableColumnName, getTableRowAsObject, getTableRowAsArray, makeRowIterator, makeArrayRowIterator, makeObjectRowIterator } from "./lib/table/simple-table/table-accessors.js";
9
+ export { isTable, getTableLength, getTableNumCols, getTableCell, getTableCellAt, getTableRowShape, getTableColumnIndex, getTableColumnName, getTableRowAsObject, getTableRowAsArray, makeRowIterator, makeArrayRowIterator, makeObjectRowIterator } from "./lib/table/simple-table/table-accessors.js";
10
10
  export { ArrowLikeTable } from "./lib/table/arrow-api/arrow-like-table.js";
11
11
  export { makeTableFromData } from "./lib/table/simple-table/make-table.js";
12
12
  export { makeTableFromBatches, makeBatchFromTable } from "./lib/table/simple-table/make-table-from-batches.js";
@@ -0,0 +1,43 @@
1
+ import { DataType } from "./arrow-like-type.js";
2
+ /**
3
+ * ArrowJS `Field` API-compatible class for row-based tables
4
+ * https://loaders.gl/arrowjs/docs/api-reference/field
5
+ * A field holds name, nullable, and metadata information about a table "column"
6
+ * A Schema is essentially a list of fields
7
+ */
8
+ export interface Field {
9
+ name: string;
10
+ type: DataType;
11
+ nullable: boolean;
12
+ metadata: Map<string, string>;
13
+ typeId(): number;
14
+ clone(): Field;
15
+ compareTo(other: this): boolean;
16
+ toString(): any;
17
+ }
18
+ export interface Schema {
19
+ fields: Field[];
20
+ metadata: Map<string, string>;
21
+ compareTo(other: Schema): boolean;
22
+ select(...columnNames: string[]): Schema;
23
+ selectAt(...columnIndices: number[]): Schema;
24
+ assign(schemaOrFields: Schema | Field[]): Schema;
25
+ }
26
+ export interface ArrowLikeVector {
27
+ table: Table;
28
+ columnName: string;
29
+ get(rowIndex: number): unknown;
30
+ toArray(): ArrayLike<unknown>;
31
+ }
32
+ /**
33
+ * Class that provides an API similar to Apache Arrow Table class
34
+ * Forwards methods directly if the underlying table is Arrow, otherwise calls accessor functions
35
+ */
36
+ export interface Table {
37
+ schema: Schema;
38
+ data: any;
39
+ numCols: number;
40
+ length(): number;
41
+ getChild(columnName: string): ArrowLikeVector;
42
+ }
43
+ //# sourceMappingURL=arrow-like-interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arrow-like-interface.d.ts","sourceRoot":"","sources":["../../../../src/lib/table/arrow-api/arrow-like-interface.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,QAAQ,EAAC,6BAA0B;AAE3C;;;;;GAKG;AACH,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAS9B,MAAM,IAAI,MAAM,CAAC;IAEjB,KAAK,IAAI,KAAK,CAAC;IAEf,SAAS,CAAC,KAAK,EAAE,IAAI,GAAG,OAAO,CAAC;IAEhC,QAAQ,QAAG;CACZ;AAED,MAAM,WAAW,MAAM;IACrB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAQ9B,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IAElC,MAAM,CAAC,GAAG,WAAW,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAEzC,QAAQ,CAAC,GAAG,aAAa,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAE7C,MAAM,CAAC,cAAc,EAAE,MAAM,GAAG,KAAK,EAAE,GAAG,MAAM,CAAC;CAClD;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,KAAK,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IAInB,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAC/B,OAAO,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;CAC/B;AAED;;;GAGG;AACH,MAAM,WAAW,KAAK;IACpB,MAAM,EAAE,MAAM,CAAC;IAIf,IAAI,EAAE,GAAG,CAAC;IAEV,OAAO,EAAE,MAAM,CAAC;IAEhB,MAAM,IAAI,MAAM,CAAC;IAEjB,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe,CAAC;CAK/C"}
@@ -0,0 +1,4 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ export {};
@@ -14,28 +14,30 @@ export declare function makeColumnarTable(table: Table): ColumnarTable;
14
14
  export declare function makeArrayRowTable(table: Table): ArrayRowTable;
15
15
  /** Convert any table into object row format */
16
16
  export declare function makeObjectRowTable(table: Table): ObjectRowTable;
17
- /**
18
17
  /**
19
18
  *
20
19
  * @note - should be part of schema module
20
+ *
21
21
  export function convertColumnarToRowFormatTable(columnarTable: ColumnarTable): ObjectRowTable {
22
- const tableKeys = ;
22
+ const tableKeys = Object.keys(columnarTable);
23
23
  const tableRowsCount = columnarTable[tableKeys[0]].length;
24
24
 
25
- const objectRows: ObjectRowTable['data'] = [];
25
+ const rowFormatTable: {}[] = [];
26
26
 
27
27
  for (let index = 0; index < tableRowsCount; index++) {
28
- const objectRow = {};
29
- for (const fieldName of Object.keys(columnarTable.data)) {
30
- objectRow[fieldName] = columnarTable[fieldName][index];
28
+ const tableItem = {};
29
+ for (let keyIndex = 0; keyIndex < tableKeys.length; keyIndex++) {
30
+ const fieldName = tableKeys[keyIndex];
31
+ tableItem[fieldName] = columnarTable[fieldName][index];
31
32
  }
32
- objectRows.push(objectRow);
33
+ rowFormatTable.push(tableItem);
33
34
  }
34
35
 
35
36
  return {
36
37
  shape: 'object-row-table',
37
- data: objectRows
38
+ schema: columnarTable.schema,
39
+ data: rowFormatTable
38
40
  };
39
41
  }
40
- */
42
+ */
41
43
  //# sourceMappingURL=convert-table.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"convert-table.d.ts","sourceRoot":"","sources":["../../../../src/lib/table/simple-table/convert-table.ts"],"names":[],"mappings":"AAUA,OAAO,EACL,KAAK,EACL,aAAa,EACb,cAAc,EACd,aAAa,EACb,UAAU,EACX,yCAAsC;AAIvC,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,kBAAkB,GAAG,cAAc,CAAC;AACtF,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,iBAAiB,GAAG,aAAa,CAAC;AACpF,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,gBAAgB,GAAG,aAAa,CAAC;AACnF,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,GAAG,UAAU,CAAC;AA0B7E;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAMlD;AAED,oDAAoD;AACpD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,aAAa,CAyB7D;AAED,8CAA8C;AAC9C,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,aAAa,CAc7D;AAED,+CAA+C;AAC/C,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,cAAc,CAc/D;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG"}
1
+ {"version":3,"file":"convert-table.d.ts","sourceRoot":"","sources":["../../../../src/lib/table/simple-table/convert-table.ts"],"names":[],"mappings":"AAUA,OAAO,EACL,KAAK,EACL,aAAa,EACb,cAAc,EACd,aAAa,EACb,UAAU,EACX,yCAAsC;AAIvC,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,kBAAkB,GAAG,cAAc,CAAC;AACtF,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,iBAAiB,GAAG,aAAa,CAAC;AACpF,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,gBAAgB,GAAG,aAAa,CAAC;AACnF,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,GAAG,UAAU,CAAC;AA0B7E;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAMlD;AAED,oDAAoD;AACpD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,aAAa,CAyB7D;AAED,8CAA8C;AAC9C,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,aAAa,CAc7D;AAED,+CAA+C;AAC/C,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,cAAc,CAc/D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;EAyBE"}
@@ -90,27 +90,29 @@ export function makeObjectRowTable(table) {
90
90
  data
91
91
  };
92
92
  }
93
- /**
94
93
  /**
95
94
  *
96
95
  * @note - should be part of schema module
96
+ *
97
97
  export function convertColumnarToRowFormatTable(columnarTable: ColumnarTable): ObjectRowTable {
98
- const tableKeys = ;
98
+ const tableKeys = Object.keys(columnarTable);
99
99
  const tableRowsCount = columnarTable[tableKeys[0]].length;
100
100
 
101
- const objectRows: ObjectRowTable['data'] = [];
101
+ const rowFormatTable: {}[] = [];
102
102
 
103
103
  for (let index = 0; index < tableRowsCount; index++) {
104
- const objectRow = {};
105
- for (const fieldName of Object.keys(columnarTable.data)) {
106
- objectRow[fieldName] = columnarTable[fieldName][index];
104
+ const tableItem = {};
105
+ for (let keyIndex = 0; keyIndex < tableKeys.length; keyIndex++) {
106
+ const fieldName = tableKeys[keyIndex];
107
+ tableItem[fieldName] = columnarTable[fieldName][index];
107
108
  }
108
- objectRows.push(objectRow);
109
+ rowFormatTable.push(tableItem);
109
110
  }
110
111
 
111
112
  return {
112
113
  shape: 'object-row-table',
113
- data: objectRows
114
+ schema: columnarTable.schema,
115
+ data: rowFormatTable
114
116
  };
115
117
  }
116
- */
118
+ */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loaders.gl/schema",
3
- "version": "4.3.0-alpha.8",
3
+ "version": "4.3.0-beta.1",
4
4
  "description": "Table format APIs for JSON, CSV, etc...",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -46,5 +46,5 @@
46
46
  "peerDependencies": {
47
47
  "@loaders.gl/core": "^4.0.0"
48
48
  },
49
- "gitHead": "c458e0c3a09543cd7c4a293d3c3f08c12acf78c0"
49
+ "gitHead": "992d24e7d4e3015a91fa1cbfe87ee7dc1b333322"
50
50
  }
package/src/index.ts CHANGED
@@ -51,6 +51,7 @@ export {
51
51
  getTableLength,
52
52
  getTableNumCols,
53
53
  getTableCell,
54
+ getTableCellAt,
54
55
  getTableRowShape,
55
56
  getTableColumnIndex,
56
57
  getTableColumnName,
@@ -0,0 +1,84 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
5
+ import {DataType} from './arrow-like-type';
6
+
7
+ /**
8
+ * ArrowJS `Field` API-compatible class for row-based tables
9
+ * https://loaders.gl/arrowjs/docs/api-reference/field
10
+ * A field holds name, nullable, and metadata information about a table "column"
11
+ * A Schema is essentially a list of fields
12
+ */
13
+ export interface Field {
14
+ name: string;
15
+ type: DataType;
16
+ nullable: boolean;
17
+ metadata: Map<string, string>;
18
+
19
+ // constructor(
20
+ // name: string,
21
+ // type: DataType,
22
+ // nullable?,
23
+ // metadata?
24
+ // );
25
+
26
+ typeId(): number;
27
+
28
+ clone(): Field;
29
+
30
+ compareTo(other: this): boolean;
31
+
32
+ toString();
33
+ }
34
+
35
+ export interface Schema {
36
+ fields: Field[];
37
+ metadata: Map<string, string>;
38
+
39
+ // constructor(
40
+ // fields: Field[] ,
41
+ // metadata: Map<string, string>
42
+ // )
43
+
44
+ // TODO - arrow only seems to compare fields, not metadata
45
+ compareTo(other: Schema): boolean;
46
+
47
+ select(...columnNames: string[]): Schema;
48
+
49
+ selectAt(...columnIndices: number[]): Schema;
50
+
51
+ assign(schemaOrFields: Schema | Field[]): Schema;
52
+ }
53
+
54
+ export interface ArrowLikeVector {
55
+ table: Table;
56
+ columnName: string;
57
+
58
+ // constructor(table: Table, columnName: string);
59
+
60
+ get(rowIndex: number): unknown;
61
+ toArray(): ArrayLike<unknown>;
62
+ }
63
+
64
+ /**
65
+ * Class that provides an API similar to Apache Arrow Table class
66
+ * Forwards methods directly if the underlying table is Arrow, otherwise calls accessor functions
67
+ */
68
+ export interface Table {
69
+ schema: Schema;
70
+
71
+ // constructor(table: Table);
72
+
73
+ data: any;
74
+
75
+ numCols: number;
76
+
77
+ length(): number;
78
+
79
+ getChild(columnName: string): ArrowLikeVector;
80
+
81
+ // getChildAt(columnIndex: number): ArrowLikeVector {
82
+ // return
83
+ // }
84
+ }
@@ -121,27 +121,29 @@ export function makeObjectRowTable(table: Table): ObjectRowTable {
121
121
  };
122
122
  }
123
123
 
124
- /**
125
124
  /**
126
125
  *
127
126
  * @note - should be part of schema module
127
+ *
128
128
  export function convertColumnarToRowFormatTable(columnarTable: ColumnarTable): ObjectRowTable {
129
- const tableKeys = ;
129
+ const tableKeys = Object.keys(columnarTable);
130
130
  const tableRowsCount = columnarTable[tableKeys[0]].length;
131
131
 
132
- const objectRows: ObjectRowTable['data'] = [];
132
+ const rowFormatTable: {}[] = [];
133
133
 
134
134
  for (let index = 0; index < tableRowsCount; index++) {
135
- const objectRow = {};
136
- for (const fieldName of Object.keys(columnarTable.data)) {
137
- objectRow[fieldName] = columnarTable[fieldName][index];
135
+ const tableItem = {};
136
+ for (let keyIndex = 0; keyIndex < tableKeys.length; keyIndex++) {
137
+ const fieldName = tableKeys[keyIndex];
138
+ tableItem[fieldName] = columnarTable[fieldName][index];
138
139
  }
139
- objectRows.push(objectRow);
140
+ rowFormatTable.push(tableItem);
140
141
  }
141
142
 
142
143
  return {
143
144
  shape: 'object-row-table',
144
- data: objectRows
145
+ schema: columnarTable.schema,
146
+ data: rowFormatTable
145
147
  };
146
148
  }
147
- */
149
+ */