@loaders.gl/tiles 5.0.0-alpha.12 → 5.0.0-alpha.13

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 (716) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +18 -72
  3. package/dist/dist.dev.js +6979 -42928
  4. package/dist/dist.min.js +3 -22
  5. package/dist/image-set.d.ts +1 -1
  6. package/dist/image-set.d.ts.map +1 -1
  7. package/dist/index.cjs +2847 -8781
  8. package/dist/index.cjs.map +3 -4
  9. package/dist/index.d.ts +4 -45
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +3 -27
  12. package/dist/index.js.map +1 -1
  13. package/dist/mlt/bundled.d.ts +3 -0
  14. package/dist/mlt/bundled.d.ts.map +1 -0
  15. package/dist/mlt/bundled.js +5 -0
  16. package/dist/mlt/bundled.js.map +1 -0
  17. package/dist/mlt/index.cjs +3701 -0
  18. package/dist/mlt/index.cjs.map +6 -0
  19. package/dist/mlt/index.d.ts +10 -0
  20. package/dist/mlt/index.d.ts.map +1 -0
  21. package/dist/mlt/index.js +12 -0
  22. package/dist/mlt/index.js.map +1 -0
  23. package/dist/mlt/lib/encode-mlt-geometry.d.ts +6 -0
  24. package/dist/mlt/lib/encode-mlt-geometry.d.ts.map +1 -0
  25. package/dist/mlt/lib/encode-mlt-geometry.js +150 -0
  26. package/dist/mlt/lib/encode-mlt-geometry.js.map +1 -0
  27. package/dist/mlt/lib/encode-mlt-streams.d.ts +13 -0
  28. package/dist/mlt/lib/encode-mlt-streams.d.ts.map +1 -0
  29. package/dist/mlt/lib/encode-mlt-streams.js +57 -0
  30. package/dist/mlt/lib/encode-mlt-streams.js.map +1 -0
  31. package/dist/mlt/lib/encode-mlt.d.ts +6 -0
  32. package/dist/mlt/lib/encode-mlt.d.ts.map +1 -0
  33. package/dist/mlt/lib/encode-mlt.js +174 -0
  34. package/dist/mlt/lib/encode-mlt.js.map +1 -0
  35. package/dist/mlt/lib/parse-mlt.d.ts +11 -0
  36. package/dist/mlt/lib/parse-mlt.d.ts.map +1 -0
  37. package/dist/mlt/lib/parse-mlt.js +675 -0
  38. package/dist/mlt/lib/parse-mlt.js.map +1 -0
  39. package/dist/mlt/mlt-format.d.ts +14 -0
  40. package/dist/mlt/mlt-format.d.ts.map +1 -0
  41. package/dist/mlt/mlt-format.js +17 -0
  42. package/dist/mlt/mlt-format.js.map +1 -0
  43. package/dist/mlt/mlt-loader-with-parser.d.ts +91 -0
  44. package/dist/mlt/mlt-loader-with-parser.d.ts.map +1 -0
  45. package/dist/mlt/mlt-loader-with-parser.js +29 -0
  46. package/dist/mlt/mlt-loader-with-parser.js.map +1 -0
  47. package/dist/mlt/mlt-loader.d.ts +115 -0
  48. package/dist/mlt/mlt-loader.d.ts.map +1 -0
  49. package/dist/mlt/mlt-loader.js +38 -0
  50. package/dist/mlt/mlt-loader.js.map +1 -0
  51. package/dist/mlt/mlt-source-loader.d.ts +82 -0
  52. package/dist/mlt/mlt-source-loader.d.ts.map +1 -0
  53. package/dist/mlt/mlt-source-loader.js +179 -0
  54. package/dist/mlt/mlt-source-loader.js.map +1 -0
  55. package/dist/mlt/mlt-writer.d.ts +45 -0
  56. package/dist/mlt/mlt-writer.d.ts.map +1 -0
  57. package/dist/mlt/mlt-writer.js +21 -0
  58. package/dist/mlt/mlt-writer.js.map +1 -0
  59. package/dist/mlt/unbundled.d.ts +3 -0
  60. package/dist/mlt/unbundled.d.ts.map +1 -0
  61. package/dist/mlt/unbundled.js +5 -0
  62. package/dist/mlt/unbundled.js.map +1 -0
  63. package/dist/mvt/arrow-table-tile-source-loader-types.d.ts +36 -0
  64. package/dist/mvt/arrow-table-tile-source-loader-types.d.ts.map +1 -0
  65. package/dist/mvt/arrow-table-tile-source-loader-types.js +36 -0
  66. package/dist/mvt/arrow-table-tile-source-loader-types.js.map +1 -0
  67. package/dist/mvt/arrow-table-tile-source-loader.cjs +6343 -0
  68. package/dist/mvt/arrow-table-tile-source-loader.cjs.map +6 -0
  69. package/dist/mvt/arrow-table-tile-source-loader.d.ts +69 -0
  70. package/dist/mvt/arrow-table-tile-source-loader.d.ts.map +1 -0
  71. package/dist/mvt/arrow-table-tile-source-loader.js +216 -0
  72. package/dist/mvt/arrow-table-tile-source-loader.js.map +1 -0
  73. package/dist/mvt/arrow-table-tile-source-types.d.ts +21 -0
  74. package/dist/mvt/arrow-table-tile-source-types.d.ts.map +1 -0
  75. package/dist/mvt/arrow-table-tile-source-types.js +6 -0
  76. package/dist/mvt/arrow-table-tile-source-types.js.map +1 -0
  77. package/dist/mvt/bundled.d.ts +6 -0
  78. package/dist/mvt/bundled.d.ts.map +1 -0
  79. package/dist/mvt/bundled.js +7 -0
  80. package/dist/mvt/bundled.js.map +1 -0
  81. package/dist/mvt/dist.dev.js +46689 -0
  82. package/dist/mvt/dist.min.js +94 -0
  83. package/dist/mvt/index.cjs +10095 -0
  84. package/dist/mvt/index.cjs.map +6 -0
  85. package/dist/mvt/index.d.ts +28 -0
  86. package/dist/mvt/index.d.ts.map +1 -0
  87. package/dist/mvt/index.js +27 -0
  88. package/dist/mvt/index.js.map +1 -0
  89. package/dist/mvt/lib/encode-mvt-arrow.d.ts +6 -0
  90. package/dist/mvt/lib/encode-mvt-arrow.d.ts.map +1 -0
  91. package/dist/mvt/lib/encode-mvt-arrow.js +225 -0
  92. package/dist/mvt/lib/encode-mvt-arrow.js.map +1 -0
  93. package/dist/mvt/lib/encode-mvt.d.ts +30 -0
  94. package/dist/mvt/lib/encode-mvt.d.ts.map +1 -0
  95. package/dist/mvt/lib/encode-mvt.js +20 -0
  96. package/dist/mvt/lib/encode-mvt.js.map +1 -0
  97. package/dist/mvt/lib/get-schemas-from-tilejson.d.ts +4 -0
  98. package/dist/mvt/lib/get-schemas-from-tilejson.d.ts.map +1 -0
  99. package/dist/mvt/lib/get-schemas-from-tilejson.js +56 -0
  100. package/dist/mvt/lib/get-schemas-from-tilejson.js.map +1 -0
  101. package/dist/mvt/lib/is-longitude-latitude-crs.d.ts +3 -0
  102. package/dist/mvt/lib/is-longitude-latitude-crs.d.ts.map +1 -0
  103. package/dist/mvt/lib/is-longitude-latitude-crs.js +13 -0
  104. package/dist/mvt/lib/is-longitude-latitude-crs.js.map +1 -0
  105. package/dist/mvt/lib/mapbox-vt-pbf/geojson-wrapper.d.ts +25 -0
  106. package/dist/mvt/lib/mapbox-vt-pbf/geojson-wrapper.d.ts.map +1 -0
  107. package/dist/mvt/lib/mapbox-vt-pbf/geojson-wrapper.js +73 -0
  108. package/dist/mvt/lib/mapbox-vt-pbf/geojson-wrapper.js.map +1 -0
  109. package/dist/mvt/lib/mapbox-vt-pbf/to-vector-tile.d.ts +52 -0
  110. package/dist/mvt/lib/mapbox-vt-pbf/to-vector-tile.d.ts.map +1 -0
  111. package/dist/mvt/lib/mapbox-vt-pbf/to-vector-tile.js +165 -0
  112. package/dist/mvt/lib/mapbox-vt-pbf/to-vector-tile.js.map +1 -0
  113. package/dist/mvt/lib/mvt-pbf/mvt-constants.d.ts +116 -0
  114. package/dist/mvt/lib/mvt-pbf/mvt-constants.d.ts.map +1 -0
  115. package/dist/mvt/lib/mvt-pbf/mvt-constants.js +127 -0
  116. package/dist/mvt/lib/mvt-pbf/mvt-constants.js.map +1 -0
  117. package/dist/mvt/lib/mvt-pbf/mvt-types.d.ts +17 -0
  118. package/dist/mvt/lib/mvt-pbf/mvt-types.d.ts.map +1 -0
  119. package/dist/mvt/lib/mvt-pbf/mvt-types.js +5 -0
  120. package/dist/mvt/lib/mvt-pbf/mvt-types.js.map +1 -0
  121. package/dist/mvt/lib/mvt-pbf/parse-geometry-from-pbf.d.ts +77 -0
  122. package/dist/mvt/lib/mvt-pbf/parse-geometry-from-pbf.d.ts.map +1 -0
  123. package/dist/mvt/lib/mvt-pbf/parse-geometry-from-pbf.js +235 -0
  124. package/dist/mvt/lib/mvt-pbf/parse-geometry-from-pbf.js.map +1 -0
  125. package/dist/mvt/lib/mvt-pbf/parse-mvt-from-pbf.d.ts +25 -0
  126. package/dist/mvt/lib/mvt-pbf/parse-mvt-from-pbf.d.ts.map +1 -0
  127. package/dist/mvt/lib/mvt-pbf/parse-mvt-from-pbf.js +263 -0
  128. package/dist/mvt/lib/mvt-pbf/parse-mvt-from-pbf.js.map +1 -0
  129. package/dist/mvt/lib/mvt-pbf/write-mvt-to-pbf.d.ts +4 -0
  130. package/dist/mvt/lib/mvt-pbf/write-mvt-to-pbf.d.ts.map +1 -0
  131. package/dist/mvt/lib/mvt-pbf/write-mvt-to-pbf.js +134 -0
  132. package/dist/mvt/lib/mvt-pbf/write-mvt-to-pbf.js.map +1 -0
  133. package/dist/mvt/lib/mvt-worker-transport.d.ts +15 -0
  134. package/dist/mvt/lib/mvt-worker-transport.d.ts.map +1 -0
  135. package/dist/mvt/lib/mvt-worker-transport.js +54 -0
  136. package/dist/mvt/lib/mvt-worker-transport.js.map +1 -0
  137. package/dist/mvt/lib/parse-mvt-geojson.d.ts +6 -0
  138. package/dist/mvt/lib/parse-mvt-geojson.d.ts.map +1 -0
  139. package/dist/mvt/lib/parse-mvt-geojson.js +48 -0
  140. package/dist/mvt/lib/parse-mvt-geojson.js.map +1 -0
  141. package/dist/mvt/lib/parse-mvt.d.ts +14 -0
  142. package/dist/mvt/lib/parse-mvt.d.ts.map +1 -0
  143. package/dist/mvt/lib/parse-mvt.js +105 -0
  144. package/dist/mvt/lib/parse-mvt.js.map +1 -0
  145. package/dist/mvt/lib/parse-tilejson.d.ts +74 -0
  146. package/dist/mvt/lib/parse-tilejson.d.ts.map +1 -0
  147. package/dist/mvt/lib/parse-tilejson.js +267 -0
  148. package/dist/mvt/lib/parse-tilejson.js.map +1 -0
  149. package/dist/mvt/lib/resolve-table-tile-parameters.d.ts +4 -0
  150. package/dist/mvt/lib/resolve-table-tile-parameters.d.ts.map +1 -0
  151. package/dist/mvt/lib/resolve-table-tile-parameters.js +16 -0
  152. package/dist/mvt/lib/resolve-table-tile-parameters.js.map +1 -0
  153. package/dist/mvt/lib/types.d.ts +88 -0
  154. package/dist/mvt/lib/types.d.ts.map +1 -0
  155. package/dist/mvt/lib/types.js.map +1 -0
  156. package/dist/mvt/lib/utils/geometry-utils.d.ts +83 -0
  157. package/dist/mvt/lib/utils/geometry-utils.d.ts.map +1 -0
  158. package/dist/mvt/lib/utils/geometry-utils.js +211 -0
  159. package/dist/mvt/lib/utils/geometry-utils.js.map +1 -0
  160. package/dist/mvt/lib/vector-tile/vector-tile-feature.d.ts +72 -0
  161. package/dist/mvt/lib/vector-tile/vector-tile-feature.d.ts.map +1 -0
  162. package/dist/mvt/lib/vector-tile/vector-tile-feature.js +350 -0
  163. package/dist/mvt/lib/vector-tile/vector-tile-feature.js.map +1 -0
  164. package/dist/mvt/lib/vector-tile/vector-tile-layer.d.ts +29 -0
  165. package/dist/mvt/lib/vector-tile/vector-tile-layer.d.ts.map +1 -0
  166. package/dist/mvt/lib/vector-tile/vector-tile-layer.js +108 -0
  167. package/dist/mvt/lib/vector-tile/vector-tile-layer.js.map +1 -0
  168. package/dist/mvt/lib/vector-tile/vector-tile.d.ts +9 -0
  169. package/dist/mvt/lib/vector-tile/vector-tile.d.ts.map +1 -0
  170. package/dist/mvt/lib/vector-tile/vector-tile.js +28 -0
  171. package/dist/mvt/lib/vector-tile/vector-tile.js.map +1 -0
  172. package/dist/mvt/lib/vector-tiler/arrow-tile.d.ts +6 -0
  173. package/dist/mvt/lib/vector-tiler/arrow-tile.d.ts.map +1 -0
  174. package/dist/mvt/lib/vector-tiler/arrow-tile.js +84 -0
  175. package/dist/mvt/lib/vector-tiler/arrow-tile.js.map +1 -0
  176. package/dist/mvt/lib/vector-tiler/features/clip-features.d.ts +16 -0
  177. package/dist/mvt/lib/vector-tiler/features/clip-features.d.ts.map +1 -0
  178. package/dist/mvt/lib/vector-tiler/features/clip-features.js +211 -0
  179. package/dist/mvt/lib/vector-tiler/features/clip-features.js.map +1 -0
  180. package/dist/mvt/lib/vector-tiler/features/convert-feature.d.ts +18 -0
  181. package/dist/mvt/lib/vector-tiler/features/convert-feature.d.ts.map +1 -0
  182. package/dist/mvt/lib/vector-tiler/features/convert-feature.js +161 -0
  183. package/dist/mvt/lib/vector-tiler/features/convert-feature.js.map +1 -0
  184. package/dist/mvt/lib/vector-tiler/features/proto-feature.d.ts +30 -0
  185. package/dist/mvt/lib/vector-tiler/features/proto-feature.d.ts.map +1 -0
  186. package/dist/mvt/lib/vector-tiler/features/proto-feature.js +53 -0
  187. package/dist/mvt/lib/vector-tiler/features/proto-feature.js.map +1 -0
  188. package/dist/mvt/lib/vector-tiler/features/simplify-path.d.ts +10 -0
  189. package/dist/mvt/lib/vector-tiler/features/simplify-path.d.ts.map +1 -0
  190. package/dist/mvt/lib/vector-tiler/features/simplify-path.js +67 -0
  191. package/dist/mvt/lib/vector-tiler/features/simplify-path.js.map +1 -0
  192. package/dist/mvt/lib/vector-tiler/features/wrap-features.d.ts +17 -0
  193. package/dist/mvt/lib/vector-tiler/features/wrap-features.d.ts.map +1 -0
  194. package/dist/mvt/lib/vector-tiler/features/wrap-features.js +95 -0
  195. package/dist/mvt/lib/vector-tiler/features/wrap-features.js.map +1 -0
  196. package/dist/mvt/lib/vector-tiler/proto-tile.d.ts +40 -0
  197. package/dist/mvt/lib/vector-tiler/proto-tile.d.ts.map +1 -0
  198. package/dist/mvt/lib/vector-tiler/proto-tile.js +139 -0
  199. package/dist/mvt/lib/vector-tiler/proto-tile.js.map +1 -0
  200. package/dist/mvt/lib/vector-tiler/tile-to-geojson.d.ts +12 -0
  201. package/dist/mvt/lib/vector-tiler/tile-to-geojson.d.ts.map +1 -0
  202. package/dist/mvt/lib/vector-tiler/tile-to-geojson.js +81 -0
  203. package/dist/mvt/lib/vector-tiler/tile-to-geojson.js.map +1 -0
  204. package/dist/mvt/lib/vector-tiler/transform-tile.d.ts +7 -0
  205. package/dist/mvt/lib/vector-tiler/transform-tile.d.ts.map +1 -0
  206. package/dist/mvt/lib/vector-tiler/transform-tile.js +42 -0
  207. package/dist/mvt/lib/vector-tiler/transform-tile.js.map +1 -0
  208. package/dist/mvt/map-style-format.d.ts +13 -0
  209. package/dist/mvt/map-style-format.d.ts.map +1 -0
  210. package/dist/mvt/map-style-format.js +16 -0
  211. package/dist/mvt/map-style-format.js.map +1 -0
  212. package/dist/mvt/map-style-loader-with-parser.d.ts +26 -0
  213. package/dist/mvt/map-style-loader-with-parser.d.ts.map +1 -0
  214. package/dist/mvt/map-style-loader-with-parser.js +38 -0
  215. package/dist/mvt/map-style-loader-with-parser.js.map +1 -0
  216. package/dist/mvt/map-style-loader.d.ts +44 -0
  217. package/dist/mvt/map-style-loader.d.ts.map +1 -0
  218. package/dist/mvt/map-style-loader.js +25 -0
  219. package/dist/mvt/map-style-loader.js.map +1 -0
  220. package/dist/mvt/map-style-schema.d.ts +58 -0
  221. package/dist/mvt/map-style-schema.d.ts.map +1 -0
  222. package/dist/mvt/map-style-schema.js +47 -0
  223. package/dist/mvt/map-style-schema.js.map +1 -0
  224. package/dist/mvt/map-style.d.ts +110 -0
  225. package/dist/mvt/map-style.d.ts.map +1 -0
  226. package/dist/mvt/map-style.js +90 -0
  227. package/dist/mvt/map-style.js.map +1 -0
  228. package/dist/mvt/mvt-format.d.ts +14 -0
  229. package/dist/mvt/mvt-format.d.ts.map +1 -0
  230. package/dist/mvt/mvt-format.js +23 -0
  231. package/dist/mvt/mvt-format.js.map +1 -0
  232. package/dist/mvt/mvt-geojson-loader-types.d.ts +82 -0
  233. package/dist/mvt/mvt-geojson-loader-types.d.ts.map +1 -0
  234. package/dist/mvt/mvt-geojson-loader-types.js +34 -0
  235. package/dist/mvt/mvt-geojson-loader-types.js.map +1 -0
  236. package/dist/mvt/mvt-geojson-loader.cjs +1366 -0
  237. package/dist/mvt/mvt-geojson-loader.cjs.map +6 -0
  238. package/dist/mvt/mvt-geojson-loader.d.ts +32 -0
  239. package/dist/mvt/mvt-geojson-loader.d.ts.map +1 -0
  240. package/dist/mvt/mvt-geojson-loader.js +13 -0
  241. package/dist/mvt/mvt-geojson-loader.js.map +1 -0
  242. package/dist/mvt/mvt-loader-with-parser.d.ts +105 -0
  243. package/dist/mvt/mvt-loader-with-parser.d.ts.map +1 -0
  244. package/dist/mvt/mvt-loader-with-parser.js +21 -0
  245. package/dist/mvt/mvt-loader-with-parser.js.map +1 -0
  246. package/dist/mvt/mvt-loader.d.ts +129 -0
  247. package/dist/mvt/mvt-loader.d.ts.map +1 -0
  248. package/dist/mvt/mvt-loader.js +40 -0
  249. package/dist/mvt/mvt-loader.js.map +1 -0
  250. package/dist/mvt/mvt-source-loader.d.ts +102 -0
  251. package/dist/mvt/mvt-source-loader.d.ts.map +1 -0
  252. package/dist/mvt/mvt-source-loader.js +275 -0
  253. package/dist/mvt/mvt-source-loader.js.map +1 -0
  254. package/dist/mvt/mvt-writer.d.ts +28 -0
  255. package/dist/mvt/mvt-writer.d.ts.map +1 -0
  256. package/dist/mvt/mvt-writer.js +32 -0
  257. package/dist/mvt/mvt-writer.js.map +1 -0
  258. package/dist/mvt/table-tile-source-loader.d.ts +169 -0
  259. package/dist/mvt/table-tile-source-loader.d.ts.map +1 -0
  260. package/dist/mvt/table-tile-source-loader.js +478 -0
  261. package/dist/mvt/table-tile-source-loader.js.map +1 -0
  262. package/dist/mvt/tilejson-format.d.ts +13 -0
  263. package/dist/mvt/tilejson-format.d.ts.map +1 -0
  264. package/dist/mvt/tilejson-format.js +16 -0
  265. package/dist/mvt/tilejson-format.js.map +1 -0
  266. package/dist/mvt/tilejson-loader-with-parser.d.ts +13 -0
  267. package/dist/mvt/tilejson-loader-with-parser.d.ts.map +1 -0
  268. package/dist/mvt/tilejson-loader-with-parser.js +25 -0
  269. package/dist/mvt/tilejson-loader-with-parser.js.map +1 -0
  270. package/dist/mvt/tilejson-loader.d.ts +56 -0
  271. package/dist/mvt/tilejson-loader.d.ts.map +1 -0
  272. package/dist/mvt/tilejson-loader.js +28 -0
  273. package/dist/mvt/tilejson-loader.js.map +1 -0
  274. package/dist/mvt/tilejson-zod-schema.cjs +79 -0
  275. package/dist/mvt/tilejson-zod-schema.cjs.map +6 -0
  276. package/dist/mvt/tilejson-zod-schema.d.ts +218 -0
  277. package/dist/mvt/tilejson-zod-schema.d.ts.map +1 -0
  278. package/dist/mvt/tilejson-zod-schema.js +68 -0
  279. package/dist/mvt/tilejson-zod-schema.js.map +1 -0
  280. package/dist/mvt/tilejson.schema.json +197 -0
  281. package/dist/mvt/unbundled.d.ts +8 -0
  282. package/dist/mvt/unbundled.d.ts.map +1 -0
  283. package/dist/mvt/unbundled.js +8 -0
  284. package/dist/mvt/unbundled.js.map +1 -0
  285. package/dist/mvt/workers/mvt-worker-node.d.ts +2 -0
  286. package/dist/mvt/workers/mvt-worker-node.d.ts.map +1 -0
  287. package/dist/mvt/workers/mvt-worker-node.js +8 -0
  288. package/dist/mvt/workers/mvt-worker-node.js.map +1 -0
  289. package/dist/mvt/workers/mvt-worker.d.ts +2 -0
  290. package/dist/mvt/workers/mvt-worker.d.ts.map +1 -0
  291. package/dist/mvt/workers/mvt-worker.js +7 -0
  292. package/dist/mvt/workers/mvt-worker.js.map +1 -0
  293. package/dist/mvt-worker-node.js +72460 -0
  294. package/dist/mvt-worker-node.js.map +7 -0
  295. package/dist/mvt-worker.js +21239 -0
  296. package/dist/pmtiles/bundled.d.ts +3 -0
  297. package/dist/pmtiles/bundled.d.ts.map +1 -0
  298. package/dist/pmtiles/bundled.js +5 -0
  299. package/dist/pmtiles/bundled.js.map +1 -0
  300. package/dist/pmtiles/dist.dev.js +50530 -0
  301. package/dist/pmtiles/dist.min.js +94 -0
  302. package/dist/pmtiles/geoarrow.cjs +6718 -0
  303. package/dist/pmtiles/geoarrow.cjs.map +6 -0
  304. package/dist/pmtiles/geoarrow.d.ts +30 -0
  305. package/dist/pmtiles/geoarrow.d.ts.map +1 -0
  306. package/dist/pmtiles/geoarrow.js +143 -0
  307. package/dist/pmtiles/geoarrow.js.map +1 -0
  308. package/dist/pmtiles/index.cjs +8011 -0
  309. package/dist/pmtiles/index.cjs.map +6 -0
  310. package/dist/pmtiles/index.d.ts +14 -0
  311. package/dist/pmtiles/index.d.ts.map +1 -0
  312. package/dist/pmtiles/index.js +10 -0
  313. package/dist/pmtiles/index.js.map +1 -0
  314. package/dist/pmtiles/lib/blob-source.d.ts +14 -0
  315. package/dist/pmtiles/lib/blob-source.d.ts.map +1 -0
  316. package/dist/pmtiles/lib/blob-source.js +32 -0
  317. package/dist/pmtiles/lib/blob-source.js.map +1 -0
  318. package/dist/pmtiles/lib/encode-pmtiles.d.ts +8 -0
  319. package/dist/pmtiles/lib/encode-pmtiles.d.ts.map +1 -0
  320. package/dist/pmtiles/lib/encode-pmtiles.js +268 -0
  321. package/dist/pmtiles/lib/encode-pmtiles.js.map +1 -0
  322. package/dist/pmtiles/lib/parse-pmtiles.d.ts +52 -0
  323. package/dist/pmtiles/lib/parse-pmtiles.d.ts.map +1 -0
  324. package/dist/pmtiles/lib/parse-pmtiles.js +95 -0
  325. package/dist/pmtiles/lib/parse-pmtiles.js.map +1 -0
  326. package/dist/pmtiles/lib/range-request-source.d.ts +24 -0
  327. package/dist/pmtiles/lib/range-request-source.d.ts.map +1 -0
  328. package/dist/pmtiles/lib/range-request-source.js +45 -0
  329. package/dist/pmtiles/lib/range-request-source.js.map +1 -0
  330. package/dist/pmtiles/lib/version.d.ts +2 -0
  331. package/dist/pmtiles/lib/version.d.ts.map +1 -0
  332. package/dist/pmtiles/lib/version.js +8 -0
  333. package/dist/pmtiles/lib/version.js.map +1 -0
  334. package/dist/pmtiles/pmtiles-format.d.ts +14 -0
  335. package/dist/pmtiles/pmtiles-format.d.ts.map +1 -0
  336. package/dist/pmtiles/pmtiles-format.js +17 -0
  337. package/dist/pmtiles/pmtiles-format.js.map +1 -0
  338. package/dist/pmtiles/pmtiles-loader-with-parser.d.ts +30 -0
  339. package/dist/pmtiles/pmtiles-loader-with-parser.d.ts.map +1 -0
  340. package/dist/pmtiles/pmtiles-loader-with-parser.js +41 -0
  341. package/dist/pmtiles/pmtiles-loader-with-parser.js.map +1 -0
  342. package/dist/pmtiles/pmtiles-loader.d.ts +41 -0
  343. package/dist/pmtiles/pmtiles-loader.d.ts.map +1 -0
  344. package/dist/pmtiles/pmtiles-loader.js +20 -0
  345. package/dist/pmtiles/pmtiles-loader.js.map +1 -0
  346. package/dist/pmtiles/pmtiles-source-loader.d.ts +85 -0
  347. package/dist/pmtiles/pmtiles-source-loader.d.ts.map +1 -0
  348. package/dist/pmtiles/pmtiles-source-loader.js +239 -0
  349. package/dist/pmtiles/pmtiles-source-loader.js.map +1 -0
  350. package/dist/pmtiles/pmtiles-writer-types.d.ts +39 -0
  351. package/dist/pmtiles/pmtiles-writer-types.d.ts.map +1 -0
  352. package/dist/{point-cloud-tile-source-types.js → pmtiles/pmtiles-writer-types.js} +1 -1
  353. package/dist/pmtiles/pmtiles-writer-types.js.map +1 -0
  354. package/dist/pmtiles/pmtiles-writer.d.ts +22 -0
  355. package/dist/pmtiles/pmtiles-writer.d.ts.map +1 -0
  356. package/dist/pmtiles/pmtiles-writer.js +15 -0
  357. package/dist/pmtiles/pmtiles-writer.js.map +1 -0
  358. package/dist/pmtiles/raster.cjs +1183 -0
  359. package/dist/pmtiles/raster.cjs.map +6 -0
  360. package/dist/pmtiles/raster.d.ts +30 -0
  361. package/dist/pmtiles/raster.d.ts.map +1 -0
  362. package/dist/pmtiles/raster.js +212 -0
  363. package/dist/pmtiles/raster.js.map +1 -0
  364. package/dist/pmtiles/source-info.d.ts +25 -0
  365. package/dist/pmtiles/source-info.d.ts.map +1 -0
  366. package/dist/{types.js → pmtiles/source-info.js} +1 -1
  367. package/dist/pmtiles/source-info.js.map +1 -0
  368. package/dist/pmtiles/unbundled.d.ts +3 -0
  369. package/dist/pmtiles/unbundled.d.ts.map +1 -0
  370. package/dist/pmtiles/unbundled.js +5 -0
  371. package/dist/pmtiles/unbundled.js.map +1 -0
  372. package/dist/raster-set.d.ts +1 -1
  373. package/dist/raster-set.d.ts.map +1 -1
  374. package/dist/raster-set.js +1 -1
  375. package/dist/raster-set.js.map +1 -1
  376. package/dist/tile-matrix.cjs +81 -0
  377. package/dist/tile-matrix.cjs.map +6 -0
  378. package/dist/tile-matrix.d.ts +52 -0
  379. package/dist/tile-matrix.d.ts.map +1 -0
  380. package/dist/tile-matrix.js +75 -0
  381. package/dist/tile-matrix.js.map +1 -0
  382. package/dist/tileset-2d/tile-2d-header.d.ts +2 -2
  383. package/dist/tileset-2d/tile-2d-header.d.ts.map +1 -1
  384. package/dist/tileset-2d/tile-2d-header.js +11 -11
  385. package/dist/tileset-2d/tile-2d-header.js.map +1 -1
  386. package/dist/tileset-2d/tileset-2d.d.ts +19 -10
  387. package/dist/tileset-2d/tileset-2d.d.ts.map +1 -1
  388. package/dist/tileset-2d/tileset-2d.js +69 -15
  389. package/dist/tileset-2d/tileset-2d.js.map +1 -1
  390. package/package.json +101 -25
  391. package/src/image-set.ts +1 -1
  392. package/src/index.ts +8 -128
  393. package/src/mlt/bundled.ts +9 -0
  394. package/src/mlt/index.ts +18 -0
  395. package/src/mlt/lib/encode-mlt-geometry.ts +162 -0
  396. package/src/mlt/lib/encode-mlt-streams.ts +66 -0
  397. package/src/mlt/lib/encode-mlt.ts +215 -0
  398. package/src/mlt/lib/parse-mlt.ts +906 -0
  399. package/src/mlt/libs/mlt-decoder.cjs +4552 -0
  400. package/src/mlt/mlt-format.ts +19 -0
  401. package/src/mlt/mlt-loader-with-parser.ts +57 -0
  402. package/src/mlt/mlt-loader.ts +64 -0
  403. package/src/mlt/mlt-source-loader.ts +266 -0
  404. package/src/mlt/mlt-writer.ts +47 -0
  405. package/src/mlt/unbundled.ts +6 -0
  406. package/src/mvt/arrow-table-tile-source-loader-types.ts +55 -0
  407. package/src/mvt/arrow-table-tile-source-loader.ts +307 -0
  408. package/src/mvt/arrow-table-tile-source-types.ts +32 -0
  409. package/src/mvt/bundled.ts +14 -0
  410. package/src/mvt/index.ts +67 -0
  411. package/src/mvt/lib/encode-mvt-arrow.ts +273 -0
  412. package/src/mvt/lib/encode-mvt.ts +46 -0
  413. package/src/mvt/lib/get-schemas-from-tilejson.ts +64 -0
  414. package/src/mvt/lib/is-longitude-latitude-crs.ts +15 -0
  415. package/src/mvt/lib/mapbox-vt-pbf/geojson-to-vt.ts.disabled +76 -0
  416. package/src/mvt/lib/mapbox-vt-pbf/geojson-wrapper.ts +89 -0
  417. package/src/mvt/lib/mapbox-vt-pbf/to-vector-tile.ts +230 -0
  418. package/src/mvt/lib/mvt-pbf/mvt-constants.ts +135 -0
  419. package/src/mvt/lib/mvt-pbf/mvt-types.ts +22 -0
  420. package/src/mvt/lib/mvt-pbf/parse-geometry-from-pbf.ts +285 -0
  421. package/src/mvt/lib/mvt-pbf/parse-mvt-from-pbf.ts +310 -0
  422. package/src/mvt/lib/mvt-pbf/write-mvt-to-pbf.ts +162 -0
  423. package/src/mvt/lib/mvt-worker-transport.ts +74 -0
  424. package/src/mvt/lib/parse-mvt-geojson.ts +65 -0
  425. package/src/mvt/lib/parse-mvt.ts +145 -0
  426. package/src/mvt/lib/parse-tilejson.ts +397 -0
  427. package/src/mvt/lib/resolve-table-tile-parameters.ts +23 -0
  428. package/src/mvt/lib/types.ts +90 -0
  429. package/src/mvt/lib/utils/geometry-utils.ts +238 -0
  430. package/src/mvt/lib/vector-tile/LICENSE.txt +31 -0
  431. package/src/mvt/lib/vector-tile/vector-tile-feature.ts +430 -0
  432. package/src/mvt/lib/vector-tile/vector-tile-layer.ts +130 -0
  433. package/src/mvt/lib/vector-tile/vector-tile.ts +32 -0
  434. package/src/mvt/lib/vector-tiler/LICENSE +19 -0
  435. package/src/mvt/lib/vector-tiler/arrow-tile.ts +93 -0
  436. package/src/mvt/lib/vector-tiler/features/clip-features.ts +250 -0
  437. package/src/mvt/lib/vector-tiler/features/convert-feature.ts +213 -0
  438. package/src/mvt/lib/vector-tiler/features/proto-feature.ts +104 -0
  439. package/src/mvt/lib/vector-tiler/features/simplify-path.ts +84 -0
  440. package/src/mvt/lib/vector-tiler/features/wrap-features.ts +125 -0
  441. package/src/mvt/lib/vector-tiler/proto-tile.ts +217 -0
  442. package/src/mvt/lib/vector-tiler/tile-to-geojson.ts +104 -0
  443. package/src/mvt/lib/vector-tiler/transform-tile.ts +57 -0
  444. package/src/mvt/map-style-format.ts +18 -0
  445. package/src/mvt/map-style-loader-with-parser.ts +62 -0
  446. package/src/mvt/map-style-loader.ts +31 -0
  447. package/src/mvt/map-style-schema.ts +53 -0
  448. package/src/mvt/map-style.ts +218 -0
  449. package/src/mvt/mvt-format.ts +25 -0
  450. package/src/mvt/mvt-geojson-loader-types.ts +60 -0
  451. package/src/mvt/mvt-geojson-loader.ts +20 -0
  452. package/src/mvt/mvt-loader-with-parser.ts +53 -0
  453. package/src/mvt/mvt-loader.ts +73 -0
  454. package/src/mvt/mvt-source-loader.ts +410 -0
  455. package/src/mvt/mvt-writer.ts +35 -0
  456. package/src/mvt/table-tile-source-loader.ts +672 -0
  457. package/src/mvt/tilejson-format.ts +18 -0
  458. package/src/mvt/tilejson-loader-with-parser.ts +38 -0
  459. package/src/mvt/tilejson-loader.ts +42 -0
  460. package/src/mvt/tilejson-zod-schema.ts +199 -0
  461. package/src/mvt/unbundled.ts +13 -0
  462. package/src/mvt/workers/mvt-worker-node.ts +9 -0
  463. package/src/mvt/workers/mvt-worker.ts +8 -0
  464. package/src/pmtiles/bundled.ts +6 -0
  465. package/src/pmtiles/geoarrow.ts +188 -0
  466. package/src/pmtiles/index.ts +27 -0
  467. package/src/pmtiles/lib/blob-source.ts +41 -0
  468. package/src/pmtiles/lib/encode-pmtiles.ts +322 -0
  469. package/src/pmtiles/lib/parse-pmtiles.ts +180 -0
  470. package/src/pmtiles/lib/range-request-source.ts +60 -0
  471. package/src/pmtiles/lib/version.ts +8 -0
  472. package/src/pmtiles/pmtiles-format.ts +19 -0
  473. package/src/pmtiles/pmtiles-loader-with-parser.ts +60 -0
  474. package/src/pmtiles/pmtiles-loader.ts +30 -0
  475. package/src/pmtiles/pmtiles-source-loader.ts +346 -0
  476. package/src/pmtiles/pmtiles-writer-types.ts +45 -0
  477. package/src/pmtiles/pmtiles-writer.ts +26 -0
  478. package/src/pmtiles/raster.ts +289 -0
  479. package/src/pmtiles/source-info.ts +25 -0
  480. package/src/pmtiles/unbundled.ts +6 -0
  481. package/src/raster-set.ts +2 -2
  482. package/src/tile-matrix.ts +138 -0
  483. package/src/tileset-2d/tile-2d-header.ts +14 -13
  484. package/src/tileset-2d/tileset-2d.ts +81 -19
  485. package/dist/constants.d.ts +0 -38
  486. package/dist/constants.d.ts.map +0 -1
  487. package/dist/constants.js +0 -39
  488. package/dist/constants.js.map +0 -1
  489. package/dist/point-cloud/point-cloud-tile.d.ts +0 -47
  490. package/dist/point-cloud/point-cloud-tile.d.ts.map +0 -1
  491. package/dist/point-cloud/point-cloud-tile.js +0 -70
  492. package/dist/point-cloud/point-cloud-tile.js.map +0 -1
  493. package/dist/point-cloud/point-cloud-tileset.d.ts +0 -135
  494. package/dist/point-cloud/point-cloud-tileset.d.ts.map +0 -1
  495. package/dist/point-cloud/point-cloud-tileset.js +0 -549
  496. package/dist/point-cloud/point-cloud-tileset.js.map +0 -1
  497. package/dist/point-cloud/types.d.ts +0 -81
  498. package/dist/point-cloud/types.d.ts.map +0 -1
  499. package/dist/point-cloud/types.js.map +0 -1
  500. package/dist/point-cloud-tile-source-loader-types.d.ts +0 -31
  501. package/dist/point-cloud-tile-source-loader-types.d.ts.map +0 -1
  502. package/dist/point-cloud-tile-source-loader-types.js +0 -34
  503. package/dist/point-cloud-tile-source-loader-types.js.map +0 -1
  504. package/dist/point-cloud-tile-source-loader.cjs +0 -81
  505. package/dist/point-cloud-tile-source-loader.cjs.map +0 -7
  506. package/dist/point-cloud-tile-source-loader.d.ts +0 -27
  507. package/dist/point-cloud-tile-source-loader.d.ts.map +0 -1
  508. package/dist/point-cloud-tile-source-loader.js +0 -17
  509. package/dist/point-cloud-tile-source-loader.js.map +0 -1
  510. package/dist/point-cloud-tile-source-types.d.ts +0 -15
  511. package/dist/point-cloud-tile-source-types.d.ts.map +0 -1
  512. package/dist/point-cloud-tile-source-types.js.map +0 -1
  513. package/dist/point-cloud-tile-source.cjs +0 -105
  514. package/dist/point-cloud-tile-source.cjs.map +0 -7
  515. package/dist/point-cloud-tile-source.d.ts +0 -36
  516. package/dist/point-cloud-tile-source.d.ts.map +0 -1
  517. package/dist/point-cloud-tile-source.js +0 -84
  518. package/dist/point-cloud-tile-source.js.map +0 -1
  519. package/dist/spatial/format-spatial-reference.d.ts +0 -68
  520. package/dist/spatial/format-spatial-reference.d.ts.map +0 -1
  521. package/dist/spatial/format-spatial-reference.js +0 -291
  522. package/dist/spatial/format-spatial-reference.js.map +0 -1
  523. package/dist/spatial/get-spatial-coordinate-frame.d.ts +0 -20
  524. package/dist/spatial/get-spatial-coordinate-frame.d.ts.map +0 -1
  525. package/dist/spatial/get-spatial-coordinate-frame.js +0 -139
  526. package/dist/spatial/get-spatial-coordinate-frame.js.map +0 -1
  527. package/dist/spatial/i3s-elevation.d.ts +0 -20
  528. package/dist/spatial/i3s-elevation.d.ts.map +0 -1
  529. package/dist/spatial/i3s-elevation.js +0 -90
  530. package/dist/spatial/i3s-elevation.js.map +0 -1
  531. package/dist/spatial/i3s-spatial-transformer.d.ts +0 -205
  532. package/dist/spatial/i3s-spatial-transformer.d.ts.map +0 -1
  533. package/dist/spatial/i3s-spatial-transformer.js +0 -731
  534. package/dist/spatial/i3s-spatial-transformer.js.map +0 -1
  535. package/dist/spatial/normalize-crs-identifier.d.ts +0 -15
  536. package/dist/spatial/normalize-crs-identifier.d.ts.map +0 -1
  537. package/dist/spatial/normalize-crs-identifier.js +0 -22
  538. package/dist/spatial/normalize-crs-identifier.js.map +0 -1
  539. package/dist/spatial/spatial-coordinate-transformer.d.ts +0 -54
  540. package/dist/spatial/spatial-coordinate-transformer.d.ts.map +0 -1
  541. package/dist/spatial/spatial-coordinate-transformer.js +0 -311
  542. package/dist/spatial/spatial-coordinate-transformer.js.map +0 -1
  543. package/dist/spatial/spatial-resource-registry.d.ts +0 -47
  544. package/dist/spatial/spatial-resource-registry.d.ts.map +0 -1
  545. package/dist/spatial/spatial-resource-registry.js +0 -76
  546. package/dist/spatial/spatial-resource-registry.js.map +0 -1
  547. package/dist/spatial/spatial-types.d.ts +0 -190
  548. package/dist/spatial/spatial-types.d.ts.map +0 -1
  549. package/dist/spatial/spatial-types.js +0 -192
  550. package/dist/spatial/spatial-types.js.map +0 -1
  551. package/dist/spatial/tiles-3d-spatial-transformer.d.ts +0 -32
  552. package/dist/spatial/tiles-3d-spatial-transformer.d.ts.map +0 -1
  553. package/dist/spatial/tiles-3d-spatial-transformer.js +0 -163
  554. package/dist/spatial/tiles-3d-spatial-transformer.js.map +0 -1
  555. package/dist/tileset-3d/common/indexed-archive-tileset-source.d.ts +0 -60
  556. package/dist/tileset-3d/common/indexed-archive-tileset-source.d.ts.map +0 -1
  557. package/dist/tileset-3d/common/indexed-archive-tileset-source.js +0 -130
  558. package/dist/tileset-3d/common/indexed-archive-tileset-source.js.map +0 -1
  559. package/dist/tileset-3d/common/tile-3d-contracts.d.ts +0 -63
  560. package/dist/tileset-3d/common/tile-3d-contracts.d.ts.map +0 -1
  561. package/dist/tileset-3d/common/tile-3d-contracts.js +0 -51
  562. package/dist/tileset-3d/common/tile-3d-contracts.js.map +0 -1
  563. package/dist/tileset-3d/common/tile-3d.d.ts +0 -410
  564. package/dist/tileset-3d/common/tile-3d.d.ts.map +0 -1
  565. package/dist/tileset-3d/common/tile-3d.js +0 -1056
  566. package/dist/tileset-3d/common/tile-3d.js.map +0 -1
  567. package/dist/tileset-3d/common/tileset-3d.d.ts +0 -369
  568. package/dist/tileset-3d/common/tileset-3d.d.ts.map +0 -1
  569. package/dist/tileset-3d/common/tileset-3d.js +0 -879
  570. package/dist/tileset-3d/common/tileset-3d.js.map +0 -1
  571. package/dist/tileset-3d/common/tileset-cache.d.ts +0 -29
  572. package/dist/tileset-3d/common/tileset-cache.d.ts.map +0 -1
  573. package/dist/tileset-3d/common/tileset-cache.js +0 -82
  574. package/dist/tileset-3d/common/tileset-cache.js.map +0 -1
  575. package/dist/tileset-3d/common/tileset-content-traversal.d.ts +0 -37
  576. package/dist/tileset-3d/common/tileset-content-traversal.d.ts.map +0 -1
  577. package/dist/tileset-3d/common/tileset-content-traversal.js +0 -80
  578. package/dist/tileset-3d/common/tileset-content-traversal.js.map +0 -1
  579. package/dist/tileset-3d/common/tileset-observability.d.ts +0 -60
  580. package/dist/tileset-3d/common/tileset-observability.d.ts.map +0 -1
  581. package/dist/tileset-3d/common/tileset-observability.js +0 -39
  582. package/dist/tileset-3d/common/tileset-observability.js.map +0 -1
  583. package/dist/tileset-3d/common/tileset-source.d.ts +0 -228
  584. package/dist/tileset-3d/common/tileset-source.d.ts.map +0 -1
  585. package/dist/tileset-3d/common/tileset-source.js +0 -17
  586. package/dist/tileset-3d/common/tileset-source.js.map +0 -1
  587. package/dist/tileset-3d/common/tileset-traverser.d.ts +0 -88
  588. package/dist/tileset-3d/common/tileset-traverser.d.ts.map +0 -1
  589. package/dist/tileset-3d/common/tileset-traverser.js +0 -341
  590. package/dist/tileset-3d/common/tileset-traverser.js.map +0 -1
  591. package/dist/tileset-3d/format-3d-tiles/implicit-tiling.d.ts +0 -182
  592. package/dist/tileset-3d/format-3d-tiles/implicit-tiling.d.ts.map +0 -1
  593. package/dist/tileset-3d/format-3d-tiles/implicit-tiling.js +0 -678
  594. package/dist/tileset-3d/format-3d-tiles/implicit-tiling.js.map +0 -1
  595. package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.d.ts +0 -221
  596. package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.d.ts.map +0 -1
  597. package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.js +0 -770
  598. package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.js.map +0 -1
  599. package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.d.ts +0 -111
  600. package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.d.ts.map +0 -1
  601. package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.js +0 -339
  602. package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.js.map +0 -1
  603. package/dist/tileset-3d/format-i3s/i3s-pending-tiles-register.d.ts +0 -27
  604. package/dist/tileset-3d/format-i3s/i3s-pending-tiles-register.d.ts.map +0 -1
  605. package/dist/tileset-3d/format-i3s/i3s-pending-tiles-register.js +0 -45
  606. package/dist/tileset-3d/format-i3s/i3s-pending-tiles-register.js.map +0 -1
  607. package/dist/tileset-3d/format-i3s/i3s-source.d.ts +0 -116
  608. package/dist/tileset-3d/format-i3s/i3s-source.d.ts.map +0 -1
  609. package/dist/tileset-3d/format-i3s/i3s-source.js +0 -450
  610. package/dist/tileset-3d/format-i3s/i3s-source.js.map +0 -1
  611. package/dist/tileset-3d/format-i3s/i3s-tile-manager.d.ts +0 -34
  612. package/dist/tileset-3d/format-i3s/i3s-tile-manager.d.ts.map +0 -1
  613. package/dist/tileset-3d/format-i3s/i3s-tile-manager.js +0 -81
  614. package/dist/tileset-3d/format-i3s/i3s-tile-manager.js.map +0 -1
  615. package/dist/tileset-3d/format-i3s/i3s-tileset-traverser.d.ts +0 -25
  616. package/dist/tileset-3d/format-i3s/i3s-tileset-traverser.d.ts.map +0 -1
  617. package/dist/tileset-3d/format-i3s/i3s-tileset-traverser.js +0 -84
  618. package/dist/tileset-3d/format-i3s/i3s-tileset-traverser.js.map +0 -1
  619. package/dist/tileset-3d/helpers/3d-tiles-options.d.ts +0 -5
  620. package/dist/tileset-3d/helpers/3d-tiles-options.d.ts.map +0 -1
  621. package/dist/tileset-3d/helpers/3d-tiles-options.js +0 -9
  622. package/dist/tileset-3d/helpers/3d-tiles-options.js.map +0 -1
  623. package/dist/tileset-3d/helpers/bounding-volume.d.ts +0 -23
  624. package/dist/tileset-3d/helpers/bounding-volume.d.ts.map +0 -1
  625. package/dist/tileset-3d/helpers/bounding-volume.js +0 -236
  626. package/dist/tileset-3d/helpers/bounding-volume.js.map +0 -1
  627. package/dist/tileset-3d/helpers/frame-state.d.ts +0 -93
  628. package/dist/tileset-3d/helpers/frame-state.d.ts.map +0 -1
  629. package/dist/tileset-3d/helpers/frame-state.js +0 -211
  630. package/dist/tileset-3d/helpers/frame-state.js.map +0 -1
  631. package/dist/tileset-3d/helpers/i3s-lod.d.ts +0 -20
  632. package/dist/tileset-3d/helpers/i3s-lod.d.ts.map +0 -1
  633. package/dist/tileset-3d/helpers/i3s-lod.js +0 -95
  634. package/dist/tileset-3d/helpers/i3s-lod.js.map +0 -1
  635. package/dist/tileset-3d/helpers/s2-bounding-volume.d.ts +0 -17
  636. package/dist/tileset-3d/helpers/s2-bounding-volume.d.ts.map +0 -1
  637. package/dist/tileset-3d/helpers/s2-bounding-volume.js +0 -17
  638. package/dist/tileset-3d/helpers/s2-bounding-volume.js.map +0 -1
  639. package/dist/tileset-3d/helpers/tiles-3d-lod.d.ts +0 -72
  640. package/dist/tileset-3d/helpers/tiles-3d-lod.d.ts.map +0 -1
  641. package/dist/tileset-3d/helpers/tiles-3d-lod.js +0 -257
  642. package/dist/tileset-3d/helpers/tiles-3d-lod.js.map +0 -1
  643. package/dist/tileset-3d/helpers/tiles-3d-request-priority.d.ts +0 -134
  644. package/dist/tileset-3d/helpers/tiles-3d-request-priority.d.ts.map +0 -1
  645. package/dist/tileset-3d/helpers/tiles-3d-request-priority.js +0 -179
  646. package/dist/tileset-3d/helpers/tiles-3d-request-priority.js.map +0 -1
  647. package/dist/tileset-3d/helpers/transform-utils.d.ts +0 -3
  648. package/dist/tileset-3d/helpers/transform-utils.d.ts.map +0 -1
  649. package/dist/tileset-3d/helpers/transform-utils.js +0 -86
  650. package/dist/tileset-3d/helpers/transform-utils.js.map +0 -1
  651. package/dist/tileset-3d/helpers/zoom.d.ts +0 -46
  652. package/dist/tileset-3d/helpers/zoom.d.ts.map +0 -1
  653. package/dist/tileset-3d/helpers/zoom.js +0 -86
  654. package/dist/tileset-3d/helpers/zoom.js.map +0 -1
  655. package/dist/types.d.ts +0 -48
  656. package/dist/types.d.ts.map +0 -1
  657. package/dist/types.js.map +0 -1
  658. package/dist/utils/doubly-linked-list-node.d.ts +0 -11
  659. package/dist/utils/doubly-linked-list-node.d.ts.map +0 -1
  660. package/dist/utils/doubly-linked-list-node.js +0 -20
  661. package/dist/utils/doubly-linked-list-node.js.map +0 -1
  662. package/dist/utils/doubly-linked-list.d.ts +0 -30
  663. package/dist/utils/doubly-linked-list.d.ts.map +0 -1
  664. package/dist/utils/doubly-linked-list.js +0 -93
  665. package/dist/utils/doubly-linked-list.js.map +0 -1
  666. package/dist/utils/managed-array.d.ts +0 -85
  667. package/dist/utils/managed-array.d.ts.map +0 -1
  668. package/dist/utils/managed-array.js +0 -152
  669. package/dist/utils/managed-array.js.map +0 -1
  670. package/src/constants.ts +0 -59
  671. package/src/point-cloud/point-cloud-tile.ts +0 -80
  672. package/src/point-cloud/point-cloud-tileset.ts +0 -767
  673. package/src/point-cloud/types.ts +0 -99
  674. package/src/point-cloud-tile-source-loader-types.ts +0 -53
  675. package/src/point-cloud-tile-source-loader.ts +0 -32
  676. package/src/point-cloud-tile-source-types.ts +0 -20
  677. package/src/point-cloud-tile-source.ts +0 -112
  678. package/src/spatial/format-spatial-reference.ts +0 -385
  679. package/src/spatial/get-spatial-coordinate-frame.ts +0 -169
  680. package/src/spatial/i3s-elevation.ts +0 -96
  681. package/src/spatial/i3s-spatial-transformer.ts +0 -1021
  682. package/src/spatial/normalize-crs-identifier.ts +0 -26
  683. package/src/spatial/spatial-coordinate-transformer.ts +0 -397
  684. package/src/spatial/spatial-resource-registry.ts +0 -90
  685. package/src/spatial/spatial-types.ts +0 -422
  686. package/src/spatial/tiles-3d-spatial-transformer.ts +0 -194
  687. package/src/tileset-3d/common/indexed-archive-tileset-source.ts +0 -205
  688. package/src/tileset-3d/common/tile-3d-contracts.ts +0 -115
  689. package/src/tileset-3d/common/tile-3d.ts +0 -1310
  690. package/src/tileset-3d/common/tileset-3d.ts +0 -1210
  691. package/src/tileset-3d/common/tileset-cache.ts +0 -111
  692. package/src/tileset-3d/common/tileset-content-traversal.ts +0 -114
  693. package/src/tileset-3d/common/tileset-observability.ts +0 -100
  694. package/src/tileset-3d/common/tileset-source.ts +0 -284
  695. package/src/tileset-3d/common/tileset-traverser.ts +0 -416
  696. package/src/tileset-3d/format-3d-tiles/implicit-tiling.ts +0 -1056
  697. package/src/tileset-3d/format-3d-tiles/tiles-3d-source.ts +0 -1025
  698. package/src/tileset-3d/format-3d-tiles/tileset-3d-traverser.ts +0 -391
  699. package/src/tileset-3d/format-i3s/i3s-pending-tiles-register.ts +0 -48
  700. package/src/tileset-3d/format-i3s/i3s-source.ts +0 -557
  701. package/src/tileset-3d/format-i3s/i3s-tile-manager.ts +0 -105
  702. package/src/tileset-3d/format-i3s/i3s-tileset-traverser.ts +0 -102
  703. package/src/tileset-3d/helpers/3d-tiles-options.ts +0 -11
  704. package/src/tileset-3d/helpers/bounding-volume.ts +0 -281
  705. package/src/tileset-3d/helpers/frame-state.ts +0 -322
  706. package/src/tileset-3d/helpers/i3s-lod.ts +0 -109
  707. package/src/tileset-3d/helpers/s2-bounding-volume.ts +0 -32
  708. package/src/tileset-3d/helpers/tiles-3d-lod.ts +0 -370
  709. package/src/tileset-3d/helpers/tiles-3d-request-priority.ts +0 -301
  710. package/src/tileset-3d/helpers/transform-utils.ts +0 -109
  711. package/src/tileset-3d/helpers/zoom.ts +0 -120
  712. package/src/types.ts +0 -54
  713. package/src/utils/doubly-linked-list-node.ts +0 -22
  714. package/src/utils/doubly-linked-list.ts +0 -105
  715. package/src/utils/managed-array.ts +0 -174
  716. /package/dist/{point-cloud → mvt/lib}/types.js +0 -0
@@ -0,0 +1,906 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
5
+ import * as arrow from 'apache-arrow';
6
+ import type {
7
+ ArrowTable,
8
+ Feature,
9
+ GeoJSONTable,
10
+ BinaryFeatureCollection,
11
+ Field,
12
+ Schema,
13
+ GeoParquetGeometryType
14
+ } from '@loaders.gl/core/schema';
15
+ import {convertGeojsonToBinaryFeatureCollection as geojsonToBinary} from '@loaders.gl/arrow-geometry/legacy-binary';
16
+ import {
17
+ makeWKBGeometryField,
18
+ setWKBGeometrySchemaMetadata
19
+ } from '@loaders.gl/arrow-geometry/geometry-field';
20
+ import {makeWKBGeometryDataFromWriters} from '@loaders.gl/arrow-geometry/wkb-arrow-utils';
21
+ import {
22
+ GeoArrowBuilder,
23
+ type GeoArrowBuilderDimension,
24
+ type GeoArrowBuilderEncoding,
25
+ type WKBGeometryWriter
26
+ } from '@loaders.gl/arrow-geometry';
27
+ import {
28
+ ArrowTableBuilder,
29
+ convertArrowToSchema,
30
+ convertSchemaToArrow,
31
+ getDataTypeFromArray
32
+ } from '@loaders.gl/core/schema-utils';
33
+ import type {Feature as MLTFeature} from '@maplibre/mlt';
34
+ import * as maplibreMLT from '@maplibre/mlt';
35
+
36
+ import type {MLTLoaderOptions} from '../mlt-loader';
37
+ import {MLT_DEFAULT_OPTIONS} from '../mlt-loader';
38
+
39
+ type DecodeTile = (
40
+ tile: Uint8Array,
41
+ geometryScaling?: undefined,
42
+ idWithinMaxSafeInteger?: boolean
43
+ ) => any;
44
+
45
+ const decodeTile = (() => {
46
+ const mltModule = maplibreMLT as unknown as {
47
+ decodeTile?: DecodeTile;
48
+ default?: {decodeTile?: DecodeTile};
49
+ };
50
+ const decodedTile = mltModule.decodeTile ?? mltModule.default?.decodeTile;
51
+ if (!decodedTile) {
52
+ throw new Error('MLT Loader: decodeTile export missing from @maplibre/mlt');
53
+ }
54
+ // The upstream Float64 ID fast path does not expand nullable LongId values.
55
+ // Its full integer path preserves null positions and exact IDs.
56
+ return (tile: Uint8Array) => decodedTile(tile, undefined, false);
57
+ })();
58
+
59
+ type MLTOptions = Required<MLTLoaderOptions>['mlt'];
60
+ const GEOMETRY_TYPE = ((): Record<string, number> => {
61
+ const mltModule = maplibreMLT as unknown as {
62
+ GEOMETRY_TYPE?: {[name: string]: number};
63
+ default?: {GEOMETRY_TYPE?: {[name: string]: number}};
64
+ };
65
+ return (
66
+ mltModule.GEOMETRY_TYPE ||
67
+ mltModule.default?.GEOMETRY_TYPE || {
68
+ POINT: 0,
69
+ LINESTRING: 1,
70
+ POLYGON: 2,
71
+ MULTIPOINT: 3,
72
+ MULTILINESTRING: 4,
73
+ MULTIPOLYGON: 5
74
+ }
75
+ );
76
+ })();
77
+
78
+ type MLTFeatureTable = {
79
+ name?: string;
80
+ extent?: number;
81
+ numFeatures?: number;
82
+ geometryVector?: MLTGeometryVector;
83
+ propertyVectors?: MLTPropertyVector[];
84
+ getFeatures?: () => MLTFeature[];
85
+ features?: MLTFeature[];
86
+ [Symbol.iterator]?: () => IterableIterator<MLTFeature>;
87
+ };
88
+
89
+ type MLTPoint = {x: number; y: number};
90
+
91
+ type MLTGeometry = {
92
+ type: number;
93
+ coordinates: Array<Array<MLTPoint>>;
94
+ extent: number;
95
+ };
96
+
97
+ type MLTGeometryVector = {
98
+ numGeometries: number;
99
+ geometryType: (index: number) => number;
100
+ getGeometries: () => Array<Array<Array<MLTPoint>>>;
101
+ };
102
+
103
+ type MLTPropertyVector = {
104
+ name: string;
105
+ getValue: (index: number) => unknown;
106
+ };
107
+
108
+ /**
109
+ * Parse an MLT ArrayBuffer and return GeoJSON table or binary geometry data.
110
+ *
111
+ * @param arrayBuffer An MLT tile as an ArrayBuffer
112
+ * @param options
113
+ * @returns GeoJSON table or binary feature collection
114
+ */
115
+ export function parseMLT(
116
+ arrayBuffer: ArrayBuffer,
117
+ options?: MLTLoaderOptions
118
+ ): GeoJSONTable | BinaryFeatureCollection | ArrowTable {
119
+ const mltOptions = checkOptions(options);
120
+
121
+ const shape = mltOptions.shape;
122
+ switch (shape) {
123
+ case 'geojson-table': {
124
+ const table: GeoJSONTable = {
125
+ shape: 'geojson-table',
126
+ type: 'FeatureCollection',
127
+ features: parseToGeojsonFeatures(arrayBuffer, mltOptions)
128
+ };
129
+ return table;
130
+ }
131
+ case 'binary-geometry': {
132
+ const geojsonFeatures = parseToGeojsonFeatures(arrayBuffer, mltOptions);
133
+ const binaryData = geojsonToBinary(geojsonFeatures);
134
+ // @ts-ignore
135
+ binaryData.byteLength = arrayBuffer.byteLength;
136
+ return binaryData;
137
+ }
138
+ case 'arrow-table':
139
+ return parseToArrowTable(arrayBuffer, mltOptions);
140
+ default:
141
+ throw new Error(shape || 'undefined shape');
142
+ }
143
+ }
144
+
145
+ /**
146
+ * Decode an MLT tile directly into an Arrow table.
147
+ *
148
+ * MLT's decoder already exposes column vectors and a geometry vector. Building Arrow from those
149
+ * vectors avoids materializing GeoJSON features and then decoding the same geometry a second time.
150
+ */
151
+ function parseToArrowTable(arrayBuffer: ArrayBuffer, options: MLTOptions): ArrowTable {
152
+ if (arrayBuffer.byteLength <= 0) {
153
+ return makeWKBArrowTable([], [], []);
154
+ }
155
+
156
+ const tile = new Uint8Array(arrayBuffer);
157
+ const featureTables = getFeatureTables(decodeTile(tile));
158
+ const selectedLayers =
159
+ options.layers && options.layers.length > 0
160
+ ? options.layers
161
+ : (featureTables.map(ft => ft.name).filter(Boolean) as string[]);
162
+ const propertyRows: Record<string, unknown>[] = [];
163
+ const geometryWriters: (WKBGeometryWriter | null)[] = [];
164
+ const geometries: MLTGeometry[] = [];
165
+
166
+ for (const featureTable of featureTables) {
167
+ const layerName = featureTable.name;
168
+ if (!layerName || !selectedLayers.includes(layerName)) {
169
+ continue;
170
+ }
171
+
172
+ const geometryVector = featureTable.geometryVector;
173
+ if (!geometryVector) {
174
+ continue;
175
+ }
176
+
177
+ const tableGeometries = geometryVector.getGeometries();
178
+ const featureCount = Math.min(geometryVector.numGeometries, tableGeometries.length);
179
+ const propertyVectors = featureTable.propertyVectors || [];
180
+ const extent = featureTable.extent ?? 4096;
181
+
182
+ for (let featureIndex = 0; featureIndex < featureCount; featureIndex++) {
183
+ const geometry: MLTGeometry = {
184
+ type: geometryVector.geometryType(featureIndex),
185
+ coordinates: tableGeometries[featureIndex],
186
+ extent
187
+ };
188
+ const properties: Record<string, unknown> = {};
189
+ for (const propertyVector of propertyVectors) {
190
+ properties[propertyVector.name] = normalizePropertyValue(
191
+ propertyVector.getValue(featureIndex)
192
+ );
193
+ }
194
+ if (options.layerProperty) {
195
+ properties[options.layerProperty] = layerName;
196
+ }
197
+
198
+ propertyRows.push(properties);
199
+ geometries.push(geometry);
200
+ geometryWriters.push(createWKBGeometryWriter(geometry, options, extent));
201
+ }
202
+ }
203
+
204
+ const encodingPreference = options.geoarrow?.encodingPreference;
205
+ if (encodingPreference && encodingPreference !== 'geoarrow.wkb') {
206
+ return makeNativeArrowTable(propertyRows, geometries, options, encodingPreference);
207
+ }
208
+ return makeWKBArrowTable(propertyRows, geometryWriters, geometries);
209
+ }
210
+
211
+ /**
212
+ * Creates a WKB Arrow table from decoded MLT property values and geometry writers.
213
+ */
214
+ function makeWKBArrowTable(
215
+ propertyRows: Record<string, unknown>[],
216
+ geometryWriters: (WKBGeometryWriter | null)[],
217
+ geometries: MLTGeometry[]
218
+ ): ArrowTable {
219
+ const propertySchema = getPropertySchema(propertyRows);
220
+ const schema: Schema = {
221
+ fields: [...propertySchema.fields, makeWKBGeometryField('geometry')],
222
+ metadata: {...(propertySchema.metadata || {})}
223
+ };
224
+ setWKBGeometrySchemaMetadata(schema, {
225
+ geometryColumnName: 'geometry',
226
+ geometryTypes: [
227
+ ...new Set(geometries.map(geometry => geometryTypeToGeoJSONType(geometry.type)))
228
+ ]
229
+ .filter(Boolean)
230
+ .map(type => type as GeoParquetGeometryType)
231
+ });
232
+
233
+ const propertyBuilder = new ArrowTableBuilder(propertySchema);
234
+ for (const propertyRow of propertyRows) {
235
+ propertyBuilder.addObjectRow(propertyRow);
236
+ }
237
+ const propertyData = propertyBuilder.finishTable().data;
238
+ const propertyBatch = propertyData.batches[0];
239
+ const geometryData = makeWKBGeometryDataFromWriters(geometryWriters);
240
+ const arrowSchema = convertSchemaToArrow(schema);
241
+ const children = [...(propertyBatch?.data.children || []), geometryData];
242
+ const structData = arrow.makeData({
243
+ type: new arrow.Struct(arrowSchema.fields),
244
+ length: propertyRows.length,
245
+ nullCount: 0,
246
+ children
247
+ } as any);
248
+
249
+ return {
250
+ shape: 'arrow-table',
251
+ schema,
252
+ data: new arrow.Table(new arrow.RecordBatch(arrowSchema, structData as any))
253
+ };
254
+ }
255
+
256
+ /**
257
+ * Creates a native GeoArrow table from decoded MLT geometry and property vectors.
258
+ */
259
+ function makeNativeArrowTable(
260
+ propertyRows: Record<string, unknown>[],
261
+ geometries: MLTGeometry[],
262
+ options: MLTOptions,
263
+ encodingPreference: Exclude<
264
+ NonNullable<MLTOptions['geoarrow']>['encodingPreference'],
265
+ 'geoarrow.wkb'
266
+ >
267
+ ): ArrowTable {
268
+ const dimension: GeoArrowBuilderDimension = 'xy';
269
+ const encoding = selectGeoArrowEncoding(geometries, encodingPreference);
270
+ const geometryVector =
271
+ encoding === 'geoarrow.geometry'
272
+ ? makeGeoArrowUnionVector(geometries, options, dimension)
273
+ : makeGeoArrowVector(geometries, encoding, options, dimension);
274
+ const propertySchema = getPropertySchema(propertyRows);
275
+ const propertyTableBuilder = new ArrowTableBuilder(propertySchema);
276
+ for (const propertyRow of propertyRows) {
277
+ propertyTableBuilder.addObjectRow(propertyRow);
278
+ }
279
+ const propertyBatch = propertyTableBuilder.finishTable().data.batches[0];
280
+ const propertyArrowSchema = convertSchemaToArrow(propertySchema);
281
+ const geometryTypes = [
282
+ ...new Set(geometries.map(geometry => geometryTypeToGeoJSONType(geometry.type)))
283
+ ]
284
+ .filter(Boolean)
285
+ .map(type => type as GeoParquetGeometryType);
286
+ const geometryField = new arrow.Field(
287
+ 'geometry',
288
+ geometryVector.type,
289
+ true,
290
+ new Map([
291
+ ['ARROW:extension:name', encoding],
292
+ ['ARROW:extension:metadata', JSON.stringify({encoding, geometry_types: geometryTypes})]
293
+ ])
294
+ );
295
+ const fields = [...propertyArrowSchema.fields, geometryField];
296
+ const metadata = new Map(propertyArrowSchema.metadata || []);
297
+ metadata.set(
298
+ 'geo',
299
+ JSON.stringify({
300
+ version: '1.1.0',
301
+ primary_column: 'geometry',
302
+ columns: {geometry: {encoding, geometry_types: geometryTypes}}
303
+ })
304
+ );
305
+ const arrowSchema = new arrow.Schema(fields, metadata);
306
+ const children = [...(propertyBatch?.data.children || []), geometryVector.data[0]];
307
+ const structData = arrow.makeData({
308
+ type: new arrow.Struct(fields),
309
+ length: propertyRows.length,
310
+ nullCount: 0,
311
+ children
312
+ } as any);
313
+ return {
314
+ shape: 'arrow-table',
315
+ schema: convertArrowToSchema(arrowSchema),
316
+ data: new arrow.Table(new arrow.RecordBatch(arrowSchema, structData as any))
317
+ };
318
+ }
319
+
320
+ /** Selects a concrete GeoArrow encoding or the mixed-geometry union encoding. */
321
+ function selectGeoArrowEncoding(
322
+ geometries: MLTGeometry[],
323
+ preference: Exclude<NonNullable<MLTOptions['geoarrow']>['encodingPreference'], 'geoarrow.wkb'>
324
+ ): GeoArrowBuilderEncoding | 'geoarrow.geometry' {
325
+ const geometryTypes = new Set(
326
+ geometries.map(geometry => geometryTypeToGeoJSONType(geometry.type))
327
+ );
328
+ if (preference === 'geoarrow.geometry' || geometryTypes.size === 0) {
329
+ return 'geoarrow.geometry';
330
+ }
331
+ if (geometryTypes.size === 1) {
332
+ return getNativeGeoArrowEncoding([...geometryTypes][0]);
333
+ }
334
+ if (geometryTypes.size === 2) {
335
+ if (geometryTypes.has('Point') && geometryTypes.has('MultiPoint')) {
336
+ return 'geoarrow.multipoint';
337
+ }
338
+ if (geometryTypes.has('LineString') && geometryTypes.has('MultiLineString')) {
339
+ return 'geoarrow.multilinestring';
340
+ }
341
+ if (geometryTypes.has('Polygon') && geometryTypes.has('MultiPolygon')) {
342
+ return 'geoarrow.multipolygon';
343
+ }
344
+ }
345
+ return 'geoarrow.geometry';
346
+ }
347
+
348
+ /** Builds one concrete native GeoArrow vector from MLT geometries. */
349
+ function makeGeoArrowVector(
350
+ geometries: MLTGeometry[],
351
+ encoding: GeoArrowBuilderEncoding,
352
+ options: MLTOptions,
353
+ dimension: GeoArrowBuilderDimension
354
+ ): arrow.Vector {
355
+ const writers = geometries.map(geometry =>
356
+ createGeoArrowGeometryWriter(geometry, encoding, options)
357
+ );
358
+ const geometryArray = GeoArrowBuilder.buildGeometryArray(writers, {encoding, dimension});
359
+ return arrow.makeVector(GeoArrowBuilder.makeGeometryData(geometryArray));
360
+ }
361
+
362
+ /** Builds a dense union GeoArrow vector for mixed geometry columns. */
363
+ function makeGeoArrowUnionVector(
364
+ geometries: MLTGeometry[],
365
+ options: MLTOptions,
366
+ dimension: GeoArrowBuilderDimension
367
+ ): arrow.Vector {
368
+ const geometryGroups = new Map<string, MLTGeometry[]>();
369
+ const supportedGeometryTypes = [
370
+ 'Point',
371
+ 'LineString',
372
+ 'Polygon',
373
+ 'MultiPoint',
374
+ 'MultiLineString',
375
+ 'MultiPolygon'
376
+ ];
377
+ for (const geometryType of supportedGeometryTypes) {
378
+ geometryGroups.set(geometryType, []);
379
+ }
380
+ const typeIds: number[] = [];
381
+ const valueOffsets: number[] = [];
382
+ for (const geometry of geometries) {
383
+ const geometryType = geometryTypeToGeoJSONType(geometry.type) || 'Point';
384
+ const group = geometryGroups.get(geometryType) || [];
385
+ valueOffsets.push(group.length);
386
+ typeIds.push(getUnionTypeId(geometryType, dimension));
387
+ group.push(geometry);
388
+ geometryGroups.set(geometryType, group);
389
+ }
390
+
391
+ const orderedGeometryTypes = [...geometryGroups.keys()].sort(
392
+ (left, right) => getUnionTypeId(left, dimension) - getUnionTypeId(right, dimension)
393
+ );
394
+ const childVectors = orderedGeometryTypes.map(geometryType => {
395
+ const encoding = getNativeGeoArrowEncoding(geometryType);
396
+ return makeGeoArrowVector(geometryGroups.get(geometryType)!, encoding, options, dimension);
397
+ });
398
+ const fields = orderedGeometryTypes.map(
399
+ geometryType =>
400
+ new arrow.Field(
401
+ getUnionFieldName(geometryType, dimension),
402
+ childVectors[orderedGeometryTypes.indexOf(geometryType)].type,
403
+ true
404
+ )
405
+ );
406
+ const unionType = new arrow.DenseUnion(
407
+ orderedGeometryTypes.map(geometryType => getUnionTypeId(geometryType, dimension)),
408
+ fields
409
+ );
410
+ return arrow.makeVector(
411
+ arrow.makeData({
412
+ type: unionType,
413
+ length: geometries.length,
414
+ nullCount: 0,
415
+ typeIds: Int8Array.from(typeIds),
416
+ valueOffsets: Int32Array.from(valueOffsets),
417
+ children: childVectors.map(vector => vector.data[0])
418
+ } as any)
419
+ );
420
+ }
421
+
422
+ /** Creates a native GeoArrow writer for one decoded MLT geometry. */
423
+ function createGeoArrowGeometryWriter(
424
+ geometry: MLTGeometry,
425
+ encoding: GeoArrowBuilderEncoding,
426
+ options: MLTOptions
427
+ ): (builder: InstanceType<typeof GeoArrowBuilder>) => void {
428
+ return builder => {
429
+ const coordinates = geometry.coordinates;
430
+ switch (geometryTypeToGeoJSONType(geometry.type)) {
431
+ case 'Point':
432
+ if (encoding === 'geoarrow.multipoint') builder.beginMultiPoint(1);
433
+ builder.beginPoint();
434
+ writeGeoArrowPoint(builder, coordinates[0]?.[0], options, geometry.extent);
435
+ return;
436
+ case 'MultiPoint':
437
+ builder.beginMultiPoint(coordinates.length);
438
+ for (const [point] of coordinates) {
439
+ builder.beginPoint();
440
+ writeGeoArrowPoint(builder, point, options, geometry.extent);
441
+ }
442
+ return;
443
+ case 'LineString':
444
+ if (encoding === 'geoarrow.multilinestring') builder.beginMultiLineString(1);
445
+ writeGeoArrowLineString(builder, coordinates[0] || [], options, geometry.extent);
446
+ return;
447
+ case 'MultiLineString':
448
+ builder.beginMultiLineString(coordinates.length);
449
+ for (const line of coordinates)
450
+ writeGeoArrowLineString(builder, line, options, geometry.extent);
451
+ return;
452
+ case 'Polygon':
453
+ if (encoding === 'geoarrow.multipolygon') builder.beginMultiPolygon(1);
454
+ writeGeoArrowPolygon(builder, coordinates, options, geometry.extent);
455
+ return;
456
+ case 'MultiPolygon':
457
+ builder.beginMultiPolygon(coordinates.length);
458
+ for (const ring of coordinates) {
459
+ builder.beginPolygon(1);
460
+ builder.beginLinearRing(ring.length);
461
+ for (const point of ring) writeGeoArrowPoint(builder, point, options, geometry.extent);
462
+ }
463
+ return;
464
+ default:
465
+ return;
466
+ }
467
+ };
468
+ }
469
+
470
+ function writeGeoArrowPoint(
471
+ builder: InstanceType<typeof GeoArrowBuilder>,
472
+ point: MLTPoint | undefined,
473
+ options: MLTOptions,
474
+ extent: number
475
+ ): void {
476
+ const [x, y] = projectPoint(point?.x ?? Number.NaN, point?.y ?? Number.NaN, options, extent);
477
+ builder.writeCoordinate(x, y);
478
+ }
479
+
480
+ function writeGeoArrowLineString(
481
+ builder: InstanceType<typeof GeoArrowBuilder>,
482
+ line: MLTPoint[],
483
+ options: MLTOptions,
484
+ extent: number
485
+ ): void {
486
+ builder.beginLineString(line.length);
487
+ for (const point of line) writeGeoArrowPoint(builder, point, options, extent);
488
+ }
489
+
490
+ function writeGeoArrowPolygon(
491
+ builder: InstanceType<typeof GeoArrowBuilder>,
492
+ rings: MLTPoint[][],
493
+ options: MLTOptions,
494
+ extent: number
495
+ ): void {
496
+ builder.beginPolygon(rings.length);
497
+ for (const ring of rings) {
498
+ builder.beginLinearRing(ring.length);
499
+ for (const point of ring) writeGeoArrowPoint(builder, point, options, extent);
500
+ }
501
+ }
502
+
503
+ function getNativeGeoArrowEncoding(geometryType: string | null): GeoArrowBuilderEncoding {
504
+ switch (geometryType) {
505
+ case 'Point':
506
+ return 'geoarrow.point';
507
+ case 'LineString':
508
+ return 'geoarrow.linestring';
509
+ case 'Polygon':
510
+ return 'geoarrow.polygon';
511
+ case 'MultiPoint':
512
+ return 'geoarrow.multipoint';
513
+ case 'MultiLineString':
514
+ return 'geoarrow.multilinestring';
515
+ case 'MultiPolygon':
516
+ return 'geoarrow.multipolygon';
517
+ default:
518
+ throw new Error(`MLT Loader: unsupported GeoArrow geometry type ${geometryType}`);
519
+ }
520
+ }
521
+
522
+ function getUnionTypeId(geometryType: string, dimension: GeoArrowBuilderDimension): number {
523
+ const baseTypeIds: Record<string, number> = {
524
+ Point: 1,
525
+ LineString: 2,
526
+ Polygon: 3,
527
+ MultiPoint: 4,
528
+ MultiLineString: 5,
529
+ MultiPolygon: 6
530
+ };
531
+ const dimensionOffset =
532
+ dimension === 'xyz' ? 10 : dimension === 'xym' ? 20 : dimension === 'xyzm' ? 30 : 0;
533
+ return (baseTypeIds[geometryType] || baseTypeIds.Point) + dimensionOffset;
534
+ }
535
+
536
+ function getUnionFieldName(geometryType: string, dimension: GeoArrowBuilderDimension): string {
537
+ return dimension === 'xy' ? geometryType : `${geometryType} ${dimension.slice(1).toUpperCase()}`;
538
+ }
539
+
540
+ /**
541
+ * Builds the property schema using the same primitive normalization as GeoJSON-to-Arrow output.
542
+ */
543
+ function getPropertySchema(propertyRows: Record<string, unknown>[]): Schema {
544
+ const fieldNames = new Set<string>();
545
+ for (const propertyRow of propertyRows) {
546
+ for (const fieldName of Object.keys(propertyRow)) {
547
+ fieldNames.add(fieldName);
548
+ }
549
+ }
550
+
551
+ return {
552
+ metadata: {},
553
+ fields: [...fieldNames].map((fieldName): Field => {
554
+ const inferredType = getDataTypeFromArray(
555
+ propertyRows.map(propertyRow => propertyRow[fieldName])
556
+ );
557
+ return {
558
+ name: fieldName,
559
+ type: inferredType.type === 'float32' ? 'float64' : inferredType.type,
560
+ nullable: inferredType.nullable
561
+ };
562
+ })
563
+ };
564
+ }
565
+
566
+ function normalizePropertyValue(propertyValue: unknown): unknown {
567
+ if (
568
+ propertyValue === null ||
569
+ propertyValue === undefined ||
570
+ typeof propertyValue === 'string' ||
571
+ typeof propertyValue === 'number' ||
572
+ typeof propertyValue === 'boolean'
573
+ ) {
574
+ return propertyValue ?? null;
575
+ }
576
+ return JSON.stringify(propertyValue);
577
+ }
578
+
579
+ function createWKBGeometryWriter(
580
+ geometry: MLTGeometry,
581
+ options: MLTOptions,
582
+ extent: number
583
+ ): WKBGeometryWriter | null {
584
+ const geometryType = geometryTypeToGeoJSONType(geometry.type);
585
+ if (!geometryType || !geometry.coordinates) {
586
+ return null;
587
+ }
588
+
589
+ const transform = (coordinate: number[]): number[] =>
590
+ projectPoint(coordinate[0], coordinate[1], options, extent);
591
+ return builder => {
592
+ const coordinates = geometry.coordinates;
593
+ switch (geometryType) {
594
+ case 'Point':
595
+ if (!coordinates[0]?.[0]) return;
596
+ builder.beginPoint();
597
+ writePoint(builder, coordinates[0][0], transform);
598
+ return;
599
+ case 'MultiPoint':
600
+ builder.beginMultiPoint(coordinates.length);
601
+ for (const [point] of coordinates) writePoint(builder, point, transform);
602
+ return;
603
+ case 'LineString':
604
+ builder.beginLineString(coordinates[0]?.length || 0);
605
+ for (const point of coordinates[0] || []) writePoint(builder, point, transform);
606
+ return;
607
+ case 'MultiLineString':
608
+ builder.beginMultiLineString(coordinates.length);
609
+ for (const line of coordinates) {
610
+ builder.beginLineString(line.length);
611
+ for (const point of line) writePoint(builder, point, transform);
612
+ }
613
+ return;
614
+ case 'Polygon':
615
+ builder.beginPolygon(coordinates.length);
616
+ for (const ring of coordinates) {
617
+ builder.beginLinearRing(ring.length);
618
+ for (const point of ring) writePoint(builder, point, transform);
619
+ }
620
+ return;
621
+ case 'MultiPolygon':
622
+ // The JS MLT decoder exposes multipolygon rings in a flattened representation. The
623
+ // specification's polygon/ring topology is preserved by treating each decoded ring as
624
+ // a polygon, matching the legacy GeoJSON path until the decoder exposes polygon offsets.
625
+ builder.beginMultiPolygon(coordinates.length);
626
+ for (const ring of coordinates) {
627
+ builder.beginPolygon(1);
628
+ builder.beginLinearRing(ring.length);
629
+ for (const point of ring) writePoint(builder, point, transform);
630
+ }
631
+ return;
632
+ default:
633
+ return;
634
+ }
635
+ };
636
+ }
637
+
638
+ function writePoint(
639
+ builder: Parameters<WKBGeometryWriter>[0],
640
+ point: MLTPoint | undefined,
641
+ transform: (coordinate: number[]) => number[]
642
+ ): void {
643
+ if (!point) {
644
+ builder.writeCoordinate(Number.NaN, Number.NaN);
645
+ return;
646
+ }
647
+ const [x, y] = transform([point.x, point.y]);
648
+ builder.writeCoordinate(x, y);
649
+ }
650
+
651
+ function geometryTypeToGeoJSONType(
652
+ type: number
653
+ ): 'Point' | 'LineString' | 'Polygon' | 'MultiPoint' | 'MultiLineString' | 'MultiPolygon' | null {
654
+ for (const [name, value] of Object.entries(GEOMETRY_TYPE)) {
655
+ if (value === type) {
656
+ const normalizedName = name.toLowerCase();
657
+ return normalizedName === 'point'
658
+ ? 'Point'
659
+ : normalizedName === 'linestring'
660
+ ? 'LineString'
661
+ : normalizedName === 'polygon'
662
+ ? 'Polygon'
663
+ : normalizedName === 'multipoint'
664
+ ? 'MultiPoint'
665
+ : normalizedName === 'multilinestring'
666
+ ? 'MultiLineString'
667
+ : normalizedName === 'multipolygon'
668
+ ? 'MultiPolygon'
669
+ : null;
670
+ }
671
+ }
672
+ return null;
673
+ }
674
+
675
+ /**
676
+ * Parse the MLT tile and return GeoJSON features
677
+ */
678
+ function parseToGeojsonFeatures(arrayBuffer: ArrayBuffer, options: MLTOptions): Feature[] {
679
+ if (arrayBuffer.byteLength <= 0) {
680
+ return [];
681
+ }
682
+
683
+ const tile = new Uint8Array(arrayBuffer);
684
+ const featureTables = getFeatureTables(decodeTile(tile));
685
+
686
+ const features: Feature[] = [];
687
+
688
+ const selectedLayers =
689
+ options.layers && options.layers.length > 0
690
+ ? options.layers
691
+ : (featureTables.map(ft => ft.name).filter(Boolean) as string[]);
692
+
693
+ for (const featureTable of featureTables) {
694
+ const layerName = featureTable.name;
695
+ if (!layerName || !selectedLayers.includes(layerName)) {
696
+ continue;
697
+ }
698
+
699
+ const extent = featureTable.extent ?? 4096;
700
+ for (const mltFeature of getTableFeatures(featureTable)) {
701
+ const geoJSONFeature = convertFeatureToGeoJSON(mltFeature, options, layerName, extent);
702
+ if (geoJSONFeature) {
703
+ features.push(geoJSONFeature);
704
+ }
705
+ }
706
+ }
707
+
708
+ return features;
709
+ }
710
+
711
+ function getFeatureTables(decodedTile: unknown): MLTFeatureTable[] {
712
+ if (Array.isArray(decodedTile)) {
713
+ return decodedTile.filter((candidate): candidate is MLTFeatureTable =>
714
+ isFeatureTable(candidate)
715
+ );
716
+ }
717
+
718
+ if (!decodedTile || typeof decodedTile !== 'object') {
719
+ return [];
720
+ }
721
+
722
+ return Object.values(decodedTile).filter((candidate): candidate is MLTFeatureTable =>
723
+ isFeatureTable(candidate)
724
+ );
725
+ }
726
+
727
+ function isFeatureTable(candidate: unknown): candidate is MLTFeatureTable {
728
+ if (!candidate || typeof candidate !== 'object') {
729
+ return false;
730
+ }
731
+ return (
732
+ typeof (candidate as MLTFeatureTable).name === 'string' &&
733
+ (typeof (candidate as MLTFeatureTable).getFeatures === 'function' ||
734
+ Array.isArray((candidate as MLTFeatureTable).features) ||
735
+ typeof (candidate as MLTFeatureTable)[Symbol.iterator] === 'function')
736
+ );
737
+ }
738
+
739
+ function getTableFeatures(featureTable: MLTFeatureTable): MLTFeature[] {
740
+ if (typeof featureTable.getFeatures === 'function') {
741
+ const features = featureTable.getFeatures();
742
+ if (Array.isArray(features)) {
743
+ return features;
744
+ }
745
+ }
746
+
747
+ if (Array.isArray(featureTable.features)) {
748
+ return featureTable.features;
749
+ }
750
+
751
+ if (typeof featureTable[Symbol.iterator] === 'function') {
752
+ const iterableFeatures = featureTable[Symbol.iterator]?.();
753
+ if (!iterableFeatures) {
754
+ return [];
755
+ }
756
+ return Array.isArray(iterableFeatures) ? iterableFeatures : Array.from(iterableFeatures);
757
+ }
758
+
759
+ return [];
760
+ }
761
+
762
+ /**
763
+ * Convert an MLT Feature to a GeoJSON Feature
764
+ */
765
+ function convertFeatureToGeoJSON(
766
+ feature: MLTFeature,
767
+ options: MLTOptions,
768
+ layerName: string,
769
+ extent: number
770
+ ): Feature | null {
771
+ const {geometry, properties, id} = feature;
772
+
773
+ if (!geometry) {
774
+ return null;
775
+ }
776
+
777
+ const geojsonGeometry = convertGeometryToGeoJSON(geometry, options, extent);
778
+ if (!geojsonGeometry) {
779
+ return null;
780
+ }
781
+
782
+ const featureProperties: {[key: string]: unknown} = {...properties};
783
+
784
+ if (options.layerProperty) {
785
+ featureProperties[options.layerProperty] = layerName;
786
+ }
787
+
788
+ const geojsonFeature: Feature = {
789
+ type: 'Feature',
790
+ geometry: geojsonGeometry as any,
791
+ properties: featureProperties as any
792
+ };
793
+
794
+ if (id !== undefined && id !== null) {
795
+ (geojsonFeature as any).id =
796
+ typeof id === 'bigint' && id >= 0n && id <= BigInt(Number.MAX_SAFE_INTEGER) ? Number(id) : id;
797
+ }
798
+
799
+ return geojsonFeature;
800
+ }
801
+
802
+ /**
803
+ * Convert MLT geometry to GeoJSON geometry
804
+ */
805
+ function convertGeometryToGeoJSON(
806
+ geometry: MLTFeature['geometry'],
807
+ options: MLTOptions,
808
+ extent: number
809
+ ): object | null {
810
+ if (!geometry) {
811
+ return null;
812
+ }
813
+
814
+ const {type, coordinates} = geometry;
815
+
816
+ switch (type as number) {
817
+ case GEOMETRY_TYPE.POINT: {
818
+ // coordinates: [[Point]]
819
+ const ring = coordinates?.[0];
820
+ const point = ring?.[0];
821
+ if (!point || typeof point.x !== 'number' || typeof point.y !== 'number') {
822
+ return null;
823
+ }
824
+ return {
825
+ type: 'Point',
826
+ coordinates: projectPoint(point.x, point.y, options, extent)
827
+ };
828
+ }
829
+ case GEOMETRY_TYPE.MULTIPOINT: {
830
+ // coordinates: [[p1], [p2], ...]
831
+ return {
832
+ type: 'MultiPoint',
833
+ coordinates: coordinates.map(([p]) => projectPoint(p.x, p.y, options, extent))
834
+ };
835
+ }
836
+ case GEOMETRY_TYPE.LINESTRING: {
837
+ // coordinates: [[p1, p2, ...]]
838
+ return {
839
+ type: 'LineString',
840
+ coordinates: coordinates[0].map(p => projectPoint(p.x, p.y, options, extent))
841
+ };
842
+ }
843
+ case GEOMETRY_TYPE.MULTILINESTRING: {
844
+ // coordinates: [[p1, p2, ...], [p1, p2, ...], ...]
845
+ return {
846
+ type: 'MultiLineString',
847
+ coordinates: coordinates.map(ring => ring.map(p => projectPoint(p.x, p.y, options, extent)))
848
+ };
849
+ }
850
+ case GEOMETRY_TYPE.POLYGON: {
851
+ // coordinates: [[outer_ring_points], [hole_ring_points], ...]
852
+ return {
853
+ type: 'Polygon',
854
+ coordinates: coordinates.map(ring => ring.map(p => projectPoint(p.x, p.y, options, extent)))
855
+ };
856
+ }
857
+ case GEOMETRY_TYPE.MULTIPOLYGON: {
858
+ // In MLT, multipolygon rings are flattened: [[ring1], [ring2], ...]
859
+ // Treat each ring as its own polygon (simplified representation)
860
+ return {
861
+ type: 'MultiPolygon',
862
+ coordinates: coordinates.map(ring => [
863
+ ring.map(p => projectPoint(p.x, p.y, options, extent))
864
+ ])
865
+ };
866
+ }
867
+ default:
868
+ return null;
869
+ }
870
+ }
871
+
872
+ /**
873
+ * Project a tile coordinate to either local (0-1) or WGS84 (lng/lat) coordinates
874
+ */
875
+ function projectPoint(x: number, y: number, options: MLTOptions, extent: number): [number, number] {
876
+ if (options.coordinates === 'wgs84' && options.tileIndex) {
877
+ const {x: tx, y: ty, z} = options.tileIndex;
878
+ const size = extent * Math.pow(2, z);
879
+ const x0 = extent * tx;
880
+ const y0 = extent * ty;
881
+ const lng = ((x + x0) * 360) / size - 180;
882
+ const y2 = 180 - ((y + y0) * 360) / size;
883
+ const lat = (360 / Math.PI) * Math.atan(Math.exp((y2 * Math.PI) / 180)) - 90;
884
+ return [lng, lat];
885
+ }
886
+
887
+ // Local coordinates: normalize to [0, 1]
888
+ return [x / extent, y / extent];
889
+ }
890
+
891
+ /**
892
+ * Validate loader options
893
+ */
894
+ function checkOptions(options?: MLTLoaderOptions): MLTOptions {
895
+ const mltOptions = {
896
+ ...MLT_DEFAULT_OPTIONS,
897
+ ...(options?.mlt ?? {}),
898
+ geoarrow: options?.mlt?.geoarrow ?? options?.geoarrow
899
+ } as MLTOptions;
900
+
901
+ if (mltOptions.coordinates === 'wgs84' && !mltOptions.tileIndex) {
902
+ throw new Error('MLT Loader: WGS84 coordinates require a tileIndex option');
903
+ }
904
+
905
+ return mltOptions;
906
+ }