@loaders.gl/wkt 3.4.0-alpha.2 → 3.4.0-alpha.4
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/es5/index.js.map +1 -1
- package/dist/es5/lib/encode-wkb.js +4 -21
- package/dist/es5/lib/encode-wkb.js.map +1 -1
- package/dist/es5/lib/encode-wkt.js +0 -1
- package/dist/es5/lib/encode-wkt.js.map +1 -1
- package/dist/es5/lib/parse-wkb.js +1 -13
- package/dist/es5/lib/parse-wkb.js.map +1 -1
- package/dist/es5/lib/parse-wkt.js +0 -3
- package/dist/es5/lib/parse-wkt.js.map +1 -1
- package/dist/es5/lib/utils/binary-writer.js +3 -10
- package/dist/es5/lib/utils/binary-writer.js.map +1 -1
- package/dist/es5/lib/utils/version.js +1 -1
- package/dist/es5/lib/utils/version.js.map +1 -1
- package/dist/es5/wkb-loader.js +6 -9
- package/dist/es5/wkb-loader.js.map +1 -1
- package/dist/es5/wkb-writer.js.map +1 -1
- package/dist/es5/wkt-loader.js +6 -9
- package/dist/es5/wkt-loader.js.map +1 -1
- package/dist/es5/wkt-writer.js.map +1 -1
- package/dist/es5/workers/wkb-worker.js.map +1 -1
- package/dist/es5/workers/wkt-worker.js.map +1 -1
- package/dist/esm/bundle.js +0 -1
- package/dist/esm/bundle.js.map +1 -1
- package/dist/esm/lib/encode-wkb.js +3 -23
- package/dist/esm/lib/encode-wkb.js.map +1 -1
- package/dist/esm/lib/encode-wkt.js +0 -2
- package/dist/esm/lib/encode-wkt.js.map +1 -1
- package/dist/esm/lib/parse-wkb.js +0 -12
- package/dist/esm/lib/parse-wkb.js.map +1 -1
- package/dist/esm/lib/parse-wkt.js +0 -4
- package/dist/esm/lib/parse-wkt.js.map +1 -1
- package/dist/esm/lib/utils/binary-writer.js +0 -4
- package/dist/esm/lib/utils/binary-writer.js.map +1 -1
- package/dist/esm/lib/utils/version.js +1 -2
- package/dist/esm/lib/utils/version.js.map +1 -1
- package/dist/esm/wkb-loader.js +0 -2
- package/dist/esm/wkb-loader.js.map +1 -1
- package/dist/esm/wkb-writer.js +0 -1
- package/dist/esm/wkb-writer.js.map +1 -1
- package/dist/esm/wkt-loader.js +0 -2
- package/dist/esm/wkt-loader.js.map +1 -1
- package/dist/esm/wkt-writer.js +0 -1
- package/dist/esm/wkt-writer.js.map +1 -1
- package/dist/wkt-worker.js +1 -1
- package/package.json +4 -4
package/dist/es5/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../src/index.ts"],"sourcesContent":["export {WKBLoader, WKBWorkerLoader} from './wkb-loader';\nexport {WKTLoader, WKTWorkerLoader} from './wkt-loader';\nexport {WKTWriter} from './wkt-writer';\nexport {WKBWriter} from './wkb-writer';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["_wkbLoader","require","_wktLoader","_wktWriter","_wkbWriter"],"sources":["../../src/index.ts"],"sourcesContent":["export {WKBLoader, WKBWorkerLoader} from './wkb-loader';\nexport {WKTLoader, WKTWorkerLoader} from './wkt-loader';\nexport {WKTWriter} from './wkt-writer';\nexport {WKBWriter} from './wkb-writer';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AACA,IAAAE,UAAA,GAAAF,OAAA;AACA,IAAAG,UAAA,GAAAH,OAAA"}
|
|
@@ -9,9 +9,8 @@ var _toArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toArray")
|
|
|
9
9
|
var _binaryWriter = _interopRequireDefault(require("./utils/binary-writer"));
|
|
10
10
|
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; } } }; }
|
|
11
11
|
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); }
|
|
12
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++)
|
|
13
|
-
var WKB
|
|
14
|
-
(function (WKB) {
|
|
12
|
+
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; }
|
|
13
|
+
var WKB = function (WKB) {
|
|
15
14
|
WKB[WKB["Point"] = 1] = "Point";
|
|
16
15
|
WKB[WKB["LineString"] = 2] = "LineString";
|
|
17
16
|
WKB[WKB["Polygon"] = 3] = "Polygon";
|
|
@@ -19,12 +18,12 @@ var WKB;
|
|
|
19
18
|
WKB[WKB["MultiLineString"] = 5] = "MultiLineString";
|
|
20
19
|
WKB[WKB["MultiPolygon"] = 6] = "MultiPolygon";
|
|
21
20
|
WKB[WKB["GeometryCollection"] = 7] = "GeometryCollection";
|
|
22
|
-
|
|
21
|
+
return WKB;
|
|
22
|
+
}(WKB || {});
|
|
23
23
|
function encodeWKB(geometry, options) {
|
|
24
24
|
if (geometry.type === 'Feature') {
|
|
25
25
|
geometry = geometry.geometry;
|
|
26
26
|
}
|
|
27
|
-
|
|
28
27
|
if ('wkb' in options) {
|
|
29
28
|
options = options.wkb;
|
|
30
29
|
}
|
|
@@ -48,7 +47,6 @@ function encodeWKB(geometry, options) {
|
|
|
48
47
|
throw new Error("Unhandled case: ".concat(exhaustiveCheck));
|
|
49
48
|
}
|
|
50
49
|
}
|
|
51
|
-
|
|
52
50
|
function getGeometrySize(geometry, options) {
|
|
53
51
|
switch (geometry.type) {
|
|
54
52
|
case 'Point':
|
|
@@ -70,12 +68,10 @@ function getGeometrySize(geometry, options) {
|
|
|
70
68
|
throw new Error("Unhandled case: ".concat(exhaustiveCheck));
|
|
71
69
|
}
|
|
72
70
|
}
|
|
73
|
-
|
|
74
71
|
function encodePoint(coordinates, options) {
|
|
75
72
|
var writer = new _binaryWriter.default(getPointSize(options));
|
|
76
73
|
writer.writeInt8(1);
|
|
77
74
|
writeWkbType(writer, WKB.Point, options);
|
|
78
|
-
|
|
79
75
|
if (typeof coordinates[0] === 'undefined' && typeof coordinates[1] === 'undefined') {
|
|
80
76
|
writer.writeDoubleLE(NaN);
|
|
81
77
|
writer.writeDoubleLE(NaN);
|
|
@@ -90,7 +86,6 @@ function encodePoint(coordinates, options) {
|
|
|
90
86
|
}
|
|
91
87
|
return writer.arrayBuffer;
|
|
92
88
|
}
|
|
93
|
-
|
|
94
89
|
function writeCoordinate(writer, coordinate, options) {
|
|
95
90
|
writer.writeDoubleLE(coordinate[0]);
|
|
96
91
|
writer.writeDoubleLE(coordinate[1]);
|
|
@@ -101,12 +96,10 @@ function writeCoordinate(writer, coordinate, options) {
|
|
|
101
96
|
writer.writeDoubleLE(coordinate[3]);
|
|
102
97
|
}
|
|
103
98
|
}
|
|
104
|
-
|
|
105
99
|
function getPointSize(options) {
|
|
106
100
|
var coordinateSize = getCoordinateSize(options);
|
|
107
101
|
return 1 + 4 + coordinateSize;
|
|
108
102
|
}
|
|
109
|
-
|
|
110
103
|
function encodeLineString(coordinates, options) {
|
|
111
104
|
var size = getLineStringSize(coordinates, options);
|
|
112
105
|
var writer = new _binaryWriter.default(size);
|
|
@@ -127,12 +120,10 @@ function encodeLineString(coordinates, options) {
|
|
|
127
120
|
}
|
|
128
121
|
return writer.arrayBuffer;
|
|
129
122
|
}
|
|
130
|
-
|
|
131
123
|
function getLineStringSize(coordinates, options) {
|
|
132
124
|
var coordinateSize = getCoordinateSize(options);
|
|
133
125
|
return 1 + 4 + 4 + coordinates.length * coordinateSize;
|
|
134
126
|
}
|
|
135
|
-
|
|
136
127
|
function encodePolygon(coordinates, options) {
|
|
137
128
|
var writer = new _binaryWriter.default(getPolygonSize(coordinates, options));
|
|
138
129
|
writer.writeInt8(1);
|
|
@@ -184,7 +175,6 @@ function encodePolygon(coordinates, options) {
|
|
|
184
175
|
}
|
|
185
176
|
return writer.arrayBuffer;
|
|
186
177
|
}
|
|
187
|
-
|
|
188
178
|
function getPolygonSize(coordinates, options) {
|
|
189
179
|
var coordinateSize = getCoordinateSize(options);
|
|
190
180
|
var _coordinates2 = (0, _toArray2.default)(coordinates),
|
|
@@ -208,7 +198,6 @@ function getPolygonSize(coordinates, options) {
|
|
|
208
198
|
}
|
|
209
199
|
return size;
|
|
210
200
|
}
|
|
211
|
-
|
|
212
201
|
function encodeMultiPoint(multiPoint, options) {
|
|
213
202
|
var writer = new _binaryWriter.default(getMultiPointSize(multiPoint, options));
|
|
214
203
|
var points = multiPoint.coordinates;
|
|
@@ -230,15 +219,12 @@ function encodeMultiPoint(multiPoint, options) {
|
|
|
230
219
|
}
|
|
231
220
|
return writer.arrayBuffer;
|
|
232
221
|
}
|
|
233
|
-
|
|
234
222
|
function getMultiPointSize(multiPoint, options) {
|
|
235
223
|
var coordinateSize = getCoordinateSize(options);
|
|
236
224
|
var points = multiPoint.coordinates;
|
|
237
|
-
|
|
238
225
|
coordinateSize += 5;
|
|
239
226
|
return 1 + 4 + 4 + points.length * coordinateSize;
|
|
240
227
|
}
|
|
241
|
-
|
|
242
228
|
function encodeMultiLineString(multiLineString, options) {
|
|
243
229
|
var writer = new _binaryWriter.default(getMultiLineStringSize(multiLineString, options));
|
|
244
230
|
var lineStrings = multiLineString.coordinates;
|
|
@@ -260,7 +246,6 @@ function encodeMultiLineString(multiLineString, options) {
|
|
|
260
246
|
}
|
|
261
247
|
return writer.arrayBuffer;
|
|
262
248
|
}
|
|
263
|
-
|
|
264
249
|
function getMultiLineStringSize(multiLineString, options) {
|
|
265
250
|
var size = 1 + 4 + 4;
|
|
266
251
|
var lineStrings = multiLineString.coordinates;
|
|
@@ -352,7 +337,6 @@ function getGeometryCollectionSize(collection, options) {
|
|
|
352
337
|
}
|
|
353
338
|
return size;
|
|
354
339
|
}
|
|
355
|
-
|
|
356
340
|
function writeWkbType(writer, geometryType, options) {
|
|
357
341
|
var hasZ = options.hasZ,
|
|
358
342
|
hasM = options.hasM,
|
|
@@ -376,7 +360,6 @@ function writeWkbType(writer, geometryType, options) {
|
|
|
376
360
|
}
|
|
377
361
|
writer.writeUInt32LE(dimensionType + geometryType >>> 0);
|
|
378
362
|
}
|
|
379
|
-
|
|
380
363
|
function getCoordinateSize(options) {
|
|
381
364
|
var coordinateSize = 16;
|
|
382
365
|
if (options.hasZ) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encode-wkb.js","names":["WKB","encodeWKB","geometry","options","type","wkb","encodePoint","coordinates","encodeLineString","encodePolygon","encodeMultiPoint","encodeMultiPolygon","encodeMultiLineString","encodeGeometryCollection","exhaustiveCheck","Error","getGeometrySize","getPointSize","getLineStringSize","getPolygonSize","getMultiPointSize","getMultiPolygonSize","getMultiLineStringSize","getGeometryCollectionSize","writer","BinaryWriter","writeInt8","writeWkbType","Point","writeDoubleLE","NaN","hasZ","hasM","writeCoordinate","arrayBuffer","coordinate","coordinateSize","getCoordinateSize","size","LineString","writeUInt32LE","length","Polygon","exteriorRing","interiorRings","interiorRing","multiPoint","points","MultiPoint","point","writeBuffer","multiLineString","lineStrings","MultiLineString","lineString","encodedLineString","multiPolygon","polygons","MultiPolygon","polygon","encodedPolygon","collection","GeometryCollection","geometries","geometryType","srid","dimensionType"],"sources":["../../../src/lib/encode-wkb.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Forked from https://github.com/cschwarz/wkx under MIT license, Copyright (c) 2013 Christian Schwarz\n// Reference: https://www.ogc.org/standards/sfa\n\nimport type {\n Feature,\n Geometry,\n Point,\n MultiPoint,\n LineString,\n MultiLineString,\n Polygon,\n MultiPolygon,\n GeometryCollection\n} from '@loaders.gl/schema';\n\nimport BinaryWriter from './utils/binary-writer';\n\n/**\n * Integer code for geometry type\n * Reference: https://en.wikipedia.org/wiki/Well-known_text_representation_of_geometry#Well-known_binary\n */\nenum WKB {\n Point = 1,\n LineString = 2,\n Polygon = 3,\n MultiPoint = 4,\n MultiLineString = 5,\n MultiPolygon = 6,\n GeometryCollection = 7\n}\n\n/**\n * Options for encodeWKB\n */\ninterface WKBOptions {\n /** Does the GeoJSON input have Z values? */\n hasZ?: boolean;\n\n /** Does the GeoJSON input have M values? */\n hasM?: boolean;\n\n /** Spatial reference for input GeoJSON */\n srid?: any;\n}\n\n/**\n * Encodes a GeoJSON object into WKB\n * @param geojson A GeoJSON Feature or Geometry\n * @returns string\n */\nexport default function encodeWKB(\n geometry: Geometry | Feature,\n options: WKBOptions | {wkb: WKBOptions}\n): ArrayBuffer {\n if (geometry.type === 'Feature') {\n geometry = geometry.geometry;\n }\n\n // Options should be wrapped in a `wkb` key, but we allow top-level options here for backwards\n // compatibility\n if ('wkb' in options) {\n options = options.wkb;\n }\n\n switch (geometry.type) {\n case 'Point':\n return encodePoint(geometry.coordinates, options);\n case 'LineString':\n return encodeLineString(geometry.coordinates, options);\n case 'Polygon':\n return encodePolygon(geometry.coordinates, options);\n case 'MultiPoint':\n return encodeMultiPoint(geometry, options);\n case 'MultiPolygon':\n return encodeMultiPolygon(geometry, options);\n case 'MultiLineString':\n return encodeMultiLineString(geometry, options);\n case 'GeometryCollection':\n return encodeGeometryCollection(geometry, options);\n default:\n const exhaustiveCheck: never = geometry;\n throw new Error(`Unhandled case: ${exhaustiveCheck}`);\n }\n}\n\n/** Calculate the binary size (in the WKB encoding) of a specific GeoJSON geometry */\nfunction getGeometrySize(geometry: Geometry, options: WKBOptions): number {\n switch (geometry.type) {\n case 'Point':\n return getPointSize(options);\n case 'LineString':\n return getLineStringSize(geometry.coordinates, options);\n case 'Polygon':\n return getPolygonSize(geometry.coordinates, options);\n case 'MultiPoint':\n return getMultiPointSize(geometry, options);\n case 'MultiPolygon':\n return getMultiPolygonSize(geometry, options);\n case 'MultiLineString':\n return getMultiLineStringSize(geometry, options);\n case 'GeometryCollection':\n return getGeometryCollectionSize(geometry, options);\n default:\n const exhaustiveCheck: never = geometry;\n throw new Error(`Unhandled case: ${exhaustiveCheck}`);\n }\n}\n\n/** Encode Point geometry as WKB ArrayBuffer */\nfunction encodePoint(coordinates: Point['coordinates'], options: WKBOptions): ArrayBuffer {\n const writer = new BinaryWriter(getPointSize(options));\n\n writer.writeInt8(1);\n writeWkbType(writer, WKB.Point, options);\n\n // I believe this special case is to handle writing Point(NaN, NaN) correctly\n if (typeof coordinates[0] === 'undefined' && typeof coordinates[1] === 'undefined') {\n writer.writeDoubleLE(NaN);\n writer.writeDoubleLE(NaN);\n\n if (options.hasZ) {\n writer.writeDoubleLE(NaN);\n }\n if (options.hasM) {\n writer.writeDoubleLE(NaN);\n }\n } else {\n writeCoordinate(writer, coordinates, options);\n }\n\n return writer.arrayBuffer;\n}\n\n/** Write coordinate to buffer */\nfunction writeCoordinate(\n writer: BinaryWriter,\n coordinate: Point['coordinates'],\n options: WKBOptions\n): void {\n writer.writeDoubleLE(coordinate[0]);\n writer.writeDoubleLE(coordinate[1]);\n\n if (options.hasZ) {\n writer.writeDoubleLE(coordinate[2]);\n }\n if (options.hasM) {\n writer.writeDoubleLE(coordinate[3]);\n }\n}\n\n/** Get encoded size of Point geometry */\nfunction getPointSize(options: WKBOptions): number {\n const coordinateSize = getCoordinateSize(options);\n return 1 + 4 + coordinateSize;\n}\n\n/** Encode LineString geometry as WKB ArrayBuffer */\nfunction encodeLineString(\n coordinates: LineString['coordinates'],\n options: WKBOptions\n): ArrayBuffer {\n const size = getLineStringSize(coordinates, options);\n\n const writer = new BinaryWriter(size);\n\n writer.writeInt8(1);\n\n writeWkbType(writer, WKB.LineString, options);\n writer.writeUInt32LE(coordinates.length);\n\n for (const coordinate of coordinates) {\n writeCoordinate(writer, coordinate, options);\n }\n\n return writer.arrayBuffer;\n}\n\n/** Get encoded size of LineString geometry */\nfunction getLineStringSize(coordinates: LineString['coordinates'], options: WKBOptions): number {\n const coordinateSize = getCoordinateSize(options);\n\n return 1 + 4 + 4 + coordinates.length * coordinateSize;\n}\n\n/** Encode Polygon geometry as WKB ArrayBuffer */\nfunction encodePolygon(coordinates: Polygon['coordinates'], options: WKBOptions): ArrayBuffer {\n const writer = new BinaryWriter(getPolygonSize(coordinates, options));\n\n writer.writeInt8(1);\n\n writeWkbType(writer, WKB.Polygon, options);\n const [exteriorRing, ...interiorRings] = coordinates;\n\n if (exteriorRing.length > 0) {\n writer.writeUInt32LE(1 + interiorRings.length);\n writer.writeUInt32LE(exteriorRing.length);\n } else {\n writer.writeUInt32LE(0);\n }\n\n for (const coordinate of exteriorRing) {\n writeCoordinate(writer, coordinate, options);\n }\n\n for (const interiorRing of interiorRings) {\n writer.writeUInt32LE(interiorRing.length);\n\n for (const coordinate of interiorRing) {\n writeCoordinate(writer, coordinate, options);\n }\n }\n\n return writer.arrayBuffer;\n}\n\n/** Get encoded size of Polygon geometry */\nfunction getPolygonSize(coordinates: Polygon['coordinates'], options: WKBOptions): number {\n const coordinateSize = getCoordinateSize(options);\n const [exteriorRing, ...interiorRings] = coordinates;\n\n let size = 1 + 4 + 4;\n\n if (exteriorRing.length > 0) {\n size += 4 + exteriorRing.length * coordinateSize;\n }\n\n for (const interiorRing of interiorRings) {\n size += 4 + interiorRing.length * coordinateSize;\n }\n\n return size;\n}\n\n/** Encode MultiPoint geometry as WKB ArrayBufer */\nfunction encodeMultiPoint(multiPoint: MultiPoint, options: WKBOptions) {\n const writer = new BinaryWriter(getMultiPointSize(multiPoint, options));\n const points = multiPoint.coordinates;\n\n writer.writeInt8(1);\n\n writeWkbType(writer, WKB.MultiPoint, options);\n writer.writeUInt32LE(points.length);\n\n for (const point of points) {\n // TODO: add srid to this options object? {srid: multiPoint.srid}\n const arrayBuffer = encodePoint(point, options);\n writer.writeBuffer(arrayBuffer);\n }\n\n return writer.arrayBuffer;\n}\n\n/** Get encoded size of MultiPoint geometry */\nfunction getMultiPointSize(multiPoint: MultiPoint, options: WKBOptions) {\n let coordinateSize = getCoordinateSize(options);\n const points = multiPoint.coordinates;\n\n // This is because each point has a 5-byte header?\n coordinateSize += 5;\n\n return 1 + 4 + 4 + points.length * coordinateSize;\n}\n\n/** Encode MultiLineString geometry as WKB ArrayBufer */\nfunction encodeMultiLineString(multiLineString: MultiLineString, options: WKBOptions) {\n const writer = new BinaryWriter(getMultiLineStringSize(multiLineString, options));\n const lineStrings = multiLineString.coordinates;\n\n writer.writeInt8(1);\n\n writeWkbType(writer, WKB.MultiLineString, options);\n writer.writeUInt32LE(lineStrings.length);\n\n for (const lineString of lineStrings) {\n // TODO: Handle srid?\n const encodedLineString = encodeLineString(lineString, options);\n writer.writeBuffer(encodedLineString);\n }\n\n return writer.arrayBuffer;\n}\n\n/** Get encoded size of MultiLineString geometry */\nfunction getMultiLineStringSize(multiLineString: MultiLineString, options: WKBOptions): number {\n let size = 1 + 4 + 4;\n const lineStrings = multiLineString.coordinates;\n\n for (const lineString of lineStrings) {\n size += getLineStringSize(lineString, options);\n }\n\n return size;\n}\n\nfunction encodeMultiPolygon(multiPolygon: MultiPolygon, options: WKBOptions): ArrayBuffer {\n const writer = new BinaryWriter(getMultiPolygonSize(multiPolygon, options));\n const polygons = multiPolygon.coordinates;\n\n writer.writeInt8(1);\n\n writeWkbType(writer, WKB.MultiPolygon, options);\n writer.writeUInt32LE(polygons.length);\n\n for (const polygon of polygons) {\n const encodedPolygon = encodePolygon(polygon, options);\n writer.writeBuffer(encodedPolygon);\n }\n\n return writer.arrayBuffer;\n}\n\nfunction getMultiPolygonSize(multiPolygon: MultiPolygon, options: WKBOptions): number {\n let size = 1 + 4 + 4;\n const polygons = multiPolygon.coordinates;\n\n for (const polygon of polygons) {\n size += getPolygonSize(polygon, options);\n }\n\n return size;\n}\n\nfunction encodeGeometryCollection(\n collection: GeometryCollection,\n options: WKBOptions\n): ArrayBuffer {\n const writer = new BinaryWriter(getGeometryCollectionSize(collection, options));\n\n writer.writeInt8(1);\n\n writeWkbType(writer, WKB.GeometryCollection, options);\n writer.writeUInt32LE(collection.geometries.length);\n\n for (const geometry of collection.geometries) {\n // TODO: handle srid? {srid: collection.srid}\n const arrayBuffer = encodeWKB(geometry, options);\n writer.writeBuffer(arrayBuffer);\n }\n\n return writer.arrayBuffer;\n}\n\nfunction getGeometryCollectionSize(collection: GeometryCollection, options: WKBOptions): number {\n let size = 1 + 4 + 4;\n\n for (const geometry of collection.geometries) {\n size += getGeometrySize(geometry, options);\n }\n\n return size;\n}\n\n// HELPERS\n\n/**\n * Construct and write WKB integer code\n * Reference: https://en.wikipedia.org/wiki/Well-known_text_representation_of_geometry#Well-known_binary\n */\nfunction writeWkbType(writer: BinaryWriter, geometryType: number, options: WKBOptions): void {\n const {hasZ, hasM, srid} = options;\n\n let dimensionType = 0;\n\n if (!srid) {\n if (hasZ && hasM) {\n dimensionType += 3000;\n } else if (hasZ) {\n dimensionType += 1000;\n } else if (hasM) {\n dimensionType += 2000;\n }\n } else {\n if (hasZ) {\n dimensionType |= 0x80000000;\n }\n if (hasM) {\n dimensionType |= 0x40000000;\n }\n }\n\n writer.writeUInt32LE((dimensionType + geometryType) >>> 0);\n}\n\n/** Get coordinate size given Z/M dimensions */\nfunction getCoordinateSize(options: WKBOptions): number {\n let coordinateSize = 16;\n\n if (options.hasZ) {\n coordinateSize += 8;\n }\n if (options.hasM) {\n coordinateSize += 8;\n }\n\n return coordinateSize;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"encode-wkb.js","names":["_binaryWriter","_interopRequireDefault","require","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","return","minLen","_arrayLikeToArray","Object","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","WKB","encodeWKB","geometry","options","type","wkb","encodePoint","coordinates","encodeLineString","encodePolygon","encodeMultiPoint","encodeMultiPolygon","encodeMultiLineString","encodeGeometryCollection","exhaustiveCheck","Error","concat","getGeometrySize","getPointSize","getLineStringSize","getPolygonSize","getMultiPointSize","getMultiPolygonSize","getMultiLineStringSize","getGeometryCollectionSize","writer","BinaryWriter","writeInt8","writeWkbType","Point","writeDoubleLE","NaN","hasZ","hasM","writeCoordinate","arrayBuffer","coordinate","coordinateSize","getCoordinateSize","size","LineString","writeUInt32LE","_iterator","_step","Polygon","_coordinates","_toArray2","default","exteriorRing","interiorRings","_iterator2","_step2","_iterator3","_step3","interiorRing","_iterator4","_step4","_coordinates2","_iterator5","_step5","multiPoint","points","MultiPoint","_iterator6","_step6","point","writeBuffer","multiLineString","lineStrings","MultiLineString","_iterator7","_step7","lineString","encodedLineString","_iterator8","_step8","multiPolygon","polygons","MultiPolygon","_iterator9","_step9","polygon","encodedPolygon","_iterator10","_step10","collection","GeometryCollection","geometries","_iterator11","_step11","_iterator12","_step12","geometryType","srid","dimensionType"],"sources":["../../../src/lib/encode-wkb.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Forked from https://github.com/cschwarz/wkx under MIT license, Copyright (c) 2013 Christian Schwarz\n// Reference: https://www.ogc.org/standards/sfa\n\nimport type {\n Feature,\n Geometry,\n Point,\n MultiPoint,\n LineString,\n MultiLineString,\n Polygon,\n MultiPolygon,\n GeometryCollection\n} from '@loaders.gl/schema';\n\nimport BinaryWriter from './utils/binary-writer';\n\n/**\n * Integer code for geometry type\n * Reference: https://en.wikipedia.org/wiki/Well-known_text_representation_of_geometry#Well-known_binary\n */\nenum WKB {\n Point = 1,\n LineString = 2,\n Polygon = 3,\n MultiPoint = 4,\n MultiLineString = 5,\n MultiPolygon = 6,\n GeometryCollection = 7\n}\n\n/**\n * Options for encodeWKB\n */\ninterface WKBOptions {\n /** Does the GeoJSON input have Z values? */\n hasZ?: boolean;\n\n /** Does the GeoJSON input have M values? */\n hasM?: boolean;\n\n /** Spatial reference for input GeoJSON */\n srid?: any;\n}\n\n/**\n * Encodes a GeoJSON object into WKB\n * @param geojson A GeoJSON Feature or Geometry\n * @returns string\n */\nexport default function encodeWKB(\n geometry: Geometry | Feature,\n options: WKBOptions | {wkb: WKBOptions}\n): ArrayBuffer {\n if (geometry.type === 'Feature') {\n geometry = geometry.geometry;\n }\n\n // Options should be wrapped in a `wkb` key, but we allow top-level options here for backwards\n // compatibility\n if ('wkb' in options) {\n options = options.wkb;\n }\n\n switch (geometry.type) {\n case 'Point':\n return encodePoint(geometry.coordinates, options);\n case 'LineString':\n return encodeLineString(geometry.coordinates, options);\n case 'Polygon':\n return encodePolygon(geometry.coordinates, options);\n case 'MultiPoint':\n return encodeMultiPoint(geometry, options);\n case 'MultiPolygon':\n return encodeMultiPolygon(geometry, options);\n case 'MultiLineString':\n return encodeMultiLineString(geometry, options);\n case 'GeometryCollection':\n return encodeGeometryCollection(geometry, options);\n default:\n const exhaustiveCheck: never = geometry;\n throw new Error(`Unhandled case: ${exhaustiveCheck}`);\n }\n}\n\n/** Calculate the binary size (in the WKB encoding) of a specific GeoJSON geometry */\nfunction getGeometrySize(geometry: Geometry, options: WKBOptions): number {\n switch (geometry.type) {\n case 'Point':\n return getPointSize(options);\n case 'LineString':\n return getLineStringSize(geometry.coordinates, options);\n case 'Polygon':\n return getPolygonSize(geometry.coordinates, options);\n case 'MultiPoint':\n return getMultiPointSize(geometry, options);\n case 'MultiPolygon':\n return getMultiPolygonSize(geometry, options);\n case 'MultiLineString':\n return getMultiLineStringSize(geometry, options);\n case 'GeometryCollection':\n return getGeometryCollectionSize(geometry, options);\n default:\n const exhaustiveCheck: never = geometry;\n throw new Error(`Unhandled case: ${exhaustiveCheck}`);\n }\n}\n\n/** Encode Point geometry as WKB ArrayBuffer */\nfunction encodePoint(coordinates: Point['coordinates'], options: WKBOptions): ArrayBuffer {\n const writer = new BinaryWriter(getPointSize(options));\n\n writer.writeInt8(1);\n writeWkbType(writer, WKB.Point, options);\n\n // I believe this special case is to handle writing Point(NaN, NaN) correctly\n if (typeof coordinates[0] === 'undefined' && typeof coordinates[1] === 'undefined') {\n writer.writeDoubleLE(NaN);\n writer.writeDoubleLE(NaN);\n\n if (options.hasZ) {\n writer.writeDoubleLE(NaN);\n }\n if (options.hasM) {\n writer.writeDoubleLE(NaN);\n }\n } else {\n writeCoordinate(writer, coordinates, options);\n }\n\n return writer.arrayBuffer;\n}\n\n/** Write coordinate to buffer */\nfunction writeCoordinate(\n writer: BinaryWriter,\n coordinate: Point['coordinates'],\n options: WKBOptions\n): void {\n writer.writeDoubleLE(coordinate[0]);\n writer.writeDoubleLE(coordinate[1]);\n\n if (options.hasZ) {\n writer.writeDoubleLE(coordinate[2]);\n }\n if (options.hasM) {\n writer.writeDoubleLE(coordinate[3]);\n }\n}\n\n/** Get encoded size of Point geometry */\nfunction getPointSize(options: WKBOptions): number {\n const coordinateSize = getCoordinateSize(options);\n return 1 + 4 + coordinateSize;\n}\n\n/** Encode LineString geometry as WKB ArrayBuffer */\nfunction encodeLineString(\n coordinates: LineString['coordinates'],\n options: WKBOptions\n): ArrayBuffer {\n const size = getLineStringSize(coordinates, options);\n\n const writer = new BinaryWriter(size);\n\n writer.writeInt8(1);\n\n writeWkbType(writer, WKB.LineString, options);\n writer.writeUInt32LE(coordinates.length);\n\n for (const coordinate of coordinates) {\n writeCoordinate(writer, coordinate, options);\n }\n\n return writer.arrayBuffer;\n}\n\n/** Get encoded size of LineString geometry */\nfunction getLineStringSize(coordinates: LineString['coordinates'], options: WKBOptions): number {\n const coordinateSize = getCoordinateSize(options);\n\n return 1 + 4 + 4 + coordinates.length * coordinateSize;\n}\n\n/** Encode Polygon geometry as WKB ArrayBuffer */\nfunction encodePolygon(coordinates: Polygon['coordinates'], options: WKBOptions): ArrayBuffer {\n const writer = new BinaryWriter(getPolygonSize(coordinates, options));\n\n writer.writeInt8(1);\n\n writeWkbType(writer, WKB.Polygon, options);\n const [exteriorRing, ...interiorRings] = coordinates;\n\n if (exteriorRing.length > 0) {\n writer.writeUInt32LE(1 + interiorRings.length);\n writer.writeUInt32LE(exteriorRing.length);\n } else {\n writer.writeUInt32LE(0);\n }\n\n for (const coordinate of exteriorRing) {\n writeCoordinate(writer, coordinate, options);\n }\n\n for (const interiorRing of interiorRings) {\n writer.writeUInt32LE(interiorRing.length);\n\n for (const coordinate of interiorRing) {\n writeCoordinate(writer, coordinate, options);\n }\n }\n\n return writer.arrayBuffer;\n}\n\n/** Get encoded size of Polygon geometry */\nfunction getPolygonSize(coordinates: Polygon['coordinates'], options: WKBOptions): number {\n const coordinateSize = getCoordinateSize(options);\n const [exteriorRing, ...interiorRings] = coordinates;\n\n let size = 1 + 4 + 4;\n\n if (exteriorRing.length > 0) {\n size += 4 + exteriorRing.length * coordinateSize;\n }\n\n for (const interiorRing of interiorRings) {\n size += 4 + interiorRing.length * coordinateSize;\n }\n\n return size;\n}\n\n/** Encode MultiPoint geometry as WKB ArrayBufer */\nfunction encodeMultiPoint(multiPoint: MultiPoint, options: WKBOptions) {\n const writer = new BinaryWriter(getMultiPointSize(multiPoint, options));\n const points = multiPoint.coordinates;\n\n writer.writeInt8(1);\n\n writeWkbType(writer, WKB.MultiPoint, options);\n writer.writeUInt32LE(points.length);\n\n for (const point of points) {\n // TODO: add srid to this options object? {srid: multiPoint.srid}\n const arrayBuffer = encodePoint(point, options);\n writer.writeBuffer(arrayBuffer);\n }\n\n return writer.arrayBuffer;\n}\n\n/** Get encoded size of MultiPoint geometry */\nfunction getMultiPointSize(multiPoint: MultiPoint, options: WKBOptions) {\n let coordinateSize = getCoordinateSize(options);\n const points = multiPoint.coordinates;\n\n // This is because each point has a 5-byte header?\n coordinateSize += 5;\n\n return 1 + 4 + 4 + points.length * coordinateSize;\n}\n\n/** Encode MultiLineString geometry as WKB ArrayBufer */\nfunction encodeMultiLineString(multiLineString: MultiLineString, options: WKBOptions) {\n const writer = new BinaryWriter(getMultiLineStringSize(multiLineString, options));\n const lineStrings = multiLineString.coordinates;\n\n writer.writeInt8(1);\n\n writeWkbType(writer, WKB.MultiLineString, options);\n writer.writeUInt32LE(lineStrings.length);\n\n for (const lineString of lineStrings) {\n // TODO: Handle srid?\n const encodedLineString = encodeLineString(lineString, options);\n writer.writeBuffer(encodedLineString);\n }\n\n return writer.arrayBuffer;\n}\n\n/** Get encoded size of MultiLineString geometry */\nfunction getMultiLineStringSize(multiLineString: MultiLineString, options: WKBOptions): number {\n let size = 1 + 4 + 4;\n const lineStrings = multiLineString.coordinates;\n\n for (const lineString of lineStrings) {\n size += getLineStringSize(lineString, options);\n }\n\n return size;\n}\n\nfunction encodeMultiPolygon(multiPolygon: MultiPolygon, options: WKBOptions): ArrayBuffer {\n const writer = new BinaryWriter(getMultiPolygonSize(multiPolygon, options));\n const polygons = multiPolygon.coordinates;\n\n writer.writeInt8(1);\n\n writeWkbType(writer, WKB.MultiPolygon, options);\n writer.writeUInt32LE(polygons.length);\n\n for (const polygon of polygons) {\n const encodedPolygon = encodePolygon(polygon, options);\n writer.writeBuffer(encodedPolygon);\n }\n\n return writer.arrayBuffer;\n}\n\nfunction getMultiPolygonSize(multiPolygon: MultiPolygon, options: WKBOptions): number {\n let size = 1 + 4 + 4;\n const polygons = multiPolygon.coordinates;\n\n for (const polygon of polygons) {\n size += getPolygonSize(polygon, options);\n }\n\n return size;\n}\n\nfunction encodeGeometryCollection(\n collection: GeometryCollection,\n options: WKBOptions\n): ArrayBuffer {\n const writer = new BinaryWriter(getGeometryCollectionSize(collection, options));\n\n writer.writeInt8(1);\n\n writeWkbType(writer, WKB.GeometryCollection, options);\n writer.writeUInt32LE(collection.geometries.length);\n\n for (const geometry of collection.geometries) {\n // TODO: handle srid? {srid: collection.srid}\n const arrayBuffer = encodeWKB(geometry, options);\n writer.writeBuffer(arrayBuffer);\n }\n\n return writer.arrayBuffer;\n}\n\nfunction getGeometryCollectionSize(collection: GeometryCollection, options: WKBOptions): number {\n let size = 1 + 4 + 4;\n\n for (const geometry of collection.geometries) {\n size += getGeometrySize(geometry, options);\n }\n\n return size;\n}\n\n// HELPERS\n\n/**\n * Construct and write WKB integer code\n * Reference: https://en.wikipedia.org/wiki/Well-known_text_representation_of_geometry#Well-known_binary\n */\nfunction writeWkbType(writer: BinaryWriter, geometryType: number, options: WKBOptions): void {\n const {hasZ, hasM, srid} = options;\n\n let dimensionType = 0;\n\n if (!srid) {\n if (hasZ && hasM) {\n dimensionType += 3000;\n } else if (hasZ) {\n dimensionType += 1000;\n } else if (hasM) {\n dimensionType += 2000;\n }\n } else {\n if (hasZ) {\n dimensionType |= 0x80000000;\n }\n if (hasM) {\n dimensionType |= 0x40000000;\n }\n }\n\n writer.writeUInt32LE((dimensionType + geometryType) >>> 0);\n}\n\n/** Get coordinate size given Z/M dimensions */\nfunction getCoordinateSize(options: WKBOptions): number {\n let coordinateSize = 16;\n\n if (options.hasZ) {\n coordinateSize += 8;\n }\n if (options.hasM) {\n coordinateSize += 8;\n }\n\n return coordinateSize;\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encode-wkt.js","names":["encodeWKT","geometry","type","wrapParens","pairWKT","coordinates","ringWKT","ringsWKT","multiRingsWKT","geometries","map","join","Error","c","r","s"],"sources":["../../../src/lib/encode-wkt.ts"],"sourcesContent":["// Fork of https://github.com/mapbox/wellknown under ISC license (MIT/BSD-2-clause equivalent)\n// eslint-disable-next-line import/no-unresolved\nimport type {Feature, Geometry} from '@loaders.gl/schema';\n\n/**\n * Stringifies a GeoJSON object into WKT\n * @param geojson\n * @returns string\n */\nexport default function encodeWKT(geometry: Geometry | Feature): string {\n if (geometry.type === 'Feature') {\n geometry = geometry.geometry;\n }\n\n switch (geometry.type) {\n case 'Point':\n return `POINT ${wrapParens(pairWKT(geometry.coordinates))}`;\n case 'LineString':\n return `LINESTRING ${wrapParens(ringWKT(geometry.coordinates))}`;\n case 'Polygon':\n return `POLYGON ${wrapParens(ringsWKT(geometry.coordinates))}`;\n case 'MultiPoint':\n return `MULTIPOINT ${wrapParens(ringWKT(geometry.coordinates))}`;\n case 'MultiPolygon':\n return `MULTIPOLYGON ${wrapParens(multiRingsWKT(geometry.coordinates))}`;\n case 'MultiLineString':\n return `MULTILINESTRING ${wrapParens(ringsWKT(geometry.coordinates))}`;\n case 'GeometryCollection':\n return `GEOMETRYCOLLECTION ${wrapParens(geometry.geometries.map(encodeWKT).join(', '))}`;\n default:\n throw new Error('stringify requires a valid GeoJSON Feature or geometry object as input');\n }\n}\n\nfunction pairWKT(c: number[]): string {\n return c.join(' ');\n}\n\nfunction ringWKT(r: number[][]): string {\n return r.map(pairWKT).join(', ');\n}\n\nfunction ringsWKT(r: number[][][]): string {\n return r.map(ringWKT).map(wrapParens).join(', ');\n}\n\nfunction multiRingsWKT(r: number[][][][]): string {\n return r.map(ringsWKT).map(wrapParens).join(', ');\n}\n\nfunction wrapParens(s: string): string {\n return `(${s})`;\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"encode-wkt.js","names":["encodeWKT","geometry","type","concat","wrapParens","pairWKT","coordinates","ringWKT","ringsWKT","multiRingsWKT","geometries","map","join","Error","c","r","s"],"sources":["../../../src/lib/encode-wkt.ts"],"sourcesContent":["// Fork of https://github.com/mapbox/wellknown under ISC license (MIT/BSD-2-clause equivalent)\n// eslint-disable-next-line import/no-unresolved\nimport type {Feature, Geometry} from '@loaders.gl/schema';\n\n/**\n * Stringifies a GeoJSON object into WKT\n * @param geojson\n * @returns string\n */\nexport default function encodeWKT(geometry: Geometry | Feature): string {\n if (geometry.type === 'Feature') {\n geometry = geometry.geometry;\n }\n\n switch (geometry.type) {\n case 'Point':\n return `POINT ${wrapParens(pairWKT(geometry.coordinates))}`;\n case 'LineString':\n return `LINESTRING ${wrapParens(ringWKT(geometry.coordinates))}`;\n case 'Polygon':\n return `POLYGON ${wrapParens(ringsWKT(geometry.coordinates))}`;\n case 'MultiPoint':\n return `MULTIPOINT ${wrapParens(ringWKT(geometry.coordinates))}`;\n case 'MultiPolygon':\n return `MULTIPOLYGON ${wrapParens(multiRingsWKT(geometry.coordinates))}`;\n case 'MultiLineString':\n return `MULTILINESTRING ${wrapParens(ringsWKT(geometry.coordinates))}`;\n case 'GeometryCollection':\n return `GEOMETRYCOLLECTION ${wrapParens(geometry.geometries.map(encodeWKT).join(', '))}`;\n default:\n throw new Error('stringify requires a valid GeoJSON Feature or geometry object as input');\n }\n}\n\nfunction pairWKT(c: number[]): string {\n return c.join(' ');\n}\n\nfunction ringWKT(r: number[][]): string {\n return r.map(pairWKT).join(', ');\n}\n\nfunction ringsWKT(r: number[][][]): string {\n return r.map(ringWKT).map(wrapParens).join(', ');\n}\n\nfunction multiRingsWKT(r: number[][][][]): string {\n return r.map(ringsWKT).map(wrapParens).join(', ');\n}\n\nfunction wrapParens(s: string): string {\n return `(${s})`;\n}\n"],"mappings":";;;;;;AASe,SAASA,SAASA,CAACC,QAA4B,EAAU;EACtE,IAAIA,QAAQ,CAACC,IAAI,KAAK,SAAS,EAAE;IAC/BD,QAAQ,GAAGA,QAAQ,CAACA,QAAQ;EAC9B;EAEA,QAAQA,QAAQ,CAACC,IAAI;IACnB,KAAK,OAAO;MACV,gBAAAC,MAAA,CAAgBC,UAAU,CAACC,OAAO,CAACJ,QAAQ,CAACK,WAAW,CAAC,CAAC;IAC3D,KAAK,YAAY;MACf,qBAAAH,MAAA,CAAqBC,UAAU,CAACG,OAAO,CAACN,QAAQ,CAACK,WAAW,CAAC,CAAC;IAChE,KAAK,SAAS;MACZ,kBAAAH,MAAA,CAAkBC,UAAU,CAACI,QAAQ,CAACP,QAAQ,CAACK,WAAW,CAAC,CAAC;IAC9D,KAAK,YAAY;MACf,qBAAAH,MAAA,CAAqBC,UAAU,CAACG,OAAO,CAACN,QAAQ,CAACK,WAAW,CAAC,CAAC;IAChE,KAAK,cAAc;MACjB,uBAAAH,MAAA,CAAuBC,UAAU,CAACK,aAAa,CAACR,QAAQ,CAACK,WAAW,CAAC,CAAC;IACxE,KAAK,iBAAiB;MACpB,0BAAAH,MAAA,CAA0BC,UAAU,CAACI,QAAQ,CAACP,QAAQ,CAACK,WAAW,CAAC,CAAC;IACtE,KAAK,oBAAoB;MACvB,6BAAAH,MAAA,CAA6BC,UAAU,CAACH,QAAQ,CAACS,UAAU,CAACC,GAAG,CAACX,SAAS,CAAC,CAACY,IAAI,CAAC,IAAI,CAAC,CAAC;IACxF;MACE,MAAM,IAAIC,KAAK,CAAC,wEAAwE,CAAC;EAC7F;AACF;AAEA,SAASR,OAAOA,CAACS,CAAW,EAAU;EACpC,OAAOA,CAAC,CAACF,IAAI,CAAC,GAAG,CAAC;AACpB;AAEA,SAASL,OAAOA,CAACQ,CAAa,EAAU;EACtC,OAAOA,CAAC,CAACJ,GAAG,CAACN,OAAO,CAAC,CAACO,IAAI,CAAC,IAAI,CAAC;AAClC;AAEA,SAASJ,QAAQA,CAACO,CAAe,EAAU;EACzC,OAAOA,CAAC,CAACJ,GAAG,CAACJ,OAAO,CAAC,CAACI,GAAG,CAACP,UAAU,CAAC,CAACQ,IAAI,CAAC,IAAI,CAAC;AAClD;AAEA,SAASH,aAAaA,CAACM,CAAiB,EAAU;EAChD,OAAOA,CAAC,CAACJ,GAAG,CAACH,QAAQ,CAAC,CAACG,GAAG,CAACP,UAAU,CAAC,CAACQ,IAAI,CAAC,IAAI,CAAC;AACnD;AAEA,SAASR,UAAUA,CAACY,CAAS,EAAU;EACrC,WAAAb,MAAA,CAAWa,CAAC;AACd"}
|
|
@@ -8,21 +8,18 @@ exports.default = parseWKB;
|
|
|
8
8
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
9
9
|
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; } } }; }
|
|
10
10
|
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); }
|
|
11
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++)
|
|
11
|
+
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; }
|
|
12
12
|
var NUM_DIMENSIONS = {
|
|
13
13
|
0: 2,
|
|
14
14
|
1: 3,
|
|
15
15
|
2: 3,
|
|
16
16
|
3: 4
|
|
17
17
|
};
|
|
18
|
-
|
|
19
18
|
function parseWKB(arrayBuffer) {
|
|
20
19
|
var view = new DataView(arrayBuffer);
|
|
21
20
|
var offset = 0;
|
|
22
|
-
|
|
23
21
|
var littleEndian = view.getUint8(offset) === 1;
|
|
24
22
|
offset++;
|
|
25
|
-
|
|
26
23
|
var geometryCode = view.getUint32(offset, littleEndian);
|
|
27
24
|
offset += 4;
|
|
28
25
|
var geometryType = geometryCode % 1000;
|
|
@@ -54,7 +51,6 @@ function parseWKB(arrayBuffer) {
|
|
|
54
51
|
throw new Error("WKB: Unsupported geometry type: ".concat(geometryType));
|
|
55
52
|
}
|
|
56
53
|
}
|
|
57
|
-
|
|
58
54
|
function parsePoint(view, offset, dimension, littleEndian) {
|
|
59
55
|
var positions = new Float64Array(dimension);
|
|
60
56
|
for (var i = 0; i < dimension; i++) {
|
|
@@ -75,7 +71,6 @@ function parsePoint(view, offset, dimension, littleEndian) {
|
|
|
75
71
|
function parseLineString(view, offset, dimension, littleEndian) {
|
|
76
72
|
var nPoints = view.getUint32(offset, littleEndian);
|
|
77
73
|
offset += 4;
|
|
78
|
-
|
|
79
74
|
var positions = new Float64Array(nPoints * dimension);
|
|
80
75
|
for (var i = 0; i < nPoints * dimension; i++) {
|
|
81
76
|
positions[i] = view.getFloat64(offset, littleEndian);
|
|
@@ -100,7 +95,6 @@ function parseLineString(view, offset, dimension, littleEndian) {
|
|
|
100
95
|
offset: offset
|
|
101
96
|
};
|
|
102
97
|
}
|
|
103
|
-
|
|
104
98
|
var cumulativeSum = function cumulativeSum(sum) {
|
|
105
99
|
return function (value) {
|
|
106
100
|
return sum += value;
|
|
@@ -151,7 +145,6 @@ function parseMultiPoint(view, offset, dimension, littleEndian) {
|
|
|
151
145
|
for (var i = 0; i < nPoints; i++) {
|
|
152
146
|
var littleEndianPoint = view.getUint8(offset) === 1;
|
|
153
147
|
offset++;
|
|
154
|
-
|
|
155
148
|
if (view.getUint32(offset, littleEndianPoint) % 1000 !== 1) {
|
|
156
149
|
throw new Error('WKB: Inner geometries of MultiPoint not of type Point');
|
|
157
150
|
}
|
|
@@ -169,7 +162,6 @@ function parseMultiLineString(view, offset, dimension, littleEndian) {
|
|
|
169
162
|
for (var i = 0; i < nLines; i++) {
|
|
170
163
|
var littleEndianLine = view.getUint8(offset) === 1;
|
|
171
164
|
offset++;
|
|
172
|
-
|
|
173
165
|
if (view.getUint32(offset, littleEndianLine) % 1000 !== 2) {
|
|
174
166
|
throw new Error('WKB: Inner geometries of MultiLineString not of type LineString');
|
|
175
167
|
}
|
|
@@ -187,7 +179,6 @@ function parseMultiPolygon(view, offset, dimension, littleEndian) {
|
|
|
187
179
|
for (var i = 0; i < nPolygons; i++) {
|
|
188
180
|
var littleEndianPolygon = view.getUint8(offset) === 1;
|
|
189
181
|
offset++;
|
|
190
|
-
|
|
191
182
|
if (view.getUint32(offset, littleEndianPolygon) % 1000 !== 3) {
|
|
192
183
|
throw new Error('WKB: Inner geometries of MultiPolygon not of type Polygon');
|
|
193
184
|
}
|
|
@@ -198,7 +189,6 @@ function parseMultiPolygon(view, offset, dimension, littleEndian) {
|
|
|
198
189
|
}
|
|
199
190
|
return concatenateBinaryPolygonGeometries(binaryPolygonGeometries, dimension);
|
|
200
191
|
}
|
|
201
|
-
|
|
202
192
|
function concatenateBinaryPointGeometries(binaryPointGeometries, dimension) {
|
|
203
193
|
var positions = binaryPointGeometries.map(function (geometry) {
|
|
204
194
|
return geometry.positions.value;
|
|
@@ -256,7 +246,6 @@ function concatenateBinaryPolygonGeometries(binaryPolygonGeometries, dimension)
|
|
|
256
246
|
return p.length / dimension;
|
|
257
247
|
}).map(cumulativeSum(0));
|
|
258
248
|
polygonIndices.unshift(0);
|
|
259
|
-
|
|
260
249
|
var primitivePolygonIndices = [0];
|
|
261
250
|
for (var _i = 0, _primitivePolygons = primitivePolygons; _i < _primitivePolygons.length; _i++) {
|
|
262
251
|
var primitivePolygon = _primitivePolygons[_i];
|
|
@@ -282,7 +271,6 @@ function concatenateBinaryPolygonGeometries(binaryPolygonGeometries, dimension)
|
|
|
282
271
|
}
|
|
283
272
|
};
|
|
284
273
|
}
|
|
285
|
-
|
|
286
274
|
function concatTypedArrays(arrays) {
|
|
287
275
|
var byteLength = 0;
|
|
288
276
|
for (var i = 0; i < arrays.length; ++i) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-wkb.js","names":["NUM_DIMENSIONS","parseWKB","arrayBuffer","view","DataView","offset","littleEndian","getUint8","geometryCode","getUint32","geometryType","type","dimension","point","parsePoint","geometry","line","parseLineString","polygon","parsePolygon","multiPoint","parseMultiPoint","multiLine","parseMultiLineString","multiPolygon","parseMultiPolygon","Error","positions","Float64Array","i","getFloat64","value","size","nPoints","pathIndices","push","Uint16Array","cumulativeSum","sum","nRings","rings","parsed","concatenatedPositions","concatTypedArrays","buffer","polygonIndices","length","primitivePolygonIndices","map","l","unshift","binaryPointGeometries","littleEndianPoint","concatenateBinaryPointGeometries","nLines","binaryLineGeometries","littleEndianLine","concatenateBinaryLineGeometries","nPolygons","binaryPolygonGeometries","littleEndianPolygon","concatenateBinaryPolygonGeometries","lines","polygons","primitivePolygons","binaryPolygon","p","primitivePolygon","filter","x","arrays","byteLength","Uint8Array","byteOffset","data","j"],"sources":["../../../src/lib/parse-wkb.ts"],"sourcesContent":["import type {\n TypedArray,\n BinaryGeometry,\n BinaryPointGeometry,\n BinaryLineGeometry,\n BinaryPolygonGeometry\n} from '@loaders.gl/schema';\n\nconst NUM_DIMENSIONS = {\n 0: 2, // 2D\n 1: 3, // 3D (Z)\n 2: 3, // 3D (M)\n 3: 4 // 4D (ZM)\n};\n\nexport default function parseWKB(arrayBuffer: ArrayBuffer): BinaryGeometry {\n const view = new DataView(arrayBuffer);\n let offset = 0;\n\n // Check endianness of data\n const littleEndian = view.getUint8(offset) === 1;\n offset++;\n\n // 4-digit code representing dimension and type of geometry\n const geometryCode = view.getUint32(offset, littleEndian);\n offset += 4;\n\n const geometryType = geometryCode % 1000;\n const type = ((geometryCode - geometryType) / 1000) as 0 | 1 | 2 | 3;\n const dimension = NUM_DIMENSIONS[type];\n\n switch (geometryType) {\n case 1:\n const point = parsePoint(view, offset, dimension, littleEndian);\n return point.geometry;\n case 2:\n const line = parseLineString(view, offset, dimension, littleEndian);\n return line.geometry;\n case 3:\n const polygon = parsePolygon(view, offset, dimension, littleEndian);\n return polygon.geometry;\n case 4:\n const multiPoint = parseMultiPoint(view, offset, dimension, littleEndian);\n multiPoint.type = 'Point';\n return multiPoint;\n case 5:\n const multiLine = parseMultiLineString(view, offset, dimension, littleEndian);\n multiLine.type = 'LineString';\n return multiLine;\n case 6:\n const multiPolygon = parseMultiPolygon(view, offset, dimension, littleEndian);\n multiPolygon.type = 'Polygon';\n return multiPolygon;\n // case 7:\n // TODO: handle GeometryCollections\n // return parseGeometryCollection(view, offset, dimension, littleEndian);\n default:\n throw new Error(`WKB: Unsupported geometry type: ${geometryType}`);\n }\n}\n\n// Primitives; parse point and linear ring\nfunction parsePoint(\n view: DataView,\n offset: number,\n dimension: number,\n littleEndian: boolean\n): {geometry: BinaryPointGeometry; offset: number} {\n const positions = new Float64Array(dimension);\n for (let i = 0; i < dimension; i++) {\n positions[i] = view.getFloat64(offset, littleEndian);\n offset += 8;\n }\n\n return {\n geometry: {type: 'Point', positions: {value: positions, size: dimension}},\n offset\n };\n}\n\nfunction parseLineString(\n view: DataView,\n offset: number,\n dimension: number,\n littleEndian: boolean\n): {geometry: BinaryLineGeometry; offset: number} {\n const nPoints = view.getUint32(offset, littleEndian);\n offset += 4;\n\n // Instantiate array\n const positions = new Float64Array(nPoints * dimension);\n for (let i = 0; i < nPoints * dimension; i++) {\n positions[i] = view.getFloat64(offset, littleEndian);\n offset += 8;\n }\n\n const pathIndices = [0];\n if (nPoints > 0) {\n pathIndices.push(nPoints);\n }\n\n return {\n geometry: {\n type: 'LineString',\n positions: {value: positions, size: dimension},\n pathIndices: {value: new Uint16Array(pathIndices), size: 1}\n },\n offset\n };\n}\n\n// https://stackoverflow.com/a/55261098\nconst cumulativeSum = (sum: number) => (value: number) => (sum += value);\n\nfunction parsePolygon(\n view: DataView,\n offset: number,\n dimension: number,\n littleEndian: boolean\n): {geometry: BinaryPolygonGeometry; offset: number} {\n const nRings = view.getUint32(offset, littleEndian);\n offset += 4;\n\n const rings: TypedArray[] = [];\n for (let i = 0; i < nRings; i++) {\n const parsed = parseLineString(view, offset, dimension, littleEndian);\n const {positions} = parsed.geometry;\n offset = parsed.offset;\n rings.push(positions.value);\n }\n\n const concatenatedPositions = new Float64Array(concatTypedArrays(rings).buffer);\n const polygonIndices = [0];\n if (concatenatedPositions.length > 0) {\n polygonIndices.push(concatenatedPositions.length / dimension);\n }\n const primitivePolygonIndices = rings.map((l) => l.length / dimension).map(cumulativeSum(0));\n primitivePolygonIndices.unshift(0);\n\n return {\n geometry: {\n type: 'Polygon',\n positions: {value: concatenatedPositions, size: dimension},\n polygonIndices: {\n value: new Uint16Array(polygonIndices),\n size: 1\n },\n primitivePolygonIndices: {value: new Uint16Array(primitivePolygonIndices), size: 1}\n },\n offset\n };\n}\n\nfunction parseMultiPoint(\n view: DataView,\n offset: number,\n dimension: number,\n littleEndian: boolean\n): BinaryPointGeometry {\n const nPoints = view.getUint32(offset, littleEndian);\n offset += 4;\n\n const binaryPointGeometries: BinaryPointGeometry[] = [];\n for (let i = 0; i < nPoints; i++) {\n // Byte order for point\n const littleEndianPoint = view.getUint8(offset) === 1;\n offset++;\n\n // Assert point type\n if (view.getUint32(offset, littleEndianPoint) % 1000 !== 1) {\n throw new Error('WKB: Inner geometries of MultiPoint not of type Point');\n }\n\n offset += 4;\n\n const parsed = parsePoint(view, offset, dimension, littleEndianPoint);\n offset = parsed.offset;\n binaryPointGeometries.push(parsed.geometry);\n }\n\n return concatenateBinaryPointGeometries(binaryPointGeometries, dimension);\n}\n\nfunction parseMultiLineString(\n view: DataView,\n offset: number,\n dimension: number,\n littleEndian: boolean\n): BinaryLineGeometry {\n const nLines = view.getUint32(offset, littleEndian);\n offset += 4;\n\n const binaryLineGeometries: BinaryLineGeometry[] = [];\n for (let i = 0; i < nLines; i++) {\n // Byte order for line\n const littleEndianLine = view.getUint8(offset) === 1;\n offset++;\n\n // Assert type LineString\n if (view.getUint32(offset, littleEndianLine) % 1000 !== 2) {\n throw new Error('WKB: Inner geometries of MultiLineString not of type LineString');\n }\n offset += 4;\n\n const parsed = parseLineString(view, offset, dimension, littleEndianLine);\n offset = parsed.offset;\n binaryLineGeometries.push(parsed.geometry);\n }\n\n return concatenateBinaryLineGeometries(binaryLineGeometries, dimension);\n}\n\nfunction parseMultiPolygon(\n view: DataView,\n offset: number,\n dimension: number,\n littleEndian: boolean\n): BinaryPolygonGeometry {\n const nPolygons = view.getUint32(offset, littleEndian);\n offset += 4;\n\n const binaryPolygonGeometries: BinaryPolygonGeometry[] = [];\n for (let i = 0; i < nPolygons; i++) {\n // Byte order for polygon\n const littleEndianPolygon = view.getUint8(offset) === 1;\n offset++;\n\n // Assert type Polygon\n if (view.getUint32(offset, littleEndianPolygon) % 1000 !== 3) {\n throw new Error('WKB: Inner geometries of MultiPolygon not of type Polygon');\n }\n offset += 4;\n\n const parsed = parsePolygon(view, offset, dimension, littleEndianPolygon);\n offset = parsed.offset;\n binaryPolygonGeometries.push(parsed.geometry);\n }\n\n return concatenateBinaryPolygonGeometries(binaryPolygonGeometries, dimension);\n}\n\n// TODO - move to loaders.gl/schema/gis\n\nfunction concatenateBinaryPointGeometries(\n binaryPointGeometries: BinaryPointGeometry[],\n dimension: number\n): BinaryPointGeometry {\n const positions: TypedArray[] = binaryPointGeometries.map((geometry) => geometry.positions.value);\n const concatenatedPositions = new Float64Array(concatTypedArrays(positions).buffer);\n\n return {\n type: 'Point',\n positions: {value: concatenatedPositions, size: dimension}\n };\n}\n\nfunction concatenateBinaryLineGeometries(\n binaryLineGeometries: BinaryLineGeometry[],\n dimension: number\n): BinaryLineGeometry {\n const lines: TypedArray[] = binaryLineGeometries.map((geometry) => geometry.positions.value);\n const concatenatedPositions = new Float64Array(concatTypedArrays(lines).buffer);\n const pathIndices = lines.map((line) => line.length / dimension).map(cumulativeSum(0));\n pathIndices.unshift(0);\n\n return {\n type: 'LineString',\n positions: {value: concatenatedPositions, size: dimension},\n pathIndices: {value: new Uint16Array(pathIndices), size: 1}\n };\n}\n\nfunction concatenateBinaryPolygonGeometries(\n binaryPolygonGeometries: BinaryPolygonGeometry[],\n dimension: number\n): BinaryPolygonGeometry {\n const polygons: TypedArray[] = [];\n const primitivePolygons: TypedArray[] = [];\n\n for (const binaryPolygon of binaryPolygonGeometries) {\n const {positions, primitivePolygonIndices} = binaryPolygon;\n polygons.push(positions.value);\n primitivePolygons.push(primitivePolygonIndices.value);\n }\n\n const concatenatedPositions = new Float64Array(concatTypedArrays(polygons).buffer);\n const polygonIndices = polygons.map((p) => p.length / dimension).map(cumulativeSum(0));\n polygonIndices.unshift(0);\n\n // Combine primitivePolygonIndices from each individual polygon\n const primitivePolygonIndices = [0];\n for (const primitivePolygon of primitivePolygons) {\n primitivePolygonIndices.push(\n ...primitivePolygon\n .filter((x: number) => x > 0)\n .map((x: number) => x + primitivePolygonIndices[primitivePolygonIndices.length - 1])\n );\n }\n\n return {\n type: 'Polygon',\n positions: {value: concatenatedPositions, size: dimension},\n polygonIndices: {value: new Uint16Array(polygonIndices), size: 1},\n primitivePolygonIndices: {value: new Uint16Array(primitivePolygonIndices), size: 1}\n };\n}\n\n// TODO: remove copy; import from typed-array-utils\n// modules/math/src/geometry/typed-arrays/typed-array-utils.js\nfunction concatTypedArrays(arrays: TypedArray[]): TypedArray {\n let byteLength = 0;\n for (let i = 0; i < arrays.length; ++i) {\n byteLength += arrays[i].byteLength;\n }\n const buffer = new Uint8Array(byteLength);\n\n let byteOffset = 0;\n for (let i = 0; i < arrays.length; ++i) {\n const data = new Uint8Array(arrays[i].buffer);\n byteLength = data.length;\n for (let j = 0; j < byteLength; ++j) {\n buffer[byteOffset++] = data[j];\n }\n }\n return buffer;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"parse-wkb.js","names":["NUM_DIMENSIONS","parseWKB","arrayBuffer","view","DataView","offset","littleEndian","getUint8","geometryCode","getUint32","geometryType","type","dimension","point","parsePoint","geometry","line","parseLineString","polygon","parsePolygon","multiPoint","parseMultiPoint","multiLine","parseMultiLineString","multiPolygon","parseMultiPolygon","Error","concat","positions","Float64Array","i","getFloat64","value","size","nPoints","pathIndices","push","Uint16Array","cumulativeSum","sum","nRings","rings","parsed","concatenatedPositions","concatTypedArrays","buffer","polygonIndices","length","primitivePolygonIndices","map","l","unshift","binaryPointGeometries","littleEndianPoint","concatenateBinaryPointGeometries","nLines","binaryLineGeometries","littleEndianLine","concatenateBinaryLineGeometries","nPolygons","binaryPolygonGeometries","littleEndianPolygon","concatenateBinaryPolygonGeometries","lines","polygons","primitivePolygons","_iterator","_createForOfIteratorHelper","_step","s","n","done","binaryPolygon","err","e","f","p","_i","_primitivePolygons","primitivePolygon","apply","_toConsumableArray2","default","filter","x","arrays","byteLength","Uint8Array","byteOffset","data","j"],"sources":["../../../src/lib/parse-wkb.ts"],"sourcesContent":["import type {\n TypedArray,\n BinaryGeometry,\n BinaryPointGeometry,\n BinaryLineGeometry,\n BinaryPolygonGeometry\n} from '@loaders.gl/schema';\n\nconst NUM_DIMENSIONS = {\n 0: 2, // 2D\n 1: 3, // 3D (Z)\n 2: 3, // 3D (M)\n 3: 4 // 4D (ZM)\n};\n\nexport default function parseWKB(arrayBuffer: ArrayBuffer): BinaryGeometry {\n const view = new DataView(arrayBuffer);\n let offset = 0;\n\n // Check endianness of data\n const littleEndian = view.getUint8(offset) === 1;\n offset++;\n\n // 4-digit code representing dimension and type of geometry\n const geometryCode = view.getUint32(offset, littleEndian);\n offset += 4;\n\n const geometryType = geometryCode % 1000;\n const type = ((geometryCode - geometryType) / 1000) as 0 | 1 | 2 | 3;\n const dimension = NUM_DIMENSIONS[type];\n\n switch (geometryType) {\n case 1:\n const point = parsePoint(view, offset, dimension, littleEndian);\n return point.geometry;\n case 2:\n const line = parseLineString(view, offset, dimension, littleEndian);\n return line.geometry;\n case 3:\n const polygon = parsePolygon(view, offset, dimension, littleEndian);\n return polygon.geometry;\n case 4:\n const multiPoint = parseMultiPoint(view, offset, dimension, littleEndian);\n multiPoint.type = 'Point';\n return multiPoint;\n case 5:\n const multiLine = parseMultiLineString(view, offset, dimension, littleEndian);\n multiLine.type = 'LineString';\n return multiLine;\n case 6:\n const multiPolygon = parseMultiPolygon(view, offset, dimension, littleEndian);\n multiPolygon.type = 'Polygon';\n return multiPolygon;\n // case 7:\n // TODO: handle GeometryCollections\n // return parseGeometryCollection(view, offset, dimension, littleEndian);\n default:\n throw new Error(`WKB: Unsupported geometry type: ${geometryType}`);\n }\n}\n\n// Primitives; parse point and linear ring\nfunction parsePoint(\n view: DataView,\n offset: number,\n dimension: number,\n littleEndian: boolean\n): {geometry: BinaryPointGeometry; offset: number} {\n const positions = new Float64Array(dimension);\n for (let i = 0; i < dimension; i++) {\n positions[i] = view.getFloat64(offset, littleEndian);\n offset += 8;\n }\n\n return {\n geometry: {type: 'Point', positions: {value: positions, size: dimension}},\n offset\n };\n}\n\nfunction parseLineString(\n view: DataView,\n offset: number,\n dimension: number,\n littleEndian: boolean\n): {geometry: BinaryLineGeometry; offset: number} {\n const nPoints = view.getUint32(offset, littleEndian);\n offset += 4;\n\n // Instantiate array\n const positions = new Float64Array(nPoints * dimension);\n for (let i = 0; i < nPoints * dimension; i++) {\n positions[i] = view.getFloat64(offset, littleEndian);\n offset += 8;\n }\n\n const pathIndices = [0];\n if (nPoints > 0) {\n pathIndices.push(nPoints);\n }\n\n return {\n geometry: {\n type: 'LineString',\n positions: {value: positions, size: dimension},\n pathIndices: {value: new Uint16Array(pathIndices), size: 1}\n },\n offset\n };\n}\n\n// https://stackoverflow.com/a/55261098\nconst cumulativeSum = (sum: number) => (value: number) => (sum += value);\n\nfunction parsePolygon(\n view: DataView,\n offset: number,\n dimension: number,\n littleEndian: boolean\n): {geometry: BinaryPolygonGeometry; offset: number} {\n const nRings = view.getUint32(offset, littleEndian);\n offset += 4;\n\n const rings: TypedArray[] = [];\n for (let i = 0; i < nRings; i++) {\n const parsed = parseLineString(view, offset, dimension, littleEndian);\n const {positions} = parsed.geometry;\n offset = parsed.offset;\n rings.push(positions.value);\n }\n\n const concatenatedPositions = new Float64Array(concatTypedArrays(rings).buffer);\n const polygonIndices = [0];\n if (concatenatedPositions.length > 0) {\n polygonIndices.push(concatenatedPositions.length / dimension);\n }\n const primitivePolygonIndices = rings.map((l) => l.length / dimension).map(cumulativeSum(0));\n primitivePolygonIndices.unshift(0);\n\n return {\n geometry: {\n type: 'Polygon',\n positions: {value: concatenatedPositions, size: dimension},\n polygonIndices: {\n value: new Uint16Array(polygonIndices),\n size: 1\n },\n primitivePolygonIndices: {value: new Uint16Array(primitivePolygonIndices), size: 1}\n },\n offset\n };\n}\n\nfunction parseMultiPoint(\n view: DataView,\n offset: number,\n dimension: number,\n littleEndian: boolean\n): BinaryPointGeometry {\n const nPoints = view.getUint32(offset, littleEndian);\n offset += 4;\n\n const binaryPointGeometries: BinaryPointGeometry[] = [];\n for (let i = 0; i < nPoints; i++) {\n // Byte order for point\n const littleEndianPoint = view.getUint8(offset) === 1;\n offset++;\n\n // Assert point type\n if (view.getUint32(offset, littleEndianPoint) % 1000 !== 1) {\n throw new Error('WKB: Inner geometries of MultiPoint not of type Point');\n }\n\n offset += 4;\n\n const parsed = parsePoint(view, offset, dimension, littleEndianPoint);\n offset = parsed.offset;\n binaryPointGeometries.push(parsed.geometry);\n }\n\n return concatenateBinaryPointGeometries(binaryPointGeometries, dimension);\n}\n\nfunction parseMultiLineString(\n view: DataView,\n offset: number,\n dimension: number,\n littleEndian: boolean\n): BinaryLineGeometry {\n const nLines = view.getUint32(offset, littleEndian);\n offset += 4;\n\n const binaryLineGeometries: BinaryLineGeometry[] = [];\n for (let i = 0; i < nLines; i++) {\n // Byte order for line\n const littleEndianLine = view.getUint8(offset) === 1;\n offset++;\n\n // Assert type LineString\n if (view.getUint32(offset, littleEndianLine) % 1000 !== 2) {\n throw new Error('WKB: Inner geometries of MultiLineString not of type LineString');\n }\n offset += 4;\n\n const parsed = parseLineString(view, offset, dimension, littleEndianLine);\n offset = parsed.offset;\n binaryLineGeometries.push(parsed.geometry);\n }\n\n return concatenateBinaryLineGeometries(binaryLineGeometries, dimension);\n}\n\nfunction parseMultiPolygon(\n view: DataView,\n offset: number,\n dimension: number,\n littleEndian: boolean\n): BinaryPolygonGeometry {\n const nPolygons = view.getUint32(offset, littleEndian);\n offset += 4;\n\n const binaryPolygonGeometries: BinaryPolygonGeometry[] = [];\n for (let i = 0; i < nPolygons; i++) {\n // Byte order for polygon\n const littleEndianPolygon = view.getUint8(offset) === 1;\n offset++;\n\n // Assert type Polygon\n if (view.getUint32(offset, littleEndianPolygon) % 1000 !== 3) {\n throw new Error('WKB: Inner geometries of MultiPolygon not of type Polygon');\n }\n offset += 4;\n\n const parsed = parsePolygon(view, offset, dimension, littleEndianPolygon);\n offset = parsed.offset;\n binaryPolygonGeometries.push(parsed.geometry);\n }\n\n return concatenateBinaryPolygonGeometries(binaryPolygonGeometries, dimension);\n}\n\n// TODO - move to loaders.gl/schema/gis\n\nfunction concatenateBinaryPointGeometries(\n binaryPointGeometries: BinaryPointGeometry[],\n dimension: number\n): BinaryPointGeometry {\n const positions: TypedArray[] = binaryPointGeometries.map((geometry) => geometry.positions.value);\n const concatenatedPositions = new Float64Array(concatTypedArrays(positions).buffer);\n\n return {\n type: 'Point',\n positions: {value: concatenatedPositions, size: dimension}\n };\n}\n\nfunction concatenateBinaryLineGeometries(\n binaryLineGeometries: BinaryLineGeometry[],\n dimension: number\n): BinaryLineGeometry {\n const lines: TypedArray[] = binaryLineGeometries.map((geometry) => geometry.positions.value);\n const concatenatedPositions = new Float64Array(concatTypedArrays(lines).buffer);\n const pathIndices = lines.map((line) => line.length / dimension).map(cumulativeSum(0));\n pathIndices.unshift(0);\n\n return {\n type: 'LineString',\n positions: {value: concatenatedPositions, size: dimension},\n pathIndices: {value: new Uint16Array(pathIndices), size: 1}\n };\n}\n\nfunction concatenateBinaryPolygonGeometries(\n binaryPolygonGeometries: BinaryPolygonGeometry[],\n dimension: number\n): BinaryPolygonGeometry {\n const polygons: TypedArray[] = [];\n const primitivePolygons: TypedArray[] = [];\n\n for (const binaryPolygon of binaryPolygonGeometries) {\n const {positions, primitivePolygonIndices} = binaryPolygon;\n polygons.push(positions.value);\n primitivePolygons.push(primitivePolygonIndices.value);\n }\n\n const concatenatedPositions = new Float64Array(concatTypedArrays(polygons).buffer);\n const polygonIndices = polygons.map((p) => p.length / dimension).map(cumulativeSum(0));\n polygonIndices.unshift(0);\n\n // Combine primitivePolygonIndices from each individual polygon\n const primitivePolygonIndices = [0];\n for (const primitivePolygon of primitivePolygons) {\n primitivePolygonIndices.push(\n ...primitivePolygon\n .filter((x: number) => x > 0)\n .map((x: number) => x + primitivePolygonIndices[primitivePolygonIndices.length - 1])\n );\n }\n\n return {\n type: 'Polygon',\n positions: {value: concatenatedPositions, size: dimension},\n polygonIndices: {value: new Uint16Array(polygonIndices), size: 1},\n primitivePolygonIndices: {value: new Uint16Array(primitivePolygonIndices), size: 1}\n };\n}\n\n// TODO: remove copy; import from typed-array-utils\n// modules/math/src/geometry/typed-arrays/typed-array-utils.js\nfunction concatTypedArrays(arrays: TypedArray[]): TypedArray {\n let byteLength = 0;\n for (let i = 0; i < arrays.length; ++i) {\n byteLength += arrays[i].byteLength;\n }\n const buffer = new Uint8Array(byteLength);\n\n let byteOffset = 0;\n for (let i = 0; i < arrays.length; ++i) {\n const data = new Uint8Array(arrays[i].buffer);\n byteLength = data.length;\n for (let j = 0; j < byteLength; ++j) {\n buffer[byteOffset++] = data[j];\n }\n }\n return buffer;\n}\n"],"mappings":"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"}
|
|
@@ -4,10 +4,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = parseWKT;
|
|
7
|
-
|
|
8
7
|
var numberRegexp = /[-+]?([0-9]*\.[0-9]+|[0-9]+)([eE][-+]?[0-9]+)?/;
|
|
9
8
|
var tuples = new RegExp('^' + numberRegexp.source + '(\\s' + numberRegexp.source + '){1,}');
|
|
10
|
-
|
|
11
9
|
function parseWKT(input) {
|
|
12
10
|
var parts = input.split(';');
|
|
13
11
|
var _ = parts.pop();
|
|
@@ -49,7 +47,6 @@ function parseWKT(input) {
|
|
|
49
47
|
depth++;
|
|
50
48
|
} else if (elem === ')') {
|
|
51
49
|
if (pointer.length === 0) return null;
|
|
52
|
-
|
|
53
50
|
pointer = stack.pop();
|
|
54
51
|
if (!pointer) return null;
|
|
55
52
|
depth--;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-wkt.js","names":["numberRegexp","tuples","RegExp","source","parseWKT","input","parts","split","_","pop","srid","shift","i","$","re","match","substring","length","crs","obj","type","properties","name","white","multicoords","depth","rings","stack","pointer","elem","push","some","isNaN","Array","prototype","apply","map","parseFloat","coords","list","item","pt","point","c","coordinates","multipoint","newCoordsFormat","indexOf","replace","multilinestring","linestring","polygon","multipolygon","geometrycollection","geometries","geometry","root"],"sources":["../../../src/lib/parse-wkt.ts"],"sourcesContent":["// Fork of https://github.com/mapbox/wellknown under ISC license (MIT/BSD-2-clause equivalent)\n\n/* eslint-disable */\n// @ts-nocheck\n\nconst numberRegexp = /[-+]?([0-9]*\\.[0-9]+|[0-9]+)([eE][-+]?[0-9]+)?/;\n// Matches sequences like '100 100' or '100 100 100'.\nconst tuples = new RegExp('^' + numberRegexp.source + '(\\\\s' + numberRegexp.source + '){1,}');\n\n/**\n * Parse WKT and return GeoJSON.\n *\n * @param {string} _ A WKT geometry\n * @return {?Object} A GeoJSON geometry object\n **/\nexport default function parseWKT(input) {\n const parts = input.split(';');\n let _ = parts.pop();\n const srid = (parts.shift() || '').split('=').pop();\n\n let i = 0;\n\n function $(re) {\n const match = _.substring(i).match(re);\n if (!match) return null;\n else {\n i += match[0].length;\n return match[0];\n }\n }\n\n function crs(obj) {\n if (obj && srid.match(/\\d+/)) {\n obj.crs = {\n type: 'name',\n properties: {\n name: 'urn:ogc:def:crs:EPSG::' + srid\n }\n };\n }\n\n return obj;\n }\n\n function white() {\n $(/^\\s*/);\n }\n\n function multicoords() {\n white();\n let depth = 0;\n const rings = [];\n const stack = [rings];\n let pointer = rings;\n let elem;\n\n while ((elem = $(/^(\\()/) || $(/^(\\))/) || $(/^(,)/) || $(tuples))) {\n if (elem === '(') {\n stack.push(pointer);\n pointer = [];\n stack[stack.length - 1].push(pointer);\n depth++;\n } else if (elem === ')') {\n // For the case: Polygon(), ...\n if (pointer.length === 0) return null;\n\n // @ts-ignore\n pointer = stack.pop();\n // the stack was empty, input was malformed\n if (!pointer) return null;\n depth--;\n if (depth === 0) break;\n } else if (elem === ',') {\n pointer = [];\n stack[stack.length - 1].push(pointer);\n } else if (!elem.split(/\\s/g).some(isNaN)) {\n Array.prototype.push.apply(pointer, elem.split(/\\s/g).map(parseFloat));\n } else {\n return null;\n }\n white();\n }\n\n if (depth !== 0) return null;\n\n return rings;\n }\n\n function coords() {\n const list = [];\n let item;\n let pt;\n while ((pt = $(tuples) || $(/^(,)/))) {\n if (pt === ',') {\n list.push(item);\n item = [];\n } else if (!pt.split(/\\s/g).some(isNaN)) {\n if (!item) item = [];\n Array.prototype.push.apply(item, pt.split(/\\s/g).map(parseFloat));\n }\n white();\n }\n\n if (item) list.push(item);\n else return null;\n\n return list.length ? list : null;\n }\n\n function point() {\n if (!$(/^(point(\\sz)?)/i)) return null;\n white();\n if (!$(/^(\\()/)) return null;\n const c = coords();\n if (!c) return null;\n white();\n if (!$(/^(\\))/)) return null;\n return {\n type: 'Point',\n coordinates: c[0]\n };\n }\n\n function multipoint() {\n if (!$(/^(multipoint)/i)) return null;\n white();\n const newCoordsFormat = _.substring(_.indexOf('(') + 1, _.length - 1)\n .replace(/\\(/g, '')\n .replace(/\\)/g, '');\n _ = 'MULTIPOINT (' + newCoordsFormat + ')';\n const c = multicoords();\n if (!c) return null;\n white();\n return {\n type: 'MultiPoint',\n coordinates: c\n };\n }\n\n function multilinestring() {\n if (!$(/^(multilinestring)/i)) return null;\n white();\n const c = multicoords();\n if (!c) return null;\n white();\n return {\n type: 'MultiLineString',\n coordinates: c\n };\n }\n\n function linestring() {\n if (!$(/^(linestring(\\sz)?)/i)) return null;\n white();\n if (!$(/^(\\()/)) return null;\n const c = coords();\n if (!c) return null;\n if (!$(/^(\\))/)) return null;\n return {\n type: 'LineString',\n coordinates: c\n };\n }\n\n function polygon() {\n if (!$(/^(polygon(\\sz)?)/i)) return null;\n white();\n const c = multicoords();\n if (!c) return null;\n return {\n type: 'Polygon',\n coordinates: c\n };\n }\n\n function multipolygon() {\n if (!$(/^(multipolygon)/i)) return null;\n white();\n const c = multicoords();\n if (!c) return null;\n return {\n type: 'MultiPolygon',\n coordinates: c\n };\n }\n\n function geometrycollection() {\n const geometries = [];\n let geometry;\n\n if (!$(/^(geometrycollection)/i)) return null;\n white();\n\n if (!$(/^(\\()/)) return null;\n while ((geometry = root())) {\n geometries.push(geometry);\n white();\n $(/^(,)/);\n white();\n }\n if (!$(/^(\\))/)) return null;\n\n return {\n type: 'GeometryCollection',\n geometries: geometries\n };\n }\n\n function root() {\n return (\n point() ||\n linestring() ||\n polygon() ||\n multipoint() ||\n multilinestring() ||\n multipolygon() ||\n geometrycollection()\n );\n }\n\n return crs(root());\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"parse-wkt.js","names":["numberRegexp","tuples","RegExp","source","parseWKT","input","parts","split","_","pop","srid","shift","i","$","re","match","substring","length","crs","obj","type","properties","name","white","multicoords","depth","rings","stack","pointer","elem","push","some","isNaN","Array","prototype","apply","map","parseFloat","coords","list","item","pt","point","c","coordinates","multipoint","newCoordsFormat","indexOf","replace","multilinestring","linestring","polygon","multipolygon","geometrycollection","geometries","geometry","root"],"sources":["../../../src/lib/parse-wkt.ts"],"sourcesContent":["// Fork of https://github.com/mapbox/wellknown under ISC license (MIT/BSD-2-clause equivalent)\n\n/* eslint-disable */\n// @ts-nocheck\n\nconst numberRegexp = /[-+]?([0-9]*\\.[0-9]+|[0-9]+)([eE][-+]?[0-9]+)?/;\n// Matches sequences like '100 100' or '100 100 100'.\nconst tuples = new RegExp('^' + numberRegexp.source + '(\\\\s' + numberRegexp.source + '){1,}');\n\n/**\n * Parse WKT and return GeoJSON.\n *\n * @param {string} _ A WKT geometry\n * @return {?Object} A GeoJSON geometry object\n **/\nexport default function parseWKT(input) {\n const parts = input.split(';');\n let _ = parts.pop();\n const srid = (parts.shift() || '').split('=').pop();\n\n let i = 0;\n\n function $(re) {\n const match = _.substring(i).match(re);\n if (!match) return null;\n else {\n i += match[0].length;\n return match[0];\n }\n }\n\n function crs(obj) {\n if (obj && srid.match(/\\d+/)) {\n obj.crs = {\n type: 'name',\n properties: {\n name: 'urn:ogc:def:crs:EPSG::' + srid\n }\n };\n }\n\n return obj;\n }\n\n function white() {\n $(/^\\s*/);\n }\n\n function multicoords() {\n white();\n let depth = 0;\n const rings = [];\n const stack = [rings];\n let pointer = rings;\n let elem;\n\n while ((elem = $(/^(\\()/) || $(/^(\\))/) || $(/^(,)/) || $(tuples))) {\n if (elem === '(') {\n stack.push(pointer);\n pointer = [];\n stack[stack.length - 1].push(pointer);\n depth++;\n } else if (elem === ')') {\n // For the case: Polygon(), ...\n if (pointer.length === 0) return null;\n\n // @ts-ignore\n pointer = stack.pop();\n // the stack was empty, input was malformed\n if (!pointer) return null;\n depth--;\n if (depth === 0) break;\n } else if (elem === ',') {\n pointer = [];\n stack[stack.length - 1].push(pointer);\n } else if (!elem.split(/\\s/g).some(isNaN)) {\n Array.prototype.push.apply(pointer, elem.split(/\\s/g).map(parseFloat));\n } else {\n return null;\n }\n white();\n }\n\n if (depth !== 0) return null;\n\n return rings;\n }\n\n function coords() {\n const list = [];\n let item;\n let pt;\n while ((pt = $(tuples) || $(/^(,)/))) {\n if (pt === ',') {\n list.push(item);\n item = [];\n } else if (!pt.split(/\\s/g).some(isNaN)) {\n if (!item) item = [];\n Array.prototype.push.apply(item, pt.split(/\\s/g).map(parseFloat));\n }\n white();\n }\n\n if (item) list.push(item);\n else return null;\n\n return list.length ? list : null;\n }\n\n function point() {\n if (!$(/^(point(\\sz)?)/i)) return null;\n white();\n if (!$(/^(\\()/)) return null;\n const c = coords();\n if (!c) return null;\n white();\n if (!$(/^(\\))/)) return null;\n return {\n type: 'Point',\n coordinates: c[0]\n };\n }\n\n function multipoint() {\n if (!$(/^(multipoint)/i)) return null;\n white();\n const newCoordsFormat = _.substring(_.indexOf('(') + 1, _.length - 1)\n .replace(/\\(/g, '')\n .replace(/\\)/g, '');\n _ = 'MULTIPOINT (' + newCoordsFormat + ')';\n const c = multicoords();\n if (!c) return null;\n white();\n return {\n type: 'MultiPoint',\n coordinates: c\n };\n }\n\n function multilinestring() {\n if (!$(/^(multilinestring)/i)) return null;\n white();\n const c = multicoords();\n if (!c) return null;\n white();\n return {\n type: 'MultiLineString',\n coordinates: c\n };\n }\n\n function linestring() {\n if (!$(/^(linestring(\\sz)?)/i)) return null;\n white();\n if (!$(/^(\\()/)) return null;\n const c = coords();\n if (!c) return null;\n if (!$(/^(\\))/)) return null;\n return {\n type: 'LineString',\n coordinates: c\n };\n }\n\n function polygon() {\n if (!$(/^(polygon(\\sz)?)/i)) return null;\n white();\n const c = multicoords();\n if (!c) return null;\n return {\n type: 'Polygon',\n coordinates: c\n };\n }\n\n function multipolygon() {\n if (!$(/^(multipolygon)/i)) return null;\n white();\n const c = multicoords();\n if (!c) return null;\n return {\n type: 'MultiPolygon',\n coordinates: c\n };\n }\n\n function geometrycollection() {\n const geometries = [];\n let geometry;\n\n if (!$(/^(geometrycollection)/i)) return null;\n white();\n\n if (!$(/^(\\()/)) return null;\n while ((geometry = root())) {\n geometries.push(geometry);\n white();\n $(/^(,)/);\n white();\n }\n if (!$(/^(\\))/)) return null;\n\n return {\n type: 'GeometryCollection',\n geometries: geometries\n };\n }\n\n function root() {\n return (\n point() ||\n linestring() ||\n polygon() ||\n multipoint() ||\n multilinestring() ||\n multipolygon() ||\n geometrycollection()\n );\n }\n\n return crs(root());\n}\n"],"mappings":";;;;;;AAKA,IAAMA,YAAY,GAAG,gDAAgD;AAErE,IAAMC,MAAM,GAAG,IAAIC,MAAM,CAAC,GAAG,GAAGF,YAAY,CAACG,MAAM,GAAG,MAAM,GAAGH,YAAY,CAACG,MAAM,GAAG,OAAO,CAAC;AAQ9E,SAASC,QAAQA,CAACC,KAAK,EAAE;EACtC,IAAMC,KAAK,GAAGD,KAAK,CAACE,KAAK,CAAC,GAAG,CAAC;EAC9B,IAAIC,CAAC,GAAGF,KAAK,CAACG,GAAG,CAAC,CAAC;EACnB,IAAMC,IAAI,GAAG,CAACJ,KAAK,CAACK,KAAK,CAAC,CAAC,IAAI,EAAE,EAAEJ,KAAK,CAAC,GAAG,CAAC,CAACE,GAAG,CAAC,CAAC;EAEnD,IAAIG,CAAC,GAAG,CAAC;EAET,SAASC,CAACA,CAACC,EAAE,EAAE;IACb,IAAMC,KAAK,GAAGP,CAAC,CAACQ,SAAS,CAACJ,CAAC,CAAC,CAACG,KAAK,CAACD,EAAE,CAAC;IACtC,IAAI,CAACC,KAAK,EAAE,OAAO,IAAI,CAAC,KACnB;MACHH,CAAC,IAAIG,KAAK,CAAC,CAAC,CAAC,CAACE,MAAM;MACpB,OAAOF,KAAK,CAAC,CAAC,CAAC;IACjB;EACF;EAEA,SAASG,GAAGA,CAACC,GAAG,EAAE;IAChB,IAAIA,GAAG,IAAIT,IAAI,CAACK,KAAK,CAAC,KAAK,CAAC,EAAE;MAC5BI,GAAG,CAACD,GAAG,GAAG;QACRE,IAAI,EAAE,MAAM;QACZC,UAAU,EAAE;UACVC,IAAI,EAAE,wBAAwB,GAAGZ;QACnC;MACF,CAAC;IACH;IAEA,OAAOS,GAAG;EACZ;EAEA,SAASI,KAAKA,CAAA,EAAG;IACfV,CAAC,CAAC,MAAM,CAAC;EACX;EAEA,SAASW,WAAWA,CAAA,EAAG;IACrBD,KAAK,CAAC,CAAC;IACP,IAAIE,KAAK,GAAG,CAAC;IACb,IAAMC,KAAK,GAAG,EAAE;IAChB,IAAMC,KAAK,GAAG,CAACD,KAAK,CAAC;IACrB,IAAIE,OAAO,GAAGF,KAAK;IACnB,IAAIG,IAAI;IAER,OAAQA,IAAI,GAAGhB,CAAC,CAAC,OAAO,CAAC,IAAIA,CAAC,CAAC,OAAO,CAAC,IAAIA,CAAC,CAAC,MAAM,CAAC,IAAIA,CAAC,CAACZ,MAAM,CAAC,EAAG;MAClE,IAAI4B,IAAI,KAAK,GAAG,EAAE;QAChBF,KAAK,CAACG,IAAI,CAACF,OAAO,CAAC;QACnBA,OAAO,GAAG,EAAE;QACZD,KAAK,CAACA,KAAK,CAACV,MAAM,GAAG,CAAC,CAAC,CAACa,IAAI,CAACF,OAAO,CAAC;QACrCH,KAAK,EAAE;MACT,CAAC,MAAM,IAAII,IAAI,KAAK,GAAG,EAAE;QAEvB,IAAID,OAAO,CAACX,MAAM,KAAK,CAAC,EAAE,OAAO,IAAI;QAGrCW,OAAO,GAAGD,KAAK,CAAClB,GAAG,CAAC,CAAC;QAErB,IAAI,CAACmB,OAAO,EAAE,OAAO,IAAI;QACzBH,KAAK,EAAE;QACP,IAAIA,KAAK,KAAK,CAAC,EAAE;MACnB,CAAC,MAAM,IAAII,IAAI,KAAK,GAAG,EAAE;QACvBD,OAAO,GAAG,EAAE;QACZD,KAAK,CAACA,KAAK,CAACV,MAAM,GAAG,CAAC,CAAC,CAACa,IAAI,CAACF,OAAO,CAAC;MACvC,CAAC,MAAM,IAAI,CAACC,IAAI,CAACtB,KAAK,CAAC,KAAK,CAAC,CAACwB,IAAI,CAACC,KAAK,CAAC,EAAE;QACzCC,KAAK,CAACC,SAAS,CAACJ,IAAI,CAACK,KAAK,CAACP,OAAO,EAAEC,IAAI,CAACtB,KAAK,CAAC,KAAK,CAAC,CAAC6B,GAAG,CAACC,UAAU,CAAC,CAAC;MACxE,CAAC,MAAM;QACL,OAAO,IAAI;MACb;MACAd,KAAK,CAAC,CAAC;IACT;IAEA,IAAIE,KAAK,KAAK,CAAC,EAAE,OAAO,IAAI;IAE5B,OAAOC,KAAK;EACd;EAEA,SAASY,MAAMA,CAAA,EAAG;IAChB,IAAMC,IAAI,GAAG,EAAE;IACf,IAAIC,IAAI;IACR,IAAIC,EAAE;IACN,OAAQA,EAAE,GAAG5B,CAAC,CAACZ,MAAM,CAAC,IAAIY,CAAC,CAAC,MAAM,CAAC,EAAG;MACpC,IAAI4B,EAAE,KAAK,GAAG,EAAE;QACdF,IAAI,CAACT,IAAI,CAACU,IAAI,CAAC;QACfA,IAAI,GAAG,EAAE;MACX,CAAC,MAAM,IAAI,CAACC,EAAE,CAAClC,KAAK,CAAC,KAAK,CAAC,CAACwB,IAAI,CAACC,KAAK,CAAC,EAAE;QACvC,IAAI,CAACQ,IAAI,EAAEA,IAAI,GAAG,EAAE;QACpBP,KAAK,CAACC,SAAS,CAACJ,IAAI,CAACK,KAAK,CAACK,IAAI,EAAEC,EAAE,CAAClC,KAAK,CAAC,KAAK,CAAC,CAAC6B,GAAG,CAACC,UAAU,CAAC,CAAC;MACnE;MACAd,KAAK,CAAC,CAAC;IACT;IAEA,IAAIiB,IAAI,EAAED,IAAI,CAACT,IAAI,CAACU,IAAI,CAAC,CAAC,KACrB,OAAO,IAAI;IAEhB,OAAOD,IAAI,CAACtB,MAAM,GAAGsB,IAAI,GAAG,IAAI;EAClC;EAEA,SAASG,KAAKA,CAAA,EAAG;IACf,IAAI,CAAC7B,CAAC,CAAC,iBAAiB,CAAC,EAAE,OAAO,IAAI;IACtCU,KAAK,CAAC,CAAC;IACP,IAAI,CAACV,CAAC,CAAC,OAAO,CAAC,EAAE,OAAO,IAAI;IAC5B,IAAM8B,CAAC,GAAGL,MAAM,CAAC,CAAC;IAClB,IAAI,CAACK,CAAC,EAAE,OAAO,IAAI;IACnBpB,KAAK,CAAC,CAAC;IACP,IAAI,CAACV,CAAC,CAAC,OAAO,CAAC,EAAE,OAAO,IAAI;IAC5B,OAAO;MACLO,IAAI,EAAE,OAAO;MACbwB,WAAW,EAAED,CAAC,CAAC,CAAC;IAClB,CAAC;EACH;EAEA,SAASE,UAAUA,CAAA,EAAG;IACpB,IAAI,CAAChC,CAAC,CAAC,gBAAgB,CAAC,EAAE,OAAO,IAAI;IACrCU,KAAK,CAAC,CAAC;IACP,IAAMuB,eAAe,GAAGtC,CAAC,CAACQ,SAAS,CAACR,CAAC,CAACuC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAEvC,CAAC,CAACS,MAAM,GAAG,CAAC,CAAC,CAClE+B,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAClBA,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;IACrBxC,CAAC,GAAG,cAAc,GAAGsC,eAAe,GAAG,GAAG;IAC1C,IAAMH,CAAC,GAAGnB,WAAW,CAAC,CAAC;IACvB,IAAI,CAACmB,CAAC,EAAE,OAAO,IAAI;IACnBpB,KAAK,CAAC,CAAC;IACP,OAAO;MACLH,IAAI,EAAE,YAAY;MAClBwB,WAAW,EAAED;IACf,CAAC;EACH;EAEA,SAASM,eAAeA,CAAA,EAAG;IACzB,IAAI,CAACpC,CAAC,CAAC,qBAAqB,CAAC,EAAE,OAAO,IAAI;IAC1CU,KAAK,CAAC,CAAC;IACP,IAAMoB,CAAC,GAAGnB,WAAW,CAAC,CAAC;IACvB,IAAI,CAACmB,CAAC,EAAE,OAAO,IAAI;IACnBpB,KAAK,CAAC,CAAC;IACP,OAAO;MACLH,IAAI,EAAE,iBAAiB;MACvBwB,WAAW,EAAED;IACf,CAAC;EACH;EAEA,SAASO,UAAUA,CAAA,EAAG;IACpB,IAAI,CAACrC,CAAC,CAAC,sBAAsB,CAAC,EAAE,OAAO,IAAI;IAC3CU,KAAK,CAAC,CAAC;IACP,IAAI,CAACV,CAAC,CAAC,OAAO,CAAC,EAAE,OAAO,IAAI;IAC5B,IAAM8B,CAAC,GAAGL,MAAM,CAAC,CAAC;IAClB,IAAI,CAACK,CAAC,EAAE,OAAO,IAAI;IACnB,IAAI,CAAC9B,CAAC,CAAC,OAAO,CAAC,EAAE,OAAO,IAAI;IAC5B,OAAO;MACLO,IAAI,EAAE,YAAY;MAClBwB,WAAW,EAAED;IACf,CAAC;EACH;EAEA,SAASQ,OAAOA,CAAA,EAAG;IACjB,IAAI,CAACtC,CAAC,CAAC,mBAAmB,CAAC,EAAE,OAAO,IAAI;IACxCU,KAAK,CAAC,CAAC;IACP,IAAMoB,CAAC,GAAGnB,WAAW,CAAC,CAAC;IACvB,IAAI,CAACmB,CAAC,EAAE,OAAO,IAAI;IACnB,OAAO;MACLvB,IAAI,EAAE,SAAS;MACfwB,WAAW,EAAED;IACf,CAAC;EACH;EAEA,SAASS,YAAYA,CAAA,EAAG;IACtB,IAAI,CAACvC,CAAC,CAAC,kBAAkB,CAAC,EAAE,OAAO,IAAI;IACvCU,KAAK,CAAC,CAAC;IACP,IAAMoB,CAAC,GAAGnB,WAAW,CAAC,CAAC;IACvB,IAAI,CAACmB,CAAC,EAAE,OAAO,IAAI;IACnB,OAAO;MACLvB,IAAI,EAAE,cAAc;MACpBwB,WAAW,EAAED;IACf,CAAC;EACH;EAEA,SAASU,kBAAkBA,CAAA,EAAG;IAC5B,IAAMC,UAAU,GAAG,EAAE;IACrB,IAAIC,QAAQ;IAEZ,IAAI,CAAC1C,CAAC,CAAC,wBAAwB,CAAC,EAAE,OAAO,IAAI;IAC7CU,KAAK,CAAC,CAAC;IAEP,IAAI,CAACV,CAAC,CAAC,OAAO,CAAC,EAAE,OAAO,IAAI;IAC5B,OAAQ0C,QAAQ,GAAGC,IAAI,CAAC,CAAC,EAAG;MAC1BF,UAAU,CAACxB,IAAI,CAACyB,QAAQ,CAAC;MACzBhC,KAAK,CAAC,CAAC;MACPV,CAAC,CAAC,MAAM,CAAC;MACTU,KAAK,CAAC,CAAC;IACT;IACA,IAAI,CAACV,CAAC,CAAC,OAAO,CAAC,EAAE,OAAO,IAAI;IAE5B,OAAO;MACLO,IAAI,EAAE,oBAAoB;MAC1BkC,UAAU,EAAEA;IACd,CAAC;EACH;EAEA,SAASE,IAAIA,CAAA,EAAG;IACd,OACEd,KAAK,CAAC,CAAC,IACPQ,UAAU,CAAC,CAAC,IACZC,OAAO,CAAC,CAAC,IACTN,UAAU,CAAC,CAAC,IACZI,eAAe,CAAC,CAAC,IACjBG,YAAY,CAAC,CAAC,IACdC,kBAAkB,CAAC,CAAC;EAExB;EAEA,OAAOnC,GAAG,CAACsC,IAAI,CAAC,CAAC,CAAC;AACpB"}
|
|
@@ -8,7 +8,6 @@ exports.default = void 0;
|
|
|
8
8
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
9
9
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
10
10
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
|
-
|
|
12
11
|
var LE = true;
|
|
13
12
|
var BE = false;
|
|
14
13
|
var BinaryWriter = function () {
|
|
@@ -121,11 +120,9 @@ var BinaryWriter = function () {
|
|
|
121
120
|
this.dataView.setFloat64(this.byteOffset, value, BE);
|
|
122
121
|
this.byteOffset += 8;
|
|
123
122
|
}
|
|
124
|
-
|
|
125
123
|
}, {
|
|
126
124
|
key: "writeVarInt",
|
|
127
|
-
value:
|
|
128
|
-
function writeVarInt(value) {
|
|
125
|
+
value: function writeVarInt(value) {
|
|
129
126
|
var length = 1;
|
|
130
127
|
while ((value & 0xffffff80) !== 0) {
|
|
131
128
|
this.writeUInt8(value & 0x7f | 0x80);
|
|
@@ -135,21 +132,17 @@ var BinaryWriter = function () {
|
|
|
135
132
|
this.writeUInt8(value & 0x7f);
|
|
136
133
|
return length;
|
|
137
134
|
}
|
|
138
|
-
|
|
139
135
|
}, {
|
|
140
136
|
key: "writeBuffer",
|
|
141
|
-
value:
|
|
142
|
-
function writeBuffer(arrayBuffer) {
|
|
137
|
+
value: function writeBuffer(arrayBuffer) {
|
|
143
138
|
this._ensureSize(arrayBuffer.byteLength);
|
|
144
139
|
var tempArray = new Uint8Array(this.arrayBuffer);
|
|
145
140
|
tempArray.set(new Uint8Array(arrayBuffer), this.byteOffset);
|
|
146
141
|
this.byteOffset += arrayBuffer.byteLength;
|
|
147
142
|
}
|
|
148
|
-
|
|
149
143
|
}, {
|
|
150
144
|
key: "_ensureSize",
|
|
151
|
-
value:
|
|
152
|
-
function _ensureSize(size) {
|
|
145
|
+
value: function _ensureSize(size) {
|
|
153
146
|
if (this.arrayBuffer.byteLength < this.byteOffset + size) {
|
|
154
147
|
if (this.allowResize) {
|
|
155
148
|
var newArrayBuffer = new ArrayBuffer(this.byteOffset + size);
|