@loaders.gl/shapefile 3.1.0-beta.7 → 3.1.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.
Files changed (40) hide show
  1. package/dist/bundle.js +3 -0
  2. package/dist/es5/bundle.js +1 -1
  3. package/dist/es5/bundle.js.map +1 -1
  4. package/dist/es5/dbf-loader.js +40 -5
  5. package/dist/es5/dbf-loader.js.map +1 -1
  6. package/dist/es5/index.js +5 -5
  7. package/dist/es5/lib/parsers/parse-dbf.js +230 -85
  8. package/dist/es5/lib/parsers/parse-dbf.js.map +1 -1
  9. package/dist/es5/lib/parsers/parse-shapefile.js +408 -151
  10. package/dist/es5/lib/parsers/parse-shapefile.js.map +1 -1
  11. package/dist/es5/lib/parsers/parse-shp-geometry.js +96 -49
  12. package/dist/es5/lib/parsers/parse-shp-geometry.js.map +1 -1
  13. package/dist/es5/lib/parsers/parse-shp-header.js +4 -4
  14. package/dist/es5/lib/parsers/parse-shp-header.js.map +1 -1
  15. package/dist/es5/lib/parsers/parse-shp.js +165 -47
  16. package/dist/es5/lib/parsers/parse-shp.js.map +1 -1
  17. package/dist/es5/lib/parsers/parse-shx.js +11 -11
  18. package/dist/es5/lib/parsers/parse-shx.js.map +1 -1
  19. package/dist/es5/lib/streaming/binary-chunk-reader.js +172 -99
  20. package/dist/es5/lib/streaming/binary-chunk-reader.js.map +1 -1
  21. package/dist/es5/lib/streaming/binary-reader.js +35 -24
  22. package/dist/es5/lib/streaming/binary-reader.js.map +1 -1
  23. package/dist/es5/lib/streaming/zip-batch-iterators.js +96 -37
  24. package/dist/es5/lib/streaming/zip-batch-iterators.js.map +1 -1
  25. package/dist/es5/shapefile-loader.js +3 -3
  26. package/dist/es5/shapefile-loader.js.map +1 -1
  27. package/dist/es5/shp-loader.js +41 -6
  28. package/dist/es5/shp-loader.js.map +1 -1
  29. package/dist/esm/dbf-loader.js +1 -1
  30. package/dist/esm/dbf-loader.js.map +1 -1
  31. package/dist/esm/lib/parsers/parse-shapefile.js +4 -0
  32. package/dist/esm/lib/parsers/parse-shapefile.js.map +1 -1
  33. package/dist/esm/shapefile-loader.js +1 -1
  34. package/dist/esm/shapefile-loader.js.map +1 -1
  35. package/dist/esm/shp-loader.js +1 -1
  36. package/dist/esm/shp-loader.js.map +1 -1
  37. package/dist/lib/parsers/parse-shapefile.d.ts.map +1 -1
  38. package/dist/lib/parsers/parse-shapefile.js +3 -0
  39. package/package.json +5 -5
  40. package/src/lib/parsers/parse-shapefile.ts +4 -0
package/dist/bundle.js CHANGED
@@ -7432,6 +7432,9 @@
7432
7432
  return features;
7433
7433
  }
7434
7434
  function reprojectFeatures(features, sourceCrs, targetCrs) {
7435
+ if (!sourceCrs && !targetCrs) {
7436
+ return features;
7437
+ }
7435
7438
  const projection = new Proj4Projection({ from: sourceCrs || "WGS84", to: targetCrs || "WGS84" });
7436
7439
  return transformGeoJsonCoords(features, (coord) => projection.project(coord));
7437
7440
  }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- const moduleExports = require('./index');
3
+ var moduleExports = require('./index');
4
4
 
5
5
  globalThis.loaders = globalThis.loaders || {};
6
6
  module.exports = Object.assign(globalThis.loaders, moduleExports);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/bundle.ts"],"names":["moduleExports","require","globalThis","loaders","module","exports","Object","assign"],"mappings":";;AACA,MAAMA,aAAa,GAAGC,OAAO,CAAC,SAAD,CAA7B;;AACAC,UAAU,CAACC,OAAX,GAAqBD,UAAU,CAACC,OAAX,IAAsB,EAA3C;AACAC,MAAM,CAACC,OAAP,GAAiBC,MAAM,CAACC,MAAP,CAAcL,UAAU,CAACC,OAAzB,EAAkCH,aAAlC,CAAjB","sourcesContent":["// @ts-nocheck\nconst moduleExports = require('./index');\nglobalThis.loaders = globalThis.loaders || {};\nmodule.exports = Object.assign(globalThis.loaders, moduleExports);\n"],"file":"bundle.js"}
1
+ {"version":3,"sources":["../../src/bundle.ts"],"names":["moduleExports","require","globalThis","loaders","module","exports","Object","assign"],"mappings":";;AACA,IAAMA,aAAa,GAAGC,OAAO,CAAC,SAAD,CAA7B;;AACAC,UAAU,CAACC,OAAX,GAAqBD,UAAU,CAACC,OAAX,IAAsB,EAA3C;AACAC,MAAM,CAACC,OAAP,GAAiBC,MAAM,CAACC,MAAP,CAAcL,UAAU,CAACC,OAAzB,EAAkCH,aAAlC,CAAjB","sourcesContent":["// @ts-nocheck\nconst moduleExports = require('./index');\nglobalThis.loaders = globalThis.loaders || {};\nmodule.exports = Object.assign(globalThis.loaders, moduleExports);\n"],"file":"bundle.js"}
@@ -1,14 +1,26 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
3
5
  Object.defineProperty(exports, "__esModule", {
4
6
  value: true
5
7
  });
6
8
  exports.DBFLoader = exports.DBFWorkerLoader = void 0;
7
9
 
10
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
+
12
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
+
14
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
+
8
16
  var _parseDbf = require("./lib/parsers/parse-dbf");
9
17
 
10
- const VERSION = typeof "3.1.0-beta.7" !== 'undefined' ? "3.1.0-beta.7" : 'latest';
11
- const DBFWorkerLoader = {
18
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
19
+
20
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
21
+
22
+ var VERSION = typeof "3.1.0" !== 'undefined' ? "3.1.0" : 'latest';
23
+ var DBFWorkerLoader = {
12
24
  name: 'DBF',
13
25
  id: 'dbf',
14
26
  module: 'shapefile',
@@ -24,10 +36,33 @@ const DBFWorkerLoader = {
24
36
  }
25
37
  };
26
38
  exports.DBFWorkerLoader = DBFWorkerLoader;
27
- const DBFLoader = { ...DBFWorkerLoader,
28
- parse: async (arrayBuffer, options) => (0, _parseDbf.parseDBF)(arrayBuffer, options),
39
+
40
+ var DBFLoader = _objectSpread(_objectSpread({}, DBFWorkerLoader), {}, {
41
+ parse: function () {
42
+ var _parse = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(arrayBuffer, options) {
43
+ return _regenerator.default.wrap(function _callee$(_context) {
44
+ while (1) {
45
+ switch (_context.prev = _context.next) {
46
+ case 0:
47
+ return _context.abrupt("return", (0, _parseDbf.parseDBF)(arrayBuffer, options));
48
+
49
+ case 1:
50
+ case "end":
51
+ return _context.stop();
52
+ }
53
+ }
54
+ }, _callee);
55
+ }));
56
+
57
+ function parse(_x, _x2) {
58
+ return _parse.apply(this, arguments);
59
+ }
60
+
61
+ return parse;
62
+ }(),
29
63
  parseSync: _parseDbf.parseDBF,
30
64
  parseInBatches: _parseDbf.parseDBFInBatches
31
- };
65
+ });
66
+
32
67
  exports.DBFLoader = DBFLoader;
33
68
  //# sourceMappingURL=dbf-loader.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/dbf-loader.ts"],"names":["VERSION","DBFWorkerLoader","name","id","module","version","worker","category","extensions","mimeTypes","options","dbf","encoding","DBFLoader","parse","arrayBuffer","parseSync","parseDBF","parseInBatches","parseDBFInBatches"],"mappings":";;;;;;;AACA;;AAIA,MAAMA,OAAO,GAAG,0BAAuB,WAAvB,oBAAmD,QAAnE;AAKO,MAAMC,eAAuB,GAAG;AACrCC,EAAAA,IAAI,EAAE,KAD+B;AAErCC,EAAAA,EAAE,EAAE,KAFiC;AAGrCC,EAAAA,MAAM,EAAE,WAH6B;AAIrCC,EAAAA,OAAO,EAAEL,OAJ4B;AAKrCM,EAAAA,MAAM,EAAE,IAL6B;AAMrCC,EAAAA,QAAQ,EAAE,OAN2B;AAOrCC,EAAAA,UAAU,EAAE,CAAC,KAAD,CAPyB;AAQrCC,EAAAA,SAAS,EAAE,CAAC,mBAAD,CAR0B;AASrCC,EAAAA,OAAO,EAAE;AACPC,IAAAA,GAAG,EAAE;AACHC,MAAAA,QAAQ,EAAE;AADP;AADE;AAT4B,CAAhC;;AAiBA,MAAMC,SAA2B,GAAG,EACzC,GAAGZ,eADsC;AAEzCa,EAAAA,KAAK,EAAE,OAAOC,WAAP,EAAoBL,OAApB,KAAgC,wBAASK,WAAT,EAAsBL,OAAtB,CAFE;AAGzCM,EAAAA,SAAS,EAAEC,kBAH8B;AAIzCC,EAAAA,cAAc,EAAEC;AAJyB,CAApC","sourcesContent":["import type {Loader, LoaderWithParser} from '@loaders.gl/loader-utils';\nimport {parseDBF, parseDBFInBatches} from './lib/parsers/parse-dbf';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\n/**\n * DBFLoader - DBF files are used to contain non-geometry columns in Shapefiles\n */\nexport const DBFWorkerLoader: Loader = {\n name: 'DBF',\n id: 'dbf',\n module: 'shapefile',\n version: VERSION,\n worker: true,\n category: 'table',\n extensions: ['dbf'],\n mimeTypes: ['application/x-dbf'],\n options: {\n dbf: {\n encoding: 'latin1'\n }\n }\n};\n\n/** DBF file loader */\nexport const DBFLoader: LoaderWithParser = {\n ...DBFWorkerLoader,\n parse: async (arrayBuffer, options) => parseDBF(arrayBuffer, options),\n parseSync: parseDBF,\n parseInBatches: parseDBFInBatches\n};\n"],"file":"dbf-loader.js"}
1
+ {"version":3,"sources":["../../src/dbf-loader.ts"],"names":["VERSION","DBFWorkerLoader","name","id","module","version","worker","category","extensions","mimeTypes","options","dbf","encoding","DBFLoader","parse","arrayBuffer","parseSync","parseDBF","parseInBatches","parseDBFInBatches"],"mappings":";;;;;;;;;;;;;;;AACA;;;;;;AAIA,IAAMA,OAAO,GAAG,mBAAuB,WAAvB,aAAmD,QAAnE;AAKO,IAAMC,eAAuB,GAAG;AACrCC,EAAAA,IAAI,EAAE,KAD+B;AAErCC,EAAAA,EAAE,EAAE,KAFiC;AAGrCC,EAAAA,MAAM,EAAE,WAH6B;AAIrCC,EAAAA,OAAO,EAAEL,OAJ4B;AAKrCM,EAAAA,MAAM,EAAE,IAL6B;AAMrCC,EAAAA,QAAQ,EAAE,OAN2B;AAOrCC,EAAAA,UAAU,EAAE,CAAC,KAAD,CAPyB;AAQrCC,EAAAA,SAAS,EAAE,CAAC,mBAAD,CAR0B;AASrCC,EAAAA,OAAO,EAAE;AACPC,IAAAA,GAAG,EAAE;AACHC,MAAAA,QAAQ,EAAE;AADP;AADE;AAT4B,CAAhC;;;AAiBA,IAAMC,SAA2B,mCACnCZ,eADmC;AAEtCa,EAAAA,KAAK;AAAA,2EAAE,iBAAOC,WAAP,EAAoBL,OAApB;AAAA;AAAA;AAAA;AAAA;AAAA,+CAAgC,wBAASK,WAAT,EAAsBL,OAAtB,CAAhC;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAF;;AAAA;AAAA;AAAA;;AAAA;AAAA,KAFiC;AAGtCM,EAAAA,SAAS,EAAEC,kBAH2B;AAItCC,EAAAA,cAAc,EAAEC;AAJsB,EAAjC","sourcesContent":["import type {Loader, LoaderWithParser} from '@loaders.gl/loader-utils';\nimport {parseDBF, parseDBFInBatches} from './lib/parsers/parse-dbf';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\n/**\n * DBFLoader - DBF files are used to contain non-geometry columns in Shapefiles\n */\nexport const DBFWorkerLoader: Loader = {\n name: 'DBF',\n id: 'dbf',\n module: 'shapefile',\n version: VERSION,\n worker: true,\n category: 'table',\n extensions: ['dbf'],\n mimeTypes: ['application/x-dbf'],\n options: {\n dbf: {\n encoding: 'latin1'\n }\n }\n};\n\n/** DBF file loader */\nexport const DBFLoader: LoaderWithParser = {\n ...DBFWorkerLoader,\n parse: async (arrayBuffer, options) => parseDBF(arrayBuffer, options),\n parseSync: parseDBF,\n parseInBatches: parseDBFInBatches\n};\n"],"file":"dbf-loader.js"}
package/dist/es5/index.js CHANGED
@@ -5,31 +5,31 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  Object.defineProperty(exports, "ShapefileLoader", {
7
7
  enumerable: true,
8
- get: function () {
8
+ get: function get() {
9
9
  return _shapefileLoader.ShapefileLoader;
10
10
  }
11
11
  });
12
12
  Object.defineProperty(exports, "DBFLoader", {
13
13
  enumerable: true,
14
- get: function () {
14
+ get: function get() {
15
15
  return _dbfLoader.DBFLoader;
16
16
  }
17
17
  });
18
18
  Object.defineProperty(exports, "DBFWorkerLoader", {
19
19
  enumerable: true,
20
- get: function () {
20
+ get: function get() {
21
21
  return _dbfLoader.DBFWorkerLoader;
22
22
  }
23
23
  });
24
24
  Object.defineProperty(exports, "SHPLoader", {
25
25
  enumerable: true,
26
- get: function () {
26
+ get: function get() {
27
27
  return _shpLoader.SHPLoader;
28
28
  }
29
29
  });
30
30
  Object.defineProperty(exports, "SHPWorkerLoader", {
31
31
  enumerable: true,
32
- get: function () {
32
+ get: function get() {
33
33
  return _shpLoader.SHPWorkerLoader;
34
34
  }
35
35
  });
@@ -8,14 +8,32 @@ Object.defineProperty(exports, "__esModule", {
8
8
  exports.parseDBF = parseDBF;
9
9
  exports.parseDBFInBatches = parseDBFInBatches;
10
10
 
11
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
12
+
13
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
14
+
15
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
16
+
11
17
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
12
18
 
19
+ var _awaitAsyncGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/awaitAsyncGenerator"));
20
+
21
+ var _wrapAsyncGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapAsyncGenerator"));
22
+
23
+ var _asyncIterator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncIterator"));
24
+
13
25
  var _schema = require("@loaders.gl/schema");
14
26
 
15
27
  var _binaryChunkReader = _interopRequireDefault(require("../streaming/binary-chunk-reader"));
16
28
 
17
- const LITTLE_ENDIAN = true;
18
- const DBF_HEADER_SIZE = 32;
29
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
30
+
31
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
32
+
33
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
34
+
35
+ var LITTLE_ENDIAN = true;
36
+ var DBF_HEADER_SIZE = 32;
19
37
  var STATE;
20
38
 
21
39
  (function (STATE) {
@@ -26,8 +44,9 @@ var STATE;
26
44
  STATE[STATE["ERROR"] = 4] = "ERROR";
27
45
  })(STATE || (STATE = {}));
28
46
 
29
- class DBFParser {
30
- constructor(options) {
47
+ var DBFParser = function () {
48
+ function DBFParser(options) {
49
+ (0, _classCallCheck2.default)(this, DBFParser);
31
50
  (0, _defineProperty2.default)(this, "binaryReader", new _binaryChunkReader.default());
32
51
  (0, _defineProperty2.default)(this, "textDecoder", void 0);
33
52
  (0, _defineProperty2.default)(this, "state", STATE.START);
@@ -37,42 +56,44 @@ class DBFParser {
37
56
  this.textDecoder = new TextDecoder(options.encoding);
38
57
  }
39
58
 
40
- write(arrayBuffer) {
41
- this.binaryReader.write(arrayBuffer);
42
- this.state = parseState(this.state, this.result, this.binaryReader, this.textDecoder);
43
- }
44
-
45
- end() {
46
- this.binaryReader.end();
47
- this.state = parseState(this.state, this.result, this.binaryReader, this.textDecoder);
48
-
49
- if (this.state !== STATE.END) {
50
- this.state = STATE.ERROR;
51
- this.result.error = 'DBF incomplete file';
59
+ (0, _createClass2.default)(DBFParser, [{
60
+ key: "write",
61
+ value: function write(arrayBuffer) {
62
+ this.binaryReader.write(arrayBuffer);
63
+ this.state = parseState(this.state, this.result, this.binaryReader, this.textDecoder);
52
64
  }
53
- }
54
-
55
- }
56
-
57
- function parseDBF(arrayBuffer, options = {}) {
58
- const loaderOptions = options.dbf || {};
59
- const {
60
- encoding
61
- } = loaderOptions;
62
- const dbfParser = new DBFParser({
63
- encoding
65
+ }, {
66
+ key: "end",
67
+ value: function end() {
68
+ this.binaryReader.end();
69
+ this.state = parseState(this.state, this.result, this.binaryReader, this.textDecoder);
70
+
71
+ if (this.state !== STATE.END) {
72
+ this.state = STATE.ERROR;
73
+ this.result.error = 'DBF incomplete file';
74
+ }
75
+ }
76
+ }]);
77
+ return DBFParser;
78
+ }();
79
+
80
+ function parseDBF(arrayBuffer) {
81
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
82
+ var loaderOptions = options.dbf || {};
83
+ var encoding = loaderOptions.encoding;
84
+ var dbfParser = new DBFParser({
85
+ encoding: encoding
64
86
  });
65
87
  dbfParser.write(arrayBuffer);
66
88
  dbfParser.end();
67
- const {
68
- data,
69
- schema
70
- } = dbfParser.result;
89
+ var _dbfParser$result = dbfParser.result,
90
+ data = _dbfParser$result.data,
91
+ schema = _dbfParser$result.schema;
71
92
 
72
93
  switch (options.tables && options.tables.format) {
73
94
  case 'table':
74
95
  return {
75
- schema,
96
+ schema: schema,
76
97
  rows: data
77
98
  };
78
99
 
@@ -82,35 +103,146 @@ function parseDBF(arrayBuffer, options = {}) {
82
103
  }
83
104
  }
84
105
 
85
- async function* parseDBFInBatches(asyncIterator, options = {}) {
86
- const loaderOptions = options.dbf || {};
87
- const {
88
- encoding
89
- } = loaderOptions;
90
- const parser = new DBFParser({
91
- encoding
92
- });
93
- let headerReturned = false;
106
+ function parseDBFInBatches(_x) {
107
+ return _parseDBFInBatches.apply(this, arguments);
108
+ }
94
109
 
95
- for await (const arrayBuffer of asyncIterator) {
96
- parser.write(arrayBuffer);
110
+ function _parseDBFInBatches() {
111
+ _parseDBFInBatches = (0, _wrapAsyncGenerator2.default)(_regenerator.default.mark(function _callee(asyncIterator) {
112
+ var options,
113
+ loaderOptions,
114
+ encoding,
115
+ parser,
116
+ headerReturned,
117
+ _iteratorNormalCompletion,
118
+ _didIteratorError,
119
+ _iteratorError,
120
+ _iterator,
121
+ _step,
122
+ _value,
123
+ arrayBuffer,
124
+ _args = arguments;
125
+
126
+ return _regenerator.default.wrap(function _callee$(_context) {
127
+ while (1) {
128
+ switch (_context.prev = _context.next) {
129
+ case 0:
130
+ options = _args.length > 1 && _args[1] !== undefined ? _args[1] : {};
131
+ loaderOptions = options.dbf || {};
132
+ encoding = loaderOptions.encoding;
133
+ parser = new DBFParser({
134
+ encoding: encoding
135
+ });
136
+ headerReturned = false;
137
+ _iteratorNormalCompletion = true;
138
+ _didIteratorError = false;
139
+ _context.prev = 7;
140
+ _iterator = (0, _asyncIterator2.default)(asyncIterator);
141
+
142
+ case 9:
143
+ _context.next = 11;
144
+ return (0, _awaitAsyncGenerator2.default)(_iterator.next());
145
+
146
+ case 11:
147
+ _step = _context.sent;
148
+ _iteratorNormalCompletion = _step.done;
149
+ _context.next = 15;
150
+ return (0, _awaitAsyncGenerator2.default)(_step.value);
151
+
152
+ case 15:
153
+ _value = _context.sent;
154
+
155
+ if (_iteratorNormalCompletion) {
156
+ _context.next = 30;
157
+ break;
158
+ }
97
159
 
98
- if (!headerReturned && parser.result.dbfHeader) {
99
- headerReturned = true;
100
- yield parser.result.dbfHeader;
101
- }
160
+ arrayBuffer = _value;
161
+ parser.write(arrayBuffer);
102
162
 
103
- if (parser.result.data.length > 0) {
104
- yield parser.result.data;
105
- parser.result.data = [];
106
- }
107
- }
163
+ if (!(!headerReturned && parser.result.dbfHeader)) {
164
+ _context.next = 23;
165
+ break;
166
+ }
108
167
 
109
- parser.end();
168
+ headerReturned = true;
169
+ _context.next = 23;
170
+ return parser.result.dbfHeader;
110
171
 
111
- if (parser.result.data.length > 0) {
112
- yield parser.result.data;
113
- }
172
+ case 23:
173
+ if (!(parser.result.data.length > 0)) {
174
+ _context.next = 27;
175
+ break;
176
+ }
177
+
178
+ _context.next = 26;
179
+ return parser.result.data;
180
+
181
+ case 26:
182
+ parser.result.data = [];
183
+
184
+ case 27:
185
+ _iteratorNormalCompletion = true;
186
+ _context.next = 9;
187
+ break;
188
+
189
+ case 30:
190
+ _context.next = 36;
191
+ break;
192
+
193
+ case 32:
194
+ _context.prev = 32;
195
+ _context.t0 = _context["catch"](7);
196
+ _didIteratorError = true;
197
+ _iteratorError = _context.t0;
198
+
199
+ case 36:
200
+ _context.prev = 36;
201
+ _context.prev = 37;
202
+
203
+ if (!(!_iteratorNormalCompletion && _iterator.return != null)) {
204
+ _context.next = 41;
205
+ break;
206
+ }
207
+
208
+ _context.next = 41;
209
+ return (0, _awaitAsyncGenerator2.default)(_iterator.return());
210
+
211
+ case 41:
212
+ _context.prev = 41;
213
+
214
+ if (!_didIteratorError) {
215
+ _context.next = 44;
216
+ break;
217
+ }
218
+
219
+ throw _iteratorError;
220
+
221
+ case 44:
222
+ return _context.finish(41);
223
+
224
+ case 45:
225
+ return _context.finish(36);
226
+
227
+ case 46:
228
+ parser.end();
229
+
230
+ if (!(parser.result.data.length > 0)) {
231
+ _context.next = 50;
232
+ break;
233
+ }
234
+
235
+ _context.next = 50;
236
+ return parser.result.data;
237
+
238
+ case 50:
239
+ case "end":
240
+ return _context.stop();
241
+ }
242
+ }
243
+ }, _callee, null, [[7, 32, 36, 46], [37,, 41, 45]]);
244
+ }));
245
+ return _parseDBFInBatches.apply(this, arguments);
114
246
  }
115
247
 
116
248
  function parseState(state, result, binaryReader, textDecoder) {
@@ -122,7 +254,7 @@ function parseState(state, result, binaryReader, textDecoder) {
122
254
  return state;
123
255
 
124
256
  case STATE.START:
125
- const dataView = binaryReader.getDataView(DBF_HEADER_SIZE, 'DBF header');
257
+ var dataView = binaryReader.getDataView(DBF_HEADER_SIZE, 'DBF header');
126
258
 
127
259
  if (!dataView) {
128
260
  return state;
@@ -138,33 +270,36 @@ function parseState(state, result, binaryReader, textDecoder) {
138
270
  break;
139
271
 
140
272
  case STATE.FIELD_DESCRIPTORS:
141
- const fieldDescriptorView = binaryReader.getDataView(result.dbfHeader.headerLength - DBF_HEADER_SIZE, 'DBF field descriptors');
273
+ var fieldDescriptorView = binaryReader.getDataView(result.dbfHeader.headerLength - DBF_HEADER_SIZE, 'DBF field descriptors');
142
274
 
143
275
  if (!fieldDescriptorView) {
144
276
  return state;
145
277
  }
146
278
 
147
279
  result.dbfFields = parseFieldDescriptors(fieldDescriptorView, textDecoder);
148
- result.schema = new _schema.Schema(result.dbfFields.map(dbfField => makeField(dbfField)));
280
+ result.schema = new _schema.Schema(result.dbfFields.map(function (dbfField) {
281
+ return makeField(dbfField);
282
+ }));
149
283
  state = STATE.FIELD_PROPERTIES;
150
284
  binaryReader.skip(1);
151
285
  break;
152
286
 
153
287
  case STATE.FIELD_PROPERTIES:
154
- const {
155
- recordLength = 0,
156
- nRecords = 0
157
- } = (result === null || result === void 0 ? void 0 : result.dbfHeader) || {};
288
+ var _ref = (result === null || result === void 0 ? void 0 : result.dbfHeader) || {},
289
+ _ref$recordLength = _ref.recordLength,
290
+ recordLength = _ref$recordLength === void 0 ? 0 : _ref$recordLength,
291
+ _ref$nRecords = _ref.nRecords,
292
+ nRecords = _ref$nRecords === void 0 ? 0 : _ref$nRecords;
158
293
 
159
294
  while (result.data.length < nRecords) {
160
- const recordView = binaryReader.getDataView(recordLength - 1);
295
+ var recordView = binaryReader.getDataView(recordLength - 1);
161
296
 
162
297
  if (!recordView) {
163
298
  return state;
164
299
  }
165
300
 
166
301
  binaryReader.skip(1);
167
- const row = parseRow(recordView, result.dbfFields, textDecoder);
302
+ var row = parseRow(recordView, result.dbfFields, textDecoder);
168
303
  result.data.push(row);
169
304
  result.progress.rows = result.data.length;
170
305
  }
@@ -198,14 +333,14 @@ function parseDBFHeader(headerView) {
198
333
  }
199
334
 
200
335
  function parseFieldDescriptors(view, textDecoder) {
201
- const nFields = (view.byteLength - 1) / 32;
202
- const fields = [];
203
- let offset = 0;
336
+ var nFields = (view.byteLength - 1) / 32;
337
+ var fields = [];
338
+ var offset = 0;
204
339
 
205
- for (let i = 0; i < nFields; i++) {
206
- const name = textDecoder.decode(new Uint8Array(view.buffer, view.byteOffset + offset, 11)).replace(/\u0000/g, '');
340
+ for (var i = 0; i < nFields; i++) {
341
+ var name = textDecoder.decode(new Uint8Array(view.buffer, view.byteOffset + offset, 11)).replace(/\u0000/g, '');
207
342
  fields.push({
208
- name,
343
+ name: name,
209
344
  dataType: String.fromCharCode(view.getUint8(offset + 11)),
210
345
  fieldLength: view.getUint8(offset + 16),
211
346
  decimal: view.getUint8(offset + 17)
@@ -217,13 +352,23 @@ function parseFieldDescriptors(view, textDecoder) {
217
352
  }
218
353
 
219
354
  function parseRow(view, fields, textDecoder) {
220
- const out = {};
221
- let offset = 0;
222
-
223
- for (const field of fields) {
224
- const text = textDecoder.decode(new Uint8Array(view.buffer, view.byteOffset + offset, field.fieldLength));
225
- out[field.name] = parseField(text, field.dataType);
226
- offset += field.fieldLength;
355
+ var out = {};
356
+ var offset = 0;
357
+
358
+ var _iterator2 = _createForOfIteratorHelper(fields),
359
+ _step2;
360
+
361
+ try {
362
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
363
+ var field = _step2.value;
364
+ var text = textDecoder.decode(new Uint8Array(view.buffer, view.byteOffset + offset, field.fieldLength));
365
+ out[field.name] = parseField(text, field.dataType);
366
+ offset += field.fieldLength;
367
+ }
368
+ } catch (err) {
369
+ _iterator2.e(err);
370
+ } finally {
371
+ _iterator2.f();
227
372
  }
228
373
 
229
374
  return out;
@@ -266,7 +411,7 @@ function parseBoolean(value) {
266
411
  }
267
412
 
268
413
  function parseNumber(text) {
269
- const number = parseFloat(text);
414
+ var number = parseFloat(text);
270
415
  return isNaN(number) ? null : number;
271
416
  }
272
417
 
@@ -274,12 +419,12 @@ function parseCharacter(text) {
274
419
  return text.trim() || null;
275
420
  }
276
421
 
277
- function makeField({
278
- name,
279
- dataType,
280
- fieldLength,
281
- decimal
282
- }) {
422
+ function makeField(_ref2) {
423
+ var name = _ref2.name,
424
+ dataType = _ref2.dataType,
425
+ fieldLength = _ref2.fieldLength,
426
+ decimal = _ref2.decimal;
427
+
283
428
  switch (dataType) {
284
429
  case 'B':
285
430
  return new _schema.Field(name, new _schema.Float64(), true);