@loaders.gl/wkt 4.2.0-alpha.4 → 4.2.0-alpha.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/dist/dist.dev.js +133 -220
  2. package/dist/dist.min.js +10 -0
  3. package/dist/hex-wkb-loader.d.ts +1 -1
  4. package/dist/hex-wkb-loader.d.ts.map +1 -1
  5. package/dist/hex-wkb-loader.js +44 -28
  6. package/dist/index.cjs +77 -58
  7. package/dist/index.cjs.map +7 -0
  8. package/dist/index.d.ts +14 -14
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +4 -1
  11. package/dist/lib/encode-twkb.js +158 -143
  12. package/dist/lib/encode-wkb.js +247 -211
  13. package/dist/lib/encode-wkt-crs.d.ts +1 -1
  14. package/dist/lib/encode-wkt-crs.d.ts.map +1 -1
  15. package/dist/lib/encode-wkt-crs.js +32 -18
  16. package/dist/lib/encode-wkt.js +35 -27
  17. package/dist/lib/parse-hex-wkb.js +1 -2
  18. package/dist/lib/parse-twkb.js +215 -218
  19. package/dist/lib/parse-wkb-header.js +124 -95
  20. package/dist/lib/parse-wkb.d.ts +1 -1
  21. package/dist/lib/parse-wkb.d.ts.map +1 -1
  22. package/dist/lib/parse-wkb.js +210 -235
  23. package/dist/lib/parse-wkt-crs.js +110 -86
  24. package/dist/lib/parse-wkt.js +251 -185
  25. package/dist/lib/utils/base64-encoder.js +151 -5
  26. package/dist/lib/utils/binary-reader.js +63 -64
  27. package/dist/lib/utils/binary-writer.js +115 -109
  28. package/dist/lib/utils/hex-encoder.js +46 -32
  29. package/dist/lib/utils/hex-transcoder.js +40 -24
  30. package/dist/lib/utils/version.js +6 -1
  31. package/dist/twkb-loader.js +26 -17
  32. package/dist/twkb-writer.js +18 -13
  33. package/dist/wkb-loader.js +26 -17
  34. package/dist/wkb-writer.js +22 -17
  35. package/dist/wkt-crs-loader.d.ts +1 -1
  36. package/dist/wkt-crs-loader.d.ts.map +1 -1
  37. package/dist/wkt-crs-loader.js +22 -15
  38. package/dist/wkt-crs-writer.d.ts +2 -2
  39. package/dist/wkt-crs-writer.d.ts.map +1 -1
  40. package/dist/wkt-crs-writer.js +23 -15
  41. package/dist/wkt-loader.js +28 -20
  42. package/dist/wkt-writer.js +19 -14
  43. package/dist/workers/wkb-worker.js +3 -1
  44. package/dist/workers/wkt-worker.js +3 -1
  45. package/package.json +10 -6
  46. package/dist/hex-wkb-loader.js.map +0 -1
  47. package/dist/index.js.map +0 -1
  48. package/dist/lib/encode-twkb.js.map +0 -1
  49. package/dist/lib/encode-wkb.js.map +0 -1
  50. package/dist/lib/encode-wkt-crs.js.map +0 -1
  51. package/dist/lib/encode-wkt.js.map +0 -1
  52. package/dist/lib/parse-hex-wkb.js.map +0 -1
  53. package/dist/lib/parse-twkb.js.map +0 -1
  54. package/dist/lib/parse-wkb-header.js.map +0 -1
  55. package/dist/lib/parse-wkb.js.map +0 -1
  56. package/dist/lib/parse-wkt-crs.js.map +0 -1
  57. package/dist/lib/parse-wkt.js.map +0 -1
  58. package/dist/lib/utils/base64-encoder.js.map +0 -1
  59. package/dist/lib/utils/binary-reader.js.map +0 -1
  60. package/dist/lib/utils/binary-writer.js.map +0 -1
  61. package/dist/lib/utils/hex-encoder.js.map +0 -1
  62. package/dist/lib/utils/hex-transcoder.js.map +0 -1
  63. package/dist/lib/utils/version.js.map +0 -1
  64. package/dist/twkb-loader.js.map +0 -1
  65. package/dist/twkb-writer.js.map +0 -1
  66. package/dist/wkb-loader.js.map +0 -1
  67. package/dist/wkb-writer.js.map +0 -1
  68. package/dist/wkt-crs-loader.js.map +0 -1
  69. package/dist/wkt-crs-writer.js.map +0 -1
  70. package/dist/wkt-loader.js.map +0 -1
  71. package/dist/wkt-writer.js.map +0 -1
  72. package/dist/workers/wkb-worker.js.map +0 -1
  73. package/dist/workers/wkt-worker.js.map +0 -1
@@ -1,34 +1,50 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ // Forked from https://github.com/jessetane/hex-transcoder under MIT license
1
5
  const alphabet = '0123456789abcdef';
2
6
  const encodeLookup = [];
3
7
  const decodeLookup = [];
4
8
  for (let i = 0; i < 256; i++) {
5
- encodeLookup[i] = alphabet[i >> 4 & 0xf] + alphabet[i & 0xf];
6
- if (i < 16) {
7
- if (i < 10) {
8
- decodeLookup[0x30 + i] = i;
9
- } else {
10
- decodeLookup[0x61 - 10 + i] = i;
9
+ encodeLookup[i] = alphabet[(i >> 4) & 0xf] + alphabet[i & 0xf];
10
+ if (i < 16) {
11
+ if (i < 10) {
12
+ decodeLookup[0x30 + i] = i;
13
+ }
14
+ else {
15
+ decodeLookup[0x61 - 10 + i] = i;
16
+ }
11
17
  }
12
- }
13
18
  }
19
+ /**
20
+ * Encode a Uint8Array to a hex string
21
+ *
22
+ * @param array Bytes to encode to string
23
+ * @return hex string
24
+ */
14
25
  export function encodeHex(array) {
15
- const length = array.length;
16
- let string = '';
17
- let i = 0;
18
- while (i < length) {
19
- string += encodeLookup[array[i++]];
20
- }
21
- return string;
26
+ const length = array.length;
27
+ let string = '';
28
+ let i = 0;
29
+ while (i < length) {
30
+ string += encodeLookup[array[i++]];
31
+ }
32
+ return string;
22
33
  }
34
+ /**
35
+ * Decodes a hex string to a Uint8Array
36
+ *
37
+ * @param string hex string to decode to Uint8Array
38
+ * @return Uint8Array
39
+ */
23
40
  export function decodeHex(string) {
24
- const sizeof = string.length >> 1;
25
- const length = sizeof << 1;
26
- const array = new Uint8Array(sizeof);
27
- let n = 0;
28
- let i = 0;
29
- while (i < length) {
30
- array[n++] = decodeLookup[string.charCodeAt(i++)] << 4 | decodeLookup[string.charCodeAt(i++)];
31
- }
32
- return array;
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;
33
50
  }
34
- //# sourceMappingURL=hex-transcoder.js.map
@@ -1,2 +1,7 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ // Version constant cannot be imported, it needs to correspond to the build version of **this** module.
5
+ // __VERSION__ is injected by babel-plugin-version-inline
6
+ // @ts-ignore TS2304: Cannot find name '__VERSION__'.
1
7
  export const VERSION = typeof "4.2.0-alpha.4" !== 'undefined' ? "4.2.0-alpha.4" : 'latest';
2
- //# sourceMappingURL=version.js.map
@@ -1,24 +1,33 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
1
4
  import { VERSION } from "./lib/utils/version.js";
2
5
  import { parseTWKBGeometry, isTWKB } from "./lib/parse-twkb.js";
6
+ /**
7
+ * Worker loader for WKB (Well-Known Binary)
8
+ */
3
9
  export const TWKBWorkerLoader = {
4
- name: 'TWKB (Tiny Well-Known Binary)',
5
- id: 'twkb',
6
- module: 'wkt',
7
- version: VERSION,
8
- worker: true,
9
- category: 'geometry',
10
- extensions: ['twkb'],
11
- mimeTypes: [],
12
- tests: [isTWKB],
13
- options: {
14
- wkb: {
15
- shape: 'binary-geometry'
10
+ name: 'TWKB (Tiny Well-Known Binary)',
11
+ id: 'twkb',
12
+ module: 'wkt',
13
+ version: VERSION,
14
+ worker: true,
15
+ category: 'geometry',
16
+ extensions: ['twkb'],
17
+ mimeTypes: [],
18
+ // TODO can we define static, serializable tests, eg. some binary strings?
19
+ tests: [isTWKB],
20
+ options: {
21
+ wkb: {
22
+ shape: 'binary-geometry' // 'geojson-geometry'
23
+ }
16
24
  }
17
- }
18
25
  };
26
+ /**
27
+ * Loader for WKB (Well-Known Binary)
28
+ */
19
29
  export const TWKBLoader = {
20
- ...TWKBWorkerLoader,
21
- parse: async arrayBuffer => parseTWKBGeometry(arrayBuffer),
22
- parseSync: parseTWKBGeometry
30
+ ...TWKBWorkerLoader,
31
+ parse: async (arrayBuffer) => parseTWKBGeometry(arrayBuffer),
32
+ parseSync: parseTWKBGeometry
23
33
  };
24
- //# sourceMappingURL=twkb-loader.js.map
@@ -1,18 +1,23 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
1
4
  import { VERSION } from "./lib/utils/version.js";
2
5
  import { encodeTWKB } from "./lib/encode-twkb.js";
6
+ /**
7
+ * WKB exporter
8
+ */
3
9
  export const TWKBWriter = {
4
- name: 'TWKB (Tiny Well Known Binary)',
5
- id: 'twkb',
6
- module: 'wkt',
7
- version: VERSION,
8
- extensions: ['twkb'],
9
- encode: async (geometry, options) => encodeTWKB(geometry, options === null || options === void 0 ? void 0 : options.twkb),
10
- encodeSync: (geometry, options) => encodeTWKB(geometry, options === null || options === void 0 ? void 0 : options.twkb),
11
- options: {
12
- twkb: {
13
- hasZ: false,
14
- hasM: false
10
+ name: 'TWKB (Tiny Well Known Binary)',
11
+ id: 'twkb',
12
+ module: 'wkt',
13
+ version: VERSION,
14
+ extensions: ['twkb'],
15
+ encode: async (geometry, options) => encodeTWKB(geometry, options?.twkb),
16
+ encodeSync: (geometry, options) => encodeTWKB(geometry, options?.twkb),
17
+ options: {
18
+ twkb: {
19
+ hasZ: false,
20
+ hasM: false
21
+ }
15
22
  }
16
- }
17
23
  };
18
- //# sourceMappingURL=twkb-writer.js.map
@@ -1,25 +1,34 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
1
4
  import { VERSION } from "./lib/utils/version.js";
2
5
  import { parseWKB } from "./lib/parse-wkb.js";
3
6
  import { isWKB } from "./lib/parse-wkb-header.js";
7
+ /**
8
+ * Worker loader for WKB (Well-Known Binary)
9
+ */
4
10
  export const WKBWorkerLoader = {
5
- name: 'WKB',
6
- id: 'wkb',
7
- module: 'wkt',
8
- version: VERSION,
9
- worker: true,
10
- category: 'geometry',
11
- extensions: ['wkb'],
12
- mimeTypes: [],
13
- tests: [isWKB],
14
- options: {
15
- wkb: {
16
- shape: 'binary-geometry'
11
+ name: 'WKB',
12
+ id: 'wkb',
13
+ module: 'wkt',
14
+ version: VERSION,
15
+ worker: true,
16
+ category: 'geometry',
17
+ extensions: ['wkb'],
18
+ mimeTypes: [],
19
+ // TODO can we define static, serializable tests, eg. some binary strings?
20
+ tests: [isWKB],
21
+ options: {
22
+ wkb: {
23
+ shape: 'binary-geometry' // 'geojson-geometry'
24
+ }
17
25
  }
18
- }
19
26
  };
27
+ /**
28
+ * Loader for WKB (Well-Known Binary)
29
+ */
20
30
  export const WKBLoader = {
21
- ...WKBWorkerLoader,
22
- parse: async arrayBuffer => parseWKB(arrayBuffer),
23
- parseSync: parseWKB
31
+ ...WKBWorkerLoader,
32
+ parse: async (arrayBuffer) => parseWKB(arrayBuffer),
33
+ parseSync: parseWKB
24
34
  };
25
- //# sourceMappingURL=wkb-loader.js.map
@@ -1,22 +1,27 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
1
4
  import { VERSION } from "./lib/utils/version.js";
2
5
  import { encodeWKB } from "./lib/encode-wkb.js";
6
+ /**
7
+ * WKB exporter
8
+ */
3
9
  export const WKBWriter = {
4
- name: 'WKB (Well Known Binary)',
5
- id: 'wkb',
6
- module: 'wkt',
7
- version: VERSION,
8
- extensions: ['wkb'],
9
- options: {
10
- wkb: {
11
- hasZ: false,
12
- hasM: false
10
+ name: 'WKB (Well Known Binary)',
11
+ id: 'wkb',
12
+ module: 'wkt',
13
+ version: VERSION,
14
+ extensions: ['wkb'],
15
+ options: {
16
+ wkb: {
17
+ hasZ: false,
18
+ hasM: false
19
+ }
20
+ },
21
+ async encode(data, options) {
22
+ return encodeWKB(data, options?.wkb);
23
+ },
24
+ encodeSync(data, options) {
25
+ return encodeWKB(data, options?.wkb);
13
26
  }
14
- },
15
- async encode(data, options) {
16
- return encodeWKB(data, options === null || options === void 0 ? void 0 : options.wkb);
17
- },
18
- encodeSync(data, options) {
19
- return encodeWKB(data, options === null || options === void 0 ? void 0 : options.wkb);
20
- }
21
27
  };
22
- //# sourceMappingURL=wkb-writer.js.map
@@ -1,5 +1,5 @@
1
1
  import type { LoaderWithParser, LoaderOptions } from '@loaders.gl/loader-utils';
2
- import type { ParseWKTCRSOptions, WKTCRS } from './lib/parse-wkt-crs';
2
+ import type { ParseWKTCRSOptions, WKTCRS } from "./lib/parse-wkt-crs.js";
3
3
  export type WKTCRSLoaderOptions = LoaderOptions & {
4
4
  'wkt-crs'?: ParseWKTCRSOptions;
5
5
  };
@@ -1 +1 @@
1
- {"version":3,"file":"wkt-crs-loader.d.ts","sourceRoot":"","sources":["../src/wkt-crs-loader.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,gBAAgB,EAAE,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAE9E,OAAO,KAAK,EAAC,kBAAkB,EAAE,MAAM,EAAC,MAAM,qBAAqB,CAAC;AAGpE,MAAM,MAAM,mBAAmB,GAAG,aAAa,GAAG;IAChD,SAAS,CAAC,EAAE,kBAAkB,CAAC;CAChC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,mBAAmB,CAgB7E,CAAC"}
1
+ {"version":3,"file":"wkt-crs-loader.d.ts","sourceRoot":"","sources":["../src/wkt-crs-loader.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,gBAAgB,EAAE,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAE9E,OAAO,KAAK,EAAC,kBAAkB,EAAE,MAAM,EAAC,+BAA4B;AAGpE,MAAM,MAAM,mBAAmB,GAAG,aAAa,GAAG;IAChD,SAAS,CAAC,EAAE,kBAAkB,CAAC;CAChC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,mBAAmB,CAgB7E,CAAC"}
@@ -1,19 +1,26 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
1
4
  import { VERSION } from "./lib/utils/version.js";
2
5
  import { parseWKTCRS } from "./lib/parse-wkt-crs.js";
6
+ /**
7
+ * Well-Known text CRS loader
8
+ * @see OGC Standard: https://www.ogc.org/standards/wkt-crs
9
+ * @see Wikipedia Page: https://en.wikipedia.org/wiki/Well-known_text_representation_of_coordinate_reference_systems
10
+ */
3
11
  export const WKTCRSLoader = {
4
- name: 'WKT CRS (Well-Known Text Coordinate Reference System)',
5
- id: 'wkt-crs',
6
- module: 'wkt-crs',
7
- version: VERSION,
8
- worker: true,
9
- extensions: [],
10
- mimeTypes: ['text/plain'],
11
- category: 'json',
12
- text: true,
13
- options: {
14
- 'wkt-crs': {}
15
- },
16
- parse: async (arrayBuffer, options) => parseWKTCRS(new TextDecoder().decode(arrayBuffer), options === null || options === void 0 ? void 0 : options['wkt-crs']),
17
- parseTextSync: (string, options) => parseWKTCRS(string, options === null || options === void 0 ? void 0 : options['wkt-crs'])
12
+ name: 'WKT CRS (Well-Known Text Coordinate Reference System)',
13
+ id: 'wkt-crs',
14
+ module: 'wkt-crs',
15
+ version: VERSION,
16
+ worker: true,
17
+ extensions: [],
18
+ mimeTypes: ['text/plain'],
19
+ category: 'json',
20
+ text: true,
21
+ options: {
22
+ 'wkt-crs': {}
23
+ },
24
+ parse: async (arrayBuffer, options) => parseWKTCRS(new TextDecoder().decode(arrayBuffer), options?.['wkt-crs']),
25
+ parseTextSync: (string, options) => parseWKTCRS(string, options?.['wkt-crs'])
18
26
  };
19
- //# sourceMappingURL=wkt-crs-loader.js.map
@@ -1,6 +1,6 @@
1
1
  import type { WriterWithEncoder, WriterOptions } from '@loaders.gl/loader-utils';
2
- import type { WKTCRS } from './lib/parse-wkt-crs';
3
- import type { EncodeWKTCRSOptions } from './lib/encode-wkt-crs';
2
+ import type { WKTCRS } from "./lib/parse-wkt-crs.js";
3
+ import type { EncodeWKTCRSOptions } from "./lib/encode-wkt-crs.js";
4
4
  export type WKTCRSWriterOptions = WriterOptions & {
5
5
  'wkt-crs'?: EncodeWKTCRSOptions;
6
6
  };
@@ -1 +1 @@
1
- {"version":3,"file":"wkt-crs-writer.d.ts","sourceRoot":"","sources":["../src/wkt-crs-writer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,iBAAiB,EAAE,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAG/E,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,sBAAsB,CAAC;AAG9D,MAAM,MAAM,mBAAmB,GAAG,aAAa,GAAG;IAChD,SAAS,CAAC,EAAE,mBAAmB,CAAC;CACjC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE,mBAAmB,CAkB9E,CAAC"}
1
+ {"version":3,"file":"wkt-crs-writer.d.ts","sourceRoot":"","sources":["../src/wkt-crs-writer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,iBAAiB,EAAE,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAG/E,OAAO,KAAK,EAAC,MAAM,EAAC,+BAA4B;AAChD,OAAO,KAAK,EAAC,mBAAmB,EAAC,gCAA6B;AAG9D,MAAM,MAAM,mBAAmB,GAAG,aAAa,GAAG;IAChD,SAAS,CAAC,EAAE,mBAAmB,CAAC;CACjC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE,mBAAmB,CAkB9E,CAAC"}
@@ -1,19 +1,27 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
1
4
  import { VERSION } from "./lib/utils/version.js";
2
5
  import { encodeWKTCRS } from "./lib/encode-wkt-crs.js";
6
+ /**
7
+ * Well-Known text CRS loader
8
+ * @see OGC Standard: https://www.ogc.org/standards/wkt-crs
9
+ * @see Wikipedia Page: https://en.wikipedia.org/wiki/Well-known_text_representation_of_coordinate_reference_systems
10
+ */
3
11
  export const WKTCRSWriter = {
4
- name: 'WKT CRS (Well-Known Text Coordinate Reference System)',
5
- id: 'wkt-crs',
6
- module: 'wkt-crs',
7
- version: VERSION,
8
- worker: true,
9
- extensions: [],
10
- mimeTypes: ['text/plain'],
11
- text: true,
12
- options: {
13
- 'wkt-crs': {}
14
- },
15
- encode: async (wktcrs, options) => new TextEncoder().encode(encodeWKTCRS(wktcrs, options === null || options === void 0 ? void 0 : options['wkt-crs'])),
16
- encodeSync: (wktcrs, options) => new TextEncoder().encode(encodeWKTCRS(wktcrs, options === null || options === void 0 ? void 0 : options['wkt-crs'])),
17
- encodeTextSync: (wktcrs, options) => encodeWKTCRS(wktcrs, options === null || options === void 0 ? void 0 : options['wkt-crs'])
12
+ name: 'WKT CRS (Well-Known Text Coordinate Reference System)',
13
+ id: 'wkt-crs',
14
+ module: 'wkt-crs',
15
+ version: VERSION,
16
+ worker: true,
17
+ extensions: [],
18
+ mimeTypes: ['text/plain'],
19
+ // category: 'json',
20
+ text: true,
21
+ options: {
22
+ 'wkt-crs': {}
23
+ },
24
+ encode: async (wktcrs, options) => new TextEncoder().encode(encodeWKTCRS(wktcrs, options?.['wkt-crs'])),
25
+ encodeSync: (wktcrs, options) => new TextEncoder().encode(encodeWKTCRS(wktcrs, options?.['wkt-crs'])),
26
+ encodeTextSync: (wktcrs, options) => encodeWKTCRS(wktcrs, options?.['wkt-crs'])
18
27
  };
19
- //# sourceMappingURL=wkt-crs-writer.js.map
@@ -1,28 +1,36 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
1
4
  import { VERSION } from "./lib/utils/version.js";
2
5
  import { parseWKT } from "./lib/parse-wkt.js";
3
6
  import { isWKT, WKT_MAGIC_STRINGS } from "./lib/parse-wkt.js";
7
+ /**
8
+ * Well-Known text worker loader
9
+ */
4
10
  export const WKTWorkerLoader = {
5
- name: 'WKT (Well-Known Text)',
6
- id: 'wkt',
7
- module: 'wkt',
8
- version: VERSION,
9
- worker: true,
10
- extensions: ['wkt'],
11
- mimeTypes: ['text/plain'],
12
- category: 'geometry',
13
- text: true,
14
- tests: WKT_MAGIC_STRINGS,
15
- testText: isWKT,
16
- options: {
17
- wkt: {
18
- shape: 'geojson-geometry',
19
- crs: true
11
+ name: 'WKT (Well-Known Text)',
12
+ id: 'wkt',
13
+ module: 'wkt',
14
+ version: VERSION,
15
+ worker: true,
16
+ extensions: ['wkt'],
17
+ mimeTypes: ['text/plain'],
18
+ category: 'geometry',
19
+ text: true,
20
+ tests: WKT_MAGIC_STRINGS,
21
+ testText: isWKT,
22
+ options: {
23
+ wkt: {
24
+ shape: 'geojson-geometry',
25
+ crs: true
26
+ }
20
27
  }
21
- }
22
28
  };
29
+ /**
30
+ * Well-Known text loader
31
+ */
23
32
  export const WKTLoader = {
24
- ...WKTWorkerLoader,
25
- parse: async (arrayBuffer, options) => parseWKT(new TextDecoder().decode(arrayBuffer), options),
26
- parseTextSync: parseWKT
33
+ ...WKTWorkerLoader,
34
+ parse: async (arrayBuffer, options) => parseWKT(new TextDecoder().decode(arrayBuffer), options),
35
+ parseTextSync: parseWKT
27
36
  };
28
- //# sourceMappingURL=wkt-loader.js.map
@@ -1,20 +1,25 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
1
4
  import { VERSION } from "./lib/utils/version.js";
2
5
  import { encodeWKT } from "./lib/encode-wkt.js";
6
+ /**
7
+ * WKT exporter
8
+ */
3
9
  export const WKTWriter = {
4
- name: 'WKT (Well Known Text)',
5
- id: 'wkt',
6
- module: 'wkt',
7
- version: VERSION,
8
- extensions: ['wkt'],
9
- text: true,
10
- encode: async geometry => encodeWKTSync(geometry),
11
- encodeSync: encodeWKTSync,
12
- encodeTextSync: encodeWKT,
13
- options: {
14
- wkt: {}
15
- }
10
+ name: 'WKT (Well Known Text)',
11
+ id: 'wkt',
12
+ module: 'wkt',
13
+ version: VERSION,
14
+ extensions: ['wkt'],
15
+ text: true,
16
+ encode: async (geometry) => encodeWKTSync(geometry),
17
+ encodeSync: encodeWKTSync,
18
+ encodeTextSync: encodeWKT,
19
+ options: {
20
+ wkt: {}
21
+ }
16
22
  };
17
23
  function encodeWKTSync(geometry) {
18
- return new TextEncoder().encode(encodeWKT(geometry)).buffer;
24
+ return new TextEncoder().encode(encodeWKT(geometry)).buffer;
19
25
  }
20
- //# sourceMappingURL=wkt-writer.js.map
@@ -1,4 +1,6 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
1
4
  import { createLoaderWorker } from '@loaders.gl/loader-utils';
2
5
  import { WKBLoader } from "../wkb-loader.js";
3
6
  createLoaderWorker(WKBLoader);
4
- //# sourceMappingURL=wkb-worker.js.map
@@ -1,4 +1,6 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
1
4
  import { createLoaderWorker } from '@loaders.gl/loader-utils';
2
5
  import { WKTLoader } from "../wkt-loader.js";
3
6
  createLoaderWorker(WKTLoader);
4
- //# sourceMappingURL=wkt-worker.js.map
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@loaders.gl/wkt",
3
3
  "description": "Loader and Writer for the WKT (Well Known Text) Format",
4
- "version": "4.2.0-alpha.4",
4
+ "version": "4.2.0-alpha.5",
5
5
  "license": "MIT",
6
6
  "type": "module",
7
7
  "publishConfig": {
@@ -35,16 +35,20 @@
35
35
  "README.md"
36
36
  ],
37
37
  "scripts": {
38
- "pre-build": "npm run build-worker && npm run build-bundle && npm run build-bundle -- --env=dev",
39
- "build-bundle": "ocular-bundle ./src/index.ts",
38
+ "pre-build": "npm run build-worker && npm run build-bundle && npm run build-bundle-dev",
39
+ "build-bundle": "ocular-bundle ./bundle.ts --output=dist/dist.min.js",
40
+ "build-bundle-dev": "ocular-bundle ./bundle.ts --env=dev --output=dist/dist.dev.js",
40
41
  "build-worker": "esbuild src/workers/wkt-worker.ts --bundle --outfile=dist/wkt-worker.js --define:__VERSION__=\\\"$npm_package_version\\\""
41
42
  },
42
43
  "devDependencies": {
43
44
  "fuzzer": "^0.2.1"
44
45
  },
45
46
  "dependencies": {
46
- "@loaders.gl/loader-utils": "4.2.0-alpha.4",
47
- "@loaders.gl/schema": "4.2.0-alpha.4"
47
+ "@loaders.gl/loader-utils": "4.2.0-alpha.5",
48
+ "@loaders.gl/schema": "4.2.0-alpha.5"
48
49
  },
49
- "gitHead": "6c52dee5c3f005648a394cc4aee7fc37005c8e83"
50
+ "peerDependencies": {
51
+ "@loaders.gl/core": "^4.0.0"
52
+ },
53
+ "gitHead": "32d95a81971f104e4dfeb88ab57065f05321a76a"
50
54
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"hex-wkb-loader.js","names":["WKBLoader","VERSION","decodeHex","HexWKBLoader","name","id","module","version","worker","category","extensions","mimeTypes","options","text","testText","isHexWKB","parse","arrayBuffer","parseHexWKB","TextDecoder","decode","parseTextSync","_WKBLoader$parseSync","uint8Array","binaryGeometry","parseSync","call","buffer","string","length","startsWith","test","slice"],"sources":["../src/hex-wkb-loader.ts"],"sourcesContent":["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport {BinaryGeometry} from '@loaders.gl/schema';\n\nimport type {WKBLoaderOptions} from './wkb-loader';\nimport {WKBLoader} from './wkb-loader';\nimport {VERSION} from './lib/utils/version';\nimport {decodeHex} from './lib/utils/hex-transcoder';\n\nexport type HexWKBLoaderOptions = WKBLoaderOptions;\n\n/**\n * Worker loader for Hex-encoded WKB (Well-Known Binary)\n */\nexport const HexWKBLoader: LoaderWithParser<BinaryGeometry, never, HexWKBLoaderOptions> = {\n name: 'Hexadecimal WKB',\n id: 'wkb',\n module: 'wkt',\n version: VERSION,\n worker: true,\n category: 'geometry',\n extensions: ['wkb'],\n mimeTypes: [],\n options: WKBLoader.options,\n text: true,\n testText: isHexWKB,\n // TODO - encoding here seems wasteful - extend hex transcoder?\n parse: async (arrayBuffer: ArrayBuffer) => parseHexWKB(new TextDecoder().decode(arrayBuffer)),\n parseTextSync: parseHexWKB\n};\n\nfunction parseHexWKB(text: string, options?: HexWKBLoaderOptions): BinaryGeometry {\n const uint8Array = decodeHex(text);\n const binaryGeometry = WKBLoader.parseSync?.(uint8Array.buffer, options);\n // @ts-expect-error\n return binaryGeometry;\n}\n\n/**\n * Check if string is a valid Well-known binary (WKB) in HEX format\n * https://en.wikipedia.org/wiki/Well-known_text_representation_of_geometry\n *\n * @param str input string\n * @returns true if string is a valid WKB in HEX format\n */\nexport function isHexWKB(string: string | null): boolean {\n if (!string) {\n return false;\n }\n // check if the length of the string is even and is at least 10 characters long\n if (string.length < 10 || string.length % 2 !== 0) {\n return false;\n }\n // check if first two characters are 00 or 01\n if (!string.startsWith('00') && !string.startsWith('01')) {\n return false;\n }\n // check if the rest of the string is a valid hex\n return /^[0-9a-fA-F]+$/.test(string.slice(2));\n}\n"],"mappings":"SAQQA,SAAS;AAAA,SACTC,OAAO;AAAA,SACPC,SAAS;AAOjB,OAAO,MAAMC,YAA0E,GAAG;EACxFC,IAAI,EAAE,iBAAiB;EACvBC,EAAE,EAAE,KAAK;EACTC,MAAM,EAAE,KAAK;EACbC,OAAO,EAAEN,OAAO;EAChBO,MAAM,EAAE,IAAI;EACZC,QAAQ,EAAE,UAAU;EACpBC,UAAU,EAAE,CAAC,KAAK,CAAC;EACnBC,SAAS,EAAE,EAAE;EACbC,OAAO,EAAEZ,SAAS,CAACY,OAAO;EAC1BC,IAAI,EAAE,IAAI;EACVC,QAAQ,EAAEC,QAAQ;EAElBC,KAAK,EAAE,MAAOC,WAAwB,IAAKC,WAAW,CAAC,IAAIC,WAAW,CAAC,CAAC,CAACC,MAAM,CAACH,WAAW,CAAC,CAAC;EAC7FI,aAAa,EAAEH;AACjB,CAAC;AAED,SAASA,WAAWA,CAACL,IAAY,EAAED,OAA6B,EAAkB;EAAA,IAAAU,oBAAA;EAChF,MAAMC,UAAU,GAAGrB,SAAS,CAACW,IAAI,CAAC;EAClC,MAAMW,cAAc,IAAAF,oBAAA,GAAGtB,SAAS,CAACyB,SAAS,cAAAH,oBAAA,uBAAnBA,oBAAA,CAAAI,IAAA,CAAA1B,SAAS,EAAauB,UAAU,CAACI,MAAM,EAAEf,OAAO,CAAC;EAExE,OAAOY,cAAc;AACvB;AASA,OAAO,SAAST,QAAQA,CAACa,MAAqB,EAAW;EACvD,IAAI,CAACA,MAAM,EAAE;IACX,OAAO,KAAK;EACd;EAEA,IAAIA,MAAM,CAACC,MAAM,GAAG,EAAE,IAAID,MAAM,CAACC,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE;IACjD,OAAO,KAAK;EACd;EAEA,IAAI,CAACD,MAAM,CAACE,UAAU,CAAC,IAAI,CAAC,IAAI,CAACF,MAAM,CAACE,UAAU,CAAC,IAAI,CAAC,EAAE;IACxD,OAAO,KAAK;EACd;EAEA,OAAO,gBAAgB,CAACC,IAAI,CAACH,MAAM,CAACI,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/C"}
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":["WKTCRSLoader","WKTCRSWriter","WKTLoader","WKTWorkerLoader","WKTWriter","WKBLoader","WKBWorkerLoader","WKBWriter","HexWKBLoader","TWKBLoader","TWKBWriter","isWKT","isWKB","parseWKBHeader","isTWKB","encodeHex","decodeHex"],"sources":["../src/index.ts"],"sourcesContent":["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nexport {WKTCRSLoader} from './wkt-crs-loader';\nexport {WKTCRSWriter} from './wkt-crs-writer';\n\nexport {WKTLoader, WKTWorkerLoader} from './wkt-loader';\nexport {WKTWriter} from './wkt-writer';\n\nexport {WKBLoader, WKBWorkerLoader} from './wkb-loader';\nexport {WKBWriter} from './wkb-writer';\n\nexport {HexWKBLoader} from './hex-wkb-loader';\n\nexport {TWKBLoader} from './twkb-loader';\nexport {TWKBWriter} from './twkb-writer';\n\n// EXPERIMENTAL APIs\nexport {isWKT} from './lib/parse-wkt';\n\nexport {isWKB, parseWKBHeader} from './lib/parse-wkb-header';\nexport type {WKBHeader} from './lib/parse-wkb-header';\n\nexport {isTWKB} from './lib/parse-twkb';\n\nexport {encodeHex, decodeHex} from './lib/utils/hex-transcoder';\n"],"mappings":"SAIQA,YAAY;AAAA,SACZC,YAAY;AAAA,SAEZC,SAAS,EAAEC,eAAe;AAAA,SAC1BC,SAAS;AAAA,SAETC,SAAS,EAAEC,eAAe;AAAA,SAC1BC,SAAS;AAAA,SAETC,YAAY;AAAA,SAEZC,UAAU;AAAA,SACVC,UAAU;AAAA,SAGVC,KAAK;AAAA,SAELC,KAAK,EAAEC,cAAc;AAAA,SAGrBC,MAAM;AAAA,SAENC,SAAS,EAAEC,SAAS"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"encode-twkb.js","names":["BinaryWriter","WKBGeometryType","encodeTWKB","geometry","options","writer","context","getTwkbPrecision","hasZ","hasM","encodeGeometry","arrayBuffer","type","encodePoint","encodeLineString","encodePolygon","encodeMultiPoint","encodeMultiLineString","encodeMultiPolygon","encodeGeometryCollection","Error","point","isEmpty","coordinates","length","writeTwkbHeader","Point","previousPoint","writeTwkbPoint","lineString","points","LineString","writeVarInt","polygon","polygonRings","Polygon","ring","multiPoint","MultiPoint","i","multiLineStrings","lineStrings","MultiLineString","multiPolygon","MultiPolygon","polygons","geometryCollection","geometries","GeometryCollection","geometryType","zigZagEncode","xy","metadataHeader","writeUInt8","extendedPrecision","x","xyFactor","y","z","zFactor","m","mFactor","value","xyPrecision","zPrecision","mPrecision","Math","pow"],"sources":["../../src/lib/encode-twkb.ts"],"sourcesContent":["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n// Forked from https://github.com/cschwarz/wkx under MIT license, Copyright (c) 2013 Christian Schwarz\n\nimport type {Point, MultiPoint, LineString} from '@loaders.gl/schema';\nimport type {\n MultiLineString,\n Polygon,\n MultiPolygon,\n GeometryCollection,\n Geometry\n} from '@loaders.gl/schema';\n\nimport {BinaryWriter} from './utils/binary-writer';\nimport {WKBGeometryType} from './parse-wkb-header';\n\ntype TWKBPrecision = {\n xy: number;\n z: number;\n m: number;\n xyFactor: number;\n zFactor: number;\n mFactor: number;\n};\n\ntype TWKBEncoderContext = TWKBPrecision & {\n hasZ?: boolean;\n hasM?: boolean;\n};\n\nexport function encodeTWKB(\n geometry: Geometry,\n options?: {hasZ?: boolean; hasM?: boolean}\n): ArrayBuffer {\n const writer = new BinaryWriter(0, true);\n\n const context: TWKBEncoderContext = {\n ...getTwkbPrecision(5, 0, 0),\n hasZ: options?.hasZ,\n hasM: options?.hasM\n };\n\n encodeGeometry(writer, geometry, context);\n\n // TODO - we need to slice it?\n return writer.arrayBuffer;\n}\n\nfunction encodeGeometry(writer: BinaryWriter, geometry: Geometry, context: TWKBEncoderContext) {\n switch (geometry.type) {\n case 'Point':\n return encodePoint(writer, context, geometry);\n case 'LineString':\n return encodeLineString(writer, context, geometry);\n case 'Polygon':\n return encodePolygon(writer, context, geometry);\n case 'MultiPoint':\n return encodeMultiPoint(writer, context, geometry);\n case 'MultiLineString':\n return encodeMultiLineString(writer, context, geometry);\n case 'MultiPolygon':\n return encodeMultiPolygon(writer, context, geometry);\n case 'GeometryCollection':\n return encodeGeometryCollection(writer, context, geometry);\n default:\n throw new Error('unsupported geometry type');\n }\n}\n\nfunction encodePoint(writer: BinaryWriter, context: TWKBEncoderContext, point: Point): void {\n const isEmpty =\n point.coordinates.length === 0 || point[0] === 'undefined' || point[1] === 'undefined';\n\n writeTwkbHeader(writer, context, WKBGeometryType.Point, isEmpty);\n\n if (!isEmpty) {\n const previousPoint = [0, 0, 0, 0];\n writeTwkbPoint(writer, context, point.coordinates, previousPoint);\n }\n}\n\nfunction encodeLineString(\n writer: BinaryWriter,\n context: TWKBEncoderContext,\n lineString: LineString\n): ArrayBuffer {\n const points = lineString.coordinates;\n const isEmpty = points.length === 0;\n\n writeTwkbHeader(writer, context, WKBGeometryType.LineString, isEmpty);\n\n if (!isEmpty) {\n writer.writeVarInt(points.length);\n const previousPoint = [0, 0, 0, 0];\n for (const point of points) {\n writeTwkbPoint(writer, context, point, previousPoint);\n }\n }\n\n return writer.arrayBuffer;\n}\n\nfunction encodePolygon(\n writer: BinaryWriter,\n context: TWKBEncoderContext,\n polygon: Polygon\n): ArrayBuffer {\n const polygonRings = polygon.coordinates;\n\n const isEmpty = polygonRings.length === 0;\n\n writeTwkbHeader(writer, context, WKBGeometryType.Polygon, isEmpty);\n\n if (!isEmpty) {\n writer.writeVarInt(polygonRings.length);\n\n const previousPoint = [0, 0, 0, 0];\n for (const ring of polygonRings) {\n writer.writeVarInt(ring.length);\n for (const point of ring) {\n writeTwkbPoint(writer, context, previousPoint, point);\n }\n }\n }\n\n return writer.arrayBuffer;\n}\n\nfunction encodeMultiPoint(\n writer: BinaryWriter,\n context: TWKBEncoderContext,\n multiPoint: MultiPoint\n): void {\n const points = multiPoint.coordinates;\n const isEmpty = points.length === 0;\n\n writeTwkbHeader(writer, context, WKBGeometryType.MultiPoint, isEmpty);\n\n if (!isEmpty) {\n writer.writeVarInt(points.length);\n\n const previousPoint = [0, 0, 0, 0];\n for (let i = 0; i < points.length; i++) {\n writeTwkbPoint(writer, context, previousPoint, points[i]);\n }\n }\n}\n\nfunction encodeMultiLineString(\n writer: BinaryWriter,\n context: TWKBEncoderContext,\n multiLineStrings: MultiLineString\n): ArrayBuffer {\n const lineStrings = multiLineStrings.coordinates;\n const isEmpty = lineStrings.length === 0;\n\n writeTwkbHeader(writer, context, WKBGeometryType.MultiLineString, isEmpty);\n\n if (!isEmpty) {\n writer.writeVarInt(lineStrings.length);\n\n const previousPoint = [0, 0, 0, 0];\n for (const lineString of lineStrings) {\n writer.writeVarInt(lineString.length);\n\n for (const point of lineString) {\n writeTwkbPoint(writer, context, previousPoint, point);\n }\n }\n }\n\n return writer.arrayBuffer;\n}\n\nfunction encodeMultiPolygon(\n writer: BinaryWriter,\n context: TWKBEncoderContext,\n multiPolygon: MultiPolygon\n): void {\n const {coordinates} = multiPolygon;\n const isEmpty = coordinates.length === 0;\n\n writeTwkbHeader(writer, context, WKBGeometryType.MultiPolygon, isEmpty);\n\n if (!isEmpty) {\n const polygons = coordinates;\n writer.writeVarInt(polygons.length);\n\n const previousPoint = [0, 0, 0, 0];\n\n for (const polygonRings of polygons) {\n writer.writeVarInt(polygonRings.length);\n for (const ring of polygonRings) {\n writer.writeVarInt(ring.length);\n for (const point of ring) {\n writeTwkbPoint(writer, context, previousPoint, point);\n }\n }\n }\n }\n}\n\nfunction encodeGeometryCollection(\n writer: BinaryWriter,\n context: TWKBEncoderContext,\n geometryCollection: GeometryCollection\n): void {\n const {geometries} = geometryCollection;\n const isEmpty = geometries.length === 0;\n\n writeTwkbHeader(writer, context, WKBGeometryType.GeometryCollection, isEmpty);\n\n if (geometries.length > 0) {\n writer.writeVarInt(geometries.length);\n for (const geometry of geometries) {\n encodeGeometry(writer, geometry, context);\n }\n }\n}\n\n/**\n *\n * @param writer\n * @param context\n * @param geometryType\n * @param isEmpty\n */\nfunction writeTwkbHeader(\n writer: BinaryWriter,\n context: TWKBEncoderContext,\n geometryType: WKBGeometryType,\n isEmpty: boolean\n) {\n const type = (zigZagEncode(context.xy) << 4) + geometryType;\n let metadataHeader = context.hasZ || context.hasM ? 1 << 3 : 0;\n metadataHeader += isEmpty ? 1 << 4 : 0;\n\n writer.writeUInt8(type);\n writer.writeUInt8(metadataHeader);\n\n if (context.hasZ || context.hasM) {\n let extendedPrecision = 0;\n if (context.hasZ) {\n extendedPrecision |= 0x1;\n }\n if (context.hasM) {\n extendedPrecision |= 0x2;\n }\n writer.writeUInt8(extendedPrecision);\n }\n}\n\n/**\n * Write one point to array buffer. ZigZagEncoding the delta fdrom the previous point. Mutates previousPoint.\n * @param writer\n * @param context\n * @param previousPoint - Mutated by this function\n * @param point\n */\nfunction writeTwkbPoint(\n writer: BinaryWriter,\n context: TWKBEncoderContext,\n point: number[],\n previousPoint: number[]\n): void {\n const x = point[0] * context.xyFactor;\n const y = point[1] * context.xyFactor;\n const z = point[2] * context.zFactor;\n const m = point[3] * context.mFactor;\n\n writer.writeVarInt(zigZagEncode(x - previousPoint[0]));\n writer.writeVarInt(zigZagEncode(y - previousPoint[1]));\n if (context.hasZ) {\n writer.writeVarInt(zigZagEncode(z - previousPoint[2]));\n }\n if (context.hasM) {\n writer.writeVarInt(zigZagEncode(m - previousPoint[3]));\n }\n\n previousPoint[0] = x;\n previousPoint[1] = y;\n previousPoint[2] = z;\n previousPoint[3] = m;\n}\n\n// HELPERS\n\nfunction zigZagEncode(value: number): number {\n return (value << 1) ^ (value >> 31);\n}\n\nfunction getTwkbPrecision(\n xyPrecision: number,\n zPrecision: number,\n mPrecision: number\n): TWKBPrecision {\n return {\n xy: xyPrecision,\n z: zPrecision,\n m: mPrecision,\n xyFactor: Math.pow(10, xyPrecision),\n zFactor: Math.pow(10, zPrecision),\n mFactor: Math.pow(10, mPrecision)\n };\n}\n"],"mappings":"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"}