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

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.
@@ -174,7 +174,7 @@
174
174
  dbfParser.write(arrayBuffer);
175
175
  dbfParser.end();
176
176
  const { data, schema } = dbfParser.result;
177
- const shape = options?.tables?.format || options?.dbf?.shape;
177
+ const shape = options?.dbf?.shape;
178
178
  switch (shape) {
179
179
  case "object-row-table": {
180
180
  const table = {
@@ -372,7 +372,7 @@
372
372
  }
373
373
 
374
374
  // src/dbf-loader.ts
375
- var VERSION = true ? "4.0.0-beta.5" : "latest";
375
+ var VERSION = true ? "4.0.0-beta.7" : "latest";
376
376
  var DBFWorkerLoader = {
377
377
  name: "DBF",
378
378
  id: "dbf",
package/dist/dist.dev.js CHANGED
@@ -6161,7 +6161,7 @@ var __exports__ = (() => {
6161
6161
  data,
6162
6162
  schema
6163
6163
  } = dbfParser.result;
6164
- const shape = options?.tables?.format || options?.dbf?.shape;
6164
+ const shape = options?.dbf?.shape;
6165
6165
  switch (shape) {
6166
6166
  case "object-row-table": {
6167
6167
  const table = {
package/dist/index.cjs CHANGED
@@ -637,13 +637,13 @@ var DBFParser = class {
637
637
  }
638
638
  };
639
639
  function parseDBF(arrayBuffer, options = {}) {
640
- var _a, _b;
640
+ var _a;
641
641
  const { encoding = "latin1" } = options.dbf || {};
642
642
  const dbfParser = new DBFParser({ encoding });
643
643
  dbfParser.write(arrayBuffer);
644
644
  dbfParser.end();
645
645
  const { data, schema } = dbfParser.result;
646
- const shape = ((_a = options == null ? void 0 : options.tables) == null ? void 0 : _a.format) || ((_b = options == null ? void 0 : options.dbf) == null ? void 0 : _b.shape);
646
+ const shape = (_a = options == null ? void 0 : options.dbf) == null ? void 0 : _a.shape;
647
647
  switch (shape) {
648
648
  case "object-row-table": {
649
649
  const table = {
@@ -33,7 +33,7 @@ class DBFParser {
33
33
  }
34
34
  }
35
35
  export function parseDBF(arrayBuffer) {
36
- var _options$tables, _options$dbf;
36
+ var _options$dbf;
37
37
  let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
38
38
  const {
39
39
  encoding = 'latin1'
@@ -47,7 +47,7 @@ export function parseDBF(arrayBuffer) {
47
47
  data,
48
48
  schema
49
49
  } = dbfParser.result;
50
- const shape = (options === null || options === void 0 ? void 0 : (_options$tables = options.tables) === null || _options$tables === void 0 ? void 0 : _options$tables.format) || (options === null || options === void 0 ? void 0 : (_options$dbf = options.dbf) === null || _options$dbf === void 0 ? void 0 : _options$dbf.shape);
50
+ const shape = options === null || options === void 0 ? void 0 : (_options$dbf = options.dbf) === null || _options$dbf === void 0 ? void 0 : _options$dbf.shape;
51
51
  switch (shape) {
52
52
  case 'object-row-table':
53
53
  {
@@ -1 +1 @@
1
- {"version":3,"file":"parse-dbf.js","names":["BinaryChunkReader","LITTLE_ENDIAN","DBF_HEADER_SIZE","STATE","DBFParser","constructor","options","binaryReader","textDecoder","state","START","result","data","TextDecoder","encoding","write","arrayBuffer","parseState","end","END","ERROR","error","parseDBF","_options$tables","_options$dbf","arguments","length","undefined","dbf","dbfParser","schema","shape","tables","format","table","rows","parseDBFInBatches","asyncIterator","parser","headerReturned","dbfHeader","e","Promise","reject","dataView","getDataView","parseDBFHeader","progress","bytesUsed","rowsTotal","nRecords","FIELD_DESCRIPTORS","fieldDescriptorView","headerLength","dbfFields","parseFieldDescriptors","fields","map","dbfField","makeField","metadata","FIELD_PROPERTIES","skip","recordLength","recordView","row","parseRow","push","message","headerView","year","getUint8","month","day","getUint32","getUint16","languageDriver","view","nFields","byteLength","offset","i","name","decode","Uint8Array","buffer","byteOffset","replace","dataType","String","fromCharCode","fieldLength","decimal","out","field","text","parseField","parseNumber","parseCharacter","parseDate","parseBoolean","Error","str","Date","UTC","slice","parseInt","value","test","number","parseFloat","isNaN","trim","_ref","type","nullable"],"sources":["../../../src/lib/parsers/parse-dbf.ts"],"sourcesContent":["import {Field, ObjectRowTable} from '@loaders.gl/schema';\nimport {BinaryChunkReader} from '../streaming/binary-chunk-reader';\nimport {\n DBFLoaderOptions,\n DBFResult,\n DBFTableOutput,\n DBFHeader,\n DBFRowsOutput,\n DBFField\n} from './types';\n\nconst LITTLE_ENDIAN = true;\nconst DBF_HEADER_SIZE = 32;\n\nenum STATE {\n START = 0, // Expecting header\n FIELD_DESCRIPTORS = 1,\n FIELD_PROPERTIES = 2,\n END = 3,\n ERROR = 4\n}\n\nclass DBFParser {\n binaryReader = new BinaryChunkReader();\n textDecoder: TextDecoder;\n state = STATE.START;\n result: DBFResult = {\n data: []\n };\n\n constructor(options: {encoding: string}) {\n this.textDecoder = new TextDecoder(options.encoding);\n }\n\n /**\n * @param arrayBuffer\n */\n write(arrayBuffer: ArrayBuffer): void {\n this.binaryReader.write(arrayBuffer);\n this.state = parseState(this.state, this.result, this.binaryReader, this.textDecoder);\n // this.result.progress.bytesUsed = this.binaryReader.bytesUsed();\n\n // important events:\n // - schema available\n // - first rows available\n // - all rows available\n }\n\n end(): void {\n this.binaryReader.end();\n this.state = parseState(this.state, this.result, this.binaryReader, this.textDecoder);\n // this.result.progress.bytesUsed = this.binaryReader.bytesUsed();\n if (this.state !== STATE.END) {\n this.state = STATE.ERROR;\n this.result.error = 'DBF incomplete file';\n }\n }\n}\n\n/**\n * @param arrayBuffer\n * @param options\n * @returns DBFTable or rows\n */\nexport function parseDBF(\n arrayBuffer: ArrayBuffer,\n options: DBFLoaderOptions = {}\n): DBFRowsOutput | DBFTableOutput | ObjectRowTable {\n const {encoding = 'latin1'} = options.dbf || {};\n\n const dbfParser = new DBFParser({encoding});\n dbfParser.write(arrayBuffer);\n dbfParser.end();\n\n const {data, schema} = dbfParser.result;\n const shape = options?.tables?.format || options?.dbf?.shape;\n switch (shape) {\n case 'object-row-table': {\n const table: ObjectRowTable = {\n shape: 'object-row-table',\n schema,\n data\n };\n return table;\n }\n case 'table':\n return {schema, rows: data};\n case 'rows':\n default:\n return data;\n }\n}\n/**\n * @param asyncIterator\n * @param options\n */\nexport async function* parseDBFInBatches(\n asyncIterator: AsyncIterable<ArrayBuffer> | Iterable<ArrayBuffer>,\n options: DBFLoaderOptions = {}\n): AsyncIterable<DBFHeader | DBFRowsOutput | DBFTableOutput> {\n const {encoding = 'latin1'} = options.dbf || {};\n\n const parser = new DBFParser({encoding});\n let headerReturned = false;\n for await (const arrayBuffer of asyncIterator) {\n parser.write(arrayBuffer);\n if (!headerReturned && parser.result.dbfHeader) {\n headerReturned = true;\n yield parser.result.dbfHeader;\n }\n\n if (parser.result.data.length > 0) {\n yield parser.result.data;\n parser.result.data = [];\n }\n }\n parser.end();\n if (parser.result.data.length > 0) {\n yield parser.result.data;\n }\n}\n/**\n * https://www.dbase.com/Knowledgebase/INT/db7_file_fmt.htm\n * @param state\n * @param result\n * @param binaryReader\n * @param textDecoder\n * @returns\n */\n/* eslint-disable complexity, max-depth */\nfunction parseState(\n state: STATE,\n result: DBFResult,\n binaryReader: BinaryChunkReader,\n textDecoder: TextDecoder\n): STATE {\n // eslint-disable-next-line no-constant-condition\n while (true) {\n try {\n switch (state) {\n case STATE.ERROR:\n case STATE.END:\n return state;\n\n case STATE.START:\n // Parse initial file header\n // DBF Header\n const dataView = binaryReader.getDataView(DBF_HEADER_SIZE);\n if (!dataView) {\n return state;\n }\n result.dbfHeader = parseDBFHeader(dataView);\n result.progress = {\n bytesUsed: 0,\n rowsTotal: result.dbfHeader.nRecords,\n rows: 0\n };\n state = STATE.FIELD_DESCRIPTORS;\n break;\n\n case STATE.FIELD_DESCRIPTORS:\n // Parse DBF field descriptors (schema)\n const fieldDescriptorView = binaryReader.getDataView(\n // @ts-ignore\n result.dbfHeader.headerLength - DBF_HEADER_SIZE\n );\n if (!fieldDescriptorView) {\n return state;\n }\n\n result.dbfFields = parseFieldDescriptors(fieldDescriptorView, textDecoder);\n result.schema = {\n fields: result.dbfFields.map((dbfField) => makeField(dbfField)),\n metadata: {}\n };\n\n state = STATE.FIELD_PROPERTIES;\n\n // TODO(kyle) Not exactly sure why start offset needs to be headerLength + 1?\n // parsedbf uses ((fields.length + 1) << 5) + 2;\n binaryReader.skip(1);\n break;\n\n case STATE.FIELD_PROPERTIES:\n const {recordLength = 0, nRecords = 0} = result?.dbfHeader || {};\n while (result.data.length < nRecords) {\n const recordView = binaryReader.getDataView(recordLength - 1);\n if (!recordView) {\n return state;\n }\n // Note: Avoid actually reading the last byte, which may not be present\n binaryReader.skip(1);\n\n // @ts-ignore\n const row = parseRow(recordView, result.dbfFields, textDecoder);\n result.data.push(row);\n // @ts-ignore\n result.progress.rows = result.data.length;\n }\n state = STATE.END;\n break;\n\n default:\n state = STATE.ERROR;\n result.error = `illegal parser state ${state}`;\n return state;\n }\n } catch (error) {\n state = STATE.ERROR;\n result.error = `DBF parsing failed: ${(error as Error).message}`;\n return state;\n }\n }\n}\n\n/**\n * @param headerView\n */\nfunction parseDBFHeader(headerView: DataView): DBFHeader {\n return {\n // Last updated date\n year: headerView.getUint8(1) + 1900,\n month: headerView.getUint8(2),\n day: headerView.getUint8(3),\n // Number of records in data file\n nRecords: headerView.getUint32(4, LITTLE_ENDIAN),\n // Length of header in bytes\n headerLength: headerView.getUint16(8, LITTLE_ENDIAN),\n // Length of each record\n recordLength: headerView.getUint16(10, LITTLE_ENDIAN),\n // Not sure if this is usually set\n languageDriver: headerView.getUint8(29)\n };\n}\n\n/**\n * @param view\n */\nfunction parseFieldDescriptors(view: DataView, textDecoder: TextDecoder): DBFField[] {\n // NOTE: this might overestimate the number of fields if the \"Database\n // Container\" container exists and is included in the headerLength\n const nFields = (view.byteLength - 1) / 32;\n const fields: DBFField[] = [];\n let offset = 0;\n for (let i = 0; i < nFields; i++) {\n const name = textDecoder\n .decode(new Uint8Array(view.buffer, view.byteOffset + offset, 11))\n // eslint-disable-next-line no-control-regex\n .replace(/\\u0000/g, '');\n\n fields.push({\n name,\n dataType: String.fromCharCode(view.getUint8(offset + 11)),\n fieldLength: view.getUint8(offset + 16),\n decimal: view.getUint8(offset + 17)\n });\n offset += 32;\n }\n return fields;\n}\n\n/*\n * @param {BinaryChunkReader} binaryReader\nfunction parseRows(binaryReader, fields, nRecords, recordLength, textDecoder) {\n const rows = [];\n for (let i = 0; i < nRecords; i++) {\n const recordView = binaryReader.getDataView(recordLength - 1);\n binaryReader.skip(1);\n // @ts-ignore\n rows.push(parseRow(recordView, fields, textDecoder));\n }\n return rows;\n}\n */\n\n/**\n *\n * @param view\n * @param fields\n * @param textDecoder\n * @returns\n */\nfunction parseRow(\n view: DataView,\n fields: DBFField[],\n textDecoder: TextDecoder\n): {[key: string]: any} {\n const out: {[key: string]: string | number | boolean | null} = {};\n let offset = 0;\n for (const field of fields) {\n const text = textDecoder.decode(\n new Uint8Array(view.buffer, view.byteOffset + offset, field.fieldLength)\n );\n out[field.name] = parseField(text, field.dataType);\n offset += field.fieldLength;\n }\n\n return out;\n}\n\n/**\n * Should NaN be coerced to null?\n * @param text\n * @param dataType\n * @returns Field depends on a type of the data\n */\nfunction parseField(text: string, dataType: string): string | number | boolean | null {\n switch (dataType) {\n case 'B':\n return parseNumber(text);\n case 'C':\n return parseCharacter(text);\n case 'F':\n return parseNumber(text);\n case 'N':\n return parseNumber(text);\n case 'O':\n return parseNumber(text);\n case 'D':\n return parseDate(text);\n case 'L':\n return parseBoolean(text);\n default:\n throw new Error('Unsupported data type');\n }\n}\n\n/**\n * Parse YYYYMMDD to date in milliseconds\n * @param str YYYYMMDD\n * @returns new Date as a number\n */\nfunction parseDate(str: any): number {\n return Date.UTC(str.slice(0, 4), parseInt(str.slice(4, 6), 10) - 1, str.slice(6, 8));\n}\n\n/**\n * Read boolean value\n * any of Y, y, T, t coerce to true\n * any of N, n, F, f coerce to false\n * otherwise null\n * @param value\n * @returns boolean | null\n */\nfunction parseBoolean(value: string): boolean | null {\n return /^[nf]$/i.test(value) ? false : /^[yt]$/i.test(value) ? true : null;\n}\n\n/**\n * Return null instead of NaN\n * @param text\n * @returns number | null\n */\nfunction parseNumber(text: string): number | null {\n const number = parseFloat(text);\n return isNaN(number) ? null : number;\n}\n\n/**\n *\n * @param text\n * @returns string | null\n */\nfunction parseCharacter(text: string): string | null {\n return text.trim() || null;\n}\n\n/**\n * Create a standard Arrow-style `Field` from field descriptor.\n * TODO - use `fieldLength` and `decimal` to generate smaller types?\n * @param param0\n * @returns Field\n */\n// eslint-disable\nfunction makeField({name, dataType, fieldLength, decimal}: DBFField): Field {\n switch (dataType) {\n case 'B':\n return {name, type: 'float64', nullable: true, metadata: {}};\n case 'C':\n return {name, type: 'utf8', nullable: true, metadata: {}};\n case 'F':\n return {name, type: 'float64', nullable: true, metadata: {}};\n case 'N':\n return {name, type: 'float64', nullable: true, metadata: {}};\n case 'O':\n return {name, type: 'float64', nullable: true, metadata: {}};\n case 'D':\n return {name, type: 'timestamp-millisecond', nullable: true, metadata: {}};\n case 'L':\n return {name, type: 'bool', nullable: true, metadata: {}};\n default:\n throw new Error('Unsupported data type');\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"parse-dbf.js","names":["BinaryChunkReader","LITTLE_ENDIAN","DBF_HEADER_SIZE","STATE","DBFParser","constructor","options","binaryReader","textDecoder","state","START","result","data","TextDecoder","encoding","write","arrayBuffer","parseState","end","END","ERROR","error","parseDBF","_options$dbf","arguments","length","undefined","dbf","dbfParser","schema","shape","table","rows","parseDBFInBatches","asyncIterator","parser","headerReturned","dbfHeader","e","Promise","reject","dataView","getDataView","parseDBFHeader","progress","bytesUsed","rowsTotal","nRecords","FIELD_DESCRIPTORS","fieldDescriptorView","headerLength","dbfFields","parseFieldDescriptors","fields","map","dbfField","makeField","metadata","FIELD_PROPERTIES","skip","recordLength","recordView","row","parseRow","push","message","headerView","year","getUint8","month","day","getUint32","getUint16","languageDriver","view","nFields","byteLength","offset","i","name","decode","Uint8Array","buffer","byteOffset","replace","dataType","String","fromCharCode","fieldLength","decimal","out","field","text","parseField","parseNumber","parseCharacter","parseDate","parseBoolean","Error","str","Date","UTC","slice","parseInt","value","test","number","parseFloat","isNaN","trim","_ref","type","nullable"],"sources":["../../../src/lib/parsers/parse-dbf.ts"],"sourcesContent":["import {Field, ObjectRowTable} from '@loaders.gl/schema';\nimport {BinaryChunkReader} from '../streaming/binary-chunk-reader';\nimport {\n DBFLoaderOptions,\n DBFResult,\n DBFTableOutput,\n DBFHeader,\n DBFRowsOutput,\n DBFField\n} from './types';\n\nconst LITTLE_ENDIAN = true;\nconst DBF_HEADER_SIZE = 32;\n\nenum STATE {\n START = 0, // Expecting header\n FIELD_DESCRIPTORS = 1,\n FIELD_PROPERTIES = 2,\n END = 3,\n ERROR = 4\n}\n\nclass DBFParser {\n binaryReader = new BinaryChunkReader();\n textDecoder: TextDecoder;\n state = STATE.START;\n result: DBFResult = {\n data: []\n };\n\n constructor(options: {encoding: string}) {\n this.textDecoder = new TextDecoder(options.encoding);\n }\n\n /**\n * @param arrayBuffer\n */\n write(arrayBuffer: ArrayBuffer): void {\n this.binaryReader.write(arrayBuffer);\n this.state = parseState(this.state, this.result, this.binaryReader, this.textDecoder);\n // this.result.progress.bytesUsed = this.binaryReader.bytesUsed();\n\n // important events:\n // - schema available\n // - first rows available\n // - all rows available\n }\n\n end(): void {\n this.binaryReader.end();\n this.state = parseState(this.state, this.result, this.binaryReader, this.textDecoder);\n // this.result.progress.bytesUsed = this.binaryReader.bytesUsed();\n if (this.state !== STATE.END) {\n this.state = STATE.ERROR;\n this.result.error = 'DBF incomplete file';\n }\n }\n}\n\n/**\n * @param arrayBuffer\n * @param options\n * @returns DBFTable or rows\n */\nexport function parseDBF(\n arrayBuffer: ArrayBuffer,\n options: DBFLoaderOptions = {}\n): DBFRowsOutput | DBFTableOutput | ObjectRowTable {\n const {encoding = 'latin1'} = options.dbf || {};\n\n const dbfParser = new DBFParser({encoding});\n dbfParser.write(arrayBuffer);\n dbfParser.end();\n\n const {data, schema} = dbfParser.result;\n const shape = options?.dbf?.shape;\n switch (shape) {\n case 'object-row-table': {\n const table: ObjectRowTable = {\n shape: 'object-row-table',\n schema,\n data\n };\n return table;\n }\n case 'table':\n return {schema, rows: data};\n case 'rows':\n default:\n return data;\n }\n}\n/**\n * @param asyncIterator\n * @param options\n */\nexport async function* parseDBFInBatches(\n asyncIterator: AsyncIterable<ArrayBuffer> | Iterable<ArrayBuffer>,\n options: DBFLoaderOptions = {}\n): AsyncIterable<DBFHeader | DBFRowsOutput | DBFTableOutput> {\n const {encoding = 'latin1'} = options.dbf || {};\n\n const parser = new DBFParser({encoding});\n let headerReturned = false;\n for await (const arrayBuffer of asyncIterator) {\n parser.write(arrayBuffer);\n if (!headerReturned && parser.result.dbfHeader) {\n headerReturned = true;\n yield parser.result.dbfHeader;\n }\n\n if (parser.result.data.length > 0) {\n yield parser.result.data;\n parser.result.data = [];\n }\n }\n parser.end();\n if (parser.result.data.length > 0) {\n yield parser.result.data;\n }\n}\n/**\n * https://www.dbase.com/Knowledgebase/INT/db7_file_fmt.htm\n * @param state\n * @param result\n * @param binaryReader\n * @param textDecoder\n * @returns\n */\n/* eslint-disable complexity, max-depth */\nfunction parseState(\n state: STATE,\n result: DBFResult,\n binaryReader: BinaryChunkReader,\n textDecoder: TextDecoder\n): STATE {\n // eslint-disable-next-line no-constant-condition\n while (true) {\n try {\n switch (state) {\n case STATE.ERROR:\n case STATE.END:\n return state;\n\n case STATE.START:\n // Parse initial file header\n // DBF Header\n const dataView = binaryReader.getDataView(DBF_HEADER_SIZE);\n if (!dataView) {\n return state;\n }\n result.dbfHeader = parseDBFHeader(dataView);\n result.progress = {\n bytesUsed: 0,\n rowsTotal: result.dbfHeader.nRecords,\n rows: 0\n };\n state = STATE.FIELD_DESCRIPTORS;\n break;\n\n case STATE.FIELD_DESCRIPTORS:\n // Parse DBF field descriptors (schema)\n const fieldDescriptorView = binaryReader.getDataView(\n // @ts-ignore\n result.dbfHeader.headerLength - DBF_HEADER_SIZE\n );\n if (!fieldDescriptorView) {\n return state;\n }\n\n result.dbfFields = parseFieldDescriptors(fieldDescriptorView, textDecoder);\n result.schema = {\n fields: result.dbfFields.map((dbfField) => makeField(dbfField)),\n metadata: {}\n };\n\n state = STATE.FIELD_PROPERTIES;\n\n // TODO(kyle) Not exactly sure why start offset needs to be headerLength + 1?\n // parsedbf uses ((fields.length + 1) << 5) + 2;\n binaryReader.skip(1);\n break;\n\n case STATE.FIELD_PROPERTIES:\n const {recordLength = 0, nRecords = 0} = result?.dbfHeader || {};\n while (result.data.length < nRecords) {\n const recordView = binaryReader.getDataView(recordLength - 1);\n if (!recordView) {\n return state;\n }\n // Note: Avoid actually reading the last byte, which may not be present\n binaryReader.skip(1);\n\n // @ts-ignore\n const row = parseRow(recordView, result.dbfFields, textDecoder);\n result.data.push(row);\n // @ts-ignore\n result.progress.rows = result.data.length;\n }\n state = STATE.END;\n break;\n\n default:\n state = STATE.ERROR;\n result.error = `illegal parser state ${state}`;\n return state;\n }\n } catch (error) {\n state = STATE.ERROR;\n result.error = `DBF parsing failed: ${(error as Error).message}`;\n return state;\n }\n }\n}\n\n/**\n * @param headerView\n */\nfunction parseDBFHeader(headerView: DataView): DBFHeader {\n return {\n // Last updated date\n year: headerView.getUint8(1) + 1900,\n month: headerView.getUint8(2),\n day: headerView.getUint8(3),\n // Number of records in data file\n nRecords: headerView.getUint32(4, LITTLE_ENDIAN),\n // Length of header in bytes\n headerLength: headerView.getUint16(8, LITTLE_ENDIAN),\n // Length of each record\n recordLength: headerView.getUint16(10, LITTLE_ENDIAN),\n // Not sure if this is usually set\n languageDriver: headerView.getUint8(29)\n };\n}\n\n/**\n * @param view\n */\nfunction parseFieldDescriptors(view: DataView, textDecoder: TextDecoder): DBFField[] {\n // NOTE: this might overestimate the number of fields if the \"Database\n // Container\" container exists and is included in the headerLength\n const nFields = (view.byteLength - 1) / 32;\n const fields: DBFField[] = [];\n let offset = 0;\n for (let i = 0; i < nFields; i++) {\n const name = textDecoder\n .decode(new Uint8Array(view.buffer, view.byteOffset + offset, 11))\n // eslint-disable-next-line no-control-regex\n .replace(/\\u0000/g, '');\n\n fields.push({\n name,\n dataType: String.fromCharCode(view.getUint8(offset + 11)),\n fieldLength: view.getUint8(offset + 16),\n decimal: view.getUint8(offset + 17)\n });\n offset += 32;\n }\n return fields;\n}\n\n/*\n * @param {BinaryChunkReader} binaryReader\nfunction parseRows(binaryReader, fields, nRecords, recordLength, textDecoder) {\n const rows = [];\n for (let i = 0; i < nRecords; i++) {\n const recordView = binaryReader.getDataView(recordLength - 1);\n binaryReader.skip(1);\n // @ts-ignore\n rows.push(parseRow(recordView, fields, textDecoder));\n }\n return rows;\n}\n */\n\n/**\n *\n * @param view\n * @param fields\n * @param textDecoder\n * @returns\n */\nfunction parseRow(\n view: DataView,\n fields: DBFField[],\n textDecoder: TextDecoder\n): {[key: string]: any} {\n const out: {[key: string]: string | number | boolean | null} = {};\n let offset = 0;\n for (const field of fields) {\n const text = textDecoder.decode(\n new Uint8Array(view.buffer, view.byteOffset + offset, field.fieldLength)\n );\n out[field.name] = parseField(text, field.dataType);\n offset += field.fieldLength;\n }\n\n return out;\n}\n\n/**\n * Should NaN be coerced to null?\n * @param text\n * @param dataType\n * @returns Field depends on a type of the data\n */\nfunction parseField(text: string, dataType: string): string | number | boolean | null {\n switch (dataType) {\n case 'B':\n return parseNumber(text);\n case 'C':\n return parseCharacter(text);\n case 'F':\n return parseNumber(text);\n case 'N':\n return parseNumber(text);\n case 'O':\n return parseNumber(text);\n case 'D':\n return parseDate(text);\n case 'L':\n return parseBoolean(text);\n default:\n throw new Error('Unsupported data type');\n }\n}\n\n/**\n * Parse YYYYMMDD to date in milliseconds\n * @param str YYYYMMDD\n * @returns new Date as a number\n */\nfunction parseDate(str: any): number {\n return Date.UTC(str.slice(0, 4), parseInt(str.slice(4, 6), 10) - 1, str.slice(6, 8));\n}\n\n/**\n * Read boolean value\n * any of Y, y, T, t coerce to true\n * any of N, n, F, f coerce to false\n * otherwise null\n * @param value\n * @returns boolean | null\n */\nfunction parseBoolean(value: string): boolean | null {\n return /^[nf]$/i.test(value) ? false : /^[yt]$/i.test(value) ? true : null;\n}\n\n/**\n * Return null instead of NaN\n * @param text\n * @returns number | null\n */\nfunction parseNumber(text: string): number | null {\n const number = parseFloat(text);\n return isNaN(number) ? null : number;\n}\n\n/**\n *\n * @param text\n * @returns string | null\n */\nfunction parseCharacter(text: string): string | null {\n return text.trim() || null;\n}\n\n/**\n * Create a standard Arrow-style `Field` from field descriptor.\n * TODO - use `fieldLength` and `decimal` to generate smaller types?\n * @param param0\n * @returns Field\n */\n// eslint-disable\nfunction makeField({name, dataType, fieldLength, decimal}: DBFField): Field {\n switch (dataType) {\n case 'B':\n return {name, type: 'float64', nullable: true, metadata: {}};\n case 'C':\n return {name, type: 'utf8', nullable: true, metadata: {}};\n case 'F':\n return {name, type: 'float64', nullable: true, metadata: {}};\n case 'N':\n return {name, type: 'float64', nullable: true, metadata: {}};\n case 'O':\n return {name, type: 'float64', nullable: true, metadata: {}};\n case 'D':\n return {name, type: 'timestamp-millisecond', nullable: true, metadata: {}};\n case 'L':\n return {name, type: 'bool', nullable: true, metadata: {}};\n default:\n throw new Error('Unsupported data type');\n }\n}\n"],"mappings":"SACQA,iBAAiB;AAUzB,MAAMC,aAAa,GAAG,IAAI;AAC1B,MAAMC,eAAe,GAAG,EAAE;AAAC,IAEtBC,KAAK,aAALA,KAAK;EAALA,KAAK,CAALA,KAAK;EAALA,KAAK,CAALA,KAAK;EAALA,KAAK,CAALA,KAAK;EAALA,KAAK,CAALA,KAAK;EAALA,KAAK,CAALA,KAAK;EAAA,OAALA,KAAK;AAAA,EAALA,KAAK;AAQV,MAAMC,SAAS,CAAC;EAQdC,WAAWA,CAACC,OAA2B,EAAE;IAAA,KAPzCC,YAAY,GAAG,IAAIP,iBAAiB,CAAC,CAAC;IAAA,KACtCQ,WAAW;IAAA,KACXC,KAAK,GAAGN,KAAK,CAACO,KAAK;IAAA,KACnBC,MAAM,GAAc;MAClBC,IAAI,EAAE;IACR,CAAC;IAGC,IAAI,CAACJ,WAAW,GAAG,IAAIK,WAAW,CAACP,OAAO,CAACQ,QAAQ,CAAC;EACtD;EAKAC,KAAKA,CAACC,WAAwB,EAAQ;IACpC,IAAI,CAACT,YAAY,CAACQ,KAAK,CAACC,WAAW,CAAC;IACpC,IAAI,CAACP,KAAK,GAAGQ,UAAU,CAAC,IAAI,CAACR,KAAK,EAAE,IAAI,CAACE,MAAM,EAAE,IAAI,CAACJ,YAAY,EAAE,IAAI,CAACC,WAAW,CAAC;EAOvF;EAEAU,GAAGA,CAAA,EAAS;IACV,IAAI,CAACX,YAAY,CAACW,GAAG,CAAC,CAAC;IACvB,IAAI,CAACT,KAAK,GAAGQ,UAAU,CAAC,IAAI,CAACR,KAAK,EAAE,IAAI,CAACE,MAAM,EAAE,IAAI,CAACJ,YAAY,EAAE,IAAI,CAACC,WAAW,CAAC;IAErF,IAAI,IAAI,CAACC,KAAK,KAAKN,KAAK,CAACgB,GAAG,EAAE;MAC5B,IAAI,CAACV,KAAK,GAAGN,KAAK,CAACiB,KAAK;MACxB,IAAI,CAACT,MAAM,CAACU,KAAK,GAAG,qBAAqB;IAC3C;EACF;AACF;AAOA,OAAO,SAASC,QAAQA,CACtBN,WAAwB,EAEyB;EAAA,IAAAO,YAAA;EAAA,IADjDjB,OAAyB,GAAAkB,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EAE9B,MAAM;IAACV,QAAQ,GAAG;EAAQ,CAAC,GAAGR,OAAO,CAACqB,GAAG,IAAI,CAAC,CAAC;EAE/C,MAAMC,SAAS,GAAG,IAAIxB,SAAS,CAAC;IAACU;EAAQ,CAAC,CAAC;EAC3Cc,SAAS,CAACb,KAAK,CAACC,WAAW,CAAC;EAC5BY,SAAS,CAACV,GAAG,CAAC,CAAC;EAEf,MAAM;IAACN,IAAI;IAAEiB;EAAM,CAAC,GAAGD,SAAS,CAACjB,MAAM;EACvC,MAAMmB,KAAK,GAAGxB,OAAO,aAAPA,OAAO,wBAAAiB,YAAA,GAAPjB,OAAO,CAAEqB,GAAG,cAAAJ,YAAA,uBAAZA,YAAA,CAAcO,KAAK;EACjC,QAAQA,KAAK;IACX,KAAK,kBAAkB;MAAE;QACvB,MAAMC,KAAqB,GAAG;UAC5BD,KAAK,EAAE,kBAAkB;UACzBD,MAAM;UACNjB;QACF,CAAC;QACD,OAAOmB,KAAK;MACd;IACA,KAAK,OAAO;MACV,OAAO;QAACF,MAAM;QAAEG,IAAI,EAAEpB;MAAI,CAAC;IAC7B,KAAK,MAAM;IACX;MACE,OAAOA,IAAI;EACf;AACF;AAKA,OAAO,SAAgBqB,iBAAiBA,CACtCC,aAAiE;EAAA;IAAA,IACjE5B,OAAyB,GAAAkB,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;IAAA,0BAC6B;MAC3D,MAAM;QAACV,QAAQ,GAAG;MAAQ,CAAC,GAAGR,OAAO,CAACqB,GAAG,IAAI,CAAC,CAAC;MAE/C,MAAMQ,MAAM,GAAG,IAAI/B,SAAS,CAAC;QAACU;MAAQ,CAAC,CAAC;MACxC,IAAIsB,cAAc,GAAG,KAAK;MAC1B,WAAW,MAAMpB,WAAW,IAAIkB,aAAa,EAAE;QAC7CC,MAAM,CAACpB,KAAK,CAACC,WAAW,CAAC;QACzB,IAAI,CAACoB,cAAc,IAAID,MAAM,CAACxB,MAAM,CAAC0B,SAAS,EAAE;UAC9CD,cAAc,GAAG,IAAI;UACrB,MAAMD,MAAM,CAACxB,MAAM,CAAC0B,SAAS;QAC/B;QAEA,IAAIF,MAAM,CAACxB,MAAM,CAACC,IAAI,CAACa,MAAM,GAAG,CAAC,EAAE;UACjC,MAAMU,MAAM,CAACxB,MAAM,CAACC,IAAI;UACxBuB,MAAM,CAACxB,MAAM,CAACC,IAAI,GAAG,EAAE;QACzB;MACF;MACAuB,MAAM,CAACjB,GAAG,CAAC,CAAC;MACZ,IAAIiB,MAAM,CAACxB,MAAM,CAACC,IAAI,CAACa,MAAM,GAAG,CAAC,EAAE;QACjC,MAAMU,MAAM,CAACxB,MAAM,CAACC,IAAI;MAC1B;IACF,CAAC;EAAA,SAAA0B,CAAA;IAAA,OAAAC,OAAA,CAAAC,MAAA,CAAAF,CAAA;EAAA;AAAA;AAUD,SAASrB,UAAUA,CACjBR,KAAY,EACZE,MAAiB,EACjBJ,YAA+B,EAC/BC,WAAwB,EACjB;EAEP,OAAO,IAAI,EAAE;IACX,IAAI;MACF,QAAQC,KAAK;QACX,KAAKN,KAAK,CAACiB,KAAK;QAChB,KAAKjB,KAAK,CAACgB,GAAG;UACZ,OAAOV,KAAK;QAEd,KAAKN,KAAK,CAACO,KAAK;UAGd,MAAM+B,QAAQ,GAAGlC,YAAY,CAACmC,WAAW,CAACxC,eAAe,CAAC;UAC1D,IAAI,CAACuC,QAAQ,EAAE;YACb,OAAOhC,KAAK;UACd;UACAE,MAAM,CAAC0B,SAAS,GAAGM,cAAc,CAACF,QAAQ,CAAC;UAC3C9B,MAAM,CAACiC,QAAQ,GAAG;YAChBC,SAAS,EAAE,CAAC;YACZC,SAAS,EAAEnC,MAAM,CAAC0B,SAAS,CAACU,QAAQ;YACpCf,IAAI,EAAE;UACR,CAAC;UACDvB,KAAK,GAAGN,KAAK,CAAC6C,iBAAiB;UAC/B;QAEF,KAAK7C,KAAK,CAAC6C,iBAAiB;UAE1B,MAAMC,mBAAmB,GAAG1C,YAAY,CAACmC,WAAW,CAElD/B,MAAM,CAAC0B,SAAS,CAACa,YAAY,GAAGhD,eAClC,CAAC;UACD,IAAI,CAAC+C,mBAAmB,EAAE;YACxB,OAAOxC,KAAK;UACd;UAEAE,MAAM,CAACwC,SAAS,GAAGC,qBAAqB,CAACH,mBAAmB,EAAEzC,WAAW,CAAC;UAC1EG,MAAM,CAACkB,MAAM,GAAG;YACdwB,MAAM,EAAE1C,MAAM,CAACwC,SAAS,CAACG,GAAG,CAAEC,QAAQ,IAAKC,SAAS,CAACD,QAAQ,CAAC,CAAC;YAC/DE,QAAQ,EAAE,CAAC;UACb,CAAC;UAEDhD,KAAK,GAAGN,KAAK,CAACuD,gBAAgB;UAI9BnD,YAAY,CAACoD,IAAI,CAAC,CAAC,CAAC;UACpB;QAEF,KAAKxD,KAAK,CAACuD,gBAAgB;UACzB,MAAM;YAACE,YAAY,GAAG,CAAC;YAAEb,QAAQ,GAAG;UAAC,CAAC,GAAG,CAAApC,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAE0B,SAAS,KAAI,CAAC,CAAC;UAChE,OAAO1B,MAAM,CAACC,IAAI,CAACa,MAAM,GAAGsB,QAAQ,EAAE;YACpC,MAAMc,UAAU,GAAGtD,YAAY,CAACmC,WAAW,CAACkB,YAAY,GAAG,CAAC,CAAC;YAC7D,IAAI,CAACC,UAAU,EAAE;cACf,OAAOpD,KAAK;YACd;YAEAF,YAAY,CAACoD,IAAI,CAAC,CAAC,CAAC;YAGpB,MAAMG,GAAG,GAAGC,QAAQ,CAACF,UAAU,EAAElD,MAAM,CAACwC,SAAS,EAAE3C,WAAW,CAAC;YAC/DG,MAAM,CAACC,IAAI,CAACoD,IAAI,CAACF,GAAG,CAAC;YAErBnD,MAAM,CAACiC,QAAQ,CAACZ,IAAI,GAAGrB,MAAM,CAACC,IAAI,CAACa,MAAM;UAC3C;UACAhB,KAAK,GAAGN,KAAK,CAACgB,GAAG;UACjB;QAEF;UACEV,KAAK,GAAGN,KAAK,CAACiB,KAAK;UACnBT,MAAM,CAACU,KAAK,GAAI,wBAAuBZ,KAAM,EAAC;UAC9C,OAAOA,KAAK;MAChB;IACF,CAAC,CAAC,OAAOY,KAAK,EAAE;MACdZ,KAAK,GAAGN,KAAK,CAACiB,KAAK;MACnBT,MAAM,CAACU,KAAK,GAAI,uBAAuBA,KAAK,CAAW4C,OAAQ,EAAC;MAChE,OAAOxD,KAAK;IACd;EACF;AACF;AAKA,SAASkC,cAAcA,CAACuB,UAAoB,EAAa;EACvD,OAAO;IAELC,IAAI,EAAED,UAAU,CAACE,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI;IACnCC,KAAK,EAAEH,UAAU,CAACE,QAAQ,CAAC,CAAC,CAAC;IAC7BE,GAAG,EAAEJ,UAAU,CAACE,QAAQ,CAAC,CAAC,CAAC;IAE3BrB,QAAQ,EAAEmB,UAAU,CAACK,SAAS,CAAC,CAAC,EAAEtE,aAAa,CAAC;IAEhDiD,YAAY,EAAEgB,UAAU,CAACM,SAAS,CAAC,CAAC,EAAEvE,aAAa,CAAC;IAEpD2D,YAAY,EAAEM,UAAU,CAACM,SAAS,CAAC,EAAE,EAAEvE,aAAa,CAAC;IAErDwE,cAAc,EAAEP,UAAU,CAACE,QAAQ,CAAC,EAAE;EACxC,CAAC;AACH;AAKA,SAAShB,qBAAqBA,CAACsB,IAAc,EAAElE,WAAwB,EAAc;EAGnF,MAAMmE,OAAO,GAAG,CAACD,IAAI,CAACE,UAAU,GAAG,CAAC,IAAI,EAAE;EAC1C,MAAMvB,MAAkB,GAAG,EAAE;EAC7B,IAAIwB,MAAM,GAAG,CAAC;EACd,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGH,OAAO,EAAEG,CAAC,EAAE,EAAE;IAChC,MAAMC,IAAI,GAAGvE,WAAW,CACrBwE,MAAM,CAAC,IAAIC,UAAU,CAACP,IAAI,CAACQ,MAAM,EAAER,IAAI,CAACS,UAAU,GAAGN,MAAM,EAAE,EAAE,CAAC,CAAC,CAEjEO,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;IAEzB/B,MAAM,CAACW,IAAI,CAAC;MACVe,IAAI;MACJM,QAAQ,EAAEC,MAAM,CAACC,YAAY,CAACb,IAAI,CAACN,QAAQ,CAACS,MAAM,GAAG,EAAE,CAAC,CAAC;MACzDW,WAAW,EAAEd,IAAI,CAACN,QAAQ,CAACS,MAAM,GAAG,EAAE,CAAC;MACvCY,OAAO,EAAEf,IAAI,CAACN,QAAQ,CAACS,MAAM,GAAG,EAAE;IACpC,CAAC,CAAC;IACFA,MAAM,IAAI,EAAE;EACd;EACA,OAAOxB,MAAM;AACf;AAuBA,SAASU,QAAQA,CACfW,IAAc,EACdrB,MAAkB,EAClB7C,WAAwB,EACF;EACtB,MAAMkF,GAAsD,GAAG,CAAC,CAAC;EACjE,IAAIb,MAAM,GAAG,CAAC;EACd,KAAK,MAAMc,KAAK,IAAItC,MAAM,EAAE;IAC1B,MAAMuC,IAAI,GAAGpF,WAAW,CAACwE,MAAM,CAC7B,IAAIC,UAAU,CAACP,IAAI,CAACQ,MAAM,EAAER,IAAI,CAACS,UAAU,GAAGN,MAAM,EAAEc,KAAK,CAACH,WAAW,CACzE,CAAC;IACDE,GAAG,CAACC,KAAK,CAACZ,IAAI,CAAC,GAAGc,UAAU,CAACD,IAAI,EAAED,KAAK,CAACN,QAAQ,CAAC;IAClDR,MAAM,IAAIc,KAAK,CAACH,WAAW;EAC7B;EAEA,OAAOE,GAAG;AACZ;AAQA,SAASG,UAAUA,CAACD,IAAY,EAAEP,QAAgB,EAAoC;EACpF,QAAQA,QAAQ;IACd,KAAK,GAAG;MACN,OAAOS,WAAW,CAACF,IAAI,CAAC;IAC1B,KAAK,GAAG;MACN,OAAOG,cAAc,CAACH,IAAI,CAAC;IAC7B,KAAK,GAAG;MACN,OAAOE,WAAW,CAACF,IAAI,CAAC;IAC1B,KAAK,GAAG;MACN,OAAOE,WAAW,CAACF,IAAI,CAAC;IAC1B,KAAK,GAAG;MACN,OAAOE,WAAW,CAACF,IAAI,CAAC;IAC1B,KAAK,GAAG;MACN,OAAOI,SAAS,CAACJ,IAAI,CAAC;IACxB,KAAK,GAAG;MACN,OAAOK,YAAY,CAACL,IAAI,CAAC;IAC3B;MACE,MAAM,IAAIM,KAAK,CAAC,uBAAuB,CAAC;EAC5C;AACF;AAOA,SAASF,SAASA,CAACG,GAAQ,EAAU;EACnC,OAAOC,IAAI,CAACC,GAAG,CAACF,GAAG,CAACG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAEC,QAAQ,CAACJ,GAAG,CAACG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAEH,GAAG,CAACG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACtF;AAUA,SAASL,YAAYA,CAACO,KAAa,EAAkB;EACnD,OAAO,SAAS,CAACC,IAAI,CAACD,KAAK,CAAC,GAAG,KAAK,GAAG,SAAS,CAACC,IAAI,CAACD,KAAK,CAAC,GAAG,IAAI,GAAG,IAAI;AAC5E;AAOA,SAASV,WAAWA,CAACF,IAAY,EAAiB;EAChD,MAAMc,MAAM,GAAGC,UAAU,CAACf,IAAI,CAAC;EAC/B,OAAOgB,KAAK,CAACF,MAAM,CAAC,GAAG,IAAI,GAAGA,MAAM;AACtC;AAOA,SAASX,cAAcA,CAACH,IAAY,EAAiB;EACnD,OAAOA,IAAI,CAACiB,IAAI,CAAC,CAAC,IAAI,IAAI;AAC5B;AASA,SAASrD,SAASA,CAAAsD,IAAA,EAA0D;EAAA,IAAzD;IAAC/B,IAAI;IAAEM,QAAQ;IAAEG,WAAW;IAAEC;EAAiB,CAAC,GAAAqB,IAAA;EACjE,QAAQzB,QAAQ;IACd,KAAK,GAAG;MACN,OAAO;QAACN,IAAI;QAAEgC,IAAI,EAAE,SAAS;QAAEC,QAAQ,EAAE,IAAI;QAAEvD,QAAQ,EAAE,CAAC;MAAC,CAAC;IAC9D,KAAK,GAAG;MACN,OAAO;QAACsB,IAAI;QAAEgC,IAAI,EAAE,MAAM;QAAEC,QAAQ,EAAE,IAAI;QAAEvD,QAAQ,EAAE,CAAC;MAAC,CAAC;IAC3D,KAAK,GAAG;MACN,OAAO;QAACsB,IAAI;QAAEgC,IAAI,EAAE,SAAS;QAAEC,QAAQ,EAAE,IAAI;QAAEvD,QAAQ,EAAE,CAAC;MAAC,CAAC;IAC9D,KAAK,GAAG;MACN,OAAO;QAACsB,IAAI;QAAEgC,IAAI,EAAE,SAAS;QAAEC,QAAQ,EAAE,IAAI;QAAEvD,QAAQ,EAAE,CAAC;MAAC,CAAC;IAC9D,KAAK,GAAG;MACN,OAAO;QAACsB,IAAI;QAAEgC,IAAI,EAAE,SAAS;QAAEC,QAAQ,EAAE,IAAI;QAAEvD,QAAQ,EAAE,CAAC;MAAC,CAAC;IAC9D,KAAK,GAAG;MACN,OAAO;QAACsB,IAAI;QAAEgC,IAAI,EAAE,uBAAuB;QAAEC,QAAQ,EAAE,IAAI;QAAEvD,QAAQ,EAAE,CAAC;MAAC,CAAC;IAC5E,KAAK,GAAG;MACN,OAAO;QAACsB,IAAI;QAAEgC,IAAI,EAAE,MAAM;QAAEC,QAAQ,EAAE,IAAI;QAAEvD,QAAQ,EAAE,CAAC;MAAC,CAAC;IAC3D;MACE,MAAM,IAAIyC,KAAK,CAAC,uBAAuB,CAAC;EAC5C;AACF"}
@@ -10,21 +10,14 @@ export type DBFLoaderOptions = LoaderOptions & {
10
10
  encoding?: string;
11
11
  shape?: 'rows' | 'table' | 'object-row-table';
12
12
  };
13
- /** @deprecated */
14
- tables?: {
15
- /** @deprecated */
16
- format?: 'rows' | 'table' | 'object-row-table';
17
- };
18
13
  };
19
14
  export type ShapefileLoaderOptions = LoaderOptions & SHPLoaderOptions & {
20
15
  shapefile?: {
21
- shape?: 'geojson';
16
+ shape?: 'geojson-table';
22
17
  };
23
18
  gis?: {
24
19
  reproject?: boolean;
25
20
  _targetCrs?: string;
26
- /** @deprecated. Use options.shapefile.shape */
27
- format?: 'geojson';
28
21
  };
29
22
  };
30
23
  export type DBFRowsOutput = ObjectRowTable['data'];
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAE,cAAc,EAAC,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAE5D,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG;IAC7C,GAAG,CAAC,EAAE;QACJ,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG;IAC7C,GAAG,CAAC,EAAE;QACJ,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,kBAAkB,CAAC;KAC/C,CAAC;IACF,kBAAkB;IAClB,MAAM,CAAC,EAAE;QACP,kBAAkB;QAClB,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,kBAAkB,CAAC;KAChD,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,aAAa,GAChD,gBAAgB,GAAG;IACjB,SAAS,CAAC,EAAE;QACV,KAAK,CAAC,EAAE,SAAS,CAAC;KACnB,CAAC;IACF,GAAG,CAAC,EAAE;QACJ,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,+CAA+C;QAC/C,MAAM,CAAC,EAAE,SAAS,CAAC;KACpB,CAAC;CACH,CAAC;AAEJ,MAAM,MAAM,aAAa,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;AAEnD;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,aAAa,CAAC;CACrB;AAED,MAAM,MAAM,SAAS,GAAG;IAEtB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IAEZ,QAAQ,EAAE,MAAM,CAAC;IAEjB,YAAY,EAAE,MAAM,CAAC;IAErB,YAAY,EAAE,MAAM,CAAC;IAErB,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAC,EAAE,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,QAAQ,CAAC,EAAE;QACT,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAE,cAAc,EAAC,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAE5D,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG;IAC7C,GAAG,CAAC,EAAE;QACJ,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG;IAC7C,GAAG,CAAC,EAAE;QACJ,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,kBAAkB,CAAC;KAC/C,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,aAAa,GAChD,gBAAgB,GAAG;IACjB,SAAS,CAAC,EAAE;QACV,KAAK,CAAC,EAAE,eAAe,CAAC;KACzB,CAAC;IACF,GAAG,CAAC,EAAE;QACJ,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;CACH,CAAC;AAEJ,MAAM,MAAM,aAAa,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;AAEnD;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,aAAa,CAAC;CACrB;AAED,MAAM,MAAM,SAAS,GAAG;IAEtB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IAEZ,QAAQ,EAAE,MAAM,CAAC;IAEjB,YAAY,EAAE,MAAM,CAAC;IAErB,YAAY,EAAE,MAAM,CAAC;IAErB,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAC,EAAE,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,QAAQ,CAAC,EAAE;QACT,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../../../src/lib/parsers/types.ts"],"sourcesContent":["import {Schema, ObjectRowTable} from '@loaders.gl/schema';\nimport type {LoaderOptions} from '@loaders.gl/loader-utils';\n\nexport type SHPLoaderOptions = LoaderOptions & {\n shp?: {\n _maxDimensions?: number;\n };\n};\n\nexport type DBFLoaderOptions = LoaderOptions & {\n dbf?: {\n encoding?: string;\n shape?: 'rows' | 'table' | 'object-row-table';\n };\n /** @deprecated */\n tables?: {\n /** @deprecated */\n format?: 'rows' | 'table' | 'object-row-table';\n };\n};\n\nexport type ShapefileLoaderOptions = LoaderOptions &\n SHPLoaderOptions & {\n shapefile?: {\n shape?: 'geojson';\n };\n gis?: {\n reproject?: boolean;\n _targetCrs?: string;\n /** @deprecated. Use options.shapefile.shape */\n format?: 'geojson';\n };\n };\n\nexport type DBFRowsOutput = ObjectRowTable['data'];\n\n/**\n * DBF Table output. Deprecated in favor of ObjectRowTable\n * @deprecated\n */\nexport interface DBFTableOutput {\n schema?: Schema;\n rows: DBFRowsOutput;\n}\n\nexport type DBFHeader = {\n // Last updated date\n year: number;\n month: number;\n day: number;\n // Number of records in data file\n nRecords: number;\n // Length of header in bytes\n headerLength: number;\n // Length of each record\n recordLength: number;\n // Not sure if this is usually set\n languageDriver: number;\n};\n\nexport type DBFField = {\n name: string;\n dataType: string;\n fieldLength: number;\n decimal: number;\n};\n\nexport type DBFResult = {\n data: {[key: string]: any}[];\n schema?: Schema;\n error?: string;\n dbfHeader?: DBFHeader;\n dbfFields?: DBFField[];\n progress?: {\n bytesUsed: number;\n rowsTotal: number;\n rows: number;\n };\n};\n"],"mappings":""}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../../src/lib/parsers/types.ts"],"sourcesContent":["import {Schema, ObjectRowTable} from '@loaders.gl/schema';\nimport type {LoaderOptions} from '@loaders.gl/loader-utils';\n\nexport type SHPLoaderOptions = LoaderOptions & {\n shp?: {\n _maxDimensions?: number;\n };\n};\n\nexport type DBFLoaderOptions = LoaderOptions & {\n dbf?: {\n encoding?: string;\n shape?: 'rows' | 'table' | 'object-row-table';\n };\n};\n\nexport type ShapefileLoaderOptions = LoaderOptions &\n SHPLoaderOptions & {\n shapefile?: {\n shape?: 'geojson-table';\n };\n gis?: {\n reproject?: boolean;\n _targetCrs?: string;\n };\n };\n\nexport type DBFRowsOutput = ObjectRowTable['data'];\n\n/**\n * DBF Table output. Deprecated in favor of ObjectRowTable\n * @deprecated\n */\nexport interface DBFTableOutput {\n schema?: Schema;\n rows: DBFRowsOutput;\n}\n\nexport type DBFHeader = {\n // Last updated date\n year: number;\n month: number;\n day: number;\n // Number of records in data file\n nRecords: number;\n // Length of header in bytes\n headerLength: number;\n // Length of each record\n recordLength: number;\n // Not sure if this is usually set\n languageDriver: number;\n};\n\nexport type DBFField = {\n name: string;\n dataType: string;\n fieldLength: number;\n decimal: number;\n};\n\nexport type DBFResult = {\n data: {[key: string]: any}[];\n schema?: Schema;\n error?: string;\n dbfHeader?: DBFHeader;\n dbfFields?: DBFField[];\n progress?: {\n bytesUsed: number;\n rowsTotal: number;\n rows: number;\n };\n};\n"],"mappings":""}
@@ -480,7 +480,7 @@
480
480
  }
481
481
 
482
482
  // src/shp-loader.ts
483
- var VERSION = true ? "4.0.0-beta.5" : "latest";
483
+ var VERSION = true ? "4.0.0-beta.7" : "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.5",
4
+ "version": "4.0.0-beta.7",
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.5",
48
- "@loaders.gl/loader-utils": "4.0.0-beta.5",
49
- "@loaders.gl/schema": "4.0.0-beta.5",
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",
50
50
  "@math.gl/proj4": "^4.0.0"
51
51
  },
52
- "gitHead": "a6f5a0d1a316cc22396e5a4d480c14329d1ef146"
52
+ "gitHead": "5b6cab0ab5d73212cfa37fa5da6e25ad7ef83fe5"
53
53
  }
@@ -73,7 +73,7 @@ export function parseDBF(
73
73
  dbfParser.end();
74
74
 
75
75
  const {data, schema} = dbfParser.result;
76
- const shape = options?.tables?.format || options?.dbf?.shape;
76
+ const shape = options?.dbf?.shape;
77
77
  switch (shape) {
78
78
  case 'object-row-table': {
79
79
  const table: ObjectRowTable = {
@@ -12,23 +12,16 @@ export type DBFLoaderOptions = LoaderOptions & {
12
12
  encoding?: string;
13
13
  shape?: 'rows' | 'table' | 'object-row-table';
14
14
  };
15
- /** @deprecated */
16
- tables?: {
17
- /** @deprecated */
18
- format?: 'rows' | 'table' | 'object-row-table';
19
- };
20
15
  };
21
16
 
22
17
  export type ShapefileLoaderOptions = LoaderOptions &
23
18
  SHPLoaderOptions & {
24
19
  shapefile?: {
25
- shape?: 'geojson';
20
+ shape?: 'geojson-table';
26
21
  };
27
22
  gis?: {
28
23
  reproject?: boolean;
29
24
  _targetCrs?: string;
30
- /** @deprecated. Use options.shapefile.shape */
31
- format?: 'geojson';
32
25
  };
33
26
  };
34
27