@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.
Files changed (231) hide show
  1. package/README.md +4 -1
  2. package/dist/dist.min.js +1449 -404
  3. package/dist/es5/hex-wkb-loader.js +64 -0
  4. package/dist/es5/hex-wkb-loader.js.map +1 -0
  5. package/dist/es5/index.js +76 -1
  6. package/dist/es5/index.js.map +1 -1
  7. package/dist/es5/lib/encode-twkb.js +269 -0
  8. package/dist/es5/lib/encode-twkb.js.map +1 -0
  9. package/dist/es5/lib/encode-wkb.js +12 -10
  10. package/dist/es5/lib/encode-wkb.js.map +1 -1
  11. package/dist/es5/lib/encode-wkt-crs.js +32 -0
  12. package/dist/es5/lib/encode-wkt-crs.js.map +1 -0
  13. package/dist/es5/lib/encode-wkt.js +1 -1
  14. package/dist/es5/lib/encode-wkt.js.map +1 -1
  15. package/dist/es5/lib/parse-hex-wkb.js +2 -0
  16. package/dist/es5/lib/parse-hex-wkb.js.map +1 -0
  17. package/dist/es5/lib/parse-twkb.js +263 -0
  18. package/dist/es5/lib/parse-twkb.js.map +1 -0
  19. package/dist/es5/lib/parse-wkb-header.js +114 -0
  20. package/dist/es5/lib/parse-wkb-header.js.map +1 -0
  21. package/dist/es5/lib/parse-wkb.js +59 -52
  22. package/dist/es5/lib/parse-wkb.js.map +1 -1
  23. package/dist/es5/lib/parse-wkt-crs.js +106 -0
  24. package/dist/es5/lib/parse-wkt-crs.js.map +1 -0
  25. package/dist/es5/lib/parse-wkt.js +210 -153
  26. package/dist/es5/lib/parse-wkt.js.map +1 -1
  27. package/dist/es5/lib/utils/base64-encoder.js +26 -0
  28. package/dist/es5/lib/utils/base64-encoder.js.map +1 -0
  29. package/dist/es5/lib/utils/binary-reader.js +98 -0
  30. package/dist/es5/lib/utils/binary-reader.js.map +1 -0
  31. package/dist/es5/lib/utils/binary-writer.js +2 -2
  32. package/dist/es5/lib/utils/binary-writer.js.map +1 -1
  33. package/dist/es5/lib/utils/hex-encoder.js +63 -0
  34. package/dist/es5/lib/utils/hex-encoder.js.map +1 -0
  35. package/dist/es5/lib/utils/hex-transcoder.js +41 -0
  36. package/dist/es5/lib/utils/hex-transcoder.js.map +1 -0
  37. package/dist/es5/lib/utils/version.js +1 -1
  38. package/dist/es5/lib/utils/version.js.map +1 -1
  39. package/dist/es5/twkb-loader.js +53 -0
  40. package/dist/es5/twkb-loader.js.map +1 -0
  41. package/dist/es5/twkb-writer.js +40 -0
  42. package/dist/es5/twkb-writer.js.map +1 -0
  43. package/dist/es5/wkb-loader.js +9 -9
  44. package/dist/es5/wkb-loader.js.map +1 -1
  45. package/dist/es5/wkb-writer.js +2 -3
  46. package/dist/es5/wkb-writer.js.map +1 -1
  47. package/dist/es5/wkt-crs-loader.js +47 -0
  48. package/dist/es5/wkt-crs-loader.js.map +1 -0
  49. package/dist/es5/wkt-crs-writer.js +49 -0
  50. package/dist/es5/wkt-crs-writer.js.map +1 -0
  51. package/dist/es5/wkt-loader.js +10 -6
  52. package/dist/es5/wkt-loader.js.map +1 -1
  53. package/dist/es5/wkt-writer.js +2 -3
  54. package/dist/es5/wkt-writer.js.map +1 -1
  55. package/dist/es5/workers/wkb-worker.js.map +1 -1
  56. package/dist/es5/workers/wkt-worker.js.map +1 -1
  57. package/dist/esm/hex-wkb-loader.js +37 -0
  58. package/dist/esm/hex-wkb-loader.js.map +1 -0
  59. package/dist/esm/index.js +10 -1
  60. package/dist/esm/index.js.map +1 -1
  61. package/dist/esm/lib/encode-twkb.js +180 -0
  62. package/dist/esm/lib/encode-twkb.js.map +1 -0
  63. package/dist/esm/lib/encode-wkb.js +4 -4
  64. package/dist/esm/lib/encode-wkb.js.map +1 -1
  65. package/dist/esm/lib/encode-wkt-crs.js +21 -0
  66. package/dist/esm/lib/encode-wkt-crs.js.map +1 -0
  67. package/dist/esm/lib/encode-wkt.js +1 -1
  68. package/dist/esm/lib/encode-wkt.js.map +1 -1
  69. package/dist/esm/lib/parse-hex-wkb.js +2 -0
  70. package/dist/esm/lib/parse-hex-wkb.js.map +1 -0
  71. package/dist/esm/lib/parse-twkb.js +256 -0
  72. package/dist/esm/lib/parse-twkb.js.map +1 -0
  73. package/dist/esm/lib/parse-wkb-header.js +105 -0
  74. package/dist/esm/lib/parse-wkb-header.js.map +1 -0
  75. package/dist/esm/lib/parse-wkb.js +59 -51
  76. package/dist/esm/lib/parse-wkb.js.map +1 -1
  77. package/dist/esm/lib/parse-wkt-crs.js +96 -0
  78. package/dist/esm/lib/parse-wkt-crs.js.map +1 -0
  79. package/dist/esm/lib/parse-wkt.js +204 -152
  80. package/dist/esm/lib/parse-wkt.js.map +1 -1
  81. package/dist/esm/lib/utils/base64-encoder.js +7 -0
  82. package/dist/esm/lib/utils/base64-encoder.js.map +1 -0
  83. package/dist/esm/lib/utils/binary-reader.js +67 -0
  84. package/dist/esm/lib/utils/binary-reader.js.map +1 -0
  85. package/dist/esm/lib/utils/binary-writer.js +1 -1
  86. package/dist/esm/lib/utils/binary-writer.js.map +1 -1
  87. package/dist/esm/lib/utils/hex-encoder.js +40 -0
  88. package/dist/esm/lib/utils/hex-encoder.js.map +1 -0
  89. package/dist/esm/lib/utils/hex-transcoder.js +34 -0
  90. package/dist/esm/lib/utils/hex-transcoder.js.map +1 -0
  91. package/dist/esm/lib/utils/version.js +1 -1
  92. package/dist/esm/lib/utils/version.js.map +1 -1
  93. package/dist/esm/twkb-loader.js +24 -0
  94. package/dist/esm/twkb-loader.js.map +1 -0
  95. package/dist/esm/twkb-writer.js +14 -0
  96. package/dist/esm/twkb-writer.js.map +1 -0
  97. package/dist/esm/wkb-loader.js +6 -4
  98. package/dist/esm/wkb-loader.js.map +1 -1
  99. package/dist/esm/wkb-writer.js +1 -1
  100. package/dist/esm/wkb-writer.js.map +1 -1
  101. package/dist/esm/wkt-crs-loader.js +19 -0
  102. package/dist/esm/wkt-crs-loader.js.map +1 -0
  103. package/dist/esm/wkt-crs-writer.js +19 -0
  104. package/dist/esm/wkt-crs-writer.js.map +1 -0
  105. package/dist/esm/wkt-loader.js +8 -3
  106. package/dist/esm/wkt-loader.js.map +1 -1
  107. package/dist/esm/wkt-writer.js +2 -2
  108. package/dist/esm/wkt-writer.js.map +1 -1
  109. package/dist/esm/workers/wkb-worker.js.map +1 -1
  110. package/dist/esm/workers/wkt-worker.js.map +1 -1
  111. package/dist/src/bundle.d.ts.map +1 -0
  112. package/dist/src/hex-wkb-loader.d.ts +17 -0
  113. package/dist/src/hex-wkb-loader.d.ts.map +1 -0
  114. package/dist/src/index.d.ts +15 -0
  115. package/dist/src/index.d.ts.map +1 -0
  116. package/dist/src/lib/encode-twkb.d.ts +6 -0
  117. package/dist/src/lib/encode-twkb.d.ts.map +1 -0
  118. package/dist/{lib → src/lib}/encode-wkb.d.ts +16 -3
  119. package/dist/src/lib/encode-wkb.d.ts.map +1 -0
  120. package/dist/src/lib/encode-wkt-crs.d.ts +10 -0
  121. package/dist/src/lib/encode-wkt-crs.d.ts.map +1 -0
  122. package/dist/{lib → src/lib}/encode-wkt.d.ts +1 -1
  123. package/dist/src/lib/encode-wkt.d.ts.map +1 -0
  124. package/dist/src/lib/parse-hex-wkb.d.ts +1 -0
  125. package/dist/src/lib/parse-hex-wkb.d.ts.map +1 -0
  126. package/dist/src/lib/parse-twkb.d.ts +9 -0
  127. package/dist/src/lib/parse-twkb.d.ts.map +1 -0
  128. package/dist/src/lib/parse-wkb-header.d.ts +39 -0
  129. package/dist/src/lib/parse-wkb-header.d.ts.map +1 -0
  130. package/dist/src/lib/parse-wkb.d.ts +5 -0
  131. package/dist/src/lib/parse-wkb.d.ts.map +1 -0
  132. package/dist/src/lib/parse-wkt-crs.d.ts +15 -0
  133. package/dist/src/lib/parse-wkt-crs.d.ts.map +1 -0
  134. package/dist/src/lib/parse-wkt.d.ts +30 -0
  135. package/dist/src/lib/parse-wkt.d.ts.map +1 -0
  136. package/dist/src/lib/utils/base64-encoder.d.ts +5 -0
  137. package/dist/src/lib/utils/base64-encoder.d.ts.map +1 -0
  138. package/dist/src/lib/utils/binary-reader.d.ts +18 -0
  139. package/dist/src/lib/utils/binary-reader.d.ts.map +1 -0
  140. package/dist/{lib → src/lib}/utils/binary-writer.d.ts +1 -1
  141. package/dist/src/lib/utils/binary-writer.d.ts.map +1 -0
  142. package/dist/src/lib/utils/hex-encoder.d.ts +15 -0
  143. package/dist/src/lib/utils/hex-encoder.d.ts.map +1 -0
  144. package/dist/src/lib/utils/hex-transcoder.d.ts +15 -0
  145. package/dist/src/lib/utils/hex-transcoder.d.ts.map +1 -0
  146. package/dist/src/lib/utils/version.d.ts.map +1 -0
  147. package/dist/src/twkb-loader.d.ts +16 -0
  148. package/dist/src/twkb-loader.d.ts.map +1 -0
  149. package/dist/src/twkb-writer.d.ts +7 -0
  150. package/dist/src/twkb-writer.d.ts.map +1 -0
  151. package/dist/src/wkb-loader.d.ts +16 -0
  152. package/dist/src/wkb-loader.d.ts.map +1 -0
  153. package/dist/src/wkb-writer.d.ts +7 -0
  154. package/dist/src/wkb-writer.d.ts.map +1 -0
  155. package/dist/src/wkt-crs-loader.d.ts +12 -0
  156. package/dist/src/wkt-crs-loader.d.ts.map +1 -0
  157. package/dist/src/wkt-crs-writer.d.ts +13 -0
  158. package/dist/src/wkt-crs-writer.d.ts.map +1 -0
  159. package/dist/src/wkt-loader.d.ts +18 -0
  160. package/dist/src/wkt-loader.d.ts.map +1 -0
  161. package/dist/src/wkt-writer.d.ts +10 -0
  162. package/dist/src/wkt-writer.d.ts.map +1 -0
  163. package/dist/{workers → src/workers}/wkb-worker.d.ts.map +1 -1
  164. package/dist/{workers → src/workers}/wkt-worker.d.ts.map +1 -1
  165. package/dist/tsconfig.tsbuildinfo +1 -0
  166. package/dist/wkt-worker.js +230 -186
  167. package/package.json +4 -4
  168. package/src/hex-wkb-loader.ts +61 -0
  169. package/src/index.ts +22 -1
  170. package/src/lib/encode-twkb.ts +304 -0
  171. package/src/lib/encode-wkb.ts +5 -5
  172. package/src/lib/encode-wkt-crs.ts +39 -0
  173. package/src/lib/encode-wkt.ts +3 -2
  174. package/src/lib/parse-hex-wkb.ts +0 -0
  175. package/src/lib/parse-twkb.ts +356 -0
  176. package/src/lib/parse-wkb-header.ts +172 -0
  177. package/src/lib/parse-wkb.ts +69 -58
  178. package/src/lib/parse-wkt-crs.ts +147 -0
  179. package/src/lib/parse-wkt.ts +275 -174
  180. package/src/lib/utils/base64-encoder.ts +153 -0
  181. package/src/lib/utils/binary-reader.ts +72 -0
  182. package/src/lib/utils/binary-writer.ts +1 -1
  183. package/src/lib/utils/hex-encoder.ts +58 -0
  184. package/src/lib/utils/hex-transcoder.ts +50 -0
  185. package/src/twkb-loader.ts +42 -0
  186. package/src/twkb-writer.ts +25 -0
  187. package/src/wkb-loader.ts +19 -8
  188. package/src/wkb-writer.ts +6 -4
  189. package/src/wkt-crs-loader.ts +33 -0
  190. package/src/wkt-crs-writer.ts +37 -0
  191. package/src/wkt-loader.ts +22 -6
  192. package/src/wkt-writer.ts +12 -5
  193. package/src/workers/wkb-worker.ts +2 -0
  194. package/src/workers/wkt-worker.ts +2 -0
  195. package/dist/bundle.d.ts.map +0 -1
  196. package/dist/bundle.js +0 -5
  197. package/dist/index.d.ts +0 -5
  198. package/dist/index.d.ts.map +0 -1
  199. package/dist/index.js +0 -13
  200. package/dist/lib/encode-wkb.d.ts.map +0 -1
  201. package/dist/lib/encode-wkb.js +0 -295
  202. package/dist/lib/encode-wkt.d.ts.map +0 -1
  203. package/dist/lib/encode-wkt.js +0 -46
  204. package/dist/lib/parse-wkb.d.ts +0 -3
  205. package/dist/lib/parse-wkb.d.ts.map +0 -1
  206. package/dist/lib/parse-wkb.js +0 -236
  207. package/dist/lib/parse-wkt.d.ts +0 -8
  208. package/dist/lib/parse-wkt.d.ts.map +0 -1
  209. package/dist/lib/parse-wkt.js +0 -227
  210. package/dist/lib/utils/binary-writer.d.ts.map +0 -1
  211. package/dist/lib/utils/binary-writer.js +0 -120
  212. package/dist/lib/utils/version.d.ts.map +0 -1
  213. package/dist/lib/utils/version.js +0 -7
  214. package/dist/wkb-loader.d.ts +0 -39
  215. package/dist/wkb-loader.d.ts.map +0 -1
  216. package/dist/wkb-loader.js +0 -34
  217. package/dist/wkb-writer.d.ts +0 -6
  218. package/dist/wkb-writer.d.ts.map +0 -1
  219. package/dist/wkb-writer.js +0 -26
  220. package/dist/wkt-loader.d.ts +0 -10
  221. package/dist/wkt-loader.d.ts.map +0 -1
  222. package/dist/wkt-loader.js +0 -33
  223. package/dist/wkt-writer.d.ts +0 -6
  224. package/dist/wkt-writer.d.ts.map +0 -1
  225. package/dist/wkt-writer.js +0 -23
  226. package/dist/workers/wkb-worker.js +0 -5
  227. package/dist/workers/wkt-worker.js +0 -5
  228. /package/dist/{bundle.d.ts → src/bundle.d.ts} +0 -0
  229. /package/dist/{lib → src/lib}/utils/version.d.ts +0 -0
  230. /package/dist/{workers → src/workers}/wkb-worker.d.ts +0 -0
  231. /package/dist/{workers → src/workers}/wkt-worker.d.ts +0 -0
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.HexWKBLoader = void 0;
8
+ exports.isHexWKB = isHexWKB;
9
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
10
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
11
+ var _wkbLoader = require("./wkb-loader");
12
+ var _version = require("./lib/utils/version");
13
+ var _hexTranscoder = require("./lib/utils/hex-transcoder");
14
+ var HexWKBLoader = {
15
+ name: 'Hexadecimal WKB',
16
+ id: 'wkb',
17
+ module: 'wkt',
18
+ version: _version.VERSION,
19
+ worker: true,
20
+ category: 'geometry',
21
+ extensions: ['wkb'],
22
+ mimeTypes: [],
23
+ options: _wkbLoader.WKBLoader.options,
24
+ text: true,
25
+ testText: isHexWKB,
26
+ parse: function () {
27
+ var _parse = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(arrayBuffer) {
28
+ return _regenerator.default.wrap(function _callee$(_context) {
29
+ while (1) switch (_context.prev = _context.next) {
30
+ case 0:
31
+ return _context.abrupt("return", parseHexWKB(new TextDecoder().decode(arrayBuffer)));
32
+ case 1:
33
+ case "end":
34
+ return _context.stop();
35
+ }
36
+ }, _callee);
37
+ }));
38
+ function parse(_x) {
39
+ return _parse.apply(this, arguments);
40
+ }
41
+ return parse;
42
+ }(),
43
+ parseTextSync: parseHexWKB
44
+ };
45
+ exports.HexWKBLoader = HexWKBLoader;
46
+ function parseHexWKB(text, options) {
47
+ var _WKBLoader$parseSync;
48
+ var uint8Array = (0, _hexTranscoder.decodeHex)(text);
49
+ var binaryGeometry = (_WKBLoader$parseSync = _wkbLoader.WKBLoader.parseSync) === null || _WKBLoader$parseSync === void 0 ? void 0 : _WKBLoader$parseSync.call(_wkbLoader.WKBLoader, uint8Array.buffer, options);
50
+ return binaryGeometry;
51
+ }
52
+ function isHexWKB(string) {
53
+ if (!string) {
54
+ return false;
55
+ }
56
+ if (string.length < 10 || string.length % 2 !== 0) {
57
+ return false;
58
+ }
59
+ if (!string.startsWith('00') && !string.startsWith('01')) {
60
+ return false;
61
+ }
62
+ return /^[0-9a-fA-F]+$/.test(string.slice(2));
63
+ }
64
+ //# sourceMappingURL=hex-wkb-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hex-wkb-loader.js","names":["_wkbLoader","require","_version","_hexTranscoder","HexWKBLoader","name","id","module","version","VERSION","worker","category","extensions","mimeTypes","options","WKBLoader","text","testText","isHexWKB","parse","_parse","_asyncToGenerator2","default","_regenerator","mark","_callee","arrayBuffer","wrap","_callee$","_context","prev","next","abrupt","parseHexWKB","TextDecoder","decode","stop","_x","apply","arguments","parseTextSync","exports","_WKBLoader$parseSync","uint8Array","decodeHex","binaryGeometry","parseSync","call","buffer","string","length","startsWith","test","slice"],"sources":["../../src/hex-wkb-loader.ts"],"sourcesContent":["// loaders.gl, MIT license\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":";;;;;;;;;;AAMA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,cAAA,GAAAF,OAAA;AAOO,IAAMG,YAA0E,GAAG;EACxFC,IAAI,EAAE,iBAAiB;EACvBC,EAAE,EAAE,KAAK;EACTC,MAAM,EAAE,KAAK;EACbC,OAAO,EAAEC,gBAAO;EAChBC,MAAM,EAAE,IAAI;EACZC,QAAQ,EAAE,UAAU;EACpBC,UAAU,EAAE,CAAC,KAAK,CAAC;EACnBC,SAAS,EAAE,EAAE;EACbC,OAAO,EAAEC,oBAAS,CAACD,OAAO;EAC1BE,IAAI,EAAE,IAAI;EACVC,QAAQ,EAAEC,QAAQ;EAElBC,KAAK;IAAA,IAAAC,MAAA,OAAAC,kBAAA,CAAAC,OAAA,EAAAC,YAAA,CAAAD,OAAA,CAAAE,IAAA,CAAE,SAAAC,QAAOC,WAAwB;MAAA,OAAAH,YAAA,CAAAD,OAAA,CAAAK,IAAA,UAAAC,SAAAC,QAAA;QAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;UAAA;YAAA,OAAAF,QAAA,CAAAG,MAAA,WAAKC,WAAW,CAAC,IAAIC,WAAW,CAAC,CAAC,CAACC,MAAM,CAACT,WAAW,CAAC,CAAC;UAAA;UAAA;YAAA,OAAAG,QAAA,CAAAO,IAAA;QAAA;MAAA,GAAAX,OAAA;IAAA;IAAA,SAAAN,MAAAkB,EAAA;MAAA,OAAAjB,MAAA,CAAAkB,KAAA,OAAAC,SAAA;IAAA;IAAA,OAAApB,KAAA;EAAA;EAC7FqB,aAAa,EAAEP;AACjB,CAAC;AAACQ,OAAA,CAAArC,YAAA,GAAAA,YAAA;AAEF,SAAS6B,WAAWA,CAACjB,IAAY,EAAEF,OAA6B,EAAkB;EAAA,IAAA4B,oBAAA;EAChF,IAAMC,UAAU,GAAG,IAAAC,wBAAS,EAAC5B,IAAI,CAAC;EAClC,IAAM6B,cAAc,IAAAH,oBAAA,GAAG3B,oBAAS,CAAC+B,SAAS,cAAAJ,oBAAA,uBAAnBA,oBAAA,CAAAK,IAAA,CAAAhC,oBAAS,EAAa4B,UAAU,CAACK,MAAM,EAAElC,OAAO,CAAC;EAExE,OAAO+B,cAAc;AACvB;AASO,SAAS3B,QAAQA,CAAC+B,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/es5/index.js CHANGED
@@ -3,6 +3,24 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ Object.defineProperty(exports, "HexWKBLoader", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _hexWkbLoader.HexWKBLoader;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "TWKBLoader", {
13
+ enumerable: true,
14
+ get: function get() {
15
+ return _twkbLoader.TWKBLoader;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "TWKBWriter", {
19
+ enumerable: true,
20
+ get: function get() {
21
+ return _twkbWriter.TWKBWriter;
22
+ }
23
+ });
6
24
  Object.defineProperty(exports, "WKBLoader", {
7
25
  enumerable: true,
8
26
  get: function get() {
@@ -21,6 +39,18 @@ Object.defineProperty(exports, "WKBWriter", {
21
39
  return _wkbWriter.WKBWriter;
22
40
  }
23
41
  });
42
+ Object.defineProperty(exports, "WKTCRSLoader", {
43
+ enumerable: true,
44
+ get: function get() {
45
+ return _wktCrsLoader.WKTCRSLoader;
46
+ }
47
+ });
48
+ Object.defineProperty(exports, "WKTCRSWriter", {
49
+ enumerable: true,
50
+ get: function get() {
51
+ return _wktCrsWriter.WKTCRSWriter;
52
+ }
53
+ });
24
54
  Object.defineProperty(exports, "WKTLoader", {
25
55
  enumerable: true,
26
56
  get: function get() {
@@ -39,8 +69,53 @@ Object.defineProperty(exports, "WKTWriter", {
39
69
  return _wktWriter.WKTWriter;
40
70
  }
41
71
  });
42
- var _wkbLoader = require("./wkb-loader");
72
+ Object.defineProperty(exports, "decodeHex", {
73
+ enumerable: true,
74
+ get: function get() {
75
+ return _hexTranscoder.decodeHex;
76
+ }
77
+ });
78
+ Object.defineProperty(exports, "encodeHex", {
79
+ enumerable: true,
80
+ get: function get() {
81
+ return _hexTranscoder.encodeHex;
82
+ }
83
+ });
84
+ Object.defineProperty(exports, "isTWKB", {
85
+ enumerable: true,
86
+ get: function get() {
87
+ return _parseTwkb.isTWKB;
88
+ }
89
+ });
90
+ Object.defineProperty(exports, "isWKB", {
91
+ enumerable: true,
92
+ get: function get() {
93
+ return _parseWkbHeader.isWKB;
94
+ }
95
+ });
96
+ Object.defineProperty(exports, "isWKT", {
97
+ enumerable: true,
98
+ get: function get() {
99
+ return _parseWkt.isWKT;
100
+ }
101
+ });
102
+ Object.defineProperty(exports, "parseWKBHeader", {
103
+ enumerable: true,
104
+ get: function get() {
105
+ return _parseWkbHeader.parseWKBHeader;
106
+ }
107
+ });
108
+ var _wktCrsLoader = require("./wkt-crs-loader");
109
+ var _wktCrsWriter = require("./wkt-crs-writer");
43
110
  var _wktLoader = require("./wkt-loader");
44
111
  var _wktWriter = require("./wkt-writer");
112
+ var _wkbLoader = require("./wkb-loader");
45
113
  var _wkbWriter = require("./wkb-writer");
114
+ var _hexWkbLoader = require("./hex-wkb-loader");
115
+ var _twkbLoader = require("./twkb-loader");
116
+ var _twkbWriter = require("./twkb-writer");
117
+ var _parseWkt = require("./lib/parse-wkt");
118
+ var _parseWkbHeader = require("./lib/parse-wkb-header");
119
+ var _parseTwkb = require("./lib/parse-twkb");
120
+ var _hexTranscoder = require("./lib/utils/hex-transcoder");
46
121
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"index.js","names":["_wktCrsLoader","require","_wktCrsWriter","_wktLoader","_wktWriter","_wkbLoader","_wkbWriter","_hexWkbLoader","_twkbLoader","_twkbWriter","_parseWkt","_parseWkbHeader","_parseTwkb","_hexTranscoder"],"sources":["../../src/index.ts"],"sourcesContent":["// loaders.gl, MIT license\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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,IAAAA,aAAA,GAAAC,OAAA;AACA,IAAAC,aAAA,GAAAD,OAAA;AAEA,IAAAE,UAAA,GAAAF,OAAA;AACA,IAAAG,UAAA,GAAAH,OAAA;AAEA,IAAAI,UAAA,GAAAJ,OAAA;AACA,IAAAK,UAAA,GAAAL,OAAA;AAEA,IAAAM,aAAA,GAAAN,OAAA;AAEA,IAAAO,WAAA,GAAAP,OAAA;AACA,IAAAQ,WAAA,GAAAR,OAAA;AAGA,IAAAS,SAAA,GAAAT,OAAA;AAEA,IAAAU,eAAA,GAAAV,OAAA;AAGA,IAAAW,UAAA,GAAAX,OAAA;AAEA,IAAAY,cAAA,GAAAZ,OAAA"}
@@ -0,0 +1,269 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.encodeTWKB = encodeTWKB;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var _binaryWriter = require("./utils/binary-writer");
10
+ var _parseWkbHeader = require("./parse-wkb-header");
11
+ 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; } } }; }
12
+ 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); }
13
+ 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; }
14
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
15
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
16
+ function encodeTWKB(geometry, options) {
17
+ var writer = new _binaryWriter.BinaryWriter(0, true);
18
+ var context = _objectSpread(_objectSpread({}, getTwkbPrecision(5, 0, 0)), {}, {
19
+ hasZ: options === null || options === void 0 ? void 0 : options.hasZ,
20
+ hasM: options === null || options === void 0 ? void 0 : options.hasM
21
+ });
22
+ encodeGeometry(writer, geometry, context);
23
+ return writer.arrayBuffer;
24
+ }
25
+ function encodeGeometry(writer, geometry, context) {
26
+ switch (geometry.type) {
27
+ case 'Point':
28
+ return encodePoint(writer, context, geometry);
29
+ case 'LineString':
30
+ return encodeLineString(writer, context, geometry);
31
+ case 'Polygon':
32
+ return encodePolygon(writer, context, geometry);
33
+ case 'MultiPoint':
34
+ return encodeMultiPoint(writer, context, geometry);
35
+ case 'MultiLineString':
36
+ return encodeMultiLineString(writer, context, geometry);
37
+ case 'MultiPolygon':
38
+ return encodeMultiPolygon(writer, context, geometry);
39
+ case 'GeometryCollection':
40
+ return encodeGeometryCollection(writer, context, geometry);
41
+ default:
42
+ throw new Error('unsupported geometry type');
43
+ }
44
+ }
45
+ function encodePoint(writer, context, point) {
46
+ var isEmpty = point.coordinates.length === 0 || point[0] === 'undefined' || point[1] === 'undefined';
47
+ writeTwkbHeader(writer, context, _parseWkbHeader.WKBGeometryType.Point, isEmpty);
48
+ if (!isEmpty) {
49
+ var previousPoint = [0, 0, 0, 0];
50
+ writeTwkbPoint(writer, context, point.coordinates, previousPoint);
51
+ }
52
+ }
53
+ function encodeLineString(writer, context, lineString) {
54
+ var points = lineString.coordinates;
55
+ var isEmpty = points.length === 0;
56
+ writeTwkbHeader(writer, context, _parseWkbHeader.WKBGeometryType.LineString, isEmpty);
57
+ if (!isEmpty) {
58
+ writer.writeVarInt(points.length);
59
+ var previousPoint = [0, 0, 0, 0];
60
+ var _iterator = _createForOfIteratorHelper(points),
61
+ _step;
62
+ try {
63
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
64
+ var point = _step.value;
65
+ writeTwkbPoint(writer, context, point, previousPoint);
66
+ }
67
+ } catch (err) {
68
+ _iterator.e(err);
69
+ } finally {
70
+ _iterator.f();
71
+ }
72
+ }
73
+ return writer.arrayBuffer;
74
+ }
75
+ function encodePolygon(writer, context, polygon) {
76
+ var polygonRings = polygon.coordinates;
77
+ var isEmpty = polygonRings.length === 0;
78
+ writeTwkbHeader(writer, context, _parseWkbHeader.WKBGeometryType.Polygon, isEmpty);
79
+ if (!isEmpty) {
80
+ writer.writeVarInt(polygonRings.length);
81
+ var previousPoint = [0, 0, 0, 0];
82
+ var _iterator2 = _createForOfIteratorHelper(polygonRings),
83
+ _step2;
84
+ try {
85
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
86
+ var ring = _step2.value;
87
+ writer.writeVarInt(ring.length);
88
+ var _iterator3 = _createForOfIteratorHelper(ring),
89
+ _step3;
90
+ try {
91
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
92
+ var point = _step3.value;
93
+ writeTwkbPoint(writer, context, previousPoint, point);
94
+ }
95
+ } catch (err) {
96
+ _iterator3.e(err);
97
+ } finally {
98
+ _iterator3.f();
99
+ }
100
+ }
101
+ } catch (err) {
102
+ _iterator2.e(err);
103
+ } finally {
104
+ _iterator2.f();
105
+ }
106
+ }
107
+ return writer.arrayBuffer;
108
+ }
109
+ function encodeMultiPoint(writer, context, multiPoint) {
110
+ var points = multiPoint.coordinates;
111
+ var isEmpty = points.length === 0;
112
+ writeTwkbHeader(writer, context, _parseWkbHeader.WKBGeometryType.MultiPoint, isEmpty);
113
+ if (!isEmpty) {
114
+ writer.writeVarInt(points.length);
115
+ var previousPoint = [0, 0, 0, 0];
116
+ for (var i = 0; i < points.length; i++) {
117
+ writeTwkbPoint(writer, context, previousPoint, points[i]);
118
+ }
119
+ }
120
+ }
121
+ function encodeMultiLineString(writer, context, multiLineStrings) {
122
+ var lineStrings = multiLineStrings.coordinates;
123
+ var isEmpty = lineStrings.length === 0;
124
+ writeTwkbHeader(writer, context, _parseWkbHeader.WKBGeometryType.MultiLineString, isEmpty);
125
+ if (!isEmpty) {
126
+ writer.writeVarInt(lineStrings.length);
127
+ var previousPoint = [0, 0, 0, 0];
128
+ var _iterator4 = _createForOfIteratorHelper(lineStrings),
129
+ _step4;
130
+ try {
131
+ for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
132
+ var lineString = _step4.value;
133
+ writer.writeVarInt(lineString.length);
134
+ var _iterator5 = _createForOfIteratorHelper(lineString),
135
+ _step5;
136
+ try {
137
+ for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
138
+ var point = _step5.value;
139
+ writeTwkbPoint(writer, context, previousPoint, point);
140
+ }
141
+ } catch (err) {
142
+ _iterator5.e(err);
143
+ } finally {
144
+ _iterator5.f();
145
+ }
146
+ }
147
+ } catch (err) {
148
+ _iterator4.e(err);
149
+ } finally {
150
+ _iterator4.f();
151
+ }
152
+ }
153
+ return writer.arrayBuffer;
154
+ }
155
+ function encodeMultiPolygon(writer, context, multiPolygon) {
156
+ var coordinates = multiPolygon.coordinates;
157
+ var isEmpty = coordinates.length === 0;
158
+ writeTwkbHeader(writer, context, _parseWkbHeader.WKBGeometryType.MultiPolygon, isEmpty);
159
+ if (!isEmpty) {
160
+ var polygons = coordinates;
161
+ writer.writeVarInt(polygons.length);
162
+ var previousPoint = [0, 0, 0, 0];
163
+ var _iterator6 = _createForOfIteratorHelper(polygons),
164
+ _step6;
165
+ try {
166
+ for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
167
+ var polygonRings = _step6.value;
168
+ writer.writeVarInt(polygonRings.length);
169
+ var _iterator7 = _createForOfIteratorHelper(polygonRings),
170
+ _step7;
171
+ try {
172
+ for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
173
+ var ring = _step7.value;
174
+ writer.writeVarInt(ring.length);
175
+ var _iterator8 = _createForOfIteratorHelper(ring),
176
+ _step8;
177
+ try {
178
+ for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
179
+ var point = _step8.value;
180
+ writeTwkbPoint(writer, context, previousPoint, point);
181
+ }
182
+ } catch (err) {
183
+ _iterator8.e(err);
184
+ } finally {
185
+ _iterator8.f();
186
+ }
187
+ }
188
+ } catch (err) {
189
+ _iterator7.e(err);
190
+ } finally {
191
+ _iterator7.f();
192
+ }
193
+ }
194
+ } catch (err) {
195
+ _iterator6.e(err);
196
+ } finally {
197
+ _iterator6.f();
198
+ }
199
+ }
200
+ }
201
+ function encodeGeometryCollection(writer, context, geometryCollection) {
202
+ var geometries = geometryCollection.geometries;
203
+ var isEmpty = geometries.length === 0;
204
+ writeTwkbHeader(writer, context, _parseWkbHeader.WKBGeometryType.GeometryCollection, isEmpty);
205
+ if (geometries.length > 0) {
206
+ writer.writeVarInt(geometries.length);
207
+ var _iterator9 = _createForOfIteratorHelper(geometries),
208
+ _step9;
209
+ try {
210
+ for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {
211
+ var geometry = _step9.value;
212
+ encodeGeometry(writer, geometry, context);
213
+ }
214
+ } catch (err) {
215
+ _iterator9.e(err);
216
+ } finally {
217
+ _iterator9.f();
218
+ }
219
+ }
220
+ }
221
+ function writeTwkbHeader(writer, context, geometryType, isEmpty) {
222
+ var type = (zigZagEncode(context.xy) << 4) + geometryType;
223
+ var metadataHeader = context.hasZ || context.hasM ? 1 << 3 : 0;
224
+ metadataHeader += isEmpty ? 1 << 4 : 0;
225
+ writer.writeUInt8(type);
226
+ writer.writeUInt8(metadataHeader);
227
+ if (context.hasZ || context.hasM) {
228
+ var extendedPrecision = 0;
229
+ if (context.hasZ) {
230
+ extendedPrecision |= 0x1;
231
+ }
232
+ if (context.hasM) {
233
+ extendedPrecision |= 0x2;
234
+ }
235
+ writer.writeUInt8(extendedPrecision);
236
+ }
237
+ }
238
+ function writeTwkbPoint(writer, context, point, previousPoint) {
239
+ var x = point[0] * context.xyFactor;
240
+ var y = point[1] * context.xyFactor;
241
+ var z = point[2] * context.zFactor;
242
+ var m = point[3] * context.mFactor;
243
+ writer.writeVarInt(zigZagEncode(x - previousPoint[0]));
244
+ writer.writeVarInt(zigZagEncode(y - previousPoint[1]));
245
+ if (context.hasZ) {
246
+ writer.writeVarInt(zigZagEncode(z - previousPoint[2]));
247
+ }
248
+ if (context.hasM) {
249
+ writer.writeVarInt(zigZagEncode(m - previousPoint[3]));
250
+ }
251
+ previousPoint[0] = x;
252
+ previousPoint[1] = y;
253
+ previousPoint[2] = z;
254
+ previousPoint[3] = m;
255
+ }
256
+ function zigZagEncode(value) {
257
+ return value << 1 ^ value >> 31;
258
+ }
259
+ function getTwkbPrecision(xyPrecision, zPrecision, mPrecision) {
260
+ return {
261
+ xy: xyPrecision,
262
+ z: zPrecision,
263
+ m: mPrecision,
264
+ xyFactor: Math.pow(10, xyPrecision),
265
+ zFactor: Math.pow(10, zPrecision),
266
+ mFactor: Math.pow(10, mPrecision)
267
+ };
268
+ }
269
+ //# sourceMappingURL=encode-twkb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encode-twkb.js","names":["_binaryWriter","require","_parseWkbHeader","_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","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","arguments","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","encodeTWKB","geometry","options","writer","BinaryWriter","context","getTwkbPrecision","hasZ","hasM","encodeGeometry","arrayBuffer","type","encodePoint","encodeLineString","encodePolygon","encodeMultiPoint","encodeMultiLineString","encodeMultiPolygon","encodeGeometryCollection","Error","point","isEmpty","coordinates","writeTwkbHeader","WKBGeometryType","Point","previousPoint","writeTwkbPoint","lineString","points","LineString","writeVarInt","_iterator","_step","polygon","polygonRings","Polygon","_iterator2","_step2","ring","_iterator3","_step3","multiPoint","MultiPoint","multiLineStrings","lineStrings","MultiLineString","_iterator4","_step4","_iterator5","_step5","multiPolygon","MultiPolygon","polygons","_iterator6","_step6","_iterator7","_step7","_iterator8","_step8","geometryCollection","geometries","GeometryCollection","_iterator9","_step9","geometryType","zigZagEncode","xy","metadataHeader","writeUInt8","extendedPrecision","x","xyFactor","y","z","zFactor","m","mFactor","xyPrecision","zPrecision","mPrecision","Math","pow"],"sources":["../../../src/lib/encode-twkb.ts"],"sourcesContent":["// loaders.gl, MIT license\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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"}
@@ -4,9 +4,10 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.default = encodeWKB;
7
+ exports.WKB = void 0;
8
+ exports.encodeWKB = encodeWKB;
8
9
  var _toArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toArray"));
9
- var _binaryWriter = _interopRequireDefault(require("./utils/binary-writer"));
10
+ var _binaryWriter = require("./utils/binary-writer");
10
11
  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
12
  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
13
  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; }
@@ -19,7 +20,8 @@ var WKB = function (WKB) {
19
20
  WKB[WKB["MultiPolygon"] = 6] = "MultiPolygon";
20
21
  WKB[WKB["GeometryCollection"] = 7] = "GeometryCollection";
21
22
  return WKB;
22
- }(WKB || {});
23
+ }({});
24
+ exports.WKB = WKB;
23
25
  function encodeWKB(geometry) {
24
26
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
25
27
  if (geometry.type === 'Feature') {
@@ -70,7 +72,7 @@ function getGeometrySize(geometry, options) {
70
72
  }
71
73
  }
72
74
  function encodePoint(coordinates, options) {
73
- var writer = new _binaryWriter.default(getPointSize(options));
75
+ var writer = new _binaryWriter.BinaryWriter(getPointSize(options));
74
76
  writer.writeInt8(1);
75
77
  writeWkbType(writer, WKB.Point, options);
76
78
  if (typeof coordinates[0] === 'undefined' && typeof coordinates[1] === 'undefined') {
@@ -103,7 +105,7 @@ function getPointSize(options) {
103
105
  }
104
106
  function encodeLineString(coordinates, options) {
105
107
  var size = getLineStringSize(coordinates, options);
106
- var writer = new _binaryWriter.default(size);
108
+ var writer = new _binaryWriter.BinaryWriter(size);
107
109
  writer.writeInt8(1);
108
110
  writeWkbType(writer, WKB.LineString, options);
109
111
  writer.writeUInt32LE(coordinates.length);
@@ -126,7 +128,7 @@ function getLineStringSize(coordinates, options) {
126
128
  return 1 + 4 + 4 + coordinates.length * coordinateSize;
127
129
  }
128
130
  function encodePolygon(coordinates, options) {
129
- var writer = new _binaryWriter.default(getPolygonSize(coordinates, options));
131
+ var writer = new _binaryWriter.BinaryWriter(getPolygonSize(coordinates, options));
130
132
  writer.writeInt8(1);
131
133
  writeWkbType(writer, WKB.Polygon, options);
132
134
  var _coordinates = (0, _toArray2.default)(coordinates),
@@ -200,7 +202,7 @@ function getPolygonSize(coordinates, options) {
200
202
  return size;
201
203
  }
202
204
  function encodeMultiPoint(multiPoint, options) {
203
- var writer = new _binaryWriter.default(getMultiPointSize(multiPoint, options));
205
+ var writer = new _binaryWriter.BinaryWriter(getMultiPointSize(multiPoint, options));
204
206
  var points = multiPoint.coordinates;
205
207
  writer.writeInt8(1);
206
208
  writeWkbType(writer, WKB.MultiPoint, options);
@@ -227,7 +229,7 @@ function getMultiPointSize(multiPoint, options) {
227
229
  return 1 + 4 + 4 + points.length * coordinateSize;
228
230
  }
229
231
  function encodeMultiLineString(multiLineString, options) {
230
- var writer = new _binaryWriter.default(getMultiLineStringSize(multiLineString, options));
232
+ var writer = new _binaryWriter.BinaryWriter(getMultiLineStringSize(multiLineString, options));
231
233
  var lineStrings = multiLineString.coordinates;
232
234
  writer.writeInt8(1);
233
235
  writeWkbType(writer, WKB.MultiLineString, options);
@@ -265,7 +267,7 @@ function getMultiLineStringSize(multiLineString, options) {
265
267
  return size;
266
268
  }
267
269
  function encodeMultiPolygon(multiPolygon, options) {
268
- var writer = new _binaryWriter.default(getMultiPolygonSize(multiPolygon, options));
270
+ var writer = new _binaryWriter.BinaryWriter(getMultiPolygonSize(multiPolygon, options));
269
271
  var polygons = multiPolygon.coordinates;
270
272
  writer.writeInt8(1);
271
273
  writeWkbType(writer, WKB.MultiPolygon, options);
@@ -303,7 +305,7 @@ function getMultiPolygonSize(multiPolygon, options) {
303
305
  return size;
304
306
  }
305
307
  function encodeGeometryCollection(collection, options) {
306
- var writer = new _binaryWriter.default(getGeometryCollectionSize(collection, options));
308
+ var writer = new _binaryWriter.BinaryWriter(getGeometryCollectionSize(collection, options));
307
309
  writer.writeInt8(1);
308
310
  writeWkbType(writer, WKB.GeometryCollection, options);
309
311
  writer.writeUInt32LE(collection.geometries.length);