@loaders.gl/shapefile 3.1.0-alpha.4 → 3.1.0-beta.3
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.d.ts +2 -0
- package/dist/bundle.d.ts.map +1 -0
- package/dist/bundle.js +7554 -0
- package/dist/dbf-loader.d.ts +8 -0
- package/dist/dbf-loader.d.ts.map +1 -0
- package/dist/dbf-loader.js +32 -0
- package/dist/dbf-worker.js +912 -2
- package/dist/es5/bundle.js +1 -1
- package/dist/es5/bundle.js.map +1 -1
- package/dist/es5/dbf-loader.js +5 -40
- package/dist/es5/dbf-loader.js.map +1 -1
- package/dist/es5/index.js +5 -5
- package/dist/es5/lib/parsers/parse-dbf.js +86 -232
- package/dist/es5/lib/parsers/parse-dbf.js.map +1 -1
- package/dist/es5/lib/parsers/parse-shapefile.js +151 -404
- package/dist/es5/lib/parsers/parse-shapefile.js.map +1 -1
- package/dist/es5/lib/parsers/parse-shp-geometry.js +49 -96
- 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 +47 -165
- 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 +99 -172
- package/dist/es5/lib/streaming/binary-chunk-reader.js.map +1 -1
- package/dist/es5/lib/streaming/binary-reader.js +24 -35
- package/dist/es5/lib/streaming/binary-reader.js.map +1 -1
- package/dist/es5/lib/streaming/zip-batch-iterators.js +37 -96
- 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 +6 -41
- package/dist/es5/shp-loader.js.map +1 -1
- package/dist/es5/workers/dbf-worker.js +7 -3
- package/dist/es5/workers/dbf-worker.js.map +1 -0
- package/dist/es5/workers/shp-worker.js +7 -3
- package/dist/es5/workers/shp-worker.js.map +1 -0
- package/dist/esm/dbf-loader.js +1 -1
- package/dist/esm/dbf-loader.js.map +1 -1
- package/dist/esm/lib/parsers/parse-dbf.js +4 -6
- package/dist/esm/lib/parsers/parse-dbf.js.map +1 -1
- package/dist/esm/lib/parsers/parse-shapefile.js +1 -1
- package/dist/esm/lib/parsers/parse-shapefile.js.map +1 -1
- package/dist/esm/lib/parsers/parse-shp-geometry.js +1 -1
- package/dist/esm/lib/parsers/parse-shp-geometry.js.map +1 -1
- package/dist/esm/lib/parsers/parse-shp-header.js +2 -2
- package/dist/esm/lib/parsers/parse-shp-header.js.map +1 -1
- package/dist/esm/lib/parsers/parse-shp.js +2 -2
- package/dist/esm/lib/parsers/parse-shp.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/esm/workers/dbf-worker.js +3 -3
- package/dist/esm/workers/dbf-worker.js.map +1 -0
- package/dist/esm/workers/shp-worker.js +3 -3
- package/dist/esm/workers/shp-worker.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/lib/parsers/parse-dbf.d.ts +28 -0
- package/dist/lib/parsers/parse-dbf.d.ts.map +1 -0
- package/dist/lib/parsers/parse-dbf.js +335 -0
- package/dist/lib/parsers/parse-shapefile.d.ts +54 -0
- package/dist/lib/parsers/parse-shapefile.d.ts.map +1 -0
- package/dist/lib/parsers/parse-shapefile.js +245 -0
- package/dist/lib/parsers/parse-shp-geometry.d.ts +11 -0
- package/dist/lib/parsers/parse-shp-geometry.d.ts.map +1 -0
- package/dist/lib/parsers/parse-shp-geometry.js +287 -0
- package/dist/lib/parsers/parse-shp-header.d.ts +26 -0
- package/dist/lib/parsers/parse-shp-header.d.ts.map +1 -0
- package/dist/lib/parsers/parse-shp-header.js +43 -0
- package/dist/lib/parsers/parse-shp.d.ts +9 -0
- package/dist/lib/parsers/parse-shp.d.ts.map +1 -0
- package/dist/lib/parsers/parse-shp.js +170 -0
- package/dist/lib/parsers/parse-shx.d.ts +10 -0
- package/dist/lib/parsers/parse-shx.d.ts.map +1 -0
- package/dist/lib/parsers/parse-shx.js +28 -0
- package/dist/lib/streaming/binary-chunk-reader.d.ts +59 -0
- package/dist/lib/streaming/binary-chunk-reader.d.ts.map +1 -0
- package/dist/lib/streaming/binary-chunk-reader.js +161 -0
- package/dist/lib/streaming/binary-reader.d.ts +32 -0
- package/dist/lib/streaming/binary-reader.d.ts.map +1 -0
- package/dist/lib/streaming/binary-reader.js +52 -0
- package/dist/lib/streaming/zip-batch-iterators.d.ts +8 -0
- package/dist/lib/streaming/zip-batch-iterators.d.ts.map +1 -0
- package/dist/lib/streaming/zip-batch-iterators.js +61 -0
- package/dist/shapefile-loader.d.ts +26 -0
- package/dist/shapefile-loader.d.ts.map +1 -0
- package/dist/shapefile-loader.js +31 -0
- package/dist/shp-loader.d.ts +9 -0
- package/dist/shp-loader.d.ts.map +1 -0
- package/dist/shp-loader.js +35 -0
- package/dist/shp-worker.js +606 -2
- package/dist/workers/dbf-worker.d.ts +2 -0
- package/dist/workers/dbf-worker.d.ts.map +1 -0
- package/dist/workers/dbf-worker.js +5 -0
- package/dist/workers/shp-worker.d.ts +2 -0
- package/dist/workers/shp-worker.d.ts.map +1 -0
- package/dist/workers/shp-worker.js +5 -0
- package/package.json +10 -10
- package/src/lib/parsers/parse-dbf.ts +5 -3
- package/src/lib/parsers/parse-shp-geometry.ts +1 -1
- package/src/workers/{dbf-worker.js → dbf-worker.ts} +0 -0
- package/src/workers/{shp-worker.js → shp-worker.ts} +0 -0
- package/dist/dbf-worker.js.map +0 -1
- package/dist/dist.min.js +0 -2
- package/dist/dist.min.js.map +0 -1
- package/dist/shp-worker.js.map +0 -1
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,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"}
|
package/dist/es5/dbf-loader.js
CHANGED
|
@@ -1,26 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
3
|
Object.defineProperty(exports, "__esModule", {
|
|
6
4
|
value: true
|
|
7
5
|
});
|
|
8
6
|
exports.DBFLoader = exports.DBFWorkerLoader = void 0;
|
|
9
7
|
|
|
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
|
-
|
|
16
8
|
var _parseDbf = require("./lib/parsers/parse-dbf");
|
|
17
9
|
|
|
18
|
-
|
|
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-alpha.4" !== 'undefined' ? "3.1.0-alpha.4" : 'latest';
|
|
23
|
-
var DBFWorkerLoader = {
|
|
10
|
+
const VERSION = typeof "3.1.0-beta.3" !== 'undefined' ? "3.1.0-beta.3" : 'latest';
|
|
11
|
+
const DBFWorkerLoader = {
|
|
24
12
|
name: 'DBF',
|
|
25
13
|
id: 'dbf',
|
|
26
14
|
module: 'shapefile',
|
|
@@ -36,33 +24,10 @@ var DBFWorkerLoader = {
|
|
|
36
24
|
}
|
|
37
25
|
};
|
|
38
26
|
exports.DBFWorkerLoader = DBFWorkerLoader;
|
|
39
|
-
|
|
40
|
-
|
|
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
|
-
}(),
|
|
27
|
+
const DBFLoader = { ...DBFWorkerLoader,
|
|
28
|
+
parse: async (arrayBuffer, options) => (0, _parseDbf.parseDBF)(arrayBuffer, options),
|
|
63
29
|
parseSync: _parseDbf.parseDBF,
|
|
64
30
|
parseInBatches: _parseDbf.parseDBFInBatches
|
|
65
|
-
}
|
|
66
|
-
|
|
31
|
+
};
|
|
67
32
|
exports.DBFLoader = DBFLoader;
|
|
68
33
|
//# 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,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"}
|
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 () {
|
|
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 () {
|
|
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 () {
|
|
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 () {
|
|
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 () {
|
|
33
33
|
return _shpLoader.SHPWorkerLoader;
|
|
34
34
|
}
|
|
35
35
|
});
|
|
@@ -8,32 +8,14 @@ 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
|
-
|
|
17
11
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
18
12
|
|
|
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
|
-
|
|
25
13
|
var _schema = require("@loaders.gl/schema");
|
|
26
14
|
|
|
27
15
|
var _binaryChunkReader = _interopRequireDefault(require("../streaming/binary-chunk-reader"));
|
|
28
16
|
|
|
29
|
-
|
|
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;
|
|
17
|
+
const LITTLE_ENDIAN = true;
|
|
18
|
+
const DBF_HEADER_SIZE = 32;
|
|
37
19
|
var STATE;
|
|
38
20
|
|
|
39
21
|
(function (STATE) {
|
|
@@ -44,57 +26,53 @@ var STATE;
|
|
|
44
26
|
STATE[STATE["ERROR"] = 4] = "ERROR";
|
|
45
27
|
})(STATE || (STATE = {}));
|
|
46
28
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
var encoding = _ref.encoding;
|
|
50
|
-
(0, _classCallCheck2.default)(this, DBFParser);
|
|
29
|
+
class DBFParser {
|
|
30
|
+
constructor(options) {
|
|
51
31
|
(0, _defineProperty2.default)(this, "binaryReader", new _binaryChunkReader.default());
|
|
52
32
|
(0, _defineProperty2.default)(this, "textDecoder", void 0);
|
|
53
33
|
(0, _defineProperty2.default)(this, "state", STATE.START);
|
|
54
34
|
(0, _defineProperty2.default)(this, "result", {
|
|
55
35
|
data: []
|
|
56
36
|
});
|
|
57
|
-
this.textDecoder = new TextDecoder(encoding);
|
|
37
|
+
this.textDecoder = new TextDecoder(options.encoding);
|
|
58
38
|
}
|
|
59
39
|
|
|
60
|
-
(
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
this.state =
|
|
71
|
-
|
|
72
|
-
if (this.state !== STATE.END) {
|
|
73
|
-
this.state = STATE.ERROR;
|
|
74
|
-
this.result.error = 'DBF incomplete file';
|
|
75
|
-
}
|
|
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';
|
|
76
52
|
}
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
function parseDBF(arrayBuffer) {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
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
|
|
87
64
|
});
|
|
88
65
|
dbfParser.write(arrayBuffer);
|
|
89
66
|
dbfParser.end();
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
67
|
+
const {
|
|
68
|
+
data,
|
|
69
|
+
schema
|
|
70
|
+
} = dbfParser.result;
|
|
93
71
|
|
|
94
72
|
switch (options.tables && options.tables.format) {
|
|
95
73
|
case 'table':
|
|
96
74
|
return {
|
|
97
|
-
schema
|
|
75
|
+
schema,
|
|
98
76
|
rows: data
|
|
99
77
|
};
|
|
100
78
|
|
|
@@ -104,146 +82,35 @@ function parseDBF(arrayBuffer) {
|
|
|
104
82
|
}
|
|
105
83
|
}
|
|
106
84
|
|
|
107
|
-
function parseDBFInBatches(
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
parser,
|
|
117
|
-
headerReturned,
|
|
118
|
-
_iteratorNormalCompletion,
|
|
119
|
-
_didIteratorError,
|
|
120
|
-
_iteratorError,
|
|
121
|
-
_iterator,
|
|
122
|
-
_step,
|
|
123
|
-
_value,
|
|
124
|
-
arrayBuffer,
|
|
125
|
-
_args = arguments;
|
|
126
|
-
|
|
127
|
-
return _regenerator.default.wrap(function _callee$(_context) {
|
|
128
|
-
while (1) {
|
|
129
|
-
switch (_context.prev = _context.next) {
|
|
130
|
-
case 0:
|
|
131
|
-
options = _args.length > 1 && _args[1] !== undefined ? _args[1] : {};
|
|
132
|
-
loaderOptions = options.dbf || {};
|
|
133
|
-
encoding = loaderOptions.encoding;
|
|
134
|
-
parser = new DBFParser({
|
|
135
|
-
encoding: encoding
|
|
136
|
-
});
|
|
137
|
-
headerReturned = false;
|
|
138
|
-
_iteratorNormalCompletion = true;
|
|
139
|
-
_didIteratorError = false;
|
|
140
|
-
_context.prev = 7;
|
|
141
|
-
_iterator = (0, _asyncIterator2.default)(asyncIterator);
|
|
142
|
-
|
|
143
|
-
case 9:
|
|
144
|
-
_context.next = 11;
|
|
145
|
-
return (0, _awaitAsyncGenerator2.default)(_iterator.next());
|
|
146
|
-
|
|
147
|
-
case 11:
|
|
148
|
-
_step = _context.sent;
|
|
149
|
-
_iteratorNormalCompletion = _step.done;
|
|
150
|
-
_context.next = 15;
|
|
151
|
-
return (0, _awaitAsyncGenerator2.default)(_step.value);
|
|
152
|
-
|
|
153
|
-
case 15:
|
|
154
|
-
_value = _context.sent;
|
|
155
|
-
|
|
156
|
-
if (_iteratorNormalCompletion) {
|
|
157
|
-
_context.next = 30;
|
|
158
|
-
break;
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
arrayBuffer = _value;
|
|
162
|
-
parser.write(arrayBuffer);
|
|
163
|
-
|
|
164
|
-
if (!(!headerReturned && parser.result.dbfHeader)) {
|
|
165
|
-
_context.next = 23;
|
|
166
|
-
break;
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
headerReturned = true;
|
|
170
|
-
_context.next = 23;
|
|
171
|
-
return parser.result.dbfHeader;
|
|
172
|
-
|
|
173
|
-
case 23:
|
|
174
|
-
if (!(parser.result.data.length > 0)) {
|
|
175
|
-
_context.next = 27;
|
|
176
|
-
break;
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
_context.next = 26;
|
|
180
|
-
return parser.result.data;
|
|
181
|
-
|
|
182
|
-
case 26:
|
|
183
|
-
parser.result.data = [];
|
|
184
|
-
|
|
185
|
-
case 27:
|
|
186
|
-
_iteratorNormalCompletion = true;
|
|
187
|
-
_context.next = 9;
|
|
188
|
-
break;
|
|
189
|
-
|
|
190
|
-
case 30:
|
|
191
|
-
_context.next = 36;
|
|
192
|
-
break;
|
|
193
|
-
|
|
194
|
-
case 32:
|
|
195
|
-
_context.prev = 32;
|
|
196
|
-
_context.t0 = _context["catch"](7);
|
|
197
|
-
_didIteratorError = true;
|
|
198
|
-
_iteratorError = _context.t0;
|
|
199
|
-
|
|
200
|
-
case 36:
|
|
201
|
-
_context.prev = 36;
|
|
202
|
-
_context.prev = 37;
|
|
203
|
-
|
|
204
|
-
if (!(!_iteratorNormalCompletion && _iterator.return != null)) {
|
|
205
|
-
_context.next = 41;
|
|
206
|
-
break;
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
_context.next = 41;
|
|
210
|
-
return (0, _awaitAsyncGenerator2.default)(_iterator.return());
|
|
211
|
-
|
|
212
|
-
case 41:
|
|
213
|
-
_context.prev = 41;
|
|
214
|
-
|
|
215
|
-
if (!_didIteratorError) {
|
|
216
|
-
_context.next = 44;
|
|
217
|
-
break;
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
throw _iteratorError;
|
|
221
|
-
|
|
222
|
-
case 44:
|
|
223
|
-
return _context.finish(41);
|
|
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;
|
|
224
94
|
|
|
225
|
-
|
|
226
|
-
|
|
95
|
+
for await (const arrayBuffer of asyncIterator) {
|
|
96
|
+
parser.write(arrayBuffer);
|
|
227
97
|
|
|
228
|
-
|
|
229
|
-
|
|
98
|
+
if (!headerReturned && parser.result.dbfHeader) {
|
|
99
|
+
headerReturned = true;
|
|
100
|
+
yield parser.result.dbfHeader;
|
|
101
|
+
}
|
|
230
102
|
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
103
|
+
if (parser.result.data.length > 0) {
|
|
104
|
+
yield parser.result.data;
|
|
105
|
+
parser.result.data = [];
|
|
106
|
+
}
|
|
107
|
+
}
|
|
235
108
|
|
|
236
|
-
|
|
237
|
-
return parser.result.data;
|
|
109
|
+
parser.end();
|
|
238
110
|
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
}, _callee, null, [[7, 32, 36, 46], [37,, 41, 45]]);
|
|
245
|
-
}));
|
|
246
|
-
return _parseDBFInBatches.apply(this, arguments);
|
|
111
|
+
if (parser.result.data.length > 0) {
|
|
112
|
+
yield parser.result.data;
|
|
113
|
+
}
|
|
247
114
|
}
|
|
248
115
|
|
|
249
116
|
function parseState(state, result, binaryReader, textDecoder) {
|
|
@@ -255,7 +122,7 @@ function parseState(state, result, binaryReader, textDecoder) {
|
|
|
255
122
|
return state;
|
|
256
123
|
|
|
257
124
|
case STATE.START:
|
|
258
|
-
|
|
125
|
+
const dataView = binaryReader.getDataView(DBF_HEADER_SIZE, 'DBF header');
|
|
259
126
|
|
|
260
127
|
if (!dataView) {
|
|
261
128
|
return state;
|
|
@@ -271,36 +138,33 @@ function parseState(state, result, binaryReader, textDecoder) {
|
|
|
271
138
|
break;
|
|
272
139
|
|
|
273
140
|
case STATE.FIELD_DESCRIPTORS:
|
|
274
|
-
|
|
141
|
+
const fieldDescriptorView = binaryReader.getDataView(result.dbfHeader.headerLength - DBF_HEADER_SIZE, 'DBF field descriptors');
|
|
275
142
|
|
|
276
143
|
if (!fieldDescriptorView) {
|
|
277
144
|
return state;
|
|
278
145
|
}
|
|
279
146
|
|
|
280
147
|
result.dbfFields = parseFieldDescriptors(fieldDescriptorView, textDecoder);
|
|
281
|
-
result.schema = new _schema.Schema(result.dbfFields.map(
|
|
282
|
-
return makeField(dbfField);
|
|
283
|
-
}));
|
|
148
|
+
result.schema = new _schema.Schema(result.dbfFields.map(dbfField => makeField(dbfField)));
|
|
284
149
|
state = STATE.FIELD_PROPERTIES;
|
|
285
150
|
binaryReader.skip(1);
|
|
286
151
|
break;
|
|
287
152
|
|
|
288
153
|
case STATE.FIELD_PROPERTIES:
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
nRecords = _ref2$nRecords === void 0 ? 0 : _ref2$nRecords;
|
|
154
|
+
const {
|
|
155
|
+
recordLength = 0,
|
|
156
|
+
nRecords = 0
|
|
157
|
+
} = (result === null || result === void 0 ? void 0 : result.dbfHeader) || {};
|
|
294
158
|
|
|
295
159
|
while (result.data.length < nRecords) {
|
|
296
|
-
|
|
160
|
+
const recordView = binaryReader.getDataView(recordLength - 1);
|
|
297
161
|
|
|
298
162
|
if (!recordView) {
|
|
299
163
|
return state;
|
|
300
164
|
}
|
|
301
165
|
|
|
302
166
|
binaryReader.skip(1);
|
|
303
|
-
|
|
167
|
+
const row = parseRow(recordView, result.dbfFields, textDecoder);
|
|
304
168
|
result.data.push(row);
|
|
305
169
|
result.progress.rows = result.data.length;
|
|
306
170
|
}
|
|
@@ -334,14 +198,14 @@ function parseDBFHeader(headerView) {
|
|
|
334
198
|
}
|
|
335
199
|
|
|
336
200
|
function parseFieldDescriptors(view, textDecoder) {
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
201
|
+
const nFields = (view.byteLength - 1) / 32;
|
|
202
|
+
const fields = [];
|
|
203
|
+
let offset = 0;
|
|
340
204
|
|
|
341
|
-
for (
|
|
342
|
-
|
|
205
|
+
for (let i = 0; i < nFields; i++) {
|
|
206
|
+
const name = textDecoder.decode(new Uint8Array(view.buffer, view.byteOffset + offset, 11)).replace(/\u0000/g, '');
|
|
343
207
|
fields.push({
|
|
344
|
-
name
|
|
208
|
+
name,
|
|
345
209
|
dataType: String.fromCharCode(view.getUint8(offset + 11)),
|
|
346
210
|
fieldLength: view.getUint8(offset + 16),
|
|
347
211
|
decimal: view.getUint8(offset + 17)
|
|
@@ -353,23 +217,13 @@ function parseFieldDescriptors(view, textDecoder) {
|
|
|
353
217
|
}
|
|
354
218
|
|
|
355
219
|
function parseRow(view, fields, textDecoder) {
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
364
|
-
var field = _step2.value;
|
|
365
|
-
var text = textDecoder.decode(new Uint8Array(view.buffer, view.byteOffset + offset, field.fieldLength));
|
|
366
|
-
out[field.name] = parseField(text, field.dataType);
|
|
367
|
-
offset += field.fieldLength;
|
|
368
|
-
}
|
|
369
|
-
} catch (err) {
|
|
370
|
-
_iterator2.e(err);
|
|
371
|
-
} finally {
|
|
372
|
-
_iterator2.f();
|
|
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;
|
|
373
227
|
}
|
|
374
228
|
|
|
375
229
|
return out;
|
|
@@ -412,7 +266,7 @@ function parseBoolean(value) {
|
|
|
412
266
|
}
|
|
413
267
|
|
|
414
268
|
function parseNumber(text) {
|
|
415
|
-
|
|
269
|
+
const number = parseFloat(text);
|
|
416
270
|
return isNaN(number) ? null : number;
|
|
417
271
|
}
|
|
418
272
|
|
|
@@ -420,12 +274,12 @@ function parseCharacter(text) {
|
|
|
420
274
|
return text.trim() || null;
|
|
421
275
|
}
|
|
422
276
|
|
|
423
|
-
function makeField(
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
277
|
+
function makeField({
|
|
278
|
+
name,
|
|
279
|
+
dataType,
|
|
280
|
+
fieldLength,
|
|
281
|
+
decimal
|
|
282
|
+
}) {
|
|
429
283
|
switch (dataType) {
|
|
430
284
|
case 'B':
|
|
431
285
|
return new _schema.Field(name, new _schema.Float64(), true);
|