@loaders.gl/shapefile 4.0.0-beta.7 → 4.0.0

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/LICENSE CHANGED
@@ -1,9 +1,6 @@
1
- Copyright (c) 2015 Uber Technologies, Inc.
2
-
3
- This software includes parts of PhiloGL (https://github.com/philogb/philogl)
4
- under MIT license. PhiloGL parts Copyright © 2013 Sencha Labs.
1
+ loaders.gl is licensed under the MIT license
5
2
 
6
- This software includes adaptations of postprocessing code from THREE.js (https://github.com/mrdoob/three.js/) under MIT license. Additional attribution given in specific source files. THREE.js parts Copyright © 2010-2018 three.js authors.
3
+ Copyright (c) vis.gl contributors
7
4
 
8
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
9
6
  of this software and associated documentation files (the "Software"), to deal
@@ -23,8 +20,12 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23
20
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24
21
  THE SOFTWARE.
25
22
 
23
+ ---
24
+
25
+ Copyright (c) 2015 Uber Technologies, Inc.
26
26
 
27
- loaders.gl includes certain files from Cesium (https://github.com/AnalyticalGraphicsInc/cesium) under the Apache 2 License:
27
+ loaders.gl includes certain files from Cesium (https://github.com/AnalyticalGraphicsInc/cesium)
28
+ under the Apache 2 License (found in the submodule: modules/3d-tiles):)
28
29
 
29
30
  Copyright 2011-2018 CesiumJS Contributors
30
31
 
@@ -38,4 +39,3 @@ distributed under the License is distributed on an "AS IS" BASIS,
38
39
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
39
40
  See the License for the specific language governing permissions and limitations under the License.
40
41
 
41
- Cesium-derived code can be found in the submodule: modules/3d-tiles
@@ -372,7 +372,7 @@
372
372
  }
373
373
 
374
374
  // src/dbf-loader.ts
375
- var VERSION = true ? "4.0.0-beta.7" : "latest";
375
+ var VERSION = true ? "4.0.0" : "latest";
376
376
  var DBFWorkerLoader = {
377
377
  name: "DBF",
378
378
  id: "dbf",
@@ -1 +1 @@
1
- {"version":3,"file":"binary-chunk-reader.d.ts","sourceRoot":"","sources":["../../../src/lib/streaming/binary-chunk-reader.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,wBAAwB,GAAG;IACrC,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,qBAAa,iBAAiB;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,KAAK,EAAE,OAAO,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;gBAEX,OAAO,CAAC,EAAE,wBAAwB;IAY9C;;OAEG;IACH,KAAK,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;IAIrC,GAAG,IAAI,IAAI;IAKX;;;;;OAKG;IACH,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAWzC;;;;;OAKG;IACH,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,EAAE,GAAG,IAAI;IAwC9C;;;;;OAKG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI;IA8B3C;;OAEG;IACH,cAAc,IAAI,IAAI;IAUtB;;;;;;;;;OASG;IACH,oBAAoB,CAAC,aAAa,EAAE,GAAG,EAAE,GAAG,eAAe;IAoB3D;;OAEG;IACH,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAGzB;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;CAI5B"}
1
+ {"version":3,"file":"binary-chunk-reader.d.ts","sourceRoot":"","sources":["../../../src/lib/streaming/binary-chunk-reader.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,wBAAwB,GAAG;IACrC,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,qBAAa,iBAAiB;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,KAAK,EAAE,OAAO,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;gBAEX,OAAO,CAAC,EAAE,wBAAwB;IAY9C;;OAEG;IACH,KAAK,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;IAIrC,GAAG,IAAI,IAAI;IAKX;;;;;OAKG;IACH,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAWzC;;;;;OAKG;IACH,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,EAAE,GAAG,IAAI;IAwC9C;;;;;OAKG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI;IA8B3C;;OAEG;IACH,cAAc,IAAI,IAAI;IAUtB;;;;;;;;;OASG;IACH,oBAAoB,CAAC,aAAa,EAAE,GAAG,EAAE,GAAG,eAAe;IAoB3D;;OAEG;IACH,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAGzB;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;CAI5B"}
@@ -1 +1 @@
1
- {"version":3,"file":"binary-chunk-reader.js","names":["BinaryChunkReader","constructor","options","offset","arrayBuffers","ended","maxRewindBytes","write","arrayBuffer","push","end","hasAvailableBytes","bytes","bytesAvailable","byteLength","findBufferOffsets","selectedBuffers","i","length","buf","start","Math","abs","getDataView","bufferOffsets","Error","bufferIndex","view","DataView","disposeBuffers","_combineArrayBuffers","shift","bufferOffset","result","Uint8Array","resultOffset","sourceArray","set","subarray","buffer","skip","rewind"],"sources":["../../../src/lib/streaming/binary-chunk-reader.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nexport type BinaryChunkReaderOptions = {\n maxRewindBytes: number;\n};\n\nexport class BinaryChunkReader {\n offset: number;\n arrayBuffers: ArrayBuffer[];\n ended: boolean;\n maxRewindBytes: number;\n\n constructor(options?: BinaryChunkReaderOptions) {\n const {maxRewindBytes = 0} = options || {};\n\n /** current global offset into current array buffer*/\n this.offset = 0;\n /** current buffer from iterator */\n this.arrayBuffers = [];\n this.ended = false;\n\n /** bytes behind offset to hold on to */\n this.maxRewindBytes = maxRewindBytes;\n }\n /**\n * @param arrayBuffer\n */\n write(arrayBuffer: ArrayBuffer): void {\n this.arrayBuffers.push(arrayBuffer);\n }\n\n end(): void {\n this.arrayBuffers = [];\n this.ended = true;\n }\n\n /**\n * Has enough bytes available in array buffers\n *\n * @param bytes Number of bytes\n * @return boolean\n */\n hasAvailableBytes(bytes: number): boolean {\n let bytesAvailable = -this.offset;\n for (const arrayBuffer of this.arrayBuffers) {\n bytesAvailable += arrayBuffer.byteLength;\n if (bytesAvailable >= bytes) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Find offsets of byte ranges within this.arrayBuffers\n *\n * @param bytes Byte length to read\n * @return Arrays with byte ranges pointing to this.arrayBuffers, Output type is nested array, e.g. [ [0, [1, 2]], ...]\n */\n findBufferOffsets(bytes: number): any[] | null {\n let offset = -this.offset;\n const selectedBuffers: any = [];\n\n for (let i = 0; i < this.arrayBuffers.length; i++) {\n const buf = this.arrayBuffers[i];\n\n // Current buffer isn't long enough to reach global offset\n if (offset + buf.byteLength <= 0) {\n offset += buf.byteLength;\n // eslint-disable-next-line no-continue\n continue;\n }\n\n // Find start/end offsets for this buffer\n // When offset < 0, need to skip over Math.abs(offset) bytes\n // When offset > 0, implies bytes in previous buffer, start at 0\n const start = offset <= 0 ? Math.abs(offset) : 0;\n let end: number;\n\n // Length of requested bytes is contained in current buffer\n if (start + bytes <= buf.byteLength) {\n end = start + bytes;\n selectedBuffers.push([i, [start, end]]);\n return selectedBuffers;\n }\n\n // Will need to look into next buffer\n end = buf.byteLength;\n selectedBuffers.push([i, [start, end]]);\n\n // Need to read fewer bytes in next iter\n bytes -= buf.byteLength - start;\n offset += buf.byteLength;\n }\n\n // Should only finish loop if exhausted all arrays\n return null;\n }\n\n /**\n * Get the required number of bytes from the iterator\n *\n * @param bytes Number of bytes\n * @return DataView with data\n */\n getDataView(bytes: number): DataView | null {\n const bufferOffsets = this.findBufferOffsets(bytes);\n // return `null` if not enough data, except if end() already called, in\n // which case throw an error.\n if (!bufferOffsets && this.ended) {\n throw new Error('binary data exhausted');\n }\n\n if (!bufferOffsets) {\n return null;\n }\n\n // If only one arrayBuffer needed, return DataView directly\n if (bufferOffsets.length === 1) {\n const [bufferIndex, [start, end]] = bufferOffsets[0];\n const arrayBuffer = this.arrayBuffers[bufferIndex];\n const view = new DataView(arrayBuffer, start, end - start);\n\n this.offset += bytes;\n this.disposeBuffers();\n return view;\n }\n\n // Concatenate portions of multiple ArrayBuffers\n const view = new DataView(this._combineArrayBuffers(bufferOffsets));\n this.offset += bytes;\n this.disposeBuffers();\n return view;\n }\n\n /**\n * Dispose of old array buffers\n */\n disposeBuffers(): void {\n while (\n this.arrayBuffers.length > 0 &&\n this.offset - this.maxRewindBytes >= this.arrayBuffers[0].byteLength\n ) {\n this.offset -= this.arrayBuffers[0].byteLength;\n this.arrayBuffers.shift();\n }\n }\n\n /**\n * Copy multiple ArrayBuffers into one contiguous ArrayBuffer\n *\n * In contrast to concatenateArrayBuffers, this only copies the necessary\n * portions of the source arrays, rather than first copying the entire arrays\n * then taking a part of them.\n *\n * @param bufferOffsets List of internal array offsets\n * @return New contiguous ArrayBuffer\n */\n _combineArrayBuffers(bufferOffsets: any[]): ArrayBufferLike {\n let byteLength: number = 0;\n for (const bufferOffset of bufferOffsets) {\n const [start, end] = bufferOffset[1];\n byteLength += end - start;\n }\n\n const result = new Uint8Array(byteLength);\n\n // Copy the subarrays\n let resultOffset: number = 0;\n for (const bufferOffset of bufferOffsets) {\n const [bufferIndex, [start, end]] = bufferOffset;\n const sourceArray = new Uint8Array(this.arrayBuffers[bufferIndex]);\n result.set(sourceArray.subarray(start, end), resultOffset);\n resultOffset += end - start;\n }\n\n return result.buffer;\n }\n /**\n * @param bytes\n */\n skip(bytes: number): void {\n this.offset += bytes;\n }\n /**\n * @param bytes\n */\n rewind(bytes: number): void {\n // TODO - only works if offset is already set\n this.offset -= bytes;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"binary-chunk-reader.js","names":["BinaryChunkReader","constructor","options","offset","arrayBuffers","ended","maxRewindBytes","write","arrayBuffer","push","end","hasAvailableBytes","bytes","bytesAvailable","byteLength","findBufferOffsets","selectedBuffers","i","length","buf","start","Math","abs","getDataView","bufferOffsets","Error","bufferIndex","view","DataView","disposeBuffers","_combineArrayBuffers","shift","bufferOffset","result","Uint8Array","resultOffset","sourceArray","set","subarray","buffer","skip","rewind"],"sources":["../../../src/lib/streaming/binary-chunk-reader.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nexport type BinaryChunkReaderOptions = {\n maxRewindBytes: number;\n};\n\nexport class BinaryChunkReader {\n offset: number;\n arrayBuffers: ArrayBuffer[];\n ended: boolean;\n maxRewindBytes: number;\n\n constructor(options?: BinaryChunkReaderOptions) {\n const {maxRewindBytes = 0} = options || {};\n\n /** current global offset into current array buffer*/\n this.offset = 0;\n /** current buffer from iterator */\n this.arrayBuffers = [];\n this.ended = false;\n\n /** bytes behind offset to hold on to */\n this.maxRewindBytes = maxRewindBytes;\n }\n /**\n * @param arrayBuffer\n */\n write(arrayBuffer: ArrayBuffer): void {\n this.arrayBuffers.push(arrayBuffer);\n }\n\n end(): void {\n this.arrayBuffers = [];\n this.ended = true;\n }\n\n /**\n * Has enough bytes available in array buffers\n *\n * @param bytes Number of bytes\n * @return boolean\n */\n hasAvailableBytes(bytes: number): boolean {\n let bytesAvailable = -this.offset;\n for (const arrayBuffer of this.arrayBuffers) {\n bytesAvailable += arrayBuffer.byteLength;\n if (bytesAvailable >= bytes) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Find offsets of byte ranges within this.arrayBuffers\n *\n * @param bytes Byte length to read\n * @return Arrays with byte ranges pointing to this.arrayBuffers, Output type is nested array, e.g. [ [0, [1, 2]], ...]\n */\n findBufferOffsets(bytes: number): any[] | null {\n let offset = -this.offset;\n const selectedBuffers: any = [];\n\n for (let i = 0; i < this.arrayBuffers.length; i++) {\n const buf = this.arrayBuffers[i];\n\n // Current buffer isn't long enough to reach global offset\n if (offset + buf.byteLength <= 0) {\n offset += buf.byteLength;\n // eslint-disable-next-line no-continue\n continue;\n }\n\n // Find start/end offsets for this buffer\n // When offset < 0, need to skip over Math.abs(offset) bytes\n // When offset > 0, implies bytes in previous buffer, start at 0\n const start = offset <= 0 ? Math.abs(offset) : 0;\n let end: number;\n\n // Length of requested bytes is contained in current buffer\n if (start + bytes <= buf.byteLength) {\n end = start + bytes;\n selectedBuffers.push([i, [start, end]]);\n return selectedBuffers;\n }\n\n // Will need to look into next buffer\n end = buf.byteLength;\n selectedBuffers.push([i, [start, end]]);\n\n // Need to read fewer bytes in next iter\n bytes -= buf.byteLength - start;\n offset += buf.byteLength;\n }\n\n // Should only finish loop if exhausted all arrays\n return null;\n }\n\n /**\n * Get the required number of bytes from the iterator\n *\n * @param bytes Number of bytes\n * @return DataView with data\n */\n getDataView(bytes: number): DataView | null {\n const bufferOffsets = this.findBufferOffsets(bytes);\n // return `null` if not enough data, except if end() already called, in\n // which case throw an error.\n if (!bufferOffsets && this.ended) {\n throw new Error('binary data exhausted');\n }\n\n if (!bufferOffsets) {\n return null;\n }\n\n // If only one arrayBuffer needed, return DataView directly\n if (bufferOffsets.length === 1) {\n const [bufferIndex, [start, end]] = bufferOffsets[0];\n const arrayBuffer = this.arrayBuffers[bufferIndex];\n const view = new DataView(arrayBuffer, start, end - start);\n\n this.offset += bytes;\n this.disposeBuffers();\n return view;\n }\n\n // Concatenate portions of multiple ArrayBuffers\n const view = new DataView(this._combineArrayBuffers(bufferOffsets));\n this.offset += bytes;\n this.disposeBuffers();\n return view;\n }\n\n /**\n * Dispose of old array buffers\n */\n disposeBuffers(): void {\n while (\n this.arrayBuffers.length > 0 &&\n this.offset - this.maxRewindBytes >= this.arrayBuffers[0].byteLength\n ) {\n this.offset -= this.arrayBuffers[0].byteLength;\n this.arrayBuffers.shift();\n }\n }\n\n /**\n * Copy multiple ArrayBuffers into one contiguous ArrayBuffer\n *\n * In contrast to concatenateArrayBuffers, this only copies the necessary\n * portions of the source arrays, rather than first copying the entire arrays\n * then taking a part of them.\n *\n * @param bufferOffsets List of internal array offsets\n * @return New contiguous ArrayBuffer\n */\n _combineArrayBuffers(bufferOffsets: any[]): ArrayBufferLike {\n let byteLength: number = 0;\n for (const bufferOffset of bufferOffsets) {\n const [start, end] = bufferOffset[1];\n byteLength += end - start;\n }\n\n const result = new Uint8Array(byteLength);\n\n // Copy the subarrays\n let resultOffset: number = 0;\n for (const bufferOffset of bufferOffsets) {\n const [bufferIndex, [start, end]] = bufferOffset;\n const sourceArray = new Uint8Array(this.arrayBuffers[bufferIndex]);\n result.set(sourceArray.subarray(start, end), resultOffset);\n resultOffset += end - start;\n }\n\n return result.buffer;\n }\n /**\n * @param bytes\n */\n skip(bytes: number): void {\n this.offset += bytes;\n }\n /**\n * @param bytes\n */\n rewind(bytes: number): void {\n // TODO - only works if offset is already set\n this.offset -= bytes;\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"binary-reader.d.ts","sourceRoot":"","sources":["../../../src/lib/streaming/binary-reader.ts"],"names":[],"mappings":"AAEA,qBAAa,YAAY;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,WAAW,CAAC;gBAEb,WAAW,EAAE,WAAW;IAMpC;;;;;OAKG;IACH,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAIzC;;;;;OAKG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ;IAYpC;;;;OAIG;IACH,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIzB;;;;OAIG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;CAG5B"}
1
+ {"version":3,"file":"binary-reader.d.ts","sourceRoot":"","sources":["../../../src/lib/streaming/binary-reader.ts"],"names":[],"mappings":"AAGA,qBAAa,YAAY;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,WAAW,CAAC;gBAEb,WAAW,EAAE,WAAW;IAMpC;;;;;OAKG;IACH,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAIzC;;;;;OAKG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ;IAYpC;;;;OAIG;IACH,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIzB;;;;OAIG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;CAG5B"}
@@ -1 +1 @@
1
- {"version":3,"file":"binary-reader.js","names":["BinaryReader","constructor","arrayBuffer","offset","hasAvailableBytes","bytes","byteLength","getDataView","Error","dataView","DataView","skip","rewind"],"sources":["../../../src/lib/streaming/binary-reader.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nexport class BinaryReader {\n offset: number;\n arrayBuffer: ArrayBuffer;\n\n constructor(arrayBuffer: ArrayBuffer) {\n /** current global (stream) offset */\n this.offset = 0;\n /** current buffer from iterator */\n this.arrayBuffer = arrayBuffer;\n }\n /**\n * Checks if there are available bytes in data\n *\n * @param bytes\n * @returns boolean\n */\n hasAvailableBytes(bytes: number): boolean {\n return this.arrayBuffer.byteLength - this.offset >= bytes;\n }\n\n /**\n * Get the required number of bytes from the iterator\n *\n * @param bytes\n * @returns Dataview\n */\n getDataView(bytes: number): DataView {\n if (bytes && !this.hasAvailableBytes(bytes)) {\n throw new Error('binary data exhausted');\n }\n\n const dataView = bytes\n ? new DataView(this.arrayBuffer, this.offset, bytes)\n : new DataView(this.arrayBuffer, this.offset);\n this.offset += bytes;\n return dataView;\n }\n\n /**\n * Skipping\n *\n * @param bytes\n */\n skip(bytes: number): void {\n this.offset += bytes;\n }\n\n /**\n * Rewinding\n *\n * @param bytes\n */\n rewind(bytes: number): void {\n this.offset -= bytes;\n }\n}\n"],"mappings":"AAEA,OAAO,MAAMA,YAAY,CAAC;EAIxBC,WAAWA,CAACC,WAAwB,EAAE;IAAA,KAHtCC,MAAM;IAAA,KACND,WAAW;IAIT,IAAI,CAACC,MAAM,GAAG,CAAC;IAEf,IAAI,CAACD,WAAW,GAAGA,WAAW;EAChC;EAOAE,iBAAiBA,CAACC,KAAa,EAAW;IACxC,OAAO,IAAI,CAACH,WAAW,CAACI,UAAU,GAAG,IAAI,CAACH,MAAM,IAAIE,KAAK;EAC3D;EAQAE,WAAWA,CAACF,KAAa,EAAY;IACnC,IAAIA,KAAK,IAAI,CAAC,IAAI,CAACD,iBAAiB,CAACC,KAAK,CAAC,EAAE;MAC3C,MAAM,IAAIG,KAAK,CAAC,uBAAuB,CAAC;IAC1C;IAEA,MAAMC,QAAQ,GAAGJ,KAAK,GAClB,IAAIK,QAAQ,CAAC,IAAI,CAACR,WAAW,EAAE,IAAI,CAACC,MAAM,EAAEE,KAAK,CAAC,GAClD,IAAIK,QAAQ,CAAC,IAAI,CAACR,WAAW,EAAE,IAAI,CAACC,MAAM,CAAC;IAC/C,IAAI,CAACA,MAAM,IAAIE,KAAK;IACpB,OAAOI,QAAQ;EACjB;EAOAE,IAAIA,CAACN,KAAa,EAAQ;IACxB,IAAI,CAACF,MAAM,IAAIE,KAAK;EACtB;EAOAO,MAAMA,CAACP,KAAa,EAAQ;IAC1B,IAAI,CAACF,MAAM,IAAIE,KAAK;EACtB;AACF"}
1
+ {"version":3,"file":"binary-reader.js","names":["BinaryReader","constructor","arrayBuffer","offset","hasAvailableBytes","bytes","byteLength","getDataView","Error","dataView","DataView","skip","rewind"],"sources":["../../../src/lib/streaming/binary-reader.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nexport class BinaryReader {\n offset: number;\n arrayBuffer: ArrayBuffer;\n\n constructor(arrayBuffer: ArrayBuffer) {\n /** current global (stream) offset */\n this.offset = 0;\n /** current buffer from iterator */\n this.arrayBuffer = arrayBuffer;\n }\n /**\n * Checks if there are available bytes in data\n *\n * @param bytes\n * @returns boolean\n */\n hasAvailableBytes(bytes: number): boolean {\n return this.arrayBuffer.byteLength - this.offset >= bytes;\n }\n\n /**\n * Get the required number of bytes from the iterator\n *\n * @param bytes\n * @returns Dataview\n */\n getDataView(bytes: number): DataView {\n if (bytes && !this.hasAvailableBytes(bytes)) {\n throw new Error('binary data exhausted');\n }\n\n const dataView = bytes\n ? new DataView(this.arrayBuffer, this.offset, bytes)\n : new DataView(this.arrayBuffer, this.offset);\n this.offset += bytes;\n return dataView;\n }\n\n /**\n * Skipping\n *\n * @param bytes\n */\n skip(bytes: number): void {\n this.offset += bytes;\n }\n\n /**\n * Rewinding\n *\n * @param bytes\n */\n rewind(bytes: number): void {\n this.offset -= bytes;\n }\n}\n"],"mappings":"AAGA,OAAO,MAAMA,YAAY,CAAC;EAIxBC,WAAWA,CAACC,WAAwB,EAAE;IAAA,KAHtCC,MAAM;IAAA,KACND,WAAW;IAIT,IAAI,CAACC,MAAM,GAAG,CAAC;IAEf,IAAI,CAACD,WAAW,GAAGA,WAAW;EAChC;EAOAE,iBAAiBA,CAACC,KAAa,EAAW;IACxC,OAAO,IAAI,CAACH,WAAW,CAACI,UAAU,GAAG,IAAI,CAACH,MAAM,IAAIE,KAAK;EAC3D;EAQAE,WAAWA,CAACF,KAAa,EAAY;IACnC,IAAIA,KAAK,IAAI,CAAC,IAAI,CAACD,iBAAiB,CAACC,KAAK,CAAC,EAAE;MAC3C,MAAM,IAAIG,KAAK,CAAC,uBAAuB,CAAC;IAC1C;IAEA,MAAMC,QAAQ,GAAGJ,KAAK,GAClB,IAAIK,QAAQ,CAAC,IAAI,CAACR,WAAW,EAAE,IAAI,CAACC,MAAM,EAAEE,KAAK,CAAC,GAClD,IAAIK,QAAQ,CAAC,IAAI,CAACR,WAAW,EAAE,IAAI,CAACC,MAAM,CAAC;IAC/C,IAAI,CAACA,MAAM,IAAIE,KAAK;IACpB,OAAOI,QAAQ;EACjB;EAOAE,IAAIA,CAACN,KAAa,EAAQ;IACxB,IAAI,CAACF,MAAM,IAAIE,KAAK;EACtB;EAOAO,MAAMA,CAACP,KAAa,EAAQ;IAC1B,IAAI,CAACF,MAAM,IAAIE,KAAK;EACtB;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"zip-batch-iterators.d.ts","sourceRoot":"","sources":["../../../src/lib/streaming/zip-batch-iterators.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,mBAAmB,EAAE,kBAAkB,EAAC,MAAM,oBAAoB,CAAC;AAEhF,KAAK,aAAa,GAAG,mBAAmB,GAAG,kBAAkB,CAAC;AAE9D;;;;;GAKG;AACH,wBAAuB,iBAAiB,CACtC,SAAS,EAAE,aAAa,CAAC,aAAa,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,EACjE,SAAS,EAAE,aAAa,CAAC,aAAa,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,EACjE,KAAK,EAAE,kBAAkB,GAAG,iBAAiB,GAC5C,cAAc,CAAC,aAAa,EAAE,IAAI,EAAE,OAAO,CAAC,CAqC9C"}
1
+ {"version":3,"file":"zip-batch-iterators.d.ts","sourceRoot":"","sources":["../../../src/lib/streaming/zip-batch-iterators.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,mBAAmB,EAAE,kBAAkB,EAAC,MAAM,oBAAoB,CAAC;AAEhF,KAAK,aAAa,GAAG,mBAAmB,GAAG,kBAAkB,CAAC;AAE9D;;;;;GAKG;AACH,wBAAuB,iBAAiB,CACtC,SAAS,EAAE,aAAa,CAAC,aAAa,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,EACjE,SAAS,EAAE,aAAa,CAAC,aAAa,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,EACjE,KAAK,EAAE,kBAAkB,GAAG,iBAAiB,GAC5C,cAAc,CAAC,aAAa,EAAE,IAAI,EAAE,OAAO,CAAC,CAqC9C"}
@@ -1 +1 @@
1
- {"version":3,"file":"zip-batch-iterators.js","names":["zipBatchIterators","iterator1","iterator2","shape","batch1Data","batch2Data","iterator1Done","iterator2Done","length","value","done","next","push","batchData","extractBatchData","batchType","data","batch1","batch2","batchLength","Math","min","batch","slice","splice"],"sources":["../../../src/lib/streaming/zip-batch-iterators.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport type {ObjectRowTableBatch, ArrayRowTableBatch} from '@loaders.gl/schema';\n\ntype RowTableBatch = ObjectRowTableBatch | ArrayRowTableBatch;\n\n/**\n * Zip two iterators together\n *\n * @param iterator1\n * @param iterator2\n */\nexport async function* zipBatchIterators(\n iterator1: AsyncIterator<RowTableBatch> | Iterator<RowTableBatch>,\n iterator2: AsyncIterator<RowTableBatch> | Iterator<RowTableBatch>,\n shape: 'object-row-table' | 'array-row-table'\n): AsyncGenerator<RowTableBatch, void, unknown> {\n const batch1Data: unknown[] = [];\n const batch2Data: unknown[] = [];\n let iterator1Done: boolean = false;\n let iterator2Done: boolean = false;\n\n // TODO - one could let all iterators flow at full speed using `Promise.race`\n // however we might end up with a big temporary buffer\n while (!iterator1Done && !iterator2Done) {\n if (batch1Data.length === 0 && !iterator1Done) {\n const {value, done} = await iterator1.next();\n if (done) {\n iterator1Done = true;\n } else {\n // @ts-expect-error\n batch1Data.push(...value);\n }\n }\n if (batch2Data.length === 0 && !iterator2Done) {\n const {value, done} = await iterator2.next();\n if (done) {\n iterator2Done = true;\n } else {\n batch2Data.push(...value);\n }\n }\n\n const batchData = extractBatchData(batch1Data, batch2Data);\n if (batchData) {\n yield {\n batchType: 'data',\n shape,\n length: batchData.length,\n data: batchData\n };\n }\n }\n}\n\n/**\n * Extract batch of same length from two batches\n *\n * @param batch1\n * @param batch2\n * @return array | null\n */\nfunction extractBatchData(batch1: any[], batch2: any[]): any[] | null {\n const batchLength: number = Math.min(batch1.length, batch2.length);\n if (batchLength === 0) {\n return null;\n }\n\n // Non interleaved arrays\n const batch: any[] = [batch1.slice(0, batchLength), batch2.slice(0, batchLength)];\n\n // Modify the 2 batches\n batch1.splice(0, batchLength);\n batch2.splice(0, batchLength);\n return batch;\n}\n"],"mappings":"AAYA,OAAO,gBAAgBA,iBAAiBA,CACtCC,SAAiE,EACjEC,SAAiE,EACjEC,KAA6C,EACC;EAC9C,MAAMC,UAAqB,GAAG,EAAE;EAChC,MAAMC,UAAqB,GAAG,EAAE;EAChC,IAAIC,aAAsB,GAAG,KAAK;EAClC,IAAIC,aAAsB,GAAG,KAAK;EAIlC,OAAO,CAACD,aAAa,IAAI,CAACC,aAAa,EAAE;IACvC,IAAIH,UAAU,CAACI,MAAM,KAAK,CAAC,IAAI,CAACF,aAAa,EAAE;MAC7C,MAAM;QAACG,KAAK;QAAEC;MAAI,CAAC,GAAG,MAAMT,SAAS,CAACU,IAAI,CAAC,CAAC;MAC5C,IAAID,IAAI,EAAE;QACRJ,aAAa,GAAG,IAAI;MACtB,CAAC,MAAM;QAELF,UAAU,CAACQ,IAAI,CAAC,GAAGH,KAAK,CAAC;MAC3B;IACF;IACA,IAAIJ,UAAU,CAACG,MAAM,KAAK,CAAC,IAAI,CAACD,aAAa,EAAE;MAC7C,MAAM;QAACE,KAAK;QAAEC;MAAI,CAAC,GAAG,MAAMR,SAAS,CAACS,IAAI,CAAC,CAAC;MAC5C,IAAID,IAAI,EAAE;QACRH,aAAa,GAAG,IAAI;MACtB,CAAC,MAAM;QACLF,UAAU,CAACO,IAAI,CAAC,GAAGH,KAAK,CAAC;MAC3B;IACF;IAEA,MAAMI,SAAS,GAAGC,gBAAgB,CAACV,UAAU,EAAEC,UAAU,CAAC;IAC1D,IAAIQ,SAAS,EAAE;MACb,MAAM;QACJE,SAAS,EAAE,MAAM;QACjBZ,KAAK;QACLK,MAAM,EAAEK,SAAS,CAACL,MAAM;QACxBQ,IAAI,EAAEH;MACR,CAAC;IACH;EACF;AACF;AASA,SAASC,gBAAgBA,CAACG,MAAa,EAAEC,MAAa,EAAgB;EACpE,MAAMC,WAAmB,GAAGC,IAAI,CAACC,GAAG,CAACJ,MAAM,CAACT,MAAM,EAAEU,MAAM,CAACV,MAAM,CAAC;EAClE,IAAIW,WAAW,KAAK,CAAC,EAAE;IACrB,OAAO,IAAI;EACb;EAGA,MAAMG,KAAY,GAAG,CAACL,MAAM,CAACM,KAAK,CAAC,CAAC,EAAEJ,WAAW,CAAC,EAAED,MAAM,CAACK,KAAK,CAAC,CAAC,EAAEJ,WAAW,CAAC,CAAC;EAGjFF,MAAM,CAACO,MAAM,CAAC,CAAC,EAAEL,WAAW,CAAC;EAC7BD,MAAM,CAACM,MAAM,CAAC,CAAC,EAAEL,WAAW,CAAC;EAC7B,OAAOG,KAAK;AACd"}
1
+ {"version":3,"file":"zip-batch-iterators.js","names":["zipBatchIterators","iterator1","iterator2","shape","batch1Data","batch2Data","iterator1Done","iterator2Done","length","value","done","next","push","batchData","extractBatchData","batchType","data","batch1","batch2","batchLength","Math","min","batch","slice","splice"],"sources":["../../../src/lib/streaming/zip-batch-iterators.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nimport type {ObjectRowTableBatch, ArrayRowTableBatch} from '@loaders.gl/schema';\n\ntype RowTableBatch = ObjectRowTableBatch | ArrayRowTableBatch;\n\n/**\n * Zip two iterators together\n *\n * @param iterator1\n * @param iterator2\n */\nexport async function* zipBatchIterators(\n iterator1: AsyncIterator<RowTableBatch> | Iterator<RowTableBatch>,\n iterator2: AsyncIterator<RowTableBatch> | Iterator<RowTableBatch>,\n shape: 'object-row-table' | 'array-row-table'\n): AsyncGenerator<RowTableBatch, void, unknown> {\n const batch1Data: unknown[] = [];\n const batch2Data: unknown[] = [];\n let iterator1Done: boolean = false;\n let iterator2Done: boolean = false;\n\n // TODO - one could let all iterators flow at full speed using `Promise.race`\n // however we might end up with a big temporary buffer\n while (!iterator1Done && !iterator2Done) {\n if (batch1Data.length === 0 && !iterator1Done) {\n const {value, done} = await iterator1.next();\n if (done) {\n iterator1Done = true;\n } else {\n // @ts-expect-error\n batch1Data.push(...value);\n }\n }\n if (batch2Data.length === 0 && !iterator2Done) {\n const {value, done} = await iterator2.next();\n if (done) {\n iterator2Done = true;\n } else {\n batch2Data.push(...value);\n }\n }\n\n const batchData = extractBatchData(batch1Data, batch2Data);\n if (batchData) {\n yield {\n batchType: 'data',\n shape,\n length: batchData.length,\n data: batchData\n };\n }\n }\n}\n\n/**\n * Extract batch of same length from two batches\n *\n * @param batch1\n * @param batch2\n * @return array | null\n */\nfunction extractBatchData(batch1: any[], batch2: any[]): any[] | null {\n const batchLength: number = Math.min(batch1.length, batch2.length);\n if (batchLength === 0) {\n return null;\n }\n\n // Non interleaved arrays\n const batch: any[] = [batch1.slice(0, batchLength), batch2.slice(0, batchLength)];\n\n // Modify the 2 batches\n batch1.splice(0, batchLength);\n batch2.splice(0, batchLength);\n return batch;\n}\n"],"mappings":"AAaA,OAAO,gBAAgBA,iBAAiBA,CACtCC,SAAiE,EACjEC,SAAiE,EACjEC,KAA6C,EACC;EAC9C,MAAMC,UAAqB,GAAG,EAAE;EAChC,MAAMC,UAAqB,GAAG,EAAE;EAChC,IAAIC,aAAsB,GAAG,KAAK;EAClC,IAAIC,aAAsB,GAAG,KAAK;EAIlC,OAAO,CAACD,aAAa,IAAI,CAACC,aAAa,EAAE;IACvC,IAAIH,UAAU,CAACI,MAAM,KAAK,CAAC,IAAI,CAACF,aAAa,EAAE;MAC7C,MAAM;QAACG,KAAK;QAAEC;MAAI,CAAC,GAAG,MAAMT,SAAS,CAACU,IAAI,CAAC,CAAC;MAC5C,IAAID,IAAI,EAAE;QACRJ,aAAa,GAAG,IAAI;MACtB,CAAC,MAAM;QAELF,UAAU,CAACQ,IAAI,CAAC,GAAGH,KAAK,CAAC;MAC3B;IACF;IACA,IAAIJ,UAAU,CAACG,MAAM,KAAK,CAAC,IAAI,CAACD,aAAa,EAAE;MAC7C,MAAM;QAACE,KAAK;QAAEC;MAAI,CAAC,GAAG,MAAMR,SAAS,CAACS,IAAI,CAAC,CAAC;MAC5C,IAAID,IAAI,EAAE;QACRH,aAAa,GAAG,IAAI;MACtB,CAAC,MAAM;QACLF,UAAU,CAACO,IAAI,CAAC,GAAGH,KAAK,CAAC;MAC3B;IACF;IAEA,MAAMI,SAAS,GAAGC,gBAAgB,CAACV,UAAU,EAAEC,UAAU,CAAC;IAC1D,IAAIQ,SAAS,EAAE;MACb,MAAM;QACJE,SAAS,EAAE,MAAM;QACjBZ,KAAK;QACLK,MAAM,EAAEK,SAAS,CAACL,MAAM;QACxBQ,IAAI,EAAEH;MACR,CAAC;IACH;EACF;AACF;AASA,SAASC,gBAAgBA,CAACG,MAAa,EAAEC,MAAa,EAAgB;EACpE,MAAMC,WAAmB,GAAGC,IAAI,CAACC,GAAG,CAACJ,MAAM,CAACT,MAAM,EAAEU,MAAM,CAACV,MAAM,CAAC;EAClE,IAAIW,WAAW,KAAK,CAAC,EAAE;IACrB,OAAO,IAAI;EACb;EAGA,MAAMG,KAAY,GAAG,CAACL,MAAM,CAACM,KAAK,CAAC,CAAC,EAAEJ,WAAW,CAAC,EAAED,MAAM,CAACK,KAAK,CAAC,CAAC,EAAEJ,WAAW,CAAC,CAAC;EAGjFF,MAAM,CAACO,MAAM,CAAC,CAAC,EAAEL,WAAW,CAAC;EAC7BD,MAAM,CAACM,MAAM,CAAC,CAAC,EAAEL,WAAW,CAAC;EAC7B,OAAOG,KAAK;AACd"}
@@ -480,7 +480,7 @@
480
480
  }
481
481
 
482
482
  // src/shp-loader.ts
483
- var VERSION = true ? "4.0.0-beta.7" : "latest";
483
+ var VERSION = true ? "4.0.0" : "latest";
484
484
  var SHP_MAGIC_NUMBER2 = [0, 0, 39, 10];
485
485
  var SHPWorkerLoader = {
486
486
  name: "SHP",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@loaders.gl/shapefile",
3
3
  "description": "Loader for the Shapefile Format",
4
- "version": "4.0.0-beta.7",
4
+ "version": "4.0.0",
5
5
  "license": "MIT",
6
6
  "type": "module",
7
7
  "publishConfig": {
@@ -44,10 +44,10 @@
44
44
  "build-worker-dbf": "esbuild src/workers/dbf-worker.ts --bundle --outfile=dist/dbf-worker.js --define:__VERSION__=\\\"$npm_package_version\\\""
45
45
  },
46
46
  "dependencies": {
47
- "@loaders.gl/gis": "4.0.0-beta.7",
48
- "@loaders.gl/loader-utils": "4.0.0-beta.7",
49
- "@loaders.gl/schema": "4.0.0-beta.7",
47
+ "@loaders.gl/gis": "4.0.0",
48
+ "@loaders.gl/loader-utils": "4.0.0",
49
+ "@loaders.gl/schema": "4.0.0",
50
50
  "@math.gl/proj4": "^4.0.0"
51
51
  },
52
- "gitHead": "5b6cab0ab5d73212cfa37fa5da6e25ad7ef83fe5"
52
+ "gitHead": "9b4211dc0ecd4134a1638ac0a29c5ea9008fd971"
53
53
  }
@@ -1,4 +1,5 @@
1
1
  // loaders.gl, MIT license
2
+ // Copyright (c) vis.gl contributors
2
3
 
3
4
  export type BinaryChunkReaderOptions = {
4
5
  maxRewindBytes: number;
@@ -1,4 +1,5 @@
1
1
  // loaders.gl, MIT license
2
+ // Copyright (c) vis.gl contributors
2
3
 
3
4
  export class BinaryReader {
4
5
  offset: number;
@@ -1,4 +1,5 @@
1
1
  // loaders.gl, MIT license
2
+ // Copyright (c) vis.gl contributors
2
3
 
3
4
  import type {ObjectRowTableBatch, ArrayRowTableBatch} from '@loaders.gl/schema';
4
5