@loaders.gl/ply 4.4.0-alpha.1 → 4.4.0-alpha.2
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.min.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/ply-loader.js +1 -1
- package/dist/ply-worker.js +1 -1
- package/package.json +6 -6
package/dist/dist.min.js
CHANGED
|
@@ -16,6 +16,6 @@ return true;`)}function Wu(r){return typeof r!="bigint"?pe(r):`${pe(r)}n`}functi
|
|
|
16
16
|
]`}concat(...t){let e=this.schema,i=this.data.concat(t.flatMap(({data:n})=>n));return new et(e,i.map(n=>new Y(e,n)))}slice(t,e){let i=this.schema;[t,e]=Ni({length:this.numRows},t,e);let n=ts(this.data,this._offsets,t,e);return new et(i,n.map(s=>new Y(i,s)))}getChild(t){return this.getChildAt(this.schema.fields.findIndex(e=>e.name===t))}getChildAt(t){if(t>-1&&t<this.schema.fields.length){let e=this.data.map(i=>i.children[t]);if(e.length===0){let{type:i}=this.schema.fields[t],n=D({type:i,length:0,nullCount:0});e.push(n._changeLengthAndBackfillNullBitmap(this.numRows))}return new F(e)}return null}setChild(t,e){var i;return this.setChildAt((i=this.schema.fields)===null||i===void 0?void 0:i.findIndex(n=>n.name===t),e)}setChildAt(t,e){let i=this.schema,n=[...this.batches];if(t>-1&&t<this.numCols){e||(e=new F([D({type:new ft,length:this.numRows})]));let s=i.fields.slice(),o=s[t].clone({type:e.type}),a=this.schema.fields.map((c,l)=>this.getChildAt(l));[s[t],a[t]]=[o,e],[i,n]=Ds(i,a)}return new et(i,n)}select(t){let e=this.schema.fields.reduce((i,n,s)=>i.set(n.name,s),new Map);return this.selectAt(t.map(i=>e.get(i)).filter(i=>i>-1))}selectAt(t){let e=this.schema.selectAt(t),i=this.batches.map(n=>n.selectAt(t));return new et(e,i)}assign(t){let e=this.schema.fields,[i,n]=t.schema.fields.reduce((a,c,l)=>{let[d,f]=a,k=e.findIndex(R=>R.name===c.name);return~k?f[k]=l:d.push(l),a},[[],[]]),s=this.schema.assign(t.schema),o=[...e.map((a,c)=>[c,n[c]]).map(([a,c])=>c===void 0?this.getChildAt(a):t.getChildAt(c)),...i.map(a=>t.getChildAt(a))].filter(Boolean);return new et(...Ds(s,o))}};xc=Symbol.toStringTag;et[xc]=(r=>(r.schema=null,r.batches=[],r._offsets=new Uint32Array([0]),r._nullCount=-1,r[Symbol.isConcatSpreadable]=!0,r.isValid=ai(Ri),r.get=ai(st.getVisitFn(u.Struct)),r.set=es(mt.getVisitFn(u.Struct)),r.indexOf=rs(vr.getVisitFn(u.Struct)),"Table"))(et.prototype);var Ac,Y=class{constructor(...t){switch(t.length){case 2:{if([this.schema]=t,!(this.schema instanceof U))throw new TypeError("RecordBatch constructor expects a [Schema, Data] pair.");if([,this.data=D({nullCount:0,type:new j(this.schema.fields),children:this.schema.fields.map(e=>D({type:e.type,nullCount:0}))})]=t,!(this.data instanceof N))throw new TypeError("RecordBatch constructor expects a [Schema, Data] pair.");[this.schema,this.data]=Bc(this.schema,this.data.children);break}case 1:{let[e]=t,{fields:i,children:n,length:s}=Object.keys(e).reduce((c,l,d)=>(c.children[d]=e[l],c.length=Math.max(c.length,e[l].length),c.fields[d]=T.new({name:l,type:e[l].type,nullable:!0}),c),{length:0,fields:new Array,children:new Array}),o=new U(i),a=D({type:new j(i),length:s,children:n,nullCount:0});[this.schema,this.data]=Bc(o,a.children,s);break}default:throw new TypeError("RecordBatch constructor expects an Object mapping names to child Data, or a [Schema, Data] pair.")}}get dictionaries(){return this._dictionaries||(this._dictionaries=Dc(this.schema.fields,this.data.children))}get numCols(){return this.schema.fields.length}get numRows(){return this.data.length}get nullCount(){return this.data.nullCount}isValid(t){return this.data.getValid(t)}get(t){return st.visit(this.data,t)}at(t){return this.get(yr(t,this.numRows))}set(t,e){return mt.visit(this.data,t,e)}indexOf(t,e){return vr.visit(this.data,t,e)}[Symbol.iterator](){return ci.visit(new F([this.data]))}toArray(){return[...this]}concat(...t){return new et(this.schema,[this,...t])}slice(t,e){let[i]=new F([this.data]).slice(t,e).data;return new Y(this.schema,i)}getChild(t){var e;return this.getChildAt((e=this.schema.fields)===null||e===void 0?void 0:e.findIndex(i=>i.name===t))}getChildAt(t){return t>-1&&t<this.schema.fields.length?new F([this.data.children[t]]):null}setChild(t,e){var i;return this.setChildAt((i=this.schema.fields)===null||i===void 0?void 0:i.findIndex(n=>n.name===t),e)}setChildAt(t,e){let i=this.schema,n=this.data;if(t>-1&&t<this.numCols){e||(e=new F([D({type:new ft,length:this.numRows})]));let s=i.fields.slice(),o=n.children.slice(),a=s[t].clone({type:e.type});[s[t],o[t]]=[a,e.data[0]],i=new U(s,new Map(this.schema.metadata)),n=D({type:new j(s),children:o})}return new Y(i,n)}select(t){let e=this.schema.select(t),i=new j(e.fields),n=[];for(let s of t){let o=this.schema.fields.findIndex(a=>a.name===s);~o&&(n[o]=this.data.children[o])}return new Y(e,D({type:i,length:this.numRows,children:n}))}selectAt(t){let e=this.schema.selectAt(t),i=t.map(s=>this.data.children[s]).filter(Boolean),n=D({type:new j(e.fields),length:this.numRows,children:i});return new Y(e,n)}};Ac=Symbol.toStringTag;Y[Ac]=(r=>(r._nullCount=-1,r[Symbol.isConcatSpreadable]=!0,"RecordBatch"))(Y.prototype);function Bc(r,t,e=t.reduce((i,n)=>Math.max(i,n.length),0)){var i;let n=[...r.fields],s=[...t],o=(e+63&-64)>>3;for(let[a,c]of r.fields.entries()){let l=t[a];(!l||l.length!==e)&&(n[a]=c.clone({nullable:!0}),s[a]=(i=l?._changeLengthAndBackfillNullBitmap(e))!==null&&i!==void 0?i:D({type:c.type,length:e,nullCount:e,nullBitmap:new Uint8Array(o)}))}return[r.assign(n),D({type:new j(n),length:e,children:s})]}function Dc(r,t,e=new Map){var i,n;if(((i=r?.length)!==null&&i!==void 0?i:0)>0&&r?.length===t?.length)for(let s=-1,o=r.length;++s<o;){let{type:a}=r[s],c=t[s];for(let l of[c,...((n=c?.dictionary)===null||n===void 0?void 0:n.data)||[]])Dc(a.children,l?.children,e);if(h.isDictionary(a)){let{id:l}=a;if(!e.has(l))c?.dictionary&&e.set(l,c.dictionary);else if(e.get(l)!==c.dictionary)throw new Error("Cannot create Schema containing two different dictionaries with the same Id")}}return e}var Fr=class extends Y{constructor(t){let e=t.fields.map(n=>D({type:n.type})),i=D({type:new j(t.fields),nullCount:0,children:e});super(t,i)}};var rt=class{constructor(){this.bb=null,this.bb_pos=0}__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsMessage(t,e){return(e||new rt).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsMessage(t,e){return t.setPosition(t.position()+4),(e||new rt).__init(t.readInt32(t.position())+t.position(),t)}version(){let t=this.bb.__offset(this.bb_pos,4);return t?this.bb.readInt16(this.bb_pos+t):z.V1}headerType(){let t=this.bb.__offset(this.bb_pos,6);return t?this.bb.readUint8(this.bb_pos+t):E.NONE}header(t){let e=this.bb.__offset(this.bb_pos,8);return e?this.bb.__union(t,this.bb_pos+e):null}bodyLength(){let t=this.bb.__offset(this.bb_pos,10);return t?this.bb.readInt64(this.bb_pos+t):BigInt("0")}customMetadata(t,e){let i=this.bb.__offset(this.bb_pos,12);return i?(e||new J).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+t*4),this.bb):null}customMetadataLength(){let t=this.bb.__offset(this.bb_pos,12);return t?this.bb.__vector_len(this.bb_pos+t):0}static startMessage(t){t.startObject(5)}static addVersion(t,e){t.addFieldInt16(0,e,z.V1)}static addHeaderType(t,e){t.addFieldInt8(1,e,E.NONE)}static addHeader(t,e){t.addFieldOffset(2,e,0)}static addBodyLength(t,e){t.addFieldInt64(3,e,BigInt("0"))}static addCustomMetadata(t,e){t.addFieldOffset(4,e,0)}static createCustomMetadataVector(t,e){t.startVector(4,e.length,4);for(let i=e.length-1;i>=0;i--)t.addOffset(e[i]);return t.endVector()}static startCustomMetadataVector(t,e){t.startVector(4,e,4)}static endMessage(t){return t.endObject()}static finishMessageBuffer(t,e){t.finish(e)}static finishSizePrefixedMessageBuffer(t,e){t.finish(e,void 0,!0)}static createMessage(t,e,i,n,s,o){return rt.startMessage(t),rt.addVersion(t,e),rt.addHeaderType(t,i),rt.addHeader(t,n),rt.addBodyLength(t,s),rt.addCustomMetadata(t,o),rt.endMessage(t)}};var Oo=class extends g{visit(t,e){return t==null||e==null?void 0:super.visit(t,e)}visitNull(t,e){return Te.startNull(e),Te.endNull(e)}visitInt(t,e){return lt.startInt(e),lt.addBitWidth(e,t.bitWidth),lt.addIsSigned(e,t.isSigned),lt.endInt(e)}visitFloat(t,e){return Lt.startFloatingPoint(e),Lt.addPrecision(e,t.precision),Lt.endFloatingPoint(e)}visitBinary(t,e){return Se.startBinary(e),Se.endBinary(e)}visitLargeBinary(t,e){return Be.startLargeBinary(e),Be.endLargeBinary(e)}visitBool(t,e){return xe.startBool(e),xe.endBool(e)}visitUtf8(t,e){return Fe.startUtf8(e),Fe.endUtf8(e)}visitLargeUtf8(t,e){return Ae.startLargeUtf8(e),Ae.endLargeUtf8(e)}visitDecimal(t,e){return ut.startDecimal(e),ut.addScale(e,t.scale),ut.addPrecision(e,t.precision),ut.addBitWidth(e,t.bitWidth),ut.endDecimal(e)}visitDate(t,e){return Tt.startDate(e),Tt.addUnit(e,t.unit),Tt.endDate(e)}visitTime(t,e){return bt.startTime(e),bt.addUnit(e,t.unit),bt.addBitWidth(e,t.bitWidth),bt.endTime(e)}visitTimestamp(t,e){let i=t.timezone&&e.createString(t.timezone)||void 0;return _t.startTimestamp(e),_t.addUnit(e,t.unit),i!==void 0&&_t.addTimezone(e,i),_t.endTimestamp(e)}visitInterval(t,e){return Nt.startInterval(e),Nt.addUnit(e,t.unit),Nt.endInterval(e)}visitDuration(t,e){return Ot.startDuration(e),Ot.addUnit(e,t.unit),Ot.endDuration(e)}visitList(t,e){return De.startList(e),De.endList(e)}visitStruct(t,e){return Oe.startStruct_(e),Oe.endStruct_(e)}visitUnion(t,e){dt.startTypeIdsVector(e,t.typeIds.length);let i=dt.createTypeIdsVector(e,t.typeIds);return dt.startUnion(e),dt.addMode(e,t.mode),dt.addTypeIds(e,i),dt.endUnion(e)}visitDictionary(t,e){let i=this.visit(t.indices,e);return Jt.startDictionaryEncoding(e),Jt.addId(e,BigInt(t.id)),Jt.addIsOrdered(e,t.isOrdered),i!==void 0&&Jt.addIndexType(e,i),Jt.endDictionaryEncoding(e)}visitFixedSizeBinary(t,e){return Ft.startFixedSizeBinary(e),Ft.addByteWidth(e,t.byteWidth),Ft.endFixedSizeBinary(e)}visitFixedSizeList(t,e){return Mt.startFixedSizeList(e),Mt.addListSize(e,t.listSize),Mt.endFixedSizeList(e)}visitMap(t,e){return Ut.startMap(e),Ut.addKeysSorted(e,t.keysSorted),Ut.endMap(e)}},Ts=new Oo;function Mc(r,t=new Map){return new U(rd(r,t),Os(r.metadata),t)}function Fo(r){return new yt(r.count,Nc(r.columns),Uc(r.columns))}function Lc(r){return new Yt(Fo(r.data),r.id,r.isDelta)}function rd(r,t){return(r.fields||[]).filter(Boolean).map(e=>T.fromJSON(e,t))}function Tc(r,t){return(r.children||[]).filter(Boolean).map(e=>T.fromJSON(e,t))}function Nc(r){return(r||[]).reduce((t,e)=>[...t,new ae(e.count,id(e.VALIDITY)),...Nc(e.children)],[])}function Uc(r,t=[]){for(let e=-1,i=(r||[]).length;++e<i;){let n=r[e];n.VALIDITY&&t.push(new Wt(t.length,n.VALIDITY.length)),n.TYPE_ID&&t.push(new Wt(t.length,n.TYPE_ID.length)),n.OFFSET&&t.push(new Wt(t.length,n.OFFSET.length)),n.DATA&&t.push(new Wt(t.length,n.DATA.length)),t=Uc(n.children,t)}return t}function id(r){return(r||[]).reduce((t,e)=>t+ +(e===0),0)}function Ec(r,t){let e,i,n,s,o,a;return!t||!(s=r.dictionary)?(o=Fc(r,Tc(r,t)),n=new T(r.name,o,r.nullable,Os(r.metadata))):t.has(e=s.id)?(i=(i=s.indexType)?Oc(i):new Gt,a=new kt(t.get(e),i,e,s.isOrdered),n=new T(r.name,a,r.nullable,Os(r.metadata))):(i=(i=s.indexType)?Oc(i):new Gt,t.set(e,o=Fc(r,Tc(r,t))),a=new kt(o,i,e,s.isOrdered),n=new T(r.name,a,r.nullable,Os(r.metadata))),n||null}function Os(r=[]){return new Map(r.map(({key:t,value:e})=>[t,e]))}function Oc(r){return new tt(r.isSigned,r.bitWidth)}function Fc(r,t){let e=r.type.name;switch(e){case"NONE":return new ft;case"null":return new ft;case"binary":return new ee;case"largebinary":return new Me;case"utf8":return new re;case"largeutf8":return new Le;case"bool":return new ie;case"list":return new Vt((t||[])[0]);case"struct":return new j(t||[]);case"struct_":return new j(t||[])}switch(e){case"int":{let i=r.type;return new tt(i.isSigned,i.bitWidth)}case"floatingpoint":{let i=r.type;return new Rt(W[i.precision])}case"decimal":{let i=r.type;return new ne(i.scale,i.precision,i.bitWidth)}case"date":{let i=r.type;return new Zt(K[i.unit])}case"time":{let i=r.type;return new xt(p[i.unit],i.bitWidth)}case"timestamp":{let i=r.type;return new Bt(p[i.unit],i.timezone)}case"interval":{let i=r.type;return new Kt(Q[i.unit])}case"duration":{let i=r.type;return new Ne(p[i.unit])}case"union":{let i=r.type,[n,...s]=(i.mode+"").toLowerCase(),o=n.toUpperCase()+s.join("");return new se($[o],i.typeIds||[],t||[])}case"fixedsizebinary":{let i=r.type;return new Ue(i.byteWidth)}case"fixedsizelist":{let i=r.type;return new wt(i.listSize,(t||[])[0])}case"map":{let i=r.type;return new Ct((t||[])[0],i.keysSorted)}}throw new Error(`Unrecognized type: "${e}"`)}var nd=ke,sd=St,at=class{static fromJSON(t,e){let i=new at(0,z.V5,e);return i._createHeader=od(t,e),i}static decode(t){t=new sd(S(t));let e=rt.getRootAsMessage(t),i=e.bodyLength(),n=e.version(),s=e.headerType(),o=new at(i,n,s);return o._createHeader=ad(e,s),o}static encode(t){let e=new nd,i=-1;return t.isSchema()?i=U.encode(e,t.header()):t.isRecordBatch()?i=yt.encode(e,t.header()):t.isDictionaryBatch()&&(i=Yt.encode(e,t.header())),rt.startMessage(e),rt.addVersion(e,z.V5),rt.addHeader(e,i),rt.addHeaderType(e,t.headerType),rt.addBodyLength(e,BigInt(t.bodyLength)),rt.finishMessageBuffer(e,rt.endMessage(e)),e.asUint8Array()}static from(t,e=0){if(t instanceof U)return new at(0,z.V5,E.Schema,t);if(t instanceof yt)return new at(e,z.V5,E.RecordBatch,t);if(t instanceof Yt)return new at(e,z.V5,E.DictionaryBatch,t);throw new Error(`Unrecognized Message header: ${t}`)}get type(){return this.headerType}get version(){return this._version}get headerType(){return this._headerType}get bodyLength(){return this._bodyLength}header(){return this._createHeader()}isSchema(){return this.headerType===E.Schema}isRecordBatch(){return this.headerType===E.RecordBatch}isDictionaryBatch(){return this.headerType===E.DictionaryBatch}constructor(t,e,i,n){this._version=e,this._headerType=i,this.body=new Uint8Array(0),n&&(this._createHeader=()=>n),this._bodyLength=V(t)}},yt=class{get nodes(){return this._nodes}get length(){return this._length}get buffers(){return this._buffers}constructor(t,e,i){this._nodes=e,this._buffers=i,this._length=V(t)}},Yt=class{get id(){return this._id}get data(){return this._data}get isDelta(){return this._isDelta}get length(){return this.data.length}get nodes(){return this.data.nodes}get buffers(){return this.data.buffers}constructor(t,e,i=!1){this._data=t,this._isDelta=i,this._id=V(e)}},Wt=class{constructor(t,e){this.offset=V(t),this.length=V(e)}},ae=class{constructor(t,e){this.length=V(t),this.nullCount=V(e)}};function od(r,t){return()=>{switch(t){case E.Schema:return U.fromJSON(r);case E.RecordBatch:return yt.fromJSON(r);case E.DictionaryBatch:return Yt.fromJSON(r)}throw new Error(`Unrecognized Message type: { name: ${E[t]}, type: ${t} }`)}}function ad(r,t){return()=>{switch(t){case E.Schema:return U.decode(r.header(new q),new Map,r.version());case E.RecordBatch:return yt.decode(r.header(new gt),r.version());case E.DictionaryBatch:return Yt.decode(r.header(new te),r.version())}throw new Error(`Unrecognized Message type: { name: ${E[t]}, type: ${t} }`)}}T.encode=bd;T.decode=yd;T.fromJSON=Ec;U.encode=gd;U.decode=cd;U.fromJSON=Mc;yt.encode=_d;yt.decode=ld;yt.fromJSON=Fo;Yt.encode=wd;Yt.decode=ud;Yt.fromJSON=Lc;ae.encode=vd;ae.decode=fd;Wt.encode=Id;Wt.decode=dd;function cd(r,t=new Map,e=z.V5){let i=md(r,t);return new U(i,Fs(r),t,e)}function ld(r,t=z.V5){if(r.compression()!==null)throw new Error("Record batch compression not implemented");return new yt(r.length(),hd(r),pd(r,t))}function ud(r,t=z.V5){return new Yt(yt.decode(r.data(),t),r.id(),r.isDelta())}function dd(r){return new Wt(r.offset(),r.length())}function fd(r){return new ae(r.length(),r.nullCount())}function hd(r){let t=[];for(let e,i=-1,n=-1,s=r.nodesLength();++i<s;)(e=r.nodes(i))&&(t[++n]=ae.decode(e));return t}function pd(r,t){let e=[];for(let i,n=-1,s=-1,o=r.buffersLength();++n<o;)(i=r.buffers(n))&&(t<z.V4&&(i.bb_pos+=8*(n+1)),e[++s]=Wt.decode(i));return e}function md(r,t){let e=[];for(let i,n=-1,s=-1,o=r.fieldsLength();++n<o;)(i=r.fields(n))&&(e[++s]=T.decode(i,t));return e}function Rc(r,t){let e=[];for(let i,n=-1,s=-1,o=r.childrenLength();++n<o;)(i=r.children(n))&&(e[++s]=T.decode(i,t));return e}function yd(r,t){let e,i,n,s,o,a;return!t||!(a=r.dictionary())?(n=Cc(r,Rc(r,t)),i=new T(r.name(),n,r.nullable(),Fs(r))):t.has(e=V(a.id()))?(s=(s=a.indexType())?Vc(s):new Gt,o=new kt(t.get(e),s,e,a.isOrdered()),i=new T(r.name(),o,r.nullable(),Fs(r))):(s=(s=a.indexType())?Vc(s):new Gt,t.set(e,n=Cc(r,Rc(r,t))),o=new kt(n,s,e,a.isOrdered()),i=new T(r.name(),o,r.nullable(),Fs(r))),i||null}function Fs(r){let t=new Map;if(r)for(let e,i,n=-1,s=Math.trunc(r.customMetadataLength());++n<s;)(e=r.customMetadata(n))&&(i=e.key())!=null&&t.set(i,e.value());return t}function Vc(r){return new tt(r.isSigned(),r.bitWidth())}function Cc(r,t){let e=r.typeType();switch(e){case H.NONE:return new ft;case H.Null:return new ft;case H.Binary:return new ee;case H.LargeBinary:return new Me;case H.Utf8:return new re;case H.LargeUtf8:return new Le;case H.Bool:return new ie;case H.List:return new Vt((t||[])[0]);case H.Struct_:return new j(t||[])}switch(e){case H.Int:{let i=r.type(new lt);return new tt(i.isSigned(),i.bitWidth())}case H.FloatingPoint:{let i=r.type(new Lt);return new Rt(i.precision())}case H.Decimal:{let i=r.type(new ut);return new ne(i.scale(),i.precision(),i.bitWidth())}case H.Date:{let i=r.type(new Tt);return new Zt(i.unit())}case H.Time:{let i=r.type(new bt);return new xt(i.unit(),i.bitWidth())}case H.Timestamp:{let i=r.type(new _t);return new Bt(i.unit(),i.timezone())}case H.Interval:{let i=r.type(new Nt);return new Kt(i.unit())}case H.Duration:{let i=r.type(new Ot);return new Ne(i.unit())}case H.Union:{let i=r.type(new dt);return new se(i.mode(),i.typeIdsArray()||[],t||[])}case H.FixedSizeBinary:{let i=r.type(new Ft);return new Ue(i.byteWidth())}case H.FixedSizeList:{let i=r.type(new Mt);return new wt(i.listSize(),(t||[])[0])}case H.Map:{let i=r.type(new Ut);return new Ct((t||[])[0],i.keysSorted())}}throw new Error(`Unrecognized type: "${H[e]}" (${e})`)}function gd(r,t){let e=t.fields.map(s=>T.encode(r,s));q.startFieldsVector(r,e.length);let i=q.createFieldsVector(r,e),n=t.metadata&&t.metadata.size>0?q.createCustomMetadataVector(r,[...t.metadata].map(([s,o])=>{let a=r.createString(`${s}`),c=r.createString(`${o}`);return J.startKeyValue(r),J.addKey(r,a),J.addValue(r,c),J.endKeyValue(r)})):-1;return q.startSchema(r),q.addFields(r,i),q.addEndianness(r,Sd?qe.Little:qe.Big),n!==-1&&q.addCustomMetadata(r,n),q.endSchema(r)}function bd(r,t){let e=-1,i=-1,n=-1,s=t.type,o=t.typeId;h.isDictionary(s)?(o=s.dictionary.typeId,n=Ts.visit(s,r),i=Ts.visit(s.dictionary,r)):i=Ts.visit(s,r);let a=(s.children||[]).map(d=>T.encode(r,d)),c=nt.createChildrenVector(r,a),l=t.metadata&&t.metadata.size>0?nt.createCustomMetadataVector(r,[...t.metadata].map(([d,f])=>{let k=r.createString(`${d}`),R=r.createString(`${f}`);return J.startKeyValue(r),J.addKey(r,k),J.addValue(r,R),J.endKeyValue(r)})):-1;return t.name&&(e=r.createString(t.name)),nt.startField(r),nt.addType(r,i),nt.addTypeType(r,o),nt.addChildren(r,c),nt.addNullable(r,!!t.nullable),e!==-1&&nt.addName(r,e),n!==-1&&nt.addDictionary(r,n),l!==-1&&nt.addCustomMetadata(r,l),nt.endField(r)}function _d(r,t){let e=t.nodes||[],i=t.buffers||[];gt.startNodesVector(r,e.length);for(let o of e.slice().reverse())ae.encode(r,o);let n=r.endVector();gt.startBuffersVector(r,i.length);for(let o of i.slice().reverse())Wt.encode(r,o);let s=r.endVector();return gt.startRecordBatch(r),gt.addLength(r,BigInt(t.length)),gt.addNodes(r,n),gt.addBuffers(r,s),gt.endRecordBatch(r)}function wd(r,t){let e=yt.encode(r,t.data);return te.startDictionaryBatch(r),te.addId(r,BigInt(t.id)),te.addIsDelta(r,t.isDelta),te.addData(r,e),te.endDictionaryBatch(r)}function vd(r,t){return zr.createFieldNode(r,BigInt(t.length),BigInt(t.nullCount))}function Id(r,t){return kr.createBuffer(r,BigInt(t.offset),BigInt(t.length))}var Sd=(()=>{let r=new ArrayBuffer(2);return new DataView(r).setInt16(0,256,!0),new Int16Array(r)[0]===256})();var Lo=r=>`Expected ${E[r]} Message in stream, but was null or length 0.`,No=r=>`Header pointer of flatbuffer-encoded ${E[r]} Message is null or length 0.`,kc=(r,t)=>`Expected to read ${r} metadata bytes, but only read ${t}.`,zc=(r,t)=>`Expected to read ${r} bytes for message body, but only read ${t}.`,gi=class{constructor(t){this.source=t instanceof Ve?t:new Ve(t)}[Symbol.iterator](){return this}next(){let t;return(t=this.readMetadataLength()).done?G:t.value===-1&&(t=this.readMetadataLength()).done?G:(t=this.readMetadata(t.value)).done?G:t}throw(t){return this.source.throw(t)}return(t){return this.source.return(t)}readMessage(t){let e;if((e=this.next()).done)return null;if(t!=null&&e.value.headerType!==t)throw new Error(Lo(t));return e.value}readMessageBody(t){if(t<=0)return new Uint8Array(0);let e=S(this.source.read(t));if(e.byteLength<t)throw new Error(zc(t,e.byteLength));return e.byteOffset%8===0&&e.byteOffset+e.byteLength<=e.buffer.byteLength?e:e.slice()}readSchema(t=!1){let e=E.Schema,i=this.readMessage(e),n=i?.header();if(t&&!n)throw new Error(No(e));return n}readMetadataLength(){let t=this.source.read(Ms),e=t&&new St(t),i=e?.readInt32(0)||0;return{done:i===0,value:i}}readMetadata(t){let e=this.source.read(t);if(!e)return G;if(e.byteLength<t)throw new Error(kc(t,e.byteLength));return{done:!1,value:at.decode(e)}}},dn=class{constructor(t,e){this.source=t instanceof Pt?t:In(t)?new ir(t,e):new Pt(t)}[Symbol.asyncIterator](){return this}next(){return m(this,void 0,void 0,function*(){let t;return(t=yield this.readMetadataLength()).done?G:t.value===-1&&(t=yield this.readMetadataLength()).done?G:(t=yield this.readMetadata(t.value)).done?G:t})}throw(t){return m(this,void 0,void 0,function*(){return yield this.source.throw(t)})}return(t){return m(this,void 0,void 0,function*(){return yield this.source.return(t)})}readMessage(t){return m(this,void 0,void 0,function*(){let e;if((e=yield this.next()).done)return null;if(t!=null&&e.value.headerType!==t)throw new Error(Lo(t));return e.value})}readMessageBody(t){return m(this,void 0,void 0,function*(){if(t<=0)return new Uint8Array(0);let e=S(yield this.source.read(t));if(e.byteLength<t)throw new Error(zc(t,e.byteLength));return e.byteOffset%8===0&&e.byteOffset+e.byteLength<=e.buffer.byteLength?e:e.slice()})}readSchema(){return m(this,arguments,void 0,function*(t=!1){let e=E.Schema,i=yield this.readMessage(e),n=i?.header();if(t&&!n)throw new Error(No(e));return n})}readMetadataLength(){return m(this,void 0,void 0,function*(){let t=yield this.source.read(Ms),e=t&&new St(t),i=e?.readInt32(0)||0;return{done:i===0,value:i}})}readMetadata(t){return m(this,void 0,void 0,function*(){let e=yield this.source.read(t);if(!e)return G;if(e.byteLength<t)throw new Error(kc(t,e.byteLength));return{done:!1,value:at.decode(e)}})}},fn=class extends gi{constructor(t){super(new Uint8Array(0)),this._schema=!1,this._body=[],this._batchIndex=0,this._dictionaryIndex=0,this._json=t instanceof Vi?t:new Vi(t)}next(){let{_json:t}=this;if(!this._schema)return this._schema=!0,{done:!1,value:at.fromJSON(t.schema,E.Schema)};if(this._dictionaryIndex<t.dictionaries.length){let e=t.dictionaries[this._dictionaryIndex++];return this._body=e.data.columns,{done:!1,value:at.fromJSON(e,E.DictionaryBatch)}}if(this._batchIndex<t.batches.length){let e=t.batches[this._batchIndex++];return this._body=e.columns,{done:!1,value:at.fromJSON(e,E.RecordBatch)}}return this._body=[],G}readMessageBody(t){return e(this._body);function e(i){return(i||[]).reduce((n,s)=>[...n,...s.VALIDITY&&[s.VALIDITY]||[],...s.TYPE_ID&&[s.TYPE_ID]||[],...s.OFFSET&&[s.OFFSET]||[],...s.DATA&&[s.DATA]||[],...e(s.children)],[])}}readMessage(t){let e;if((e=this.next()).done)return null;if(t!=null&&e.value.headerType!==t)throw new Error(Lo(t));return e.value}readSchema(){let t=E.Schema,e=this.readMessage(t),i=e?.header();if(!e||!i)throw new Error(No(t));return i}},Ms=4,Mo="ARROW1",bi=new Uint8Array(Mo.length);for(let r=0;r<Mo.length;r+=1)bi[r]=Mo.codePointAt(r);function Ls(r,t=0){for(let e=-1,i=bi.length;++e<i;)if(bi[e]!==r[t+e])return!1;return!0}var _i=bi.length,Uo=_i+Ms,Pc=_i*2+Ms;var Dt=class extends Sr{constructor(t){super(),this._impl=t}get closed(){return this._impl.closed}get schema(){return this._impl.schema}get autoDestroy(){return this._impl.autoDestroy}get dictionaries(){return this._impl.dictionaries}get numDictionaries(){return this._impl.numDictionaries}get numRecordBatches(){return this._impl.numRecordBatches}get footer(){return this._impl.isFile()?this._impl.footer:null}isSync(){return this._impl.isSync()}isAsync(){return this._impl.isAsync()}isFile(){return this._impl.isFile()}isStream(){return this._impl.isStream()}next(){return this._impl.next()}throw(t){return this._impl.throw(t)}return(t){return this._impl.return(t)}cancel(){return this._impl.cancel()}reset(t){return this._impl.reset(t),this._DOMStream=void 0,this._nodeStream=void 0,this}open(t){let e=this._impl.open(t);return le(e)?e.then(()=>this):this}readRecordBatch(t){return this._impl.isFile()?this._impl.readRecordBatch(t):null}[Symbol.iterator](){return this._impl[Symbol.iterator]()}[Symbol.asyncIterator](){return this._impl[Symbol.asyncIterator]()}toDOMStream(){return pt.toDOMStream(this.isSync()?{[Symbol.iterator]:()=>this}:{[Symbol.asyncIterator]:()=>this})}toNodeStream(){return pt.toNodeStream(this.isSync()?{[Symbol.iterator]:()=>this}:{[Symbol.asyncIterator]:()=>this},{objectMode:!0})}static throughNode(t){throw new Error('"throughNode" not available in this environment')}static throughDOM(t,e){throw new Error('"throughDOM" not available in this environment')}static from(t){return t instanceof Dt?t:wn(t)?Bd(t):In(t)?Td(t):le(t)?(()=>m(this,void 0,void 0,function*(){return yield Dt.from(yield t)}))():Sn(t)||Bi(t)||Bn(t)||qt(t)?Dd(new Pt(t)):Ad(new Ve(t))}static readAll(t){return t instanceof Dt?t.isSync()?jc(t):Wc(t):wn(t)||ArrayBuffer.isView(t)||ue(t)||vn(t)?jc(t):Wc(t)}},Ge=class extends Dt{constructor(t){super(t),this._impl=t}readAll(){return[...this]}[Symbol.iterator](){return this._impl[Symbol.iterator]()}[Symbol.asyncIterator](){return $t(this,arguments,function*(){yield M(yield*Vr(ce(this[Symbol.iterator]())))})}},Mr=class extends Dt{constructor(t){super(t),this._impl=t}readAll(){return m(this,void 0,void 0,function*(){var t,e,i,n;let s=new Array;try{for(var o=!0,a=ce(this),c;c=yield a.next(),t=c.done,!t;o=!0){n=c.value,o=!1;let l=n;s.push(l)}}catch(l){e={error:l}}finally{try{!o&&!t&&(i=a.return)&&(yield i.call(a))}finally{if(e)throw e.error}}return s})}[Symbol.iterator](){throw new Error("AsyncRecordBatchStreamReader is not Iterable")}[Symbol.asyncIterator](){return this._impl[Symbol.asyncIterator]()}},Lr=class extends Ge{constructor(t){super(t),this._impl=t}},Ns=class extends Mr{constructor(t){super(t),this._impl=t}},Us=class{get numDictionaries(){return this._dictionaryIndex}get numRecordBatches(){return this._recordBatchIndex}constructor(t=new Map){this.closed=!1,this.autoDestroy=!0,this._dictionaryIndex=0,this._recordBatchIndex=0,this.dictionaries=t}isSync(){return!1}isAsync(){return!1}isFile(){return!1}isStream(){return!1}reset(t){return this._dictionaryIndex=0,this._recordBatchIndex=0,this.schema=t,this.dictionaries=new Map,this}_loadRecordBatch(t,e){let i=this._loadVectors(t,e,this.schema.fields),n=D({type:new j(this.schema.fields),length:t.length,children:i});return new Y(this.schema,n)}_loadDictionaryBatch(t,e){let{id:i,isDelta:n}=t,{dictionaries:s,schema:o}=this,a=s.get(i),c=o.dictionaries.get(i),l=this._loadVectors(t.data,e,[c]);return(a&&n?a.concat(new F(l)):new F(l)).memoize()}_loadVectors(t,e,i){return new zi(e,t.nodes,t.buffers,this.dictionaries,this.schema.metadataVersion).visitMany(i)}},wi=class extends Us{constructor(t,e){super(e),this._reader=wn(t)?new fn(this._handle=t):new gi(this._handle=t)}isSync(){return!0}isStream(){return!0}[Symbol.iterator](){return this}cancel(){!this.closed&&(this.closed=!0)&&(this.reset()._reader.return(),this._reader=null,this.dictionaries=null)}open(t){return this.closed||(this.autoDestroy=Yc(this,t),this.schema||(this.schema=this._reader.readSchema())||this.cancel()),this}throw(t){return!this.closed&&this.autoDestroy&&(this.closed=!0)?this.reset()._reader.throw(t):G}return(t){return!this.closed&&this.autoDestroy&&(this.closed=!0)?this.reset()._reader.return(t):G}next(){if(this.closed)return G;let t,{_reader:e}=this;for(;t=this._readNextMessageAndValidate();)if(t.isSchema())this.reset(t.header());else if(t.isRecordBatch()){this._recordBatchIndex++;let i=t.header(),n=e.readMessageBody(t.bodyLength);return{done:!1,value:this._loadRecordBatch(i,n)}}else if(t.isDictionaryBatch()){this._dictionaryIndex++;let i=t.header(),n=e.readMessageBody(t.bodyLength),s=this._loadDictionaryBatch(i,n);this.dictionaries.set(i.id,s)}return this.schema&&this._recordBatchIndex===0?(this._recordBatchIndex++,{done:!1,value:new Fr(this.schema)}):this.return()}_readNextMessageAndValidate(t){return this._reader.readMessage(t)}},vi=class extends Us{constructor(t,e){super(e),this._reader=new dn(this._handle=t)}isAsync(){return!0}isStream(){return!0}[Symbol.asyncIterator](){return this}cancel(){return m(this,void 0,void 0,function*(){!this.closed&&(this.closed=!0)&&(yield this.reset()._reader.return(),this._reader=null,this.dictionaries=null)})}open(t){return m(this,void 0,void 0,function*(){return this.closed||(this.autoDestroy=Yc(this,t),this.schema||(this.schema=yield this._reader.readSchema())||(yield this.cancel())),this})}throw(t){return m(this,void 0,void 0,function*(){return!this.closed&&this.autoDestroy&&(this.closed=!0)?yield this.reset()._reader.throw(t):G})}return(t){return m(this,void 0,void 0,function*(){return!this.closed&&this.autoDestroy&&(this.closed=!0)?yield this.reset()._reader.return(t):G})}next(){return m(this,void 0,void 0,function*(){if(this.closed)return G;let t,{_reader:e}=this;for(;t=yield this._readNextMessageAndValidate();)if(t.isSchema())yield this.reset(t.header());else if(t.isRecordBatch()){this._recordBatchIndex++;let i=t.header(),n=yield e.readMessageBody(t.bodyLength);return{done:!1,value:this._loadRecordBatch(i,n)}}else if(t.isDictionaryBatch()){this._dictionaryIndex++;let i=t.header(),n=yield e.readMessageBody(t.bodyLength),s=this._loadDictionaryBatch(i,n);this.dictionaries.set(i.id,s)}return this.schema&&this._recordBatchIndex===0?(this._recordBatchIndex++,{done:!1,value:new Fr(this.schema)}):yield this.return()})}_readNextMessageAndValidate(t){return m(this,void 0,void 0,function*(){return yield this._reader.readMessage(t)})}},Es=class extends wi{get footer(){return this._footer}get numDictionaries(){return this._footer?this._footer.numDictionaries:0}get numRecordBatches(){return this._footer?this._footer.numRecordBatches:0}constructor(t,e){super(t instanceof Ci?t:new Ci(t),e)}isSync(){return!0}isFile(){return!0}open(t){if(!this.closed&&!this._footer){this.schema=(this._footer=this._readFooter()).schema;for(let e of this._footer.dictionaryBatches())e&&this._readDictionaryBatch(this._dictionaryIndex++)}return super.open(t)}readRecordBatch(t){var e;if(this.closed)return null;this._footer||this.open();let i=(e=this._footer)===null||e===void 0?void 0:e.getRecordBatch(t);if(i&&this._handle.seek(i.offset)){let n=this._reader.readMessage(E.RecordBatch);if(n?.isRecordBatch()){let s=n.header(),o=this._reader.readMessageBody(n.bodyLength);return this._loadRecordBatch(s,o)}}return null}_readDictionaryBatch(t){var e;let i=(e=this._footer)===null||e===void 0?void 0:e.getDictionaryBatch(t);if(i&&this._handle.seek(i.offset)){let n=this._reader.readMessage(E.DictionaryBatch);if(n?.isDictionaryBatch()){let s=n.header(),o=this._reader.readMessageBody(n.bodyLength),a=this._loadDictionaryBatch(s,o);this.dictionaries.set(s.id,a)}}}_readFooter(){let{_handle:t}=this,e=t.size-Uo,i=t.readInt32(e),n=t.readAt(e-i,i);return je.decode(n)}_readNextMessageAndValidate(t){var e;if(this._footer||this.open(),this._footer&&this._recordBatchIndex<this.numRecordBatches){let i=(e=this._footer)===null||e===void 0?void 0:e.getRecordBatch(this._recordBatchIndex);if(i&&this._handle.seek(i.offset))return this._reader.readMessage(t)}return null}},Eo=class extends vi{get footer(){return this._footer}get numDictionaries(){return this._footer?this._footer.numDictionaries:0}get numRecordBatches(){return this._footer?this._footer.numRecordBatches:0}constructor(t,...e){let i=typeof e[0]!="number"?e.shift():void 0,n=e[0]instanceof Map?e.shift():void 0;super(t instanceof ir?t:new ir(t,i),n)}isFile(){return!0}isAsync(){return!0}open(t){let e=Object.create(null,{open:{get:()=>super.open}});return m(this,void 0,void 0,function*(){if(!this.closed&&!this._footer){this.schema=(this._footer=yield this._readFooter()).schema;for(let i of this._footer.dictionaryBatches())i&&(yield this._readDictionaryBatch(this._dictionaryIndex++))}return yield e.open.call(this,t)})}readRecordBatch(t){return m(this,void 0,void 0,function*(){var e;if(this.closed)return null;this._footer||(yield this.open());let i=(e=this._footer)===null||e===void 0?void 0:e.getRecordBatch(t);if(i&&(yield this._handle.seek(i.offset))){let n=yield this._reader.readMessage(E.RecordBatch);if(n?.isRecordBatch()){let s=n.header(),o=yield this._reader.readMessageBody(n.bodyLength);return this._loadRecordBatch(s,o)}}return null})}_readDictionaryBatch(t){return m(this,void 0,void 0,function*(){var e;let i=(e=this._footer)===null||e===void 0?void 0:e.getDictionaryBatch(t);if(i&&(yield this._handle.seek(i.offset))){let n=yield this._reader.readMessage(E.DictionaryBatch);if(n?.isDictionaryBatch()){let s=n.header(),o=yield this._reader.readMessageBody(n.bodyLength),a=this._loadDictionaryBatch(s,o);this.dictionaries.set(s.id,a)}}})}_readFooter(){return m(this,void 0,void 0,function*(){let{_handle:t}=this;t._pending&&(yield t._pending);let e=t.size-Uo,i=yield t.readInt32(e),n=yield t.readAt(e-i,i);return je.decode(n)})}_readNextMessageAndValidate(t){return m(this,void 0,void 0,function*(){if(this._footer||(yield this.open()),this._footer&&this._recordBatchIndex<this.numRecordBatches){let e=this._footer.getRecordBatch(this._recordBatchIndex);if(e&&(yield this._handle.seek(e.offset)))return yield this._reader.readMessage(t)}return null})}},Ro=class extends wi{constructor(t,e){super(t,e)}_loadVectors(t,e,i){return new ss(e,t.nodes,t.buffers,this.dictionaries,this.schema.metadataVersion).visitMany(i)}};function Yc(r,t){return t&&typeof t.autoDestroy=="boolean"?t.autoDestroy:r.autoDestroy}function*jc(r){let t=Dt.from(r);try{if(!t.open({autoDestroy:!1}).closed)do yield t;while(!t.reset().open().closed)}finally{t.cancel()}}function Wc(r){return $t(this,arguments,function*(){let e=yield M(Dt.from(r));try{if(!(yield M(e.open({autoDestroy:!1}))).closed)do yield yield M(e);while(!(yield M(e.reset().open())).closed)}finally{yield M(e.cancel())}})}function Bd(r){return new Ge(new Ro(r))}function Ad(r){let t=r.peek(_i+7&-8);return t&&t.byteLength>=4?Ls(t)?new Lr(new Es(r.read())):new Ge(new wi(r)):new Ge(new wi(function*(){}()))}function Dd(r){return m(this,void 0,void 0,function*(){let t=yield r.peek(_i+7&-8);return t&&t.byteLength>=4?Ls(t)?new Lr(new Es(yield r.read())):new Mr(new vi(r)):new Mr(new vi(function(){return $t(this,arguments,function*(){})}()))})}function Td(r){return m(this,void 0,void 0,function*(){let{size:t}=yield r.stat(),e=new ir(r,t);return t>=Pc&&Ls(yield e.readAt(0,_i+7&-8))?new Ns(new Eo(e)):new Mr(new vi(e))})}var Z=class extends g{static assemble(...t){let e=n=>n.flatMap(s=>Array.isArray(s)?e(s):s instanceof Y?s.data.children:s.data),i=new Z;return i.visitMany(e(t)),i}constructor(){super(),this._byteLength=0,this._nodes=[],this._buffers=[],this._bufferRegions=[]}visit(t){if(t instanceof F)return this.visitMany(t.data),this;let{type:e}=t;if(!h.isDictionary(e)){let{length:i}=t;if(i>2147483647)throw new RangeError("Cannot write arrays larger than 2^31 - 1 in length");if(h.isUnion(e))this.nodes.push(new ae(i,0));else{let{nullCount:n}=t;h.isNull(e)||_e.call(this,n<=0?new Uint8Array(0):br(t.offset,i,t.nullBitmap)),this.nodes.push(new ae(i,n))}}return super.visit(t)}visitNull(t){return this}visitDictionary(t){return this.visit(t.clone(t.type.indices))}get nodes(){return this._nodes}get buffers(){return this._buffers}get byteLength(){return this._byteLength}get bufferRegions(){return this._bufferRegions}};function _e(r){let t=r.byteLength+7&-8;return this.buffers.push(r),this.bufferRegions.push(new Wt(this._byteLength,t)),this._byteLength+=t,this}function Od(r){var t;let{type:e,length:i,typeIds:n,valueOffsets:s}=r;if(_e.call(this,n),e.mode===$.Sparse)return Vo.call(this,r);if(e.mode===$.Dense){if(r.offset<=0)return _e.call(this,s),Vo.call(this,r);{let o=new Int32Array(i),a=Object.create(null),c=Object.create(null);for(let l,d,f=-1;++f<i;)(l=n[f])!==void 0&&((d=a[l])===void 0&&(d=a[l]=s[f]),o[f]=s[f]-d,c[l]=((t=c[l])!==null&&t!==void 0?t:0)+1);_e.call(this,o),this.visitMany(r.children.map((l,d)=>{let f=e.typeIds[d],k=a[f],R=c[f];return l.slice(k,Math.min(i,R))}))}}return this}function Fd(r){let t;return r.nullCount>=r.length?_e.call(this,new Uint8Array(0)):(t=r.values)instanceof Uint8Array?_e.call(this,br(r.offset,r.length,t)):_e.call(this,_r(r.values))}function Ze(r){return _e.call(this,r.values.subarray(0,r.length*r.stride))}function Rs(r){let{length:t,values:e,valueOffsets:i}=r,n=V(i[0]),s=V(i[t]),o=Math.min(s-n,e.byteLength-n);return _e.call(this,Dn(-n,t+1,i)),_e.call(this,e.subarray(n,n+o)),this}function Co(r){let{length:t,valueOffsets:e}=r;if(e){let{[0]:i,[t]:n}=e;return _e.call(this,Dn(-i,t+1,e)),this.visit(r.children[0].slice(i,n-i))}return this.visit(r.children[0])}function Vo(r){return this.visitMany(r.type.children.map((t,e)=>r.children[e]).filter(Boolean))[0]}Z.prototype.visitBool=Fd;Z.prototype.visitInt=Ze;Z.prototype.visitFloat=Ze;Z.prototype.visitUtf8=Rs;Z.prototype.visitLargeUtf8=Rs;Z.prototype.visitBinary=Rs;Z.prototype.visitLargeBinary=Rs;Z.prototype.visitFixedSizeBinary=Ze;Z.prototype.visitDate=Ze;Z.prototype.visitTimestamp=Ze;Z.prototype.visitTime=Ze;Z.prototype.visitDecimal=Ze;Z.prototype.visitList=Co;Z.prototype.visitStruct=Vo;Z.prototype.visitUnion=Od;Z.prototype.visitInterval=Ze;Z.prototype.visitDuration=Ze;Z.prototype.visitFixedSizeList=Co;Z.prototype.visitMap=Co;var Nr=class extends Sr{static throughNode(t){throw new Error('"throughNode" not available in this environment')}static throughDOM(t,e){throw new Error('"throughDOM" not available in this environment')}constructor(t){super(),this._position=0,this._started=!1,this._sink=new Re,this._schema=null,this._dictionaryBlocks=[],this._recordBatchBlocks=[],this._seenDictionaries=new Map,this._dictionaryDeltaOffsets=new Map,It(t)||(t={autoDestroy:!0,writeLegacyIpcFormat:!1}),this._autoDestroy=typeof t.autoDestroy=="boolean"?t.autoDestroy:!0,this._writeLegacyIpcFormat=typeof t.writeLegacyIpcFormat=="boolean"?t.writeLegacyIpcFormat:!1}toString(t=!1){return this._sink.toString(t)}toUint8Array(t=!1){return this._sink.toUint8Array(t)}writeAll(t){return le(t)?t.then(e=>this.writeAll(e)):qt(t)?zo(this,t):ko(this,t)}get closed(){return this._sink.closed}[Symbol.asyncIterator](){return this._sink[Symbol.asyncIterator]()}toDOMStream(t){return this._sink.toDOMStream(t)}toNodeStream(t){return this._sink.toNodeStream(t)}close(){return this.reset()._sink.close()}abort(t){return this.reset()._sink.abort(t)}finish(){return this._autoDestroy?this.close():this.reset(this._sink,this._schema),this}reset(t=this._sink,e=null){return t===this._sink||t instanceof Re?this._sink=t:(this._sink=new Re,t&&oa(t)?this.toDOMStream({type:"bytes"}).pipeTo(t):t&&aa(t)&&this.toNodeStream({objectMode:!1}).pipe(t)),this._started&&this._schema&&this._writeFooter(this._schema),this._started=!1,this._dictionaryBlocks=[],this._recordBatchBlocks=[],this._seenDictionaries=new Map,this._dictionaryDeltaOffsets=new Map,(!e||!Or(e,this._schema))&&(e==null?(this._position=0,this._schema=null):(this._started=!0,this._schema=e,this._writeSchema(e))),this}write(t){let e=null;if(this._sink){if(t==null)return this.finish()&&void 0;if(t instanceof et&&!(e=t.schema))return this.finish()&&void 0;if(t instanceof Y&&!(e=t.schema))return this.finish()&&void 0}else throw new Error("RecordBatchWriter is closed");if(e&&!Or(e,this._schema)){if(this._started&&this._autoDestroy)return this.close();this.reset(this._sink,e)}t instanceof Y?t instanceof Fr||this._writeRecordBatch(t):t instanceof et?this.writeAll(t.batches):ue(t)&&this.writeAll(t)}_writeMessage(t,e=8){let i=e-1,n=at.encode(t),s=n.byteLength,o=this._writeLegacyIpcFormat?4:8,a=s+o+i&~i,c=a-s-o;return t.headerType===E.RecordBatch?this._recordBatchBlocks.push(new be(a,t.bodyLength,this._position)):t.headerType===E.DictionaryBatch&&this._dictionaryBlocks.push(new be(a,t.bodyLength,this._position)),this._writeLegacyIpcFormat||this._write(Int32Array.of(-1)),this._write(Int32Array.of(a-o)),s>0&&this._write(n),this._writePadding(c)}_write(t){if(this._started){let e=S(t);e&&e.byteLength>0&&(this._sink.write(e),this._position+=e.byteLength)}return this}_writeSchema(t){return this._writeMessage(at.from(t))}_writeFooter(t){return this._writeLegacyIpcFormat?this._write(Int32Array.of(0)):this._write(Int32Array.of(-1,0))}_writeMagic(){return this._write(bi)}_writePadding(t){return t>0?this._write(new Uint8Array(t)):this}_writeRecordBatch(t){let{byteLength:e,nodes:i,bufferRegions:n,buffers:s}=Z.assemble(t),o=new yt(t.numRows,i,n),a=at.from(o,e);return this._writeDictionaries(t)._writeMessage(a)._writeBodyBuffers(s)}_writeDictionaryBatch(t,e,i=!1){let{byteLength:n,nodes:s,bufferRegions:o,buffers:a}=Z.assemble(new F([t])),c=new yt(t.length,s,o),l=new Yt(c,e,i),d=at.from(l,n);return this._writeMessage(d)._writeBodyBuffers(a)}_writeBodyBuffers(t){let e,i,n;for(let s=-1,o=t.length;++s<o;)(e=t[s])&&(i=e.byteLength)>0&&(this._write(e),(n=(i+7&-8)-i)>0&&this._writePadding(n));return this}_writeDictionaries(t){var e,i;for(let[n,s]of t.dictionaries){let o=(e=s?.data)!==null&&e!==void 0?e:[],a=this._seenDictionaries.get(n),c=(i=this._dictionaryDeltaOffsets.get(n))!==null&&i!==void 0?i:0;if(!a||a.data[0]!==o[0])for(let[l,d]of o.entries())this._writeDictionaryBatch(d,n,l>0);else if(c<o.length)for(let l of o.slice(c))this._writeDictionaryBatch(l,n,!0);this._seenDictionaries.set(n,s),this._dictionaryDeltaOffsets.set(n,o.length)}return this}},Ur=class extends Nr{static writeAll(t,e){let i=new Ur(e);return le(t)?t.then(n=>i.writeAll(n)):qt(t)?zo(i,t):ko(i,t)}},Er=class extends Nr{static writeAll(t){let e=new Er;return le(t)?t.then(i=>e.writeAll(i)):qt(t)?zo(e,t):ko(e,t)}constructor(){super(),this._autoDestroy=!0}_writeSchema(t){return this._writeMagic()._writePadding(2)}_writeDictionaryBatch(t,e,i=!1){if(!i&&this._seenDictionaries.has(e))throw new Error("The Arrow File format does not support replacement dictionaries. ");return super._writeDictionaryBatch(t,e,i)}_writeFooter(t){let e=je.encode(new je(t,z.V5,this._recordBatchBlocks,this._dictionaryBlocks));return super._writeFooter(t)._write(e)._write(Int32Array.of(e.byteLength))._writeMagic()}};function ko(r,t){let e=t;t instanceof et&&(e=t.batches,r.reset(void 0,t.schema));for(let i of e)r.write(i);return r.finish()}function zo(r,t){return m(this,void 0,void 0,function*(){var e,i,n,s,o,a,c;try{for(e=!0,i=ce(t);n=yield i.next(),s=n.done,!s;e=!0){c=n.value,e=!1;let l=c;r.write(l)}}catch(l){o={error:l}}finally{try{!e&&!s&&(a=i.return)&&(yield a.call(i))}finally{if(o)throw o.error}}return r.finish()})}function $c(r,t){if(qt(r))return Ld(r,t);if(ue(r))return Md(r,t);throw new Error("toDOMStream() must be called with an Iterable or AsyncIterable")}function Md(r,t){let e=null,i=t?.type==="bytes"||!1,n=t?.highWaterMark||Math.pow(2,24);return new ReadableStream(Object.assign(Object.assign({},t),{start(o){s(o,e||(e=r[Symbol.iterator]()))},pull(o){e?s(o,e):o.close()},cancel(){(e?.return&&e.return()||!0)&&(e=null)}}),Object.assign({highWaterMark:i?n:void 0},t));function s(o,a){let c,l=null,d=o.desiredSize||null;for(;!(l=a.next(i?d:null)).done;)if(ArrayBuffer.isView(l.value)&&(c=S(l.value))&&(d!=null&&i&&(d=d-c.byteLength+1),l.value=c),o.enqueue(l.value),d!=null&&--d<=0)return;o.close()}}function Ld(r,t){let e=null,i=t?.type==="bytes"||!1,n=t?.highWaterMark||Math.pow(2,24);return new ReadableStream(Object.assign(Object.assign({},t),{start(o){return m(this,void 0,void 0,function*(){yield s(o,e||(e=r[Symbol.asyncIterator]()))})},pull(o){return m(this,void 0,void 0,function*(){e?yield s(o,e):o.close()})},cancel(){return m(this,void 0,void 0,function*(){(e?.return&&(yield e.return())||!0)&&(e=null)})}}),Object.assign({highWaterMark:i?n:void 0},t));function s(o,a){return m(this,void 0,void 0,function*(){let c,l=null,d=o.desiredSize||null;for(;!(l=yield a.next(i?d:null)).done;)if(ArrayBuffer.isView(l.value)&&(c=S(l.value))&&(d!=null&&i&&(d=d-c.byteLength+1),l.value=c),o.enqueue(l.value),d!=null&&--d<=0)return;o.close()})}}function Gc(r){return new Po(r)}var Po=class{constructor(t){this._numChunks=0,this._finished=!1,this._bufferedSize=0;let{["readableStrategy"]:e,["writableStrategy"]:i,["queueingStrategy"]:n="count"}=t,s=na(t,["readableStrategy","writableStrategy","queueingStrategy"]);this._controller=null,this._builder=Br(s),this._getSize=n!=="bytes"?Hc:Jc;let{["highWaterMark"]:o=n==="bytes"?Math.pow(2,14):1e3}=Object.assign({},e),{["highWaterMark"]:a=n==="bytes"?Math.pow(2,14):1e3}=Object.assign({},i);this.readable=new ReadableStream({cancel:()=>{this._builder.clear()},pull:c=>{this._maybeFlush(this._builder,this._controller=c)},start:c=>{this._maybeFlush(this._builder,this._controller=c)}},{highWaterMark:o,size:n!=="bytes"?Hc:Jc}),this.writable=new WritableStream({abort:()=>{this._builder.clear()},write:()=>{this._maybeFlush(this._builder,this._controller)},close:()=>{this._maybeFlush(this._builder.finish(),this._controller)}},{highWaterMark:a,size:c=>this._writeValueAndReturnChunkSize(c)})}_writeValueAndReturnChunkSize(t){let e=this._bufferedSize;return this._bufferedSize=this._getSize(this._builder.append(t)),this._bufferedSize-e}_maybeFlush(t,e){e!=null&&(this._bufferedSize>=e.desiredSize&&++this._numChunks&&this._enqueue(e,t.toVector()),t.finished&&((t.length>0||this._numChunks===0)&&++this._numChunks&&this._enqueue(e,t.toVector()),!this._finished&&(this._finished=!0)&&this._enqueue(e,null)))}_enqueue(t,e){this._bufferedSize=0,this._controller=null,e==null?t.close():t.enqueue(e)}},Hc=r=>{var t;return(t=r?.length)!==null&&t!==void 0?t:0},Jc=r=>{var t;return(t=r?.byteLength)!==null&&t!==void 0?t:0};function Vs(r,t){let e=new Re,i=null,n=new ReadableStream({cancel(){return m(this,void 0,void 0,function*(){yield e.close()})},start(a){return m(this,void 0,void 0,function*(){yield o(a,i||(i=yield s()))})},pull(a){return m(this,void 0,void 0,function*(){i?yield o(a,i):a.close()})}});return{writable:new WritableStream(e,Object.assign({highWaterMark:Math.pow(2,14)},r)),readable:n};function s(){return m(this,void 0,void 0,function*(){return yield(yield Dt.from(e)).open(t)})}function o(a,c){return m(this,void 0,void 0,function*(){let l=a.desiredSize,d=null;for(;!(d=yield c.next()).done;)if(a.enqueue(d.value),l!=null&&--l<=0)return;a.close()})}}function Cs(r,t){let e=new this(r),i=new Pt(e),n=new ReadableStream({cancel(){return m(this,void 0,void 0,function*(){yield i.cancel()})},pull(o){return m(this,void 0,void 0,function*(){yield s(o)})},start(o){return m(this,void 0,void 0,function*(){yield s(o)})}},Object.assign({highWaterMark:Math.pow(2,14)},t));return{writable:new WritableStream(e,r),readable:n};function s(o){return m(this,void 0,void 0,function*(){let a=null,c=o.desiredSize;for(;a=yield i.read(c||null);)if(o.enqueue(a),c!=null&&(c-=a.byteLength)<=0)return;o.close()})}}var Pd=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},Qs),xo),yo),to),Hs),mo),Zs),{compareSchemas:Or,compareFields:Ic,compareTypes:Sc});pt.toDOMStream=$c;X.throughDOM=Gc;Dt.throughDOM=Vs;Lr.throughDOM=Vs;Ge.throughDOM=Vs;Nr.throughDOM=Cs;Er.throughDOM=Cs;Ur.throughDOM=Cs;function Zc(r){return new U(r.fields.map(t=>hn(t)),Kc(r.metadata))}function Kc(r){return r?new Map(Object.entries(r)):new Map}function hn(r){return new T(r.name,Wo(r.type),r.nullable,Kc(r.metadata))}function Wo(r){if(typeof r=="object")switch(r.type){case"decimal":return new ne(r.precision,r.scale,r.bitWidth);case"map":let t=r.children.map(n=>hn(n));return new Ct(t,r.keysSorted);case"list":let e=hn(r.children[0]);return new Vt(e);case"fixed-size-list":let i=hn(r.children[0]);return new wt(r.listSize,i);case"struct":return t=r.children.map(n=>hn(n)),new j(t);default:throw new Error("array type not supported")}switch(r){case"null":return new ft;case"binary":return new ee;case"bool":return new ie;case"int8":return new or;case"int16":return new ar;case"int32":return new Gt;case"int64":return new cr;case"uint8":return new lr;case"uint16":return new ur;case"uint32":return new dr;case"uint64":return new fr;case"float16":return new hr;case"float32":return new pr;case"float64":return new mr;case"utf8":return new re;case"date-day":return new Yr;case"date-millisecond":return new $r;case"time-second":return new Hr;case"time-millisecond":return new Jr;case"time-microsecond":return new Gr;case"time-nanosecond":return new Zr;case"timestamp-second":return new Kr;case"timestamp-millisecond":return new Xr;case"timestamp-microsecond":return new qr;case"timestamp-nanosecond":return new Qr;case"interval-daytime":return new ti;case"interval-yearmonth":return new ei;default:throw new Error("array type not supported")}}function Yo(r){let t=1/0,e=1/0,i=1/0,n=-1/0,s=-1/0,o=-1/0,a=r.POSITION?r.POSITION.value:[],c=a&&a.length;for(let l=0;l<c;l+=3){let d=a[l],f=a[l+1],k=a[l+2];t=d<t?d:t,e=f<e?f:e,i=k<i?k:i,n=d>n?d:n,s=f>s?f:s,o=k>o?k:o}return[[t,e,i],[n,s,o]]}function Xc(r,t){let e=jd(r,t),i=e.children[0].type,n={[Et.DATA]:r},s=new N(i,0,r.length,0,n);return new N(e,0,r.length/t,0,void 0,[s])}function jd(r,t){let{type:e}=ra(r),i=Wo(e);return new wt(t,new T("value",i))}function $o(r,t){switch(t){case"columnar-table":return Wd(r);case"arrow-table":return Yd(r);default:throw new Error(t)}}function Wd(r){let t={};for(let[e,i]of Object.entries(r.attributes))t[e]=i.value;return{shape:"columnar-table",schema:r.schema,data:t}}function Yd(r,t){let{schema:e}=r,i=Zc(e),n=[];for(let d in r.attributes){let f=r.attributes[d],{value:k,size:R=1}=f,it=Xc(k,R);n.push(it)}let s=new j(i.fields),o=n[0].length,a=new N(s,0,o,0,void 0,n),c=new Y(i,a),l=new et([c]);return{shape:"arrow-table",schema:e,data:l}}function Ho(r,t={}){return{fields:$d(r),metadata:t}}function qc(r,t,e){let i=zs(t.value),n=e||Qc(t);return{name:r,type:{type:"fixed-size-list",listSize:t.size,children:[{name:"value",type:i}]},nullable:!1,metadata:n}}function $d(r){let t=[];for(let e in r){let i=r[e];t.push(qc(e,i))}return t}function Qc(r){let t={};return"byteOffset"in r&&(t.byteOffset=r.byteOffset.toString(10)),"byteStride"in r&&(t.byteStride=r.byteStride.toString(10)),"normalized"in r&&(t.normalized=r.normalized.toString()),t}function tl(r,t){let e=Hd(r);return Ho(t,e)}function Hd(r){let t={};return t.ply_comments=JSON.stringify(r.comments),t.ply_elements=JSON.stringify(r.elements),r.format!==void 0&&(t.ply_format=r.format),r.version!==void 0&&(t.ply_version=r.version),r.headerLength!==void 0&&(t.ply_headerLength=r.headerLength.toString(10)),t}function pn(r,t,e){let i=Jd(t),n=Yo(i),s=t.indices.length||t.vertices.length/3,o=t.indices&&t.indices.length>0,a=o?4:0,c=o?"triangle-list":"point-list",l=tl(r,i),d={loader:"ply",loaderData:r,header:{vertexCount:s,boundingBox:n},schema:l,attributes:i,indices:{value:new Uint32Array(0),size:0},mode:a,topology:c};return t.indices.length>0&&(d.indices={value:new Uint32Array(t.indices),size:1}),d}function Jd(r){let t={};for(let e of Object.keys(r))switch(e){case"vertices":r.vertices.length>0&&(t.POSITION={value:new Float32Array(r.vertices),size:3});break;case"normals":r.normals.length>0&&(t.NORMAL={value:new Float32Array(r.normals),size:3});break;case"uvs":r.uvs.length>0&&(t.TEXCOORD_0={value:new Float32Array(r.uvs),size:2});break;case"colors":r.colors.length>0&&(t.COLOR_0={value:new Uint8Array(r.colors),size:3,normalized:!0});break;case"indices":break;default:r[e].length>0&&(t[e]={value:new Float32Array(r[e]),size:1});break}return t}function Ii(r,t={}){let e,i;if(r instanceof ArrayBuffer){let n=new TextDecoder().decode(r);e=el(n,t),i=e.format==="ascii"?rl(n,e):qd(r,e)}else e=el(r,t),i=rl(r,e);return pn(e,i)}function el(r,t){let e=/ply([\s\S]*)end_header\s/,i="",n=0,s=e.exec(r);s!==null&&(i=s[1],n=s[0].length);let o=i.split(`
|
|
17
17
|
`);return Gd(o,n,t)}function Gd(r,t,e){let i={comments:[],elements:[],headerLength:t},n,s,o=null;for(let a=0;a<r.length;a++){let c=r[a];if(c=c.trim(),c!=="")switch(s=c.split(/\s+/),n=s.shift(),c=s.join(" "),n){case"format":i.format=s[0],i.version=s[1];break;case"comment":i.comments.push(c);break;case"element":o&&i.elements.push(o),o={name:s[0],count:parseInt(s[1],10),properties:[]};break;case"property":if(o){let l=Zd(s);e?.propertyNameMapping&&l.name in e?.propertyNameMapping&&(l.name=e?.propertyNameMapping[l.name]),o.properties.push(l)}break;default:console.log("unhandled",n,s)}}return o&&i.elements.push(o),i}function il(r){let t={indices:[],vertices:[],normals:[],uvs:[],colors:[]};for(let e of r.elements)if(e.name==="vertex")for(let i of e.properties)switch(i.name){case"x":case"y":case"z":case"nx":case"ny":case"nz":case"s":case"t":case"red":case"green":case"blue":break;default:t[i.name]=[];break}return t}function Zd(r){let t=r[0];switch(t){case"list":return{type:t,name:r[3],countType:r[1],itemType:r[2]};default:return{type:t,name:r[1]}}}function Jo(r,t){switch(t){case"char":case"uchar":case"short":case"ushort":case"int":case"uint":case"int8":case"uint8":case"int16":case"uint16":case"int32":case"uint32":return parseInt(r,10);case"float":case"double":case"float32":case"float64":return parseFloat(r);default:throw new Error(t)}}function Kd(r,t){let e=t.split(/\s+/),i={};for(let n=0;n<r.length;n++)if(r[n].type==="list"){let s=[],o=Jo(e.shift(),r[n].countType);for(let a=0;a<o;a++)s.push(Jo(e.shift(),r[n].itemType));i[r[n].name]=s}else i[r[n].name]=Jo(e.shift(),r[n].type);return i}function rl(r,t){let e=il(t),i,n=/end_header\s([\s\S]*)$/,s="";(i=n.exec(r))!==null&&(s=i[1]);let o=s.split(`
|
|
18
18
|
`),a=0,c=0;for(let l=0;l<o.length;l++){let d=o[l];if(d=d.trim(),d!==""){c>=t.elements[a].count&&(a++,c=0);let f=Kd(t.elements[a].properties,d);nl(e,t.elements[a].name,f),c++}}return e}function nl(r,t,e={}){if(t==="vertex")for(let i of Object.keys(e))switch(i){case"x":r.vertices.push(e.x,e.y,e.z);break;case"y":case"z":break;case"nx":"nx"in e&&"ny"in e&&"nz"in e&&r.normals.push(e.nx,e.ny,e.nz);break;case"ny":case"nz":break;case"s":"s"in e&&"t"in e&&r.uvs.push(e.s,e.t);break;case"t":break;case"red":"red"in e&&"green"in e&&"blue"in e&&r.colors.push(e.red,e.green,e.blue);break;case"green":case"blue":break;default:r[i].push(e[i])}else if(t==="face"){let i=e.vertex_indices||e.vertex_index;i.length===3?r.indices.push(i[0],i[1],i[2]):i.length===4&&(r.indices.push(i[0],i[1],i[3]),r.indices.push(i[1],i[2],i[3]))}}function Go(r,t,e,i){switch(e){case"int8":case"char":return[r.getInt8(t),1];case"uint8":case"uchar":return[r.getUint8(t),1];case"int16":case"short":return[r.getInt16(t,i),2];case"uint16":case"ushort":return[r.getUint16(t,i),2];case"int32":case"int":return[r.getInt32(t,i),4];case"uint32":case"uint":return[r.getUint32(t,i),4];case"float32":case"float":return[r.getFloat32(t,i),4];case"float64":case"double":return[r.getFloat64(t,i),8];default:throw new Error(e)}}function Xd(r,t,e,i){let n={},s,o=0;for(let a=0;a<e.length;a++)if(e[a].type==="list"){let c=[];s=Go(r,t+o,e[a].countType,i);let l=s[0];o+=s[1];for(let d=0;d<l;d++)s=Go(r,t+o,e[a].itemType,i),c.push(s[0]),o+=s[1];n[e[a].name]=c}else s=Go(r,t+o,e[a].type,i),n[e[a].name]=s[0],o+=s[1];return[n,o]}function qd(r,t){let e=il(t),i=t.format==="binary_little_endian",n=new DataView(r,t.headerLength),s,o=0;for(let a=0;a<t.elements.length;a++){let c=t.elements[a].count;for(let l=0;l<c;l++){s=Xd(n,o,t.elements[a].properties,i),o+=s[1];let d=s[0];nl(e,t.elements[a].name,d)}}return e}async function*Zo(r,t={}){let e=new TextDecoder(void 0,t);for await(let i of r)yield typeof i=="string"?i:e.decode(i,{stream:!0})}async function*Ko(r){let t="";for await(let e of r){t+=e;let i;for(;(i=t.indexOf(`
|
|
19
|
-
`))>=0;){let n=t.slice(0,i+1);t=t.slice(i+1),yield n}}t.length>0&&(yield t)}async function Xo(r,t){for(;;){let{done:e,value:i}=await r.next();if(e){r.return();return}if(t(i))return}}var Si;async function*sl(r,t){let e=Ko(Zo(r)),i=await Qd(e,t),n;switch(i.format){case"ascii":n=await ef(e,i);break;default:throw new Error("Binary PLY can not yet be parsed in streaming mode")}yield pn(i,n,t)}async function Qd(r,t){let e={comments:[],elements:[]};return await Xo(r,i=>{if(i=i.trim(),i==="end_header")return!0;if(i==="")return!1;let n=i.split(/\s+/),s=n.shift();switch(i=n.join(" "),s){case"ply":break;case"format":e.format=n[0],e.version=n[1];break;case"comment":e.comments.push(i);break;case"element":Si&&e.elements.push(Si),Si={name:n[0],count:parseInt(n[1],10),properties:[]};break;case"property":let o=tf(n,t.propertyNameMapping);Si.properties.push(o);break;default:console.log("unhandled",s,n)}return!1}),Si&&e.elements.push(Si),e}function tf(r,t){let e=r[0];switch(e){case"list":return{type:e,name:r[3],countType:r[1],itemType:r[2]};default:return{type:e,name:r[1]}}}async function ef(r,t){let e={indices:[],vertices:[],normals:[],uvs:[],colors:[]},i=0,n=0;for await(let s of r)if(s=s.trim(),s!==""){n>=t.elements[i].count&&(i++,n=0);let o=rf(t.elements[i].properties,s);nf(e,t.elements[i].name,o),n++}return e}function qo(r,t){switch(t){case"char":case"uchar":case"short":case"ushort":case"int":case"uint":case"int8":case"uint8":case"int16":case"uint16":case"int32":case"uint32":return parseInt(r,10);case"float":case"double":case"float32":case"float64":return parseFloat(r);default:throw new Error(t)}}function rf(r,t){let e=t.split(/\s+/),i={};for(let n=0;n<r.length;n++)if(r[n].type==="list"){let s=[],o=qo(e.shift(),r[n].countType);for(let a=0;a<o;a++)s.push(qo(e.shift(),r[n].itemType));i[r[n].name]=s}else i[r[n].name]=qo(e.shift(),r[n].type);return i}function nf(r,t,e={}){switch(t){case"vertex":r.vertices.push(e.x,e.y,e.z),"nx"in e&&"ny"in e&&"nz"in e&&r.normals.push(e.nx,e.ny,e.nz),"s"in e&&"t"in e&&r.uvs.push(e.s,e.t),"red"in e&&"green"in e&&"blue"in e&&r.colors.push(e.red/255,e.green/255,e.blue/255);break;case"face":let i=e.vertex_indices||e.vertex_index;i.length===3?r.indices.push(i[0],i[1],i[2]):i.length===4&&(r.indices.push(i[0],i[1],i[3]),r.indices.push(i[1],i[2],i[3]));break;default:break}}var sf="4.4.0-alpha.
|
|
19
|
+
`))>=0;){let n=t.slice(0,i+1);t=t.slice(i+1),yield n}}t.length>0&&(yield t)}async function Xo(r,t){for(;;){let{done:e,value:i}=await r.next();if(e){r.return();return}if(t(i))return}}var Si;async function*sl(r,t){let e=Ko(Zo(r)),i=await Qd(e,t),n;switch(i.format){case"ascii":n=await ef(e,i);break;default:throw new Error("Binary PLY can not yet be parsed in streaming mode")}yield pn(i,n,t)}async function Qd(r,t){let e={comments:[],elements:[]};return await Xo(r,i=>{if(i=i.trim(),i==="end_header")return!0;if(i==="")return!1;let n=i.split(/\s+/),s=n.shift();switch(i=n.join(" "),s){case"ply":break;case"format":e.format=n[0],e.version=n[1];break;case"comment":e.comments.push(i);break;case"element":Si&&e.elements.push(Si),Si={name:n[0],count:parseInt(n[1],10),properties:[]};break;case"property":let o=tf(n,t.propertyNameMapping);Si.properties.push(o);break;default:console.log("unhandled",s,n)}return!1}),Si&&e.elements.push(Si),e}function tf(r,t){let e=r[0];switch(e){case"list":return{type:e,name:r[3],countType:r[1],itemType:r[2]};default:return{type:e,name:r[1]}}}async function ef(r,t){let e={indices:[],vertices:[],normals:[],uvs:[],colors:[]},i=0,n=0;for await(let s of r)if(s=s.trim(),s!==""){n>=t.elements[i].count&&(i++,n=0);let o=rf(t.elements[i].properties,s);nf(e,t.elements[i].name,o),n++}return e}function qo(r,t){switch(t){case"char":case"uchar":case"short":case"ushort":case"int":case"uint":case"int8":case"uint8":case"int16":case"uint16":case"int32":case"uint32":return parseInt(r,10);case"float":case"double":case"float32":case"float64":return parseFloat(r);default:throw new Error(t)}}function rf(r,t){let e=t.split(/\s+/),i={};for(let n=0;n<r.length;n++)if(r[n].type==="list"){let s=[],o=qo(e.shift(),r[n].countType);for(let a=0;a<o;a++)s.push(qo(e.shift(),r[n].itemType));i[r[n].name]=s}else i[r[n].name]=qo(e.shift(),r[n].type);return i}function nf(r,t,e={}){switch(t){case"vertex":r.vertices.push(e.x,e.y,e.z),"nx"in e&&"ny"in e&&"nz"in e&&r.normals.push(e.nx,e.ny,e.nz),"s"in e&&"t"in e&&r.uvs.push(e.s,e.t),"red"in e&&"green"in e&&"blue"in e&&r.colors.push(e.red/255,e.green/255,e.blue/255);break;case"face":let i=e.vertex_indices||e.vertex_index;i.length===3?r.indices.push(i[0],i[1],i[2]):i.length===4&&(r.indices.push(i[0],i[1],i[3]),r.indices.push(i[1],i[2],i[3]));break;default:break}}var sf="4.4.0-alpha.1",mn={dataType:null,batchType:null,name:"PLY",id:"ply",module:"ply",version:sf,worker:!0,extensions:["ply"],mimeTypes:["text/plain","application/octet-stream"],text:!0,binary:!0,tests:["ply"],options:{ply:{}}},ol={...mn,parse:async(r,t)=>Ii(r,t?.ply),parseTextSync:(r,t)=>Ii(r,t?.ply),parseSync:(r,t)=>Ii(r,t?.ply),parseInBatches:(r,t)=>sl(r,t?.ply)};var al={...mn,dataType:null,batchType:null,worker:!1,parse:async r=>{let t=Ii(r);return $o(t,"arrow-table")}};return yl(yn);})();
|
|
20
20
|
return __exports__;
|
|
21
21
|
});
|
package/dist/index.cjs
CHANGED
|
@@ -624,7 +624,7 @@ function handleElement2(buffer, elementName, element = {}) {
|
|
|
624
624
|
}
|
|
625
625
|
|
|
626
626
|
// dist/ply-loader.js
|
|
627
|
-
var VERSION = true ? "4.4.0-alpha.
|
|
627
|
+
var VERSION = true ? "4.4.0-alpha.1" : "latest";
|
|
628
628
|
var PLYWorkerLoader = {
|
|
629
629
|
dataType: null,
|
|
630
630
|
batchType: null,
|
package/dist/index.cjs.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["index.js", "ply-format.js", "lib/normalize-ply.js", "lib/get-ply-schema.js", "lib/parse-ply.js", "lib/parse-ply-in-batches.js", "ply-loader.js", "ply-arrow-loader.js"],
|
|
4
|
-
"sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n// PLYLoader\nexport { PLYFormat } from \"./ply-format.js\";\nexport { PLYWorkerLoader, PLYLoader } from \"./ply-loader.js\";\nexport { PLYArrowLoader } from \"./ply-arrow-loader.js\";\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n/**\n * PLY - Polygon File Format (aka Stanford Triangle Format)\n * @see http://paulbourke.net/dataformats/ply/,\n * @see https://en.wikipedia.org/wiki/PLY_(file_format)\n */\nexport const PLYFormat = {\n name: 'PLY',\n id: 'ply',\n module: 'ply',\n // shapes: ['mesh', 'gltf', 'columnar-table'],\n extensions: ['ply'],\n mimeTypes: ['text/plain', 'application/octet-stream'],\n text: true,\n binary: true,\n tests: ['ply']\n};\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { getMeshBoundingBox } from '@loaders.gl/schema-utils';\nimport { getPLYSchema } from \"./get-ply-schema.js\";\n/**\n * @param header\n * @param attributes\n * @returns data and header\n */\nexport default function normalizePLY(plyHeader, plyAttributes, options) {\n const attributes = getMeshAttributes(plyAttributes);\n const boundingBox = getMeshBoundingBox(attributes);\n const vertexCount = plyAttributes.indices.length || plyAttributes.vertices.length / 3;\n // TODO - how to detect POINT CLOUDS vs MESHES?\n // TODO - For Meshes, PLY quadrangles must be split?\n const isTriangles = plyAttributes.indices && plyAttributes.indices.length > 0;\n const mode = isTriangles ? 4 : 0; // TRIANGLES vs POINTS\n const topology = isTriangles ? 'triangle-list' : 'point-list';\n const schema = getPLYSchema(plyHeader, attributes);\n const plyMesh = {\n loader: 'ply',\n loaderData: plyHeader,\n header: {\n vertexCount,\n boundingBox\n },\n schema,\n attributes,\n indices: { value: new Uint32Array(0), size: 0 },\n mode,\n topology\n };\n if (plyAttributes.indices.length > 0) {\n plyMesh.indices = { value: new Uint32Array(plyAttributes.indices), size: 1 };\n }\n return plyMesh;\n}\n/**\n * @param attributes\n * @returns accessors []\n */\n// eslint-disable-next-line complexity\nfunction getMeshAttributes(attributes) {\n const accessors = {};\n for (const attributeName of Object.keys(attributes)) {\n switch (attributeName) {\n case 'vertices':\n if (attributes.vertices.length > 0) {\n accessors.POSITION = { value: new Float32Array(attributes.vertices), size: 3 };\n }\n break;\n // optional attributes data\n case 'normals':\n if (attributes.normals.length > 0) {\n accessors.NORMAL = { value: new Float32Array(attributes.normals), size: 3 };\n }\n break;\n case 'uvs':\n if (attributes.uvs.length > 0) {\n accessors.TEXCOORD_0 = { value: new Float32Array(attributes.uvs), size: 2 };\n }\n break;\n case 'colors':\n if (attributes.colors.length > 0) {\n // TODO - normalized shoud be based on `uchar` flag in source data?\n accessors.COLOR_0 = { value: new Uint8Array(attributes.colors), size: 3, normalized: true };\n }\n break;\n case 'indices':\n break;\n default:\n if (attributes[attributeName].length > 0) {\n accessors[attributeName] = { value: new Float32Array(attributes[attributeName]), size: 1 };\n }\n break;\n }\n }\n return accessors;\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { deduceMeshSchema } from '@loaders.gl/schema-utils';\n/**\n * Gets schema from PLY header\n * @param plyHeader\n * @param metadata\n * @returns Schema\n */\nexport function getPLYSchema(plyHeader, attributes) {\n const metadata = makeMetadataFromPlyHeader(plyHeader);\n const schema = deduceMeshSchema(attributes, metadata);\n return schema;\n}\n/**\n * Make arrow like schema metadata by PlyHeader properties\n * @param plyHeader\n * @returns\n */\nfunction makeMetadataFromPlyHeader(plyHeader) {\n /* eslint-disable camelcase */\n const metadata = {};\n metadata.ply_comments = JSON.stringify(plyHeader.comments);\n metadata.ply_elements = JSON.stringify(plyHeader.elements);\n if (plyHeader.format !== undefined) {\n metadata.ply_format = plyHeader.format;\n }\n if (plyHeader.version !== undefined) {\n metadata.ply_version = plyHeader.version;\n }\n if (plyHeader.headerLength !== undefined) {\n metadata.ply_headerLength = plyHeader.headerLength.toString(10);\n }\n return metadata;\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport normalizePLY from \"./normalize-ply.js\";\n/**\n * @param data\n * @param options\n * @returns\n */\nexport function parsePLY(data, options = {}) {\n let header;\n let attributes;\n if (data instanceof ArrayBuffer) {\n const text = new TextDecoder().decode(data);\n header = parseHeader(text, options);\n attributes = header.format === 'ascii' ? parseASCII(text, header) : parseBinary(data, header);\n }\n else {\n header = parseHeader(data, options);\n attributes = parseASCII(data, header);\n }\n return normalizePLY(header, attributes);\n}\n/**\n * @param data\n * @param options\n * @returns header\n */\nfunction parseHeader(data, options) {\n const PLY_HEADER_PATTERN = /ply([\\s\\S]*)end_header\\s/;\n let headerText = '';\n let headerLength = 0;\n const result = PLY_HEADER_PATTERN.exec(data);\n if (result !== null) {\n headerText = result[1];\n headerLength = result[0].length;\n }\n const lines = headerText.split('\\n');\n const header = parseHeaderLines(lines, headerLength, options);\n return header;\n}\n/**\n * @param lines\n * @param headerLength\n * @param options\n * @returns header\n */\n// eslint-disable-next-line complexity\nfunction parseHeaderLines(lines, headerLength, options) {\n const header = {\n comments: [],\n elements: [],\n headerLength\n };\n let lineType;\n let lineValues;\n let currentElement = null;\n for (let i = 0; i < lines.length; i++) {\n let line = lines[i];\n line = line.trim();\n if (line === '') {\n // eslint-disable-next-line\n continue;\n }\n lineValues = line.split(/\\s+/);\n lineType = lineValues.shift();\n line = lineValues.join(' ');\n switch (lineType) {\n case 'format':\n header.format = lineValues[0];\n header.version = lineValues[1];\n break;\n case 'comment':\n header.comments.push(line);\n break;\n case 'element':\n // Start new element, store previous element\n if (currentElement) {\n header.elements.push(currentElement);\n }\n currentElement = {\n name: lineValues[0],\n count: parseInt(lineValues[1], 10),\n properties: []\n };\n break;\n case 'property':\n if (currentElement) {\n const property = makePLYElementProperty(lineValues);\n if (options?.propertyNameMapping && property.name in options?.propertyNameMapping) {\n property.name = options?.propertyNameMapping[property.name];\n }\n currentElement.properties.push(property);\n }\n break;\n default:\n // eslint-disable-next-line\n console.log('unhandled', lineType, lineValues);\n }\n }\n // Store in-progress element\n if (currentElement) {\n header.elements.push(currentElement);\n }\n return header;\n}\n/** Generate attributes arrays from the header */\n// eslint-disable-next-line complexity\nfunction getPLYAttributes(header) {\n // TODO Generate only the attribute arrays actually in the header\n const attributes = {\n indices: [],\n vertices: [],\n normals: [],\n uvs: [],\n colors: []\n };\n for (const element of header.elements) {\n if (element.name === 'vertex') {\n for (const property of element.properties) {\n switch (property.name) {\n case 'x':\n case 'y':\n case 'z':\n case 'nx':\n case 'ny':\n case 'nz':\n case 's':\n case 't':\n case 'red':\n case 'green':\n case 'blue':\n break;\n default:\n // Add any non-geometry attributes\n attributes[property.name] = [];\n break;\n }\n }\n }\n }\n return attributes;\n}\n/**\n * @param propertyValues\n * @returns property of ply element\n */\nfunction makePLYElementProperty(propertyValues) {\n const type = propertyValues[0];\n switch (type) {\n case 'list':\n return {\n type,\n name: propertyValues[3],\n countType: propertyValues[1],\n itemType: propertyValues[2]\n };\n default:\n return {\n type,\n name: propertyValues[1]\n };\n }\n}\n/**\n * Parses ASCII number\n * @param n\n * @param type\n * @returns\n */\n// eslint-disable-next-line complexity\nfunction parseASCIINumber(n, type) {\n switch (type) {\n case 'char':\n case 'uchar':\n case 'short':\n case 'ushort':\n case 'int':\n case 'uint':\n case 'int8':\n case 'uint8':\n case 'int16':\n case 'uint16':\n case 'int32':\n case 'uint32':\n return parseInt(n, 10);\n case 'float':\n case 'double':\n case 'float32':\n case 'float64':\n return parseFloat(n);\n default:\n throw new Error(type);\n }\n}\n/**\n * @param properties\n * @param line\n * @returns ASCII element\n */\nfunction parsePLYElement(properties, line) {\n const values = line.split(/\\s+/);\n const element = {};\n for (let i = 0; i < properties.length; i++) {\n if (properties[i].type === 'list') {\n const list = [];\n const n = parseASCIINumber(values.shift(), properties[i].countType);\n for (let j = 0; j < n; j++) {\n list.push(parseASCIINumber(values.shift(), properties[i].itemType));\n }\n element[properties[i].name] = list;\n }\n else {\n element[properties[i].name] = parseASCIINumber(values.shift(), properties[i].type);\n }\n }\n return element;\n}\n/**\n * @param data\n * @param header\n * @returns [attributes]\n */\nfunction parseASCII(data, header) {\n // PLY ascii format specification, as per http://en.wikipedia.org/wiki/PLY_(file_format)\n const attributes = getPLYAttributes(header);\n let result;\n const patternBody = /end_header\\s([\\s\\S]*)$/;\n let body = '';\n if ((result = patternBody.exec(data)) !== null) {\n body = result[1];\n }\n const lines = body.split('\\n');\n let currentElement = 0;\n let currentElementCount = 0;\n for (let i = 0; i < lines.length; i++) {\n let line = lines[i];\n line = line.trim();\n if (line !== '') {\n if (currentElementCount >= header.elements[currentElement].count) {\n currentElement++;\n currentElementCount = 0;\n }\n const element = parsePLYElement(header.elements[currentElement].properties, line);\n handleElement(attributes, header.elements[currentElement].name, element);\n currentElementCount++;\n }\n }\n return attributes;\n}\n/**\n * @param buffer\n * @param elementName\n * @param element\n */\n// eslint-disable-next-line complexity\nfunction handleElement(buffer, elementName, element = {}) {\n if (elementName === 'vertex') {\n for (const propertyName of Object.keys(element)) {\n switch (propertyName) {\n case 'x':\n buffer.vertices.push(element.x, element.y, element.z);\n break;\n case 'y':\n case 'z':\n break;\n case 'nx':\n if ('nx' in element && 'ny' in element && 'nz' in element) {\n buffer.normals.push(element.nx, element.ny, element.nz);\n }\n break;\n case 'ny':\n case 'nz':\n break;\n case 's':\n if ('s' in element && 't' in element) {\n buffer.uvs.push(element.s, element.t);\n }\n break;\n case 't':\n break;\n case 'red':\n if ('red' in element && 'green' in element && 'blue' in element) {\n buffer.colors.push(element.red, element.green, element.blue);\n }\n break;\n case 'green':\n case 'blue':\n break;\n default:\n buffer[propertyName].push(element[propertyName]);\n }\n }\n }\n else if (elementName === 'face') {\n const vertexIndices = element.vertex_indices || element.vertex_index; // issue #9338\n if (vertexIndices.length === 3) {\n buffer.indices.push(vertexIndices[0], vertexIndices[1], vertexIndices[2]);\n }\n else if (vertexIndices.length === 4) {\n buffer.indices.push(vertexIndices[0], vertexIndices[1], vertexIndices[3]);\n buffer.indices.push(vertexIndices[1], vertexIndices[2], vertexIndices[3]);\n }\n }\n}\n/**\n * Reads binary data\n * @param dataview\n * @param at\n * @param type\n * @param littleEndian\n * @returns [number, number]\n */\n// eslint-disable-next-line complexity\nfunction binaryRead(dataview, at, type, littleEndian) {\n switch (type) {\n // corespondences for non-specific length types here match rply:\n case 'int8':\n case 'char':\n return [dataview.getInt8(at), 1];\n case 'uint8':\n case 'uchar':\n return [dataview.getUint8(at), 1];\n case 'int16':\n case 'short':\n return [dataview.getInt16(at, littleEndian), 2];\n case 'uint16':\n case 'ushort':\n return [dataview.getUint16(at, littleEndian), 2];\n case 'int32':\n case 'int':\n return [dataview.getInt32(at, littleEndian), 4];\n case 'uint32':\n case 'uint':\n return [dataview.getUint32(at, littleEndian), 4];\n case 'float32':\n case 'float':\n return [dataview.getFloat32(at, littleEndian), 4];\n case 'float64':\n case 'double':\n return [dataview.getFloat64(at, littleEndian), 8];\n default:\n throw new Error(type);\n }\n}\n/**\n * Reads binary data\n * @param dataview\n * @param at\n * @param properties\n * @param littleEndian\n * @returns [object, number]\n */\nfunction binaryReadElement(dataview, at, properties, littleEndian) {\n const element = {};\n let result;\n let read = 0;\n for (let i = 0; i < properties.length; i++) {\n if (properties[i].type === 'list') {\n const list = [];\n result = binaryRead(dataview, at + read, properties[i].countType, littleEndian);\n const n = result[0];\n read += result[1];\n for (let j = 0; j < n; j++) {\n result = binaryRead(dataview, at + read, properties[i].itemType, littleEndian);\n // @ts-ignore\n list.push(result[0]);\n read += result[1];\n }\n element[properties[i].name] = list;\n }\n else {\n result = binaryRead(dataview, at + read, properties[i].type, littleEndian);\n element[properties[i].name] = result[0];\n read += result[1];\n }\n }\n return [element, read];\n}\n/**\n * Parses binary data\n * @param data\n * @param header\n * @returns [attributes] of data\n */\nfunction parseBinary(data, header) {\n const attributes = getPLYAttributes(header);\n const littleEndian = header.format === 'binary_little_endian';\n const body = new DataView(data, header.headerLength);\n let result;\n let loc = 0;\n for (let currentElement = 0; currentElement < header.elements.length; currentElement++) {\n const count = header.elements[currentElement].count;\n for (let currentElementCount = 0; currentElementCount < count; currentElementCount++) {\n result = binaryReadElement(body, loc, header.elements[currentElement].properties, littleEndian);\n loc += result[1];\n const element = result[0];\n handleElement(attributes, header.elements[currentElement].name, element);\n }\n }\n return attributes;\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n// PLY Loader, adapted from THREE.js (MIT license)\n//\n// Attributions per original THREE.js source file:\n//\n// @author Wei Meng / http://about.me/menway\n//\n// Description: A loader for PLY ASCII files (known as the Polygon File Format\n// or the Stanford Triangle Format).\n//\n// Limitations: ASCII decoding assumes file is UTF-8.\n//\n// If the PLY file uses non standard property names, they can be mapped while\n// loading. For example, the following maps the properties\n// \u201Cdiffuse_(red|green|blue)\u201D in the file to standard color names.\n//\n// parsePLY(data, {\n// propertyNameMapping: {\n// diffuse_red: 'red',\n// diffuse_green: 'green',\n// diffuse_blue: 'blue'\n// }\n// });\nimport { makeLineIterator, makeTextDecoderIterator, forEach } from '@loaders.gl/loader-utils';\nimport normalizePLY from \"./normalize-ply.js\";\nlet currentElement;\n/**\n * PARSER\n * @param iterator\n * @param options\n */\nexport async function* parsePLYInBatches(iterator, options) {\n const lineIterator = makeLineIterator(makeTextDecoderIterator(iterator));\n const header = await parsePLYHeader(lineIterator, options);\n let attributes;\n switch (header.format) {\n case 'ascii':\n attributes = await parseASCII(lineIterator, header);\n break;\n default:\n throw new Error('Binary PLY can not yet be parsed in streaming mode');\n // attributes = await parseBinary(lineIterator, header);\n }\n yield normalizePLY(header, attributes, options);\n}\n/**\n * Parses header\n * @param lineIterator\n * @param options\n * @returns\n */\nasync function parsePLYHeader(lineIterator, options) {\n const header = {\n comments: [],\n elements: []\n // headerLength\n };\n // Note: forEach does not reset iterator if exiting loop prematurely\n // so that iteration can continue in a second loop\n await forEach(lineIterator, (line) => {\n line = line.trim();\n // End of header\n if (line === 'end_header') {\n return true; // Returning true cancels `forEach`\n }\n // Ignore empty lines\n if (line === '') {\n // eslint-disable-next-line\n return false; // Returning false does not cancel `forEach`\n }\n const lineValues = line.split(/\\s+/);\n const lineType = lineValues.shift();\n line = lineValues.join(' ');\n switch (lineType) {\n case 'ply':\n // First line magic characters, ignore\n break;\n case 'format':\n header.format = lineValues[0];\n header.version = lineValues[1];\n break;\n case 'comment':\n header.comments.push(line);\n break;\n case 'element':\n if (currentElement) {\n header.elements.push(currentElement);\n }\n currentElement = {\n name: lineValues[0],\n count: parseInt(lineValues[1], 10),\n properties: []\n };\n break;\n case 'property':\n const property = makePLYElementProperty(lineValues, options.propertyNameMapping);\n currentElement.properties.push(property);\n break;\n default:\n // eslint-disable-next-line\n console.log('unhandled', lineType, lineValues);\n }\n return false;\n });\n if (currentElement) {\n header.elements.push(currentElement);\n }\n return header;\n}\nfunction makePLYElementProperty(propertyValues, propertyNameMapping) {\n const type = propertyValues[0];\n switch (type) {\n case 'list':\n return {\n type,\n name: propertyValues[3],\n countType: propertyValues[1],\n itemType: propertyValues[2]\n };\n default:\n return {\n type,\n name: propertyValues[1]\n };\n }\n}\n// ASCII PARSING\n/**\n * @param lineIterator\n * @param header\n * @returns\n */\nasync function parseASCII(lineIterator, header) {\n // PLY ascii format specification, as per http://en.wikipedia.org/wiki/PLY_(file_format)\n const attributes = {\n indices: [],\n vertices: [],\n normals: [],\n uvs: [],\n colors: []\n };\n let currentElement = 0;\n let currentElementCount = 0;\n for await (let line of lineIterator) {\n line = line.trim();\n if (line !== '') {\n if (currentElementCount >= header.elements[currentElement].count) {\n currentElement++;\n currentElementCount = 0;\n }\n const element = parsePLYElement(header.elements[currentElement].properties, line);\n handleElement(attributes, header.elements[currentElement].name, element);\n currentElementCount++;\n }\n }\n return attributes;\n}\n/**\n * Parses ASCII number\n * @param n\n * @param type\n * @returns ASCII number\n */\n// eslint-disable-next-line complexity\nfunction parseASCIINumber(n, type) {\n switch (type) {\n case 'char':\n case 'uchar':\n case 'short':\n case 'ushort':\n case 'int':\n case 'uint':\n case 'int8':\n case 'uint8':\n case 'int16':\n case 'uint16':\n case 'int32':\n case 'uint32':\n return parseInt(n, 10);\n case 'float':\n case 'double':\n case 'float32':\n case 'float64':\n return parseFloat(n);\n default:\n throw new Error(type);\n }\n}\n/**\n * Parses ASCII element\n * @param properties\n * @param line\n * @returns element\n */\nfunction parsePLYElement(properties, line) {\n const values = line.split(/\\s+/);\n const element = {};\n for (let i = 0; i < properties.length; i++) {\n if (properties[i].type === 'list') {\n const list = [];\n const n = parseASCIINumber(values.shift(), properties[i].countType);\n for (let j = 0; j < n; j++) {\n list.push(parseASCIINumber(values.shift(), properties[i].itemType));\n }\n element[properties[i].name] = list;\n }\n else {\n element[properties[i].name] = parseASCIINumber(values.shift(), properties[i].type);\n }\n }\n return element;\n}\n/**\n * @param buffer\n * @param elementName\n * @param element\n */\n// HELPER FUNCTIONS\n// eslint-disable-next-line complexity\nfunction handleElement(buffer, elementName, element = {}) {\n switch (elementName) {\n case 'vertex':\n buffer.vertices.push(element.x, element.y, element.z);\n if ('nx' in element && 'ny' in element && 'nz' in element) {\n buffer.normals.push(element.nx, element.ny, element.nz);\n }\n if ('s' in element && 't' in element) {\n buffer.uvs.push(element.s, element.t);\n }\n if ('red' in element && 'green' in element && 'blue' in element) {\n buffer.colors.push(element.red / 255.0, element.green / 255.0, element.blue / 255.0);\n }\n break;\n case 'face':\n const vertexIndices = element.vertex_indices || element.vertex_index; // issue #9338\n if (vertexIndices.length === 3) {\n buffer.indices.push(vertexIndices[0], vertexIndices[1], vertexIndices[2]);\n }\n else if (vertexIndices.length === 4) {\n buffer.indices.push(vertexIndices[0], vertexIndices[1], vertexIndices[3]);\n buffer.indices.push(vertexIndices[1], vertexIndices[2], vertexIndices[3]);\n }\n break;\n default:\n break;\n }\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { parsePLY } from \"./lib/parse-ply.js\";\nimport { parsePLYInBatches } from \"./lib/parse-ply-in-batches.js\";\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof \"4.4.0-alpha.0\" !== 'undefined' ? \"4.4.0-alpha.0\" : 'latest';\n/**\n * Worker loader for PLY - Polygon File Format (aka Stanford Triangle Format)'\n * links: ['http://paulbourke.net/dataformats/ply/',\n * 'https://en.wikipedia.org/wiki/PLY_(file_format)']\n */\nexport const PLYWorkerLoader = {\n dataType: null,\n batchType: null,\n name: 'PLY',\n id: 'ply',\n module: 'ply',\n // shapes: ['mesh', 'gltf', 'columnar-table'],\n version: VERSION,\n worker: true,\n extensions: ['ply'],\n mimeTypes: ['text/plain', 'application/octet-stream'],\n text: true,\n binary: true,\n tests: ['ply'],\n options: {\n ply: {}\n }\n};\n/**\n * Loader for PLY - Polygon File Format\n */\nexport const PLYLoader = {\n ...PLYWorkerLoader,\n // Note: parsePLY supports both text and binary\n parse: async (arrayBuffer, options) => parsePLY(arrayBuffer, options?.ply), // TODO - this may not detect text correctly?\n parseTextSync: (arrayBuffer, options) => parsePLY(arrayBuffer, options?.ply),\n parseSync: (arrayBuffer, options) => parsePLY(arrayBuffer, options?.ply),\n parseInBatches: (arrayBuffer, options) => parsePLYInBatches(arrayBuffer, options?.ply)\n};\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { PLYWorkerLoader } from \"./ply-loader.js\";\nimport { convertMeshToTable } from '@loaders.gl/schema-utils';\nimport { parsePLY } from \"./lib/parse-ply.js\";\n/**\n * Worker loader for PLY -\n */\nexport const PLYArrowLoader = {\n ...PLYWorkerLoader,\n dataType: null,\n batchType: null,\n worker: false,\n parse: async (arrayBuffer) => {\n const mesh = parsePLY(arrayBuffer);\n const arrowTable = convertMeshToTable(mesh, 'arrow-table');\n return arrowTable;\n }\n};\n"],
|
|
4
|
+
"sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n// PLYLoader\nexport { PLYFormat } from \"./ply-format.js\";\nexport { PLYWorkerLoader, PLYLoader } from \"./ply-loader.js\";\nexport { PLYArrowLoader } from \"./ply-arrow-loader.js\";\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n/**\n * PLY - Polygon File Format (aka Stanford Triangle Format)\n * @see http://paulbourke.net/dataformats/ply/,\n * @see https://en.wikipedia.org/wiki/PLY_(file_format)\n */\nexport const PLYFormat = {\n name: 'PLY',\n id: 'ply',\n module: 'ply',\n // shapes: ['mesh', 'gltf', 'columnar-table'],\n extensions: ['ply'],\n mimeTypes: ['text/plain', 'application/octet-stream'],\n text: true,\n binary: true,\n tests: ['ply']\n};\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { getMeshBoundingBox } from '@loaders.gl/schema-utils';\nimport { getPLYSchema } from \"./get-ply-schema.js\";\n/**\n * @param header\n * @param attributes\n * @returns data and header\n */\nexport default function normalizePLY(plyHeader, plyAttributes, options) {\n const attributes = getMeshAttributes(plyAttributes);\n const boundingBox = getMeshBoundingBox(attributes);\n const vertexCount = plyAttributes.indices.length || plyAttributes.vertices.length / 3;\n // TODO - how to detect POINT CLOUDS vs MESHES?\n // TODO - For Meshes, PLY quadrangles must be split?\n const isTriangles = plyAttributes.indices && plyAttributes.indices.length > 0;\n const mode = isTriangles ? 4 : 0; // TRIANGLES vs POINTS\n const topology = isTriangles ? 'triangle-list' : 'point-list';\n const schema = getPLYSchema(plyHeader, attributes);\n const plyMesh = {\n loader: 'ply',\n loaderData: plyHeader,\n header: {\n vertexCount,\n boundingBox\n },\n schema,\n attributes,\n indices: { value: new Uint32Array(0), size: 0 },\n mode,\n topology\n };\n if (plyAttributes.indices.length > 0) {\n plyMesh.indices = { value: new Uint32Array(plyAttributes.indices), size: 1 };\n }\n return plyMesh;\n}\n/**\n * @param attributes\n * @returns accessors []\n */\n// eslint-disable-next-line complexity\nfunction getMeshAttributes(attributes) {\n const accessors = {};\n for (const attributeName of Object.keys(attributes)) {\n switch (attributeName) {\n case 'vertices':\n if (attributes.vertices.length > 0) {\n accessors.POSITION = { value: new Float32Array(attributes.vertices), size: 3 };\n }\n break;\n // optional attributes data\n case 'normals':\n if (attributes.normals.length > 0) {\n accessors.NORMAL = { value: new Float32Array(attributes.normals), size: 3 };\n }\n break;\n case 'uvs':\n if (attributes.uvs.length > 0) {\n accessors.TEXCOORD_0 = { value: new Float32Array(attributes.uvs), size: 2 };\n }\n break;\n case 'colors':\n if (attributes.colors.length > 0) {\n // TODO - normalized shoud be based on `uchar` flag in source data?\n accessors.COLOR_0 = { value: new Uint8Array(attributes.colors), size: 3, normalized: true };\n }\n break;\n case 'indices':\n break;\n default:\n if (attributes[attributeName].length > 0) {\n accessors[attributeName] = { value: new Float32Array(attributes[attributeName]), size: 1 };\n }\n break;\n }\n }\n return accessors;\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { deduceMeshSchema } from '@loaders.gl/schema-utils';\n/**\n * Gets schema from PLY header\n * @param plyHeader\n * @param metadata\n * @returns Schema\n */\nexport function getPLYSchema(plyHeader, attributes) {\n const metadata = makeMetadataFromPlyHeader(plyHeader);\n const schema = deduceMeshSchema(attributes, metadata);\n return schema;\n}\n/**\n * Make arrow like schema metadata by PlyHeader properties\n * @param plyHeader\n * @returns\n */\nfunction makeMetadataFromPlyHeader(plyHeader) {\n /* eslint-disable camelcase */\n const metadata = {};\n metadata.ply_comments = JSON.stringify(plyHeader.comments);\n metadata.ply_elements = JSON.stringify(plyHeader.elements);\n if (plyHeader.format !== undefined) {\n metadata.ply_format = plyHeader.format;\n }\n if (plyHeader.version !== undefined) {\n metadata.ply_version = plyHeader.version;\n }\n if (plyHeader.headerLength !== undefined) {\n metadata.ply_headerLength = plyHeader.headerLength.toString(10);\n }\n return metadata;\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport normalizePLY from \"./normalize-ply.js\";\n/**\n * @param data\n * @param options\n * @returns\n */\nexport function parsePLY(data, options = {}) {\n let header;\n let attributes;\n if (data instanceof ArrayBuffer) {\n const text = new TextDecoder().decode(data);\n header = parseHeader(text, options);\n attributes = header.format === 'ascii' ? parseASCII(text, header) : parseBinary(data, header);\n }\n else {\n header = parseHeader(data, options);\n attributes = parseASCII(data, header);\n }\n return normalizePLY(header, attributes);\n}\n/**\n * @param data\n * @param options\n * @returns header\n */\nfunction parseHeader(data, options) {\n const PLY_HEADER_PATTERN = /ply([\\s\\S]*)end_header\\s/;\n let headerText = '';\n let headerLength = 0;\n const result = PLY_HEADER_PATTERN.exec(data);\n if (result !== null) {\n headerText = result[1];\n headerLength = result[0].length;\n }\n const lines = headerText.split('\\n');\n const header = parseHeaderLines(lines, headerLength, options);\n return header;\n}\n/**\n * @param lines\n * @param headerLength\n * @param options\n * @returns header\n */\n// eslint-disable-next-line complexity\nfunction parseHeaderLines(lines, headerLength, options) {\n const header = {\n comments: [],\n elements: [],\n headerLength\n };\n let lineType;\n let lineValues;\n let currentElement = null;\n for (let i = 0; i < lines.length; i++) {\n let line = lines[i];\n line = line.trim();\n if (line === '') {\n // eslint-disable-next-line\n continue;\n }\n lineValues = line.split(/\\s+/);\n lineType = lineValues.shift();\n line = lineValues.join(' ');\n switch (lineType) {\n case 'format':\n header.format = lineValues[0];\n header.version = lineValues[1];\n break;\n case 'comment':\n header.comments.push(line);\n break;\n case 'element':\n // Start new element, store previous element\n if (currentElement) {\n header.elements.push(currentElement);\n }\n currentElement = {\n name: lineValues[0],\n count: parseInt(lineValues[1], 10),\n properties: []\n };\n break;\n case 'property':\n if (currentElement) {\n const property = makePLYElementProperty(lineValues);\n if (options?.propertyNameMapping && property.name in options?.propertyNameMapping) {\n property.name = options?.propertyNameMapping[property.name];\n }\n currentElement.properties.push(property);\n }\n break;\n default:\n // eslint-disable-next-line\n console.log('unhandled', lineType, lineValues);\n }\n }\n // Store in-progress element\n if (currentElement) {\n header.elements.push(currentElement);\n }\n return header;\n}\n/** Generate attributes arrays from the header */\n// eslint-disable-next-line complexity\nfunction getPLYAttributes(header) {\n // TODO Generate only the attribute arrays actually in the header\n const attributes = {\n indices: [],\n vertices: [],\n normals: [],\n uvs: [],\n colors: []\n };\n for (const element of header.elements) {\n if (element.name === 'vertex') {\n for (const property of element.properties) {\n switch (property.name) {\n case 'x':\n case 'y':\n case 'z':\n case 'nx':\n case 'ny':\n case 'nz':\n case 's':\n case 't':\n case 'red':\n case 'green':\n case 'blue':\n break;\n default:\n // Add any non-geometry attributes\n attributes[property.name] = [];\n break;\n }\n }\n }\n }\n return attributes;\n}\n/**\n * @param propertyValues\n * @returns property of ply element\n */\nfunction makePLYElementProperty(propertyValues) {\n const type = propertyValues[0];\n switch (type) {\n case 'list':\n return {\n type,\n name: propertyValues[3],\n countType: propertyValues[1],\n itemType: propertyValues[2]\n };\n default:\n return {\n type,\n name: propertyValues[1]\n };\n }\n}\n/**\n * Parses ASCII number\n * @param n\n * @param type\n * @returns\n */\n// eslint-disable-next-line complexity\nfunction parseASCIINumber(n, type) {\n switch (type) {\n case 'char':\n case 'uchar':\n case 'short':\n case 'ushort':\n case 'int':\n case 'uint':\n case 'int8':\n case 'uint8':\n case 'int16':\n case 'uint16':\n case 'int32':\n case 'uint32':\n return parseInt(n, 10);\n case 'float':\n case 'double':\n case 'float32':\n case 'float64':\n return parseFloat(n);\n default:\n throw new Error(type);\n }\n}\n/**\n * @param properties\n * @param line\n * @returns ASCII element\n */\nfunction parsePLYElement(properties, line) {\n const values = line.split(/\\s+/);\n const element = {};\n for (let i = 0; i < properties.length; i++) {\n if (properties[i].type === 'list') {\n const list = [];\n const n = parseASCIINumber(values.shift(), properties[i].countType);\n for (let j = 0; j < n; j++) {\n list.push(parseASCIINumber(values.shift(), properties[i].itemType));\n }\n element[properties[i].name] = list;\n }\n else {\n element[properties[i].name] = parseASCIINumber(values.shift(), properties[i].type);\n }\n }\n return element;\n}\n/**\n * @param data\n * @param header\n * @returns [attributes]\n */\nfunction parseASCII(data, header) {\n // PLY ascii format specification, as per http://en.wikipedia.org/wiki/PLY_(file_format)\n const attributes = getPLYAttributes(header);\n let result;\n const patternBody = /end_header\\s([\\s\\S]*)$/;\n let body = '';\n if ((result = patternBody.exec(data)) !== null) {\n body = result[1];\n }\n const lines = body.split('\\n');\n let currentElement = 0;\n let currentElementCount = 0;\n for (let i = 0; i < lines.length; i++) {\n let line = lines[i];\n line = line.trim();\n if (line !== '') {\n if (currentElementCount >= header.elements[currentElement].count) {\n currentElement++;\n currentElementCount = 0;\n }\n const element = parsePLYElement(header.elements[currentElement].properties, line);\n handleElement(attributes, header.elements[currentElement].name, element);\n currentElementCount++;\n }\n }\n return attributes;\n}\n/**\n * @param buffer\n * @param elementName\n * @param element\n */\n// eslint-disable-next-line complexity\nfunction handleElement(buffer, elementName, element = {}) {\n if (elementName === 'vertex') {\n for (const propertyName of Object.keys(element)) {\n switch (propertyName) {\n case 'x':\n buffer.vertices.push(element.x, element.y, element.z);\n break;\n case 'y':\n case 'z':\n break;\n case 'nx':\n if ('nx' in element && 'ny' in element && 'nz' in element) {\n buffer.normals.push(element.nx, element.ny, element.nz);\n }\n break;\n case 'ny':\n case 'nz':\n break;\n case 's':\n if ('s' in element && 't' in element) {\n buffer.uvs.push(element.s, element.t);\n }\n break;\n case 't':\n break;\n case 'red':\n if ('red' in element && 'green' in element && 'blue' in element) {\n buffer.colors.push(element.red, element.green, element.blue);\n }\n break;\n case 'green':\n case 'blue':\n break;\n default:\n buffer[propertyName].push(element[propertyName]);\n }\n }\n }\n else if (elementName === 'face') {\n const vertexIndices = element.vertex_indices || element.vertex_index; // issue #9338\n if (vertexIndices.length === 3) {\n buffer.indices.push(vertexIndices[0], vertexIndices[1], vertexIndices[2]);\n }\n else if (vertexIndices.length === 4) {\n buffer.indices.push(vertexIndices[0], vertexIndices[1], vertexIndices[3]);\n buffer.indices.push(vertexIndices[1], vertexIndices[2], vertexIndices[3]);\n }\n }\n}\n/**\n * Reads binary data\n * @param dataview\n * @param at\n * @param type\n * @param littleEndian\n * @returns [number, number]\n */\n// eslint-disable-next-line complexity\nfunction binaryRead(dataview, at, type, littleEndian) {\n switch (type) {\n // corespondences for non-specific length types here match rply:\n case 'int8':\n case 'char':\n return [dataview.getInt8(at), 1];\n case 'uint8':\n case 'uchar':\n return [dataview.getUint8(at), 1];\n case 'int16':\n case 'short':\n return [dataview.getInt16(at, littleEndian), 2];\n case 'uint16':\n case 'ushort':\n return [dataview.getUint16(at, littleEndian), 2];\n case 'int32':\n case 'int':\n return [dataview.getInt32(at, littleEndian), 4];\n case 'uint32':\n case 'uint':\n return [dataview.getUint32(at, littleEndian), 4];\n case 'float32':\n case 'float':\n return [dataview.getFloat32(at, littleEndian), 4];\n case 'float64':\n case 'double':\n return [dataview.getFloat64(at, littleEndian), 8];\n default:\n throw new Error(type);\n }\n}\n/**\n * Reads binary data\n * @param dataview\n * @param at\n * @param properties\n * @param littleEndian\n * @returns [object, number]\n */\nfunction binaryReadElement(dataview, at, properties, littleEndian) {\n const element = {};\n let result;\n let read = 0;\n for (let i = 0; i < properties.length; i++) {\n if (properties[i].type === 'list') {\n const list = [];\n result = binaryRead(dataview, at + read, properties[i].countType, littleEndian);\n const n = result[0];\n read += result[1];\n for (let j = 0; j < n; j++) {\n result = binaryRead(dataview, at + read, properties[i].itemType, littleEndian);\n // @ts-ignore\n list.push(result[0]);\n read += result[1];\n }\n element[properties[i].name] = list;\n }\n else {\n result = binaryRead(dataview, at + read, properties[i].type, littleEndian);\n element[properties[i].name] = result[0];\n read += result[1];\n }\n }\n return [element, read];\n}\n/**\n * Parses binary data\n * @param data\n * @param header\n * @returns [attributes] of data\n */\nfunction parseBinary(data, header) {\n const attributes = getPLYAttributes(header);\n const littleEndian = header.format === 'binary_little_endian';\n const body = new DataView(data, header.headerLength);\n let result;\n let loc = 0;\n for (let currentElement = 0; currentElement < header.elements.length; currentElement++) {\n const count = header.elements[currentElement].count;\n for (let currentElementCount = 0; currentElementCount < count; currentElementCount++) {\n result = binaryReadElement(body, loc, header.elements[currentElement].properties, littleEndian);\n loc += result[1];\n const element = result[0];\n handleElement(attributes, header.elements[currentElement].name, element);\n }\n }\n return attributes;\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n// PLY Loader, adapted from THREE.js (MIT license)\n//\n// Attributions per original THREE.js source file:\n//\n// @author Wei Meng / http://about.me/menway\n//\n// Description: A loader for PLY ASCII files (known as the Polygon File Format\n// or the Stanford Triangle Format).\n//\n// Limitations: ASCII decoding assumes file is UTF-8.\n//\n// If the PLY file uses non standard property names, they can be mapped while\n// loading. For example, the following maps the properties\n// \u201Cdiffuse_(red|green|blue)\u201D in the file to standard color names.\n//\n// parsePLY(data, {\n// propertyNameMapping: {\n// diffuse_red: 'red',\n// diffuse_green: 'green',\n// diffuse_blue: 'blue'\n// }\n// });\nimport { makeLineIterator, makeTextDecoderIterator, forEach } from '@loaders.gl/loader-utils';\nimport normalizePLY from \"./normalize-ply.js\";\nlet currentElement;\n/**\n * PARSER\n * @param iterator\n * @param options\n */\nexport async function* parsePLYInBatches(iterator, options) {\n const lineIterator = makeLineIterator(makeTextDecoderIterator(iterator));\n const header = await parsePLYHeader(lineIterator, options);\n let attributes;\n switch (header.format) {\n case 'ascii':\n attributes = await parseASCII(lineIterator, header);\n break;\n default:\n throw new Error('Binary PLY can not yet be parsed in streaming mode');\n // attributes = await parseBinary(lineIterator, header);\n }\n yield normalizePLY(header, attributes, options);\n}\n/**\n * Parses header\n * @param lineIterator\n * @param options\n * @returns\n */\nasync function parsePLYHeader(lineIterator, options) {\n const header = {\n comments: [],\n elements: []\n // headerLength\n };\n // Note: forEach does not reset iterator if exiting loop prematurely\n // so that iteration can continue in a second loop\n await forEach(lineIterator, (line) => {\n line = line.trim();\n // End of header\n if (line === 'end_header') {\n return true; // Returning true cancels `forEach`\n }\n // Ignore empty lines\n if (line === '') {\n // eslint-disable-next-line\n return false; // Returning false does not cancel `forEach`\n }\n const lineValues = line.split(/\\s+/);\n const lineType = lineValues.shift();\n line = lineValues.join(' ');\n switch (lineType) {\n case 'ply':\n // First line magic characters, ignore\n break;\n case 'format':\n header.format = lineValues[0];\n header.version = lineValues[1];\n break;\n case 'comment':\n header.comments.push(line);\n break;\n case 'element':\n if (currentElement) {\n header.elements.push(currentElement);\n }\n currentElement = {\n name: lineValues[0],\n count: parseInt(lineValues[1], 10),\n properties: []\n };\n break;\n case 'property':\n const property = makePLYElementProperty(lineValues, options.propertyNameMapping);\n currentElement.properties.push(property);\n break;\n default:\n // eslint-disable-next-line\n console.log('unhandled', lineType, lineValues);\n }\n return false;\n });\n if (currentElement) {\n header.elements.push(currentElement);\n }\n return header;\n}\nfunction makePLYElementProperty(propertyValues, propertyNameMapping) {\n const type = propertyValues[0];\n switch (type) {\n case 'list':\n return {\n type,\n name: propertyValues[3],\n countType: propertyValues[1],\n itemType: propertyValues[2]\n };\n default:\n return {\n type,\n name: propertyValues[1]\n };\n }\n}\n// ASCII PARSING\n/**\n * @param lineIterator\n * @param header\n * @returns\n */\nasync function parseASCII(lineIterator, header) {\n // PLY ascii format specification, as per http://en.wikipedia.org/wiki/PLY_(file_format)\n const attributes = {\n indices: [],\n vertices: [],\n normals: [],\n uvs: [],\n colors: []\n };\n let currentElement = 0;\n let currentElementCount = 0;\n for await (let line of lineIterator) {\n line = line.trim();\n if (line !== '') {\n if (currentElementCount >= header.elements[currentElement].count) {\n currentElement++;\n currentElementCount = 0;\n }\n const element = parsePLYElement(header.elements[currentElement].properties, line);\n handleElement(attributes, header.elements[currentElement].name, element);\n currentElementCount++;\n }\n }\n return attributes;\n}\n/**\n * Parses ASCII number\n * @param n\n * @param type\n * @returns ASCII number\n */\n// eslint-disable-next-line complexity\nfunction parseASCIINumber(n, type) {\n switch (type) {\n case 'char':\n case 'uchar':\n case 'short':\n case 'ushort':\n case 'int':\n case 'uint':\n case 'int8':\n case 'uint8':\n case 'int16':\n case 'uint16':\n case 'int32':\n case 'uint32':\n return parseInt(n, 10);\n case 'float':\n case 'double':\n case 'float32':\n case 'float64':\n return parseFloat(n);\n default:\n throw new Error(type);\n }\n}\n/**\n * Parses ASCII element\n * @param properties\n * @param line\n * @returns element\n */\nfunction parsePLYElement(properties, line) {\n const values = line.split(/\\s+/);\n const element = {};\n for (let i = 0; i < properties.length; i++) {\n if (properties[i].type === 'list') {\n const list = [];\n const n = parseASCIINumber(values.shift(), properties[i].countType);\n for (let j = 0; j < n; j++) {\n list.push(parseASCIINumber(values.shift(), properties[i].itemType));\n }\n element[properties[i].name] = list;\n }\n else {\n element[properties[i].name] = parseASCIINumber(values.shift(), properties[i].type);\n }\n }\n return element;\n}\n/**\n * @param buffer\n * @param elementName\n * @param element\n */\n// HELPER FUNCTIONS\n// eslint-disable-next-line complexity\nfunction handleElement(buffer, elementName, element = {}) {\n switch (elementName) {\n case 'vertex':\n buffer.vertices.push(element.x, element.y, element.z);\n if ('nx' in element && 'ny' in element && 'nz' in element) {\n buffer.normals.push(element.nx, element.ny, element.nz);\n }\n if ('s' in element && 't' in element) {\n buffer.uvs.push(element.s, element.t);\n }\n if ('red' in element && 'green' in element && 'blue' in element) {\n buffer.colors.push(element.red / 255.0, element.green / 255.0, element.blue / 255.0);\n }\n break;\n case 'face':\n const vertexIndices = element.vertex_indices || element.vertex_index; // issue #9338\n if (vertexIndices.length === 3) {\n buffer.indices.push(vertexIndices[0], vertexIndices[1], vertexIndices[2]);\n }\n else if (vertexIndices.length === 4) {\n buffer.indices.push(vertexIndices[0], vertexIndices[1], vertexIndices[3]);\n buffer.indices.push(vertexIndices[1], vertexIndices[2], vertexIndices[3]);\n }\n break;\n default:\n break;\n }\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { parsePLY } from \"./lib/parse-ply.js\";\nimport { parsePLYInBatches } from \"./lib/parse-ply-in-batches.js\";\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof \"4.4.0-alpha.1\" !== 'undefined' ? \"4.4.0-alpha.1\" : 'latest';\n/**\n * Worker loader for PLY - Polygon File Format (aka Stanford Triangle Format)'\n * links: ['http://paulbourke.net/dataformats/ply/',\n * 'https://en.wikipedia.org/wiki/PLY_(file_format)']\n */\nexport const PLYWorkerLoader = {\n dataType: null,\n batchType: null,\n name: 'PLY',\n id: 'ply',\n module: 'ply',\n // shapes: ['mesh', 'gltf', 'columnar-table'],\n version: VERSION,\n worker: true,\n extensions: ['ply'],\n mimeTypes: ['text/plain', 'application/octet-stream'],\n text: true,\n binary: true,\n tests: ['ply'],\n options: {\n ply: {}\n }\n};\n/**\n * Loader for PLY - Polygon File Format\n */\nexport const PLYLoader = {\n ...PLYWorkerLoader,\n // Note: parsePLY supports both text and binary\n parse: async (arrayBuffer, options) => parsePLY(arrayBuffer, options?.ply), // TODO - this may not detect text correctly?\n parseTextSync: (arrayBuffer, options) => parsePLY(arrayBuffer, options?.ply),\n parseSync: (arrayBuffer, options) => parsePLY(arrayBuffer, options?.ply),\n parseInBatches: (arrayBuffer, options) => parsePLYInBatches(arrayBuffer, options?.ply)\n};\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { PLYWorkerLoader } from \"./ply-loader.js\";\nimport { convertMeshToTable } from '@loaders.gl/schema-utils';\nimport { parsePLY } from \"./lib/parse-ply.js\";\n/**\n * Worker loader for PLY -\n */\nexport const PLYArrowLoader = {\n ...PLYWorkerLoader,\n dataType: null,\n batchType: null,\n worker: false,\n parse: async (arrayBuffer) => {\n const mesh = parsePLY(arrayBuffer);\n const arrowTable = convertMeshToTable(mesh, 'arrow-table');\n return arrowTable;\n }\n};\n"],
|
|
5
5
|
"mappings": "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",
|
|
6
6
|
"names": ["import_schema_utils", "currentElement", "parseASCII", "makePLYElementProperty", "currentElement", "parsePLYElement", "handleElement", "parseASCIINumber", "import_schema_utils"]
|
|
7
7
|
}
|
package/dist/ply-loader.js
CHANGED
|
@@ -5,7 +5,7 @@ import { parsePLY } from "./lib/parse-ply.js";
|
|
|
5
5
|
import { parsePLYInBatches } from "./lib/parse-ply-in-batches.js";
|
|
6
6
|
// __VERSION__ is injected by babel-plugin-version-inline
|
|
7
7
|
// @ts-ignore TS2304: Cannot find name '__VERSION__'.
|
|
8
|
-
const VERSION = typeof "4.4.0-alpha.
|
|
8
|
+
const VERSION = typeof "4.4.0-alpha.1" !== 'undefined' ? "4.4.0-alpha.1" : 'latest';
|
|
9
9
|
/**
|
|
10
10
|
* Worker loader for PLY - Polygon File Format (aka Stanford Triangle Format)'
|
|
11
11
|
* links: ['http://paulbourke.net/dataformats/ply/',
|
package/dist/ply-worker.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@loaders.gl/ply",
|
|
3
|
-
"version": "4.4.0-alpha.
|
|
3
|
+
"version": "4.4.0-alpha.2",
|
|
4
4
|
"description": "Framework-independent loader for the PLY format",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -42,12 +42,12 @@
|
|
|
42
42
|
"build-worker": "esbuild src/workers/ply-worker.ts --bundle --outfile=dist/ply-worker.js --define:__VERSION__=\\\"$npm_package_version\\\""
|
|
43
43
|
},
|
|
44
44
|
"dependencies": {
|
|
45
|
-
"@loaders.gl/loader-utils": "4.4.0-alpha.
|
|
46
|
-
"@loaders.gl/schema": "4.4.0-alpha.
|
|
47
|
-
"@loaders.gl/schema-utils": "4.4.0-alpha.
|
|
45
|
+
"@loaders.gl/loader-utils": "4.4.0-alpha.2",
|
|
46
|
+
"@loaders.gl/schema": "4.4.0-alpha.2",
|
|
47
|
+
"@loaders.gl/schema-utils": "4.4.0-alpha.2"
|
|
48
48
|
},
|
|
49
49
|
"peerDependencies": {
|
|
50
|
-
"@loaders.gl/core": "4.4.0-alpha.
|
|
50
|
+
"@loaders.gl/core": "4.4.0-alpha.1"
|
|
51
51
|
},
|
|
52
|
-
"gitHead": "
|
|
52
|
+
"gitHead": "3d9fed050eabdc0812ddf2f4d5fb9914a34ee0c2"
|
|
53
53
|
}
|