@loaders.gl/wkt 4.0.0-alpha.9 → 4.0.0-beta.1
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/README.md +4 -1
- package/dist/dist.min.js +1449 -404
- package/dist/es5/hex-wkb-loader.js +64 -0
- package/dist/es5/hex-wkb-loader.js.map +1 -0
- package/dist/es5/index.js +76 -1
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/lib/encode-twkb.js +269 -0
- package/dist/es5/lib/encode-twkb.js.map +1 -0
- package/dist/es5/lib/encode-wkb.js +12 -10
- package/dist/es5/lib/encode-wkb.js.map +1 -1
- package/dist/es5/lib/encode-wkt-crs.js +32 -0
- package/dist/es5/lib/encode-wkt-crs.js.map +1 -0
- package/dist/es5/lib/encode-wkt.js +1 -1
- package/dist/es5/lib/encode-wkt.js.map +1 -1
- package/dist/es5/lib/parse-hex-wkb.js +2 -0
- package/dist/es5/lib/parse-hex-wkb.js.map +1 -0
- package/dist/es5/lib/parse-twkb.js +263 -0
- package/dist/es5/lib/parse-twkb.js.map +1 -0
- package/dist/es5/lib/parse-wkb-header.js +114 -0
- package/dist/es5/lib/parse-wkb-header.js.map +1 -0
- package/dist/es5/lib/parse-wkb.js +59 -52
- package/dist/es5/lib/parse-wkb.js.map +1 -1
- package/dist/es5/lib/parse-wkt-crs.js +106 -0
- package/dist/es5/lib/parse-wkt-crs.js.map +1 -0
- package/dist/es5/lib/parse-wkt.js +210 -153
- package/dist/es5/lib/parse-wkt.js.map +1 -1
- package/dist/es5/lib/utils/base64-encoder.js +26 -0
- package/dist/es5/lib/utils/base64-encoder.js.map +1 -0
- package/dist/es5/lib/utils/binary-reader.js +98 -0
- package/dist/es5/lib/utils/binary-reader.js.map +1 -0
- package/dist/es5/lib/utils/binary-writer.js +2 -2
- package/dist/es5/lib/utils/binary-writer.js.map +1 -1
- package/dist/es5/lib/utils/hex-encoder.js +63 -0
- package/dist/es5/lib/utils/hex-encoder.js.map +1 -0
- package/dist/es5/lib/utils/hex-transcoder.js +41 -0
- package/dist/es5/lib/utils/hex-transcoder.js.map +1 -0
- package/dist/es5/lib/utils/version.js +1 -1
- package/dist/es5/lib/utils/version.js.map +1 -1
- package/dist/es5/twkb-loader.js +53 -0
- package/dist/es5/twkb-loader.js.map +1 -0
- package/dist/es5/twkb-writer.js +40 -0
- package/dist/es5/twkb-writer.js.map +1 -0
- package/dist/es5/wkb-loader.js +9 -9
- package/dist/es5/wkb-loader.js.map +1 -1
- package/dist/es5/wkb-writer.js +2 -3
- package/dist/es5/wkb-writer.js.map +1 -1
- package/dist/es5/wkt-crs-loader.js +47 -0
- package/dist/es5/wkt-crs-loader.js.map +1 -0
- package/dist/es5/wkt-crs-writer.js +49 -0
- package/dist/es5/wkt-crs-writer.js.map +1 -0
- package/dist/es5/wkt-loader.js +10 -6
- package/dist/es5/wkt-loader.js.map +1 -1
- package/dist/es5/wkt-writer.js +2 -3
- 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/hex-wkb-loader.js +37 -0
- package/dist/esm/hex-wkb-loader.js.map +1 -0
- package/dist/esm/index.js +10 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/encode-twkb.js +180 -0
- package/dist/esm/lib/encode-twkb.js.map +1 -0
- package/dist/esm/lib/encode-wkb.js +4 -4
- package/dist/esm/lib/encode-wkb.js.map +1 -1
- package/dist/esm/lib/encode-wkt-crs.js +21 -0
- package/dist/esm/lib/encode-wkt-crs.js.map +1 -0
- package/dist/esm/lib/encode-wkt.js +1 -1
- package/dist/esm/lib/encode-wkt.js.map +1 -1
- package/dist/esm/lib/parse-hex-wkb.js +2 -0
- package/dist/esm/lib/parse-hex-wkb.js.map +1 -0
- package/dist/esm/lib/parse-twkb.js +256 -0
- package/dist/esm/lib/parse-twkb.js.map +1 -0
- package/dist/esm/lib/parse-wkb-header.js +105 -0
- package/dist/esm/lib/parse-wkb-header.js.map +1 -0
- package/dist/esm/lib/parse-wkb.js +59 -51
- package/dist/esm/lib/parse-wkb.js.map +1 -1
- package/dist/esm/lib/parse-wkt-crs.js +96 -0
- package/dist/esm/lib/parse-wkt-crs.js.map +1 -0
- package/dist/esm/lib/parse-wkt.js +204 -152
- package/dist/esm/lib/parse-wkt.js.map +1 -1
- package/dist/esm/lib/utils/base64-encoder.js +7 -0
- package/dist/esm/lib/utils/base64-encoder.js.map +1 -0
- package/dist/esm/lib/utils/binary-reader.js +67 -0
- package/dist/esm/lib/utils/binary-reader.js.map +1 -0
- package/dist/esm/lib/utils/binary-writer.js +1 -1
- package/dist/esm/lib/utils/binary-writer.js.map +1 -1
- package/dist/esm/lib/utils/hex-encoder.js +40 -0
- package/dist/esm/lib/utils/hex-encoder.js.map +1 -0
- package/dist/esm/lib/utils/hex-transcoder.js +34 -0
- package/dist/esm/lib/utils/hex-transcoder.js.map +1 -0
- package/dist/esm/lib/utils/version.js +1 -1
- package/dist/esm/lib/utils/version.js.map +1 -1
- package/dist/esm/twkb-loader.js +24 -0
- package/dist/esm/twkb-loader.js.map +1 -0
- package/dist/esm/twkb-writer.js +14 -0
- package/dist/esm/twkb-writer.js.map +1 -0
- package/dist/esm/wkb-loader.js +6 -4
- package/dist/esm/wkb-loader.js.map +1 -1
- package/dist/esm/wkb-writer.js +1 -1
- package/dist/esm/wkb-writer.js.map +1 -1
- package/dist/esm/wkt-crs-loader.js +19 -0
- package/dist/esm/wkt-crs-loader.js.map +1 -0
- package/dist/esm/wkt-crs-writer.js +19 -0
- package/dist/esm/wkt-crs-writer.js.map +1 -0
- package/dist/esm/wkt-loader.js +8 -3
- package/dist/esm/wkt-loader.js.map +1 -1
- package/dist/esm/wkt-writer.js +2 -2
- package/dist/esm/wkt-writer.js.map +1 -1
- package/dist/esm/workers/wkb-worker.js.map +1 -1
- package/dist/esm/workers/wkt-worker.js.map +1 -1
- package/dist/src/bundle.d.ts.map +1 -0
- package/dist/src/hex-wkb-loader.d.ts +17 -0
- package/dist/src/hex-wkb-loader.d.ts.map +1 -0
- package/dist/src/index.d.ts +15 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/lib/encode-twkb.d.ts +6 -0
- package/dist/src/lib/encode-twkb.d.ts.map +1 -0
- package/dist/{lib → src/lib}/encode-wkb.d.ts +16 -3
- package/dist/src/lib/encode-wkb.d.ts.map +1 -0
- package/dist/src/lib/encode-wkt-crs.d.ts +10 -0
- package/dist/src/lib/encode-wkt-crs.d.ts.map +1 -0
- package/dist/{lib → src/lib}/encode-wkt.d.ts +1 -1
- package/dist/src/lib/encode-wkt.d.ts.map +1 -0
- package/dist/src/lib/parse-hex-wkb.d.ts +1 -0
- package/dist/src/lib/parse-hex-wkb.d.ts.map +1 -0
- package/dist/src/lib/parse-twkb.d.ts +9 -0
- package/dist/src/lib/parse-twkb.d.ts.map +1 -0
- package/dist/src/lib/parse-wkb-header.d.ts +39 -0
- package/dist/src/lib/parse-wkb-header.d.ts.map +1 -0
- package/dist/src/lib/parse-wkb.d.ts +5 -0
- package/dist/src/lib/parse-wkb.d.ts.map +1 -0
- package/dist/src/lib/parse-wkt-crs.d.ts +15 -0
- package/dist/src/lib/parse-wkt-crs.d.ts.map +1 -0
- package/dist/src/lib/parse-wkt.d.ts +30 -0
- package/dist/src/lib/parse-wkt.d.ts.map +1 -0
- package/dist/src/lib/utils/base64-encoder.d.ts +5 -0
- package/dist/src/lib/utils/base64-encoder.d.ts.map +1 -0
- package/dist/src/lib/utils/binary-reader.d.ts +18 -0
- package/dist/src/lib/utils/binary-reader.d.ts.map +1 -0
- package/dist/{lib → src/lib}/utils/binary-writer.d.ts +1 -1
- package/dist/src/lib/utils/binary-writer.d.ts.map +1 -0
- package/dist/src/lib/utils/hex-encoder.d.ts +15 -0
- package/dist/src/lib/utils/hex-encoder.d.ts.map +1 -0
- package/dist/src/lib/utils/hex-transcoder.d.ts +15 -0
- package/dist/src/lib/utils/hex-transcoder.d.ts.map +1 -0
- package/dist/src/lib/utils/version.d.ts.map +1 -0
- package/dist/src/twkb-loader.d.ts +16 -0
- package/dist/src/twkb-loader.d.ts.map +1 -0
- package/dist/src/twkb-writer.d.ts +7 -0
- package/dist/src/twkb-writer.d.ts.map +1 -0
- package/dist/src/wkb-loader.d.ts +16 -0
- package/dist/src/wkb-loader.d.ts.map +1 -0
- package/dist/src/wkb-writer.d.ts +7 -0
- package/dist/src/wkb-writer.d.ts.map +1 -0
- package/dist/src/wkt-crs-loader.d.ts +12 -0
- package/dist/src/wkt-crs-loader.d.ts.map +1 -0
- package/dist/src/wkt-crs-writer.d.ts +13 -0
- package/dist/src/wkt-crs-writer.d.ts.map +1 -0
- package/dist/src/wkt-loader.d.ts +18 -0
- package/dist/src/wkt-loader.d.ts.map +1 -0
- package/dist/src/wkt-writer.d.ts +10 -0
- package/dist/src/wkt-writer.d.ts.map +1 -0
- package/dist/{workers → src/workers}/wkb-worker.d.ts.map +1 -1
- package/dist/{workers → src/workers}/wkt-worker.d.ts.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/wkt-worker.js +230 -186
- package/package.json +4 -4
- package/src/hex-wkb-loader.ts +61 -0
- package/src/index.ts +22 -1
- package/src/lib/encode-twkb.ts +304 -0
- package/src/lib/encode-wkb.ts +5 -5
- package/src/lib/encode-wkt-crs.ts +39 -0
- package/src/lib/encode-wkt.ts +3 -2
- package/src/lib/parse-hex-wkb.ts +0 -0
- package/src/lib/parse-twkb.ts +356 -0
- package/src/lib/parse-wkb-header.ts +172 -0
- package/src/lib/parse-wkb.ts +69 -58
- package/src/lib/parse-wkt-crs.ts +147 -0
- package/src/lib/parse-wkt.ts +275 -174
- package/src/lib/utils/base64-encoder.ts +153 -0
- package/src/lib/utils/binary-reader.ts +72 -0
- package/src/lib/utils/binary-writer.ts +1 -1
- package/src/lib/utils/hex-encoder.ts +58 -0
- package/src/lib/utils/hex-transcoder.ts +50 -0
- package/src/twkb-loader.ts +42 -0
- package/src/twkb-writer.ts +25 -0
- package/src/wkb-loader.ts +19 -8
- package/src/wkb-writer.ts +6 -4
- package/src/wkt-crs-loader.ts +33 -0
- package/src/wkt-crs-writer.ts +37 -0
- package/src/wkt-loader.ts +22 -6
- package/src/wkt-writer.ts +12 -5
- package/src/workers/wkb-worker.ts +2 -0
- package/src/workers/wkt-worker.ts +2 -0
- package/dist/bundle.d.ts.map +0 -1
- package/dist/bundle.js +0 -5
- package/dist/index.d.ts +0 -5
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -13
- package/dist/lib/encode-wkb.d.ts.map +0 -1
- package/dist/lib/encode-wkb.js +0 -295
- package/dist/lib/encode-wkt.d.ts.map +0 -1
- package/dist/lib/encode-wkt.js +0 -46
- package/dist/lib/parse-wkb.d.ts +0 -3
- package/dist/lib/parse-wkb.d.ts.map +0 -1
- package/dist/lib/parse-wkb.js +0 -236
- package/dist/lib/parse-wkt.d.ts +0 -8
- package/dist/lib/parse-wkt.d.ts.map +0 -1
- package/dist/lib/parse-wkt.js +0 -227
- package/dist/lib/utils/binary-writer.d.ts.map +0 -1
- package/dist/lib/utils/binary-writer.js +0 -120
- package/dist/lib/utils/version.d.ts.map +0 -1
- package/dist/lib/utils/version.js +0 -7
- package/dist/wkb-loader.d.ts +0 -39
- package/dist/wkb-loader.d.ts.map +0 -1
- package/dist/wkb-loader.js +0 -34
- package/dist/wkb-writer.d.ts +0 -6
- package/dist/wkb-writer.d.ts.map +0 -1
- package/dist/wkb-writer.js +0 -26
- package/dist/wkt-loader.d.ts +0 -10
- package/dist/wkt-loader.d.ts.map +0 -1
- package/dist/wkt-loader.js +0 -33
- package/dist/wkt-writer.d.ts +0 -6
- package/dist/wkt-writer.d.ts.map +0 -1
- package/dist/wkt-writer.js +0 -23
- package/dist/workers/wkb-worker.js +0 -5
- package/dist/workers/wkt-worker.js +0 -5
- /package/dist/{bundle.d.ts → src/bundle.d.ts} +0 -0
- /package/dist/{lib → src/lib}/utils/version.d.ts +0 -0
- /package/dist/{workers → src/workers}/wkb-worker.d.ts +0 -0
- /package/dist/{workers → src/workers}/wkt-worker.d.ts +0 -0
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/** A DataView that tracks byte offset when reading. */
|
|
2
|
+
export class BinaryReader {
|
|
3
|
+
arrayBuffer: ArrayBuffer;
|
|
4
|
+
dataView: DataView;
|
|
5
|
+
byteOffset: number;
|
|
6
|
+
littleEndian: boolean;
|
|
7
|
+
|
|
8
|
+
constructor(arrayBuffer: ArrayBuffer, isBigEndian: boolean = false) {
|
|
9
|
+
this.arrayBuffer = arrayBuffer;
|
|
10
|
+
this.dataView = new DataView(arrayBuffer);
|
|
11
|
+
this.byteOffset = 0;
|
|
12
|
+
this.littleEndian = !isBigEndian;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
readUInt8() {
|
|
16
|
+
const value = this.dataView.getUint8(this.byteOffset);
|
|
17
|
+
this.byteOffset += 1;
|
|
18
|
+
return value;
|
|
19
|
+
}
|
|
20
|
+
readUInt16() {
|
|
21
|
+
const value = this.dataView.getUint16(this.byteOffset, this.littleEndian);
|
|
22
|
+
this.byteOffset += 2;
|
|
23
|
+
return value;
|
|
24
|
+
}
|
|
25
|
+
readUInt32() {
|
|
26
|
+
const value = this.dataView.getUint32(this.byteOffset, this.littleEndian);
|
|
27
|
+
this.byteOffset += 4;
|
|
28
|
+
return value;
|
|
29
|
+
}
|
|
30
|
+
readInt8() {
|
|
31
|
+
const value = this.dataView.getInt8(this.byteOffset);
|
|
32
|
+
this.byteOffset += 1;
|
|
33
|
+
return value;
|
|
34
|
+
}
|
|
35
|
+
readInt16() {
|
|
36
|
+
const value = this.dataView.getInt16(this.byteOffset, this.littleEndian);
|
|
37
|
+
this.byteOffset += 2;
|
|
38
|
+
return value;
|
|
39
|
+
}
|
|
40
|
+
readInt32() {
|
|
41
|
+
const value = this.dataView.getInt32(this.byteOffset, this.littleEndian);
|
|
42
|
+
this.byteOffset += 4;
|
|
43
|
+
return value;
|
|
44
|
+
}
|
|
45
|
+
readFloat() {
|
|
46
|
+
const value = this.dataView.getFloat32(this.byteOffset, this.littleEndian);
|
|
47
|
+
this.byteOffset += 4;
|
|
48
|
+
return value;
|
|
49
|
+
}
|
|
50
|
+
readDouble() {
|
|
51
|
+
const value = this.dataView.getFloat64(this.byteOffset, this.littleEndian);
|
|
52
|
+
this.byteOffset += 8;
|
|
53
|
+
return value;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
readVarInt() {
|
|
57
|
+
let result = 0;
|
|
58
|
+
let bytesRead = 0;
|
|
59
|
+
|
|
60
|
+
let nextByte;
|
|
61
|
+
do {
|
|
62
|
+
// TODO - this needs to be accessed via data view?
|
|
63
|
+
nextByte = this.dataView.getUint8(this.byteOffset + bytesRead);
|
|
64
|
+
result += (nextByte & 0x7f) << (7 * bytesRead);
|
|
65
|
+
bytesRead++;
|
|
66
|
+
} while (nextByte >= 0x80);
|
|
67
|
+
|
|
68
|
+
this.byteOffset += bytesRead;
|
|
69
|
+
|
|
70
|
+
return result;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
// loaders.gl, MIT license
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Simple helper to decode and encode "hex encoded" binary buffers
|
|
5
|
+
* without first converting to string.
|
|
6
|
+
*/
|
|
7
|
+
export class HexEncoder {
|
|
8
|
+
/** Get length in bytes required to store encoded data */
|
|
9
|
+
getEncodedLength(array: Uint8Array): number {
|
|
10
|
+
return array.byteLength * 2;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/** Get length in bytes required to store decoded data */
|
|
14
|
+
getDecodedLength(array: Uint8Array): number {
|
|
15
|
+
return Math.ceil(array.byteLength / 2);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/** Decode hexadecimal */
|
|
19
|
+
decode(array: Uint8Array, result: Uint8Array): Uint8Array {
|
|
20
|
+
for (let i = 0; i < array.byteLength / 2; ++i) {
|
|
21
|
+
const halfByte1 = hexDecode(array[i]);
|
|
22
|
+
const halfByte2 = hexDecode(array[i + 1]);
|
|
23
|
+
result[i] = halfByte1 * 16 + halfByte2;
|
|
24
|
+
}
|
|
25
|
+
// Check if final half byte (is that legal?)
|
|
26
|
+
// if (array.byteLength % 2) {
|
|
27
|
+
// const halfByte1 = hexDecode(array[i]);
|
|
28
|
+
// }
|
|
29
|
+
return result;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/** Encode hexadecimal */
|
|
33
|
+
encode(array: Uint8Array, result: Uint8Array): Uint8Array {
|
|
34
|
+
for (let i = 0; i < array.byteLength; ++i) {
|
|
35
|
+
const byte = array[i];
|
|
36
|
+
result[i * 2] = hexEncode(byte & 0x0f);
|
|
37
|
+
result[i * 2 + 1] = hexEncode(byte & 0xf0);
|
|
38
|
+
}
|
|
39
|
+
return result;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
function hexEncode(value: number): number {
|
|
44
|
+
if (value < 10) {
|
|
45
|
+
return value + 48; // ASCII of 0
|
|
46
|
+
}
|
|
47
|
+
return value - 10 + 65; // ASCII of capital A
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
function hexDecode(value: number): number {
|
|
51
|
+
if (value >= 65) {
|
|
52
|
+
return value - 65 + 10; // ASCII of A
|
|
53
|
+
}
|
|
54
|
+
if (value >= 97) {
|
|
55
|
+
return value - 97 + 10; // ASCII of a
|
|
56
|
+
}
|
|
57
|
+
return value - 48; // ASCII of 0
|
|
58
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
// Forked from https://github.com/jessetane/hex-transcoder under MIT license
|
|
2
|
+
|
|
3
|
+
const alphabet = '0123456789abcdef';
|
|
4
|
+
const encodeLookup: string[] = [];
|
|
5
|
+
const decodeLookup: number[] = [];
|
|
6
|
+
|
|
7
|
+
for (let i = 0; i < 256; i++) {
|
|
8
|
+
encodeLookup[i] = alphabet[(i >> 4) & 0xf] + alphabet[i & 0xf];
|
|
9
|
+
if (i < 16) {
|
|
10
|
+
if (i < 10) {
|
|
11
|
+
decodeLookup[0x30 + i] = i;
|
|
12
|
+
} else {
|
|
13
|
+
decodeLookup[0x61 - 10 + i] = i;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Encode a Uint8Array to a hex string
|
|
20
|
+
*
|
|
21
|
+
* @param array Bytes to encode to string
|
|
22
|
+
* @return hex string
|
|
23
|
+
*/
|
|
24
|
+
export function encodeHex(array: Uint8Array): string {
|
|
25
|
+
const length = array.length;
|
|
26
|
+
let string = '';
|
|
27
|
+
let i = 0;
|
|
28
|
+
while (i < length) {
|
|
29
|
+
string += encodeLookup[array[i++]];
|
|
30
|
+
}
|
|
31
|
+
return string;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Decodes a hex string to a Uint8Array
|
|
36
|
+
*
|
|
37
|
+
* @param string hex string to decode to Uint8Array
|
|
38
|
+
* @return Uint8Array
|
|
39
|
+
*/
|
|
40
|
+
export function decodeHex(string: string): Uint8Array {
|
|
41
|
+
const sizeof = string.length >> 1;
|
|
42
|
+
const length = sizeof << 1;
|
|
43
|
+
const array = new Uint8Array(sizeof);
|
|
44
|
+
let n = 0;
|
|
45
|
+
let i = 0;
|
|
46
|
+
while (i < length) {
|
|
47
|
+
array[n++] = (decodeLookup[string.charCodeAt(i++)] << 4) | decodeLookup[string.charCodeAt(i++)];
|
|
48
|
+
}
|
|
49
|
+
return array;
|
|
50
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
// loaders.gl, MIT license
|
|
2
|
+
|
|
3
|
+
import type {Loader, LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils';
|
|
4
|
+
import {BinaryGeometry, Geometry} from '@loaders.gl/schema';
|
|
5
|
+
import {VERSION} from './lib/utils/version';
|
|
6
|
+
import {parseTWKBGeometry, isTWKB} from './lib/parse-twkb';
|
|
7
|
+
|
|
8
|
+
export type WKBLoaderOptions = LoaderOptions & {
|
|
9
|
+
wkb?: {
|
|
10
|
+
shape: 'binary-geometry' | 'geometry';
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Worker loader for WKB (Well-Known Binary)
|
|
16
|
+
*/
|
|
17
|
+
export const TWKBWorkerLoader: Loader<Geometry, never, WKBLoaderOptions> = {
|
|
18
|
+
name: 'TWKB (Tiny Well-Known Binary)',
|
|
19
|
+
id: 'twkb',
|
|
20
|
+
module: 'wkt',
|
|
21
|
+
version: VERSION,
|
|
22
|
+
worker: true,
|
|
23
|
+
category: 'geometry',
|
|
24
|
+
extensions: ['twkb'],
|
|
25
|
+
mimeTypes: [],
|
|
26
|
+
// TODO can we define static, serializable tests, eg. some binary strings?
|
|
27
|
+
tests: [isTWKB],
|
|
28
|
+
options: {
|
|
29
|
+
wkb: {
|
|
30
|
+
shape: 'binary-geometry'
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Loader for WKB (Well-Known Binary)
|
|
37
|
+
*/
|
|
38
|
+
export const TWKBLoader: LoaderWithParser<BinaryGeometry | Geometry, never, WKBLoaderOptions> = {
|
|
39
|
+
...TWKBWorkerLoader,
|
|
40
|
+
parse: async (arrayBuffer: ArrayBuffer) => parseTWKBGeometry(arrayBuffer),
|
|
41
|
+
parseSync: parseTWKBGeometry
|
|
42
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// loaders.gl, MIT license
|
|
2
|
+
|
|
3
|
+
import type {Writer, WriterOptions} from '@loaders.gl/loader-utils';
|
|
4
|
+
import {VERSION} from './lib/utils/version';
|
|
5
|
+
import {encodeTWKB} from './lib/encode-twkb';
|
|
6
|
+
import {BinaryGeometry} from '@loaders.gl/schema';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* WKB exporter
|
|
10
|
+
*/
|
|
11
|
+
export const TWKBWriter: Writer<BinaryGeometry, never, WriterOptions> = {
|
|
12
|
+
name: 'TWKB (Tiny Well Known Binary)',
|
|
13
|
+
id: 'twkb',
|
|
14
|
+
module: 'wkt',
|
|
15
|
+
version: VERSION,
|
|
16
|
+
extensions: ['twkb'],
|
|
17
|
+
// @ts-expect-error not implemented yet
|
|
18
|
+
encodeSync: async (data: BinaryGeometry, options) => encodeTWKB,
|
|
19
|
+
options: {
|
|
20
|
+
twkb: {
|
|
21
|
+
// hasZ: false,
|
|
22
|
+
// hasM: false
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
};
|
package/src/wkb-loader.ts
CHANGED
|
@@ -1,11 +1,21 @@
|
|
|
1
|
-
|
|
1
|
+
// loaders.gl, MIT license
|
|
2
|
+
|
|
3
|
+
import type {Loader, LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils';
|
|
4
|
+
import {BinaryGeometry, Geometry} from '@loaders.gl/schema';
|
|
2
5
|
import {VERSION} from './lib/utils/version';
|
|
3
|
-
import parseWKB from './lib/parse-wkb';
|
|
6
|
+
import {parseWKB} from './lib/parse-wkb';
|
|
7
|
+
import {isWKB} from './lib/parse-wkb-header';
|
|
8
|
+
|
|
9
|
+
export type WKBLoaderOptions = LoaderOptions & {
|
|
10
|
+
wkb?: {
|
|
11
|
+
shape: 'binary-geometry' | 'geometry';
|
|
12
|
+
};
|
|
13
|
+
};
|
|
4
14
|
|
|
5
15
|
/**
|
|
6
16
|
* Worker loader for WKB (Well-Known Binary)
|
|
7
17
|
*/
|
|
8
|
-
export const WKBWorkerLoader = {
|
|
18
|
+
export const WKBWorkerLoader: Loader<BinaryGeometry | Geometry, never, WKBLoaderOptions> = {
|
|
9
19
|
name: 'WKB',
|
|
10
20
|
id: 'wkb',
|
|
11
21
|
module: 'wkt',
|
|
@@ -14,19 +24,20 @@ export const WKBWorkerLoader = {
|
|
|
14
24
|
category: 'geometry',
|
|
15
25
|
extensions: ['wkb'],
|
|
16
26
|
mimeTypes: [],
|
|
27
|
+
// TODO can we define static, serializable tests, eg. some binary strings?
|
|
28
|
+
tests: [isWKB],
|
|
17
29
|
options: {
|
|
18
|
-
wkb: {
|
|
30
|
+
wkb: {
|
|
31
|
+
shape: 'binary-geometry'
|
|
32
|
+
}
|
|
19
33
|
}
|
|
20
34
|
};
|
|
21
35
|
|
|
22
36
|
/**
|
|
23
37
|
* Loader for WKB (Well-Known Binary)
|
|
24
38
|
*/
|
|
25
|
-
export const WKBLoader = {
|
|
39
|
+
export const WKBLoader: LoaderWithParser<BinaryGeometry | Geometry, never, WKBLoaderOptions> = {
|
|
26
40
|
...WKBWorkerLoader,
|
|
27
41
|
parse: async (arrayBuffer: ArrayBuffer) => parseWKB(arrayBuffer),
|
|
28
42
|
parseSync: parseWKB
|
|
29
43
|
};
|
|
30
|
-
|
|
31
|
-
export const _typecheckWKBWorkerLoader: Loader = WKBWorkerLoader;
|
|
32
|
-
export const _typecheckWKBLoader: LoaderWithParser = WKBLoader;
|
package/src/wkb-writer.ts
CHANGED
|
@@ -1,17 +1,19 @@
|
|
|
1
|
-
|
|
1
|
+
// loaders.gl, MIT license
|
|
2
|
+
|
|
3
|
+
import type {Writer, WriterOptions} from '@loaders.gl/loader-utils';
|
|
2
4
|
import {VERSION} from './lib/utils/version';
|
|
3
|
-
import encodeWKB from './lib/encode-wkb';
|
|
5
|
+
import {encodeWKB} from './lib/encode-wkb';
|
|
6
|
+
import type {Geometry, Feature} from '@loaders.gl/schema';
|
|
4
7
|
|
|
5
8
|
/**
|
|
6
9
|
* WKB exporter
|
|
7
10
|
*/
|
|
8
|
-
export const WKBWriter: Writer = {
|
|
11
|
+
export const WKBWriter: Writer<Geometry | Feature, never, WriterOptions> = {
|
|
9
12
|
name: 'WKB (Well Known Binary)',
|
|
10
13
|
id: 'wkb',
|
|
11
14
|
module: 'wkt',
|
|
12
15
|
version: VERSION,
|
|
13
16
|
extensions: ['wkb'],
|
|
14
|
-
// @ts-ignore
|
|
15
17
|
encodeSync: encodeWKB,
|
|
16
18
|
options: {
|
|
17
19
|
wkb: {
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
// loaders.gl, MIT license
|
|
2
|
+
|
|
3
|
+
import type {LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils';
|
|
4
|
+
import {VERSION} from './lib/utils/version';
|
|
5
|
+
import type {ParseWKTCRSOptions, WKTCRS} from './lib/parse-wkt-crs';
|
|
6
|
+
import {parseWKTCRS} from './lib/parse-wkt-crs';
|
|
7
|
+
|
|
8
|
+
export type WKTCRSLoaderOptions = LoaderOptions & {
|
|
9
|
+
'wkt-crs'?: ParseWKTCRSOptions;
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Well-Known text CRS loader
|
|
14
|
+
* @see OGC Standard: https://www.ogc.org/standards/wkt-crs
|
|
15
|
+
* @see Wikipedia Page: https://en.wikipedia.org/wiki/Well-known_text_representation_of_coordinate_reference_systems
|
|
16
|
+
*/
|
|
17
|
+
export const WKTCRSLoader: LoaderWithParser<WKTCRS, never, WKTCRSLoaderOptions> = {
|
|
18
|
+
name: 'WKT CRS (Well-Known Text Coordinate Reference System)',
|
|
19
|
+
id: 'wkt-crs',
|
|
20
|
+
module: 'wkt-crs',
|
|
21
|
+
version: VERSION,
|
|
22
|
+
worker: true,
|
|
23
|
+
extensions: [],
|
|
24
|
+
mimeTypes: ['text/plain'],
|
|
25
|
+
category: 'json',
|
|
26
|
+
text: true,
|
|
27
|
+
options: {
|
|
28
|
+
'wkt-crs': {}
|
|
29
|
+
},
|
|
30
|
+
parse: async (arrayBuffer, options) =>
|
|
31
|
+
parseWKTCRS(new TextDecoder().decode(arrayBuffer), options?.['wkt-crs']),
|
|
32
|
+
parseTextSync: (string, options) => parseWKTCRS(string, options?.['wkt-crs'])
|
|
33
|
+
};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// loaders.gl, MIT license
|
|
2
|
+
|
|
3
|
+
import type {Writer, WriterOptions} from '@loaders.gl/loader-utils';
|
|
4
|
+
import {VERSION} from './lib/utils/version';
|
|
5
|
+
|
|
6
|
+
import type {WKTCRS} from './lib/parse-wkt-crs';
|
|
7
|
+
import type {EncodeWKTCRSOptions} from './lib/encode-wkt-crs';
|
|
8
|
+
import {encodeWKTCRS} from './lib/encode-wkt-crs';
|
|
9
|
+
|
|
10
|
+
export type WKTCRSWriterOptions = WriterOptions & {
|
|
11
|
+
'wkt-crs'?: EncodeWKTCRSOptions;
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Well-Known text CRS loader
|
|
16
|
+
* @see OGC Standard: https://www.ogc.org/standards/wkt-crs
|
|
17
|
+
* @see Wikipedia Page: https://en.wikipedia.org/wiki/Well-known_text_representation_of_coordinate_reference_systems
|
|
18
|
+
*/
|
|
19
|
+
export const WKTCRSWriter: Writer<WKTCRS, never, WKTCRSWriterOptions> = {
|
|
20
|
+
name: 'WKT CRS (Well-Known Text Coordinate Reference System)',
|
|
21
|
+
id: 'wkt-crs',
|
|
22
|
+
module: 'wkt-crs',
|
|
23
|
+
version: VERSION,
|
|
24
|
+
worker: true,
|
|
25
|
+
extensions: [],
|
|
26
|
+
mimeTypes: ['text/plain'],
|
|
27
|
+
// category: 'json',
|
|
28
|
+
text: true,
|
|
29
|
+
options: {
|
|
30
|
+
'wkt-crs': {}
|
|
31
|
+
},
|
|
32
|
+
encode: async (wktcrs, options) =>
|
|
33
|
+
new TextEncoder().encode(encodeWKTCRS(wktcrs, options?.['wkt-crs'])),
|
|
34
|
+
encodeSync: (wktcrs, options) =>
|
|
35
|
+
new TextEncoder().encode(encodeWKTCRS(wktcrs, options?.['wkt-crs'])),
|
|
36
|
+
encodeTextSync: (wktcrs, options) => encodeWKTCRS(wktcrs, options?.['wkt-crs'])
|
|
37
|
+
};
|
package/src/wkt-loader.ts
CHANGED
|
@@ -1,11 +1,23 @@
|
|
|
1
|
-
|
|
1
|
+
// loaders.gl, MIT license
|
|
2
|
+
|
|
3
|
+
import type {Loader, LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils';
|
|
2
4
|
import {VERSION} from './lib/utils/version';
|
|
3
|
-
import parseWKT from './lib/parse-wkt';
|
|
5
|
+
import {parseWKT} from './lib/parse-wkt';
|
|
6
|
+
import {Geometry} from '@loaders.gl/schema';
|
|
7
|
+
import {isWKT, WKT_MAGIC_STRINGS} from './lib/parse-wkt';
|
|
8
|
+
|
|
9
|
+
export type WKTLoaderOptions = LoaderOptions & {
|
|
10
|
+
/** Options for the WKT parser */
|
|
11
|
+
wkt?: {
|
|
12
|
+
/** Whether to add any CRS, if found, as undocumented CRS property on the return geometry */
|
|
13
|
+
crs?: boolean;
|
|
14
|
+
};
|
|
15
|
+
};
|
|
4
16
|
|
|
5
17
|
/**
|
|
6
18
|
* Well-Known text loader
|
|
7
19
|
*/
|
|
8
|
-
export const WKTWorkerLoader: Loader = {
|
|
20
|
+
export const WKTWorkerLoader: Loader<Geometry, never, WKTLoaderOptions> = {
|
|
9
21
|
name: 'WKT (Well-Known Text)',
|
|
10
22
|
id: 'wkt',
|
|
11
23
|
module: 'wkt',
|
|
@@ -15,16 +27,20 @@ export const WKTWorkerLoader: Loader = {
|
|
|
15
27
|
mimeTypes: ['text/plain'],
|
|
16
28
|
category: 'geometry',
|
|
17
29
|
text: true,
|
|
30
|
+
tests: WKT_MAGIC_STRINGS,
|
|
31
|
+
testText: isWKT,
|
|
18
32
|
options: {
|
|
19
|
-
wkt: {
|
|
33
|
+
wkt: {
|
|
34
|
+
crs: true
|
|
35
|
+
}
|
|
20
36
|
}
|
|
21
37
|
};
|
|
22
38
|
|
|
23
39
|
/**
|
|
24
40
|
* Well-Known text loader
|
|
25
41
|
*/
|
|
26
|
-
export const WKTLoader: LoaderWithParser = {
|
|
42
|
+
export const WKTLoader: LoaderWithParser<Geometry, never, WKTLoaderOptions> = {
|
|
27
43
|
...WKTWorkerLoader,
|
|
28
|
-
parse: async (arrayBuffer) => parseWKT(new TextDecoder().decode(arrayBuffer)),
|
|
44
|
+
parse: async (arrayBuffer, options) => parseWKT(new TextDecoder().decode(arrayBuffer), options),
|
|
29
45
|
parseTextSync: parseWKT
|
|
30
46
|
};
|
package/src/wkt-writer.ts
CHANGED
|
@@ -1,18 +1,25 @@
|
|
|
1
|
-
|
|
1
|
+
// loaders.gl, MIT license
|
|
2
|
+
|
|
3
|
+
import type {Writer, WriterOptions} from '@loaders.gl/loader-utils';
|
|
2
4
|
import {VERSION} from './lib/utils/version';
|
|
3
|
-
import encodeWKT from './lib/encode-wkt';
|
|
5
|
+
import {encodeWKT} from './lib/encode-wkt';
|
|
6
|
+
import {Geometry} from '@loaders.gl/schema';
|
|
7
|
+
|
|
8
|
+
export type WKTWriterOptions = WriterOptions & {
|
|
9
|
+
wkt?: {};
|
|
10
|
+
};
|
|
4
11
|
|
|
5
12
|
/**
|
|
6
13
|
* WKT exporter
|
|
7
14
|
*/
|
|
8
|
-
export const WKTWriter: Writer = {
|
|
15
|
+
export const WKTWriter: Writer<Geometry, never, WKTWriterOptions> = {
|
|
9
16
|
name: 'WKT (Well Known Text)',
|
|
10
17
|
id: 'wkt',
|
|
11
18
|
module: 'wkt',
|
|
12
19
|
version: VERSION,
|
|
13
20
|
extensions: ['wkt'],
|
|
14
|
-
// @ts-
|
|
15
|
-
|
|
21
|
+
// @ts-expect-error
|
|
22
|
+
encodeSync: encodeWKT,
|
|
16
23
|
options: {
|
|
17
24
|
wkt: {}
|
|
18
25
|
}
|
package/dist/bundle.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bundle.d.ts","sourceRoot":"","sources":["../src/bundle.ts"],"names":[],"mappings":"AACA,QAAA,MAAM,aAAa,KAAqB,CAAC"}
|
package/dist/bundle.js
DELETED
package/dist/index.d.ts
DELETED
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,eAAe,EAAC,MAAM,cAAc,CAAC;AACxD,OAAO,EAAC,SAAS,EAAE,eAAe,EAAC,MAAM,cAAc,CAAC;AACxD,OAAO,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AACvC,OAAO,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC"}
|
package/dist/index.js
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.WKBWriter = exports.WKTWriter = exports.WKTWorkerLoader = exports.WKTLoader = exports.WKBWorkerLoader = exports.WKBLoader = void 0;
|
|
4
|
-
var wkb_loader_1 = require("./wkb-loader");
|
|
5
|
-
Object.defineProperty(exports, "WKBLoader", { enumerable: true, get: function () { return wkb_loader_1.WKBLoader; } });
|
|
6
|
-
Object.defineProperty(exports, "WKBWorkerLoader", { enumerable: true, get: function () { return wkb_loader_1.WKBWorkerLoader; } });
|
|
7
|
-
var wkt_loader_1 = require("./wkt-loader");
|
|
8
|
-
Object.defineProperty(exports, "WKTLoader", { enumerable: true, get: function () { return wkt_loader_1.WKTLoader; } });
|
|
9
|
-
Object.defineProperty(exports, "WKTWorkerLoader", { enumerable: true, get: function () { return wkt_loader_1.WKTWorkerLoader; } });
|
|
10
|
-
var wkt_writer_1 = require("./wkt-writer");
|
|
11
|
-
Object.defineProperty(exports, "WKTWriter", { enumerable: true, get: function () { return wkt_writer_1.WKTWriter; } });
|
|
12
|
-
var wkb_writer_1 = require("./wkb-writer");
|
|
13
|
-
Object.defineProperty(exports, "WKBWriter", { enumerable: true, get: function () { return wkb_writer_1.WKBWriter; } });
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"encode-wkb.d.ts","sourceRoot":"","sources":["../../src/lib/encode-wkb.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,OAAO,EACP,QAAQ,EAQT,MAAM,oBAAoB,CAAC;AAkB5B;;GAEG;AACH,UAAU,UAAU;IAClB,4CAA4C;IAC5C,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf,4CAA4C;IAC5C,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf,0CAA0C;IAC1C,IAAI,CAAC,EAAE,GAAG,CAAC;CACZ;AAED;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,SAAS,CAC/B,QAAQ,EAAE,QAAQ,GAAG,OAAO,EAC5B,OAAO,GAAE,UAAU,GAAG;IAAC,GAAG,EAAE,UAAU,CAAA;CAAM,GAC3C,WAAW,CA8Bb"}
|