@loaders.gl/shapefile 3.1.0-beta.2 → 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.
- package/dist/bundle.js +3 -0
- package/dist/es5/bundle.js +1 -1
- package/dist/es5/bundle.js.map +1 -1
- package/dist/es5/dbf-loader.js +40 -5
- package/dist/es5/dbf-loader.js.map +1 -1
- package/dist/es5/index.js +5 -5
- package/dist/es5/lib/parsers/parse-dbf.js +230 -85
- package/dist/es5/lib/parsers/parse-dbf.js.map +1 -1
- package/dist/es5/lib/parsers/parse-shapefile.js +408 -151
- package/dist/es5/lib/parsers/parse-shapefile.js.map +1 -1
- package/dist/es5/lib/parsers/parse-shp-geometry.js +96 -49
- package/dist/es5/lib/parsers/parse-shp-geometry.js.map +1 -1
- package/dist/es5/lib/parsers/parse-shp-header.js +4 -4
- package/dist/es5/lib/parsers/parse-shp-header.js.map +1 -1
- package/dist/es5/lib/parsers/parse-shp.js +165 -47
- package/dist/es5/lib/parsers/parse-shp.js.map +1 -1
- package/dist/es5/lib/parsers/parse-shx.js +11 -11
- package/dist/es5/lib/parsers/parse-shx.js.map +1 -1
- package/dist/es5/lib/streaming/binary-chunk-reader.js +172 -99
- package/dist/es5/lib/streaming/binary-chunk-reader.js.map +1 -1
- package/dist/es5/lib/streaming/binary-reader.js +35 -24
- package/dist/es5/lib/streaming/binary-reader.js.map +1 -1
- package/dist/es5/lib/streaming/zip-batch-iterators.js +96 -37
- package/dist/es5/lib/streaming/zip-batch-iterators.js.map +1 -1
- package/dist/es5/shapefile-loader.js +3 -3
- package/dist/es5/shapefile-loader.js.map +1 -1
- package/dist/es5/shp-loader.js +41 -6
- package/dist/es5/shp-loader.js.map +1 -1
- package/dist/esm/dbf-loader.js +1 -1
- package/dist/esm/dbf-loader.js.map +1 -1
- package/dist/esm/lib/parsers/parse-shapefile.js +4 -0
- package/dist/esm/lib/parsers/parse-shapefile.js.map +1 -1
- package/dist/esm/shapefile-loader.js +1 -1
- package/dist/esm/shapefile-loader.js.map +1 -1
- package/dist/esm/shp-loader.js +1 -1
- package/dist/esm/shp-loader.js.map +1 -1
- package/dist/lib/parsers/parse-shapefile.d.ts.map +1 -1
- package/dist/lib/parsers/parse-shapefile.js +3 -0
- package/package.json +5 -5
- 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
|
}
|
package/dist/es5/bundle.js
CHANGED
package/dist/es5/bundle.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/bundle.ts"],"names":["moduleExports","require","globalThis","loaders","module","exports","Object","assign"],"mappings":";;AACA,
|
|
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"}
|
package/dist/es5/dbf-loader.js
CHANGED
|
@@ -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
|
-
|
|
11
|
-
|
|
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
|
-
|
|
28
|
-
|
|
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":"
|
|
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
|
-
|
|
18
|
-
|
|
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
|
-
|
|
30
|
-
|
|
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
|
-
|
|
41
|
-
|
|
42
|
-
|
|
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
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
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
|
-
|
|
68
|
-
|
|
69
|
-
|
|
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
|
-
|
|
86
|
-
|
|
87
|
-
|
|
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
|
-
|
|
96
|
-
|
|
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
|
-
|
|
99
|
-
|
|
100
|
-
yield parser.result.dbfHeader;
|
|
101
|
-
}
|
|
160
|
+
arrayBuffer = _value;
|
|
161
|
+
parser.write(arrayBuffer);
|
|
102
162
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
}
|
|
163
|
+
if (!(!headerReturned && parser.result.dbfHeader)) {
|
|
164
|
+
_context.next = 23;
|
|
165
|
+
break;
|
|
166
|
+
}
|
|
108
167
|
|
|
109
|
-
|
|
168
|
+
headerReturned = true;
|
|
169
|
+
_context.next = 23;
|
|
170
|
+
return parser.result.dbfHeader;
|
|
110
171
|
|
|
111
|
-
|
|
112
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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(
|
|
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
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
202
|
-
|
|
203
|
-
|
|
336
|
+
var nFields = (view.byteLength - 1) / 32;
|
|
337
|
+
var fields = [];
|
|
338
|
+
var offset = 0;
|
|
204
339
|
|
|
205
|
-
for (
|
|
206
|
-
|
|
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
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
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
|
-
|
|
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
|
-
|
|
280
|
-
|
|
281
|
-
|
|
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);
|