@loaders.gl/tiles 5.0.0-alpha.11 → 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 (698) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +18 -72
  3. package/dist/dist.dev.js +5874 -23815
  4. package/dist/dist.min.js +3 -3
  5. package/dist/image-set.d.ts +1 -1
  6. package/dist/image-set.d.ts.map +1 -1
  7. package/dist/index.cjs +2803 -10209
  8. package/dist/index.cjs.map +3 -3
  9. package/dist/index.d.ts +4 -43
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +3 -26
  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/pmtiles/pmtiles-writer-types.js +5 -0
  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/dist/tileset-2d.d.ts +2 -1
  391. package/dist/tileset-2d.d.ts.map +1 -1
  392. package/dist/tileset-2d.js +1 -1
  393. package/dist/tileset-2d.js.map +1 -1
  394. package/package.json +104 -16
  395. package/src/image-set.ts +1 -1
  396. package/src/index.ts +9 -123
  397. package/src/mlt/bundled.ts +9 -0
  398. package/src/mlt/index.ts +18 -0
  399. package/src/mlt/lib/encode-mlt-geometry.ts +162 -0
  400. package/src/mlt/lib/encode-mlt-streams.ts +66 -0
  401. package/src/mlt/lib/encode-mlt.ts +215 -0
  402. package/src/mlt/lib/parse-mlt.ts +906 -0
  403. package/src/mlt/libs/mlt-decoder.cjs +4552 -0
  404. package/src/mlt/mlt-format.ts +19 -0
  405. package/src/mlt/mlt-loader-with-parser.ts +57 -0
  406. package/src/mlt/mlt-loader.ts +64 -0
  407. package/src/mlt/mlt-source-loader.ts +266 -0
  408. package/src/mlt/mlt-writer.ts +47 -0
  409. package/src/mlt/unbundled.ts +6 -0
  410. package/src/mvt/arrow-table-tile-source-loader-types.ts +55 -0
  411. package/src/mvt/arrow-table-tile-source-loader.ts +307 -0
  412. package/src/mvt/arrow-table-tile-source-types.ts +32 -0
  413. package/src/mvt/bundled.ts +14 -0
  414. package/src/mvt/index.ts +67 -0
  415. package/src/mvt/lib/encode-mvt-arrow.ts +273 -0
  416. package/src/mvt/lib/encode-mvt.ts +46 -0
  417. package/src/mvt/lib/get-schemas-from-tilejson.ts +64 -0
  418. package/src/mvt/lib/is-longitude-latitude-crs.ts +15 -0
  419. package/src/mvt/lib/mapbox-vt-pbf/geojson-to-vt.ts.disabled +76 -0
  420. package/src/mvt/lib/mapbox-vt-pbf/geojson-wrapper.ts +89 -0
  421. package/src/mvt/lib/mapbox-vt-pbf/to-vector-tile.ts +230 -0
  422. package/src/mvt/lib/mvt-pbf/mvt-constants.ts +135 -0
  423. package/src/mvt/lib/mvt-pbf/mvt-types.ts +22 -0
  424. package/src/mvt/lib/mvt-pbf/parse-geometry-from-pbf.ts +285 -0
  425. package/src/mvt/lib/mvt-pbf/parse-mvt-from-pbf.ts +310 -0
  426. package/src/mvt/lib/mvt-pbf/write-mvt-to-pbf.ts +162 -0
  427. package/src/mvt/lib/mvt-worker-transport.ts +74 -0
  428. package/src/mvt/lib/parse-mvt-geojson.ts +65 -0
  429. package/src/mvt/lib/parse-mvt.ts +145 -0
  430. package/src/mvt/lib/parse-tilejson.ts +397 -0
  431. package/src/mvt/lib/resolve-table-tile-parameters.ts +23 -0
  432. package/src/mvt/lib/types.ts +90 -0
  433. package/src/mvt/lib/utils/geometry-utils.ts +238 -0
  434. package/src/mvt/lib/vector-tile/LICENSE.txt +31 -0
  435. package/src/mvt/lib/vector-tile/vector-tile-feature.ts +430 -0
  436. package/src/mvt/lib/vector-tile/vector-tile-layer.ts +130 -0
  437. package/src/mvt/lib/vector-tile/vector-tile.ts +32 -0
  438. package/src/mvt/lib/vector-tiler/LICENSE +19 -0
  439. package/src/mvt/lib/vector-tiler/arrow-tile.ts +93 -0
  440. package/src/mvt/lib/vector-tiler/features/clip-features.ts +250 -0
  441. package/src/mvt/lib/vector-tiler/features/convert-feature.ts +213 -0
  442. package/src/mvt/lib/vector-tiler/features/proto-feature.ts +104 -0
  443. package/src/mvt/lib/vector-tiler/features/simplify-path.ts +84 -0
  444. package/src/mvt/lib/vector-tiler/features/wrap-features.ts +125 -0
  445. package/src/mvt/lib/vector-tiler/proto-tile.ts +217 -0
  446. package/src/mvt/lib/vector-tiler/tile-to-geojson.ts +104 -0
  447. package/src/mvt/lib/vector-tiler/transform-tile.ts +57 -0
  448. package/src/mvt/map-style-format.ts +18 -0
  449. package/src/mvt/map-style-loader-with-parser.ts +62 -0
  450. package/src/mvt/map-style-loader.ts +31 -0
  451. package/src/mvt/map-style-schema.ts +53 -0
  452. package/src/mvt/map-style.ts +218 -0
  453. package/src/mvt/mvt-format.ts +25 -0
  454. package/src/mvt/mvt-geojson-loader-types.ts +60 -0
  455. package/src/mvt/mvt-geojson-loader.ts +20 -0
  456. package/src/mvt/mvt-loader-with-parser.ts +53 -0
  457. package/src/mvt/mvt-loader.ts +73 -0
  458. package/src/mvt/mvt-source-loader.ts +410 -0
  459. package/src/mvt/mvt-writer.ts +35 -0
  460. package/src/mvt/table-tile-source-loader.ts +672 -0
  461. package/src/mvt/tilejson-format.ts +18 -0
  462. package/src/mvt/tilejson-loader-with-parser.ts +38 -0
  463. package/src/mvt/tilejson-loader.ts +42 -0
  464. package/src/mvt/tilejson-zod-schema.ts +199 -0
  465. package/src/mvt/unbundled.ts +13 -0
  466. package/src/mvt/workers/mvt-worker-node.ts +9 -0
  467. package/src/mvt/workers/mvt-worker.ts +8 -0
  468. package/src/pmtiles/bundled.ts +6 -0
  469. package/src/pmtiles/geoarrow.ts +188 -0
  470. package/src/pmtiles/index.ts +27 -0
  471. package/src/pmtiles/lib/blob-source.ts +41 -0
  472. package/src/pmtiles/lib/encode-pmtiles.ts +322 -0
  473. package/src/pmtiles/lib/parse-pmtiles.ts +180 -0
  474. package/src/pmtiles/lib/range-request-source.ts +60 -0
  475. package/src/pmtiles/lib/version.ts +8 -0
  476. package/src/pmtiles/pmtiles-format.ts +19 -0
  477. package/src/pmtiles/pmtiles-loader-with-parser.ts +60 -0
  478. package/src/pmtiles/pmtiles-loader.ts +30 -0
  479. package/src/pmtiles/pmtiles-source-loader.ts +346 -0
  480. package/src/pmtiles/pmtiles-writer-types.ts +45 -0
  481. package/src/pmtiles/pmtiles-writer.ts +26 -0
  482. package/src/pmtiles/raster.ts +289 -0
  483. package/src/pmtiles/source-info.ts +25 -0
  484. package/src/pmtiles/unbundled.ts +6 -0
  485. package/src/raster-set.ts +2 -2
  486. package/src/tile-matrix.ts +138 -0
  487. package/src/tileset-2d/tile-2d-header.ts +14 -13
  488. package/src/tileset-2d/tileset-2d.ts +81 -19
  489. package/src/tileset-2d.ts +25 -1
  490. package/dist/constants.d.ts +0 -38
  491. package/dist/constants.d.ts.map +0 -1
  492. package/dist/constants.js +0 -39
  493. package/dist/constants.js.map +0 -1
  494. package/dist/point-cloud/point-cloud-tile.d.ts +0 -47
  495. package/dist/point-cloud/point-cloud-tile.d.ts.map +0 -1
  496. package/dist/point-cloud/point-cloud-tile.js +0 -70
  497. package/dist/point-cloud/point-cloud-tile.js.map +0 -1
  498. package/dist/point-cloud/point-cloud-tileset.d.ts +0 -135
  499. package/dist/point-cloud/point-cloud-tileset.d.ts.map +0 -1
  500. package/dist/point-cloud/point-cloud-tileset.js +0 -549
  501. package/dist/point-cloud/point-cloud-tileset.js.map +0 -1
  502. package/dist/point-cloud/types.d.ts +0 -81
  503. package/dist/point-cloud/types.d.ts.map +0 -1
  504. package/dist/point-cloud/types.js.map +0 -1
  505. package/dist/spatial/format-spatial-reference.d.ts +0 -68
  506. package/dist/spatial/format-spatial-reference.d.ts.map +0 -1
  507. package/dist/spatial/format-spatial-reference.js +0 -291
  508. package/dist/spatial/format-spatial-reference.js.map +0 -1
  509. package/dist/spatial/get-spatial-coordinate-frame.d.ts +0 -20
  510. package/dist/spatial/get-spatial-coordinate-frame.d.ts.map +0 -1
  511. package/dist/spatial/get-spatial-coordinate-frame.js +0 -139
  512. package/dist/spatial/get-spatial-coordinate-frame.js.map +0 -1
  513. package/dist/spatial/i3s-elevation.d.ts +0 -20
  514. package/dist/spatial/i3s-elevation.d.ts.map +0 -1
  515. package/dist/spatial/i3s-elevation.js +0 -90
  516. package/dist/spatial/i3s-elevation.js.map +0 -1
  517. package/dist/spatial/i3s-spatial-transformer.d.ts +0 -205
  518. package/dist/spatial/i3s-spatial-transformer.d.ts.map +0 -1
  519. package/dist/spatial/i3s-spatial-transformer.js +0 -731
  520. package/dist/spatial/i3s-spatial-transformer.js.map +0 -1
  521. package/dist/spatial/normalize-crs-identifier.d.ts +0 -15
  522. package/dist/spatial/normalize-crs-identifier.d.ts.map +0 -1
  523. package/dist/spatial/normalize-crs-identifier.js +0 -22
  524. package/dist/spatial/normalize-crs-identifier.js.map +0 -1
  525. package/dist/spatial/spatial-coordinate-transformer.d.ts +0 -52
  526. package/dist/spatial/spatial-coordinate-transformer.d.ts.map +0 -1
  527. package/dist/spatial/spatial-coordinate-transformer.js +0 -295
  528. package/dist/spatial/spatial-coordinate-transformer.js.map +0 -1
  529. package/dist/spatial/spatial-resource-registry.d.ts +0 -47
  530. package/dist/spatial/spatial-resource-registry.d.ts.map +0 -1
  531. package/dist/spatial/spatial-resource-registry.js +0 -76
  532. package/dist/spatial/spatial-resource-registry.js.map +0 -1
  533. package/dist/spatial/spatial-types.d.ts +0 -190
  534. package/dist/spatial/spatial-types.d.ts.map +0 -1
  535. package/dist/spatial/spatial-types.js +0 -192
  536. package/dist/spatial/spatial-types.js.map +0 -1
  537. package/dist/spatial/tiles-3d-spatial-transformer.d.ts +0 -32
  538. package/dist/spatial/tiles-3d-spatial-transformer.d.ts.map +0 -1
  539. package/dist/spatial/tiles-3d-spatial-transformer.js +0 -163
  540. package/dist/spatial/tiles-3d-spatial-transformer.js.map +0 -1
  541. package/dist/tileset-3d/common/indexed-archive-tileset-source.d.ts +0 -60
  542. package/dist/tileset-3d/common/indexed-archive-tileset-source.d.ts.map +0 -1
  543. package/dist/tileset-3d/common/indexed-archive-tileset-source.js +0 -130
  544. package/dist/tileset-3d/common/indexed-archive-tileset-source.js.map +0 -1
  545. package/dist/tileset-3d/common/tile-3d-contracts.d.ts +0 -63
  546. package/dist/tileset-3d/common/tile-3d-contracts.d.ts.map +0 -1
  547. package/dist/tileset-3d/common/tile-3d-contracts.js +0 -51
  548. package/dist/tileset-3d/common/tile-3d-contracts.js.map +0 -1
  549. package/dist/tileset-3d/common/tile-3d.d.ts +0 -410
  550. package/dist/tileset-3d/common/tile-3d.d.ts.map +0 -1
  551. package/dist/tileset-3d/common/tile-3d.js +0 -1056
  552. package/dist/tileset-3d/common/tile-3d.js.map +0 -1
  553. package/dist/tileset-3d/common/tileset-3d.d.ts +0 -367
  554. package/dist/tileset-3d/common/tileset-3d.d.ts.map +0 -1
  555. package/dist/tileset-3d/common/tileset-3d.js +0 -879
  556. package/dist/tileset-3d/common/tileset-3d.js.map +0 -1
  557. package/dist/tileset-3d/common/tileset-cache.d.ts +0 -29
  558. package/dist/tileset-3d/common/tileset-cache.d.ts.map +0 -1
  559. package/dist/tileset-3d/common/tileset-cache.js +0 -82
  560. package/dist/tileset-3d/common/tileset-cache.js.map +0 -1
  561. package/dist/tileset-3d/common/tileset-content-traversal.d.ts +0 -37
  562. package/dist/tileset-3d/common/tileset-content-traversal.d.ts.map +0 -1
  563. package/dist/tileset-3d/common/tileset-content-traversal.js +0 -80
  564. package/dist/tileset-3d/common/tileset-content-traversal.js.map +0 -1
  565. package/dist/tileset-3d/common/tileset-observability.d.ts +0 -60
  566. package/dist/tileset-3d/common/tileset-observability.d.ts.map +0 -1
  567. package/dist/tileset-3d/common/tileset-observability.js +0 -39
  568. package/dist/tileset-3d/common/tileset-observability.js.map +0 -1
  569. package/dist/tileset-3d/common/tileset-source.d.ts +0 -228
  570. package/dist/tileset-3d/common/tileset-source.d.ts.map +0 -1
  571. package/dist/tileset-3d/common/tileset-source.js +0 -17
  572. package/dist/tileset-3d/common/tileset-source.js.map +0 -1
  573. package/dist/tileset-3d/common/tileset-traverser.d.ts +0 -88
  574. package/dist/tileset-3d/common/tileset-traverser.d.ts.map +0 -1
  575. package/dist/tileset-3d/common/tileset-traverser.js +0 -341
  576. package/dist/tileset-3d/common/tileset-traverser.js.map +0 -1
  577. package/dist/tileset-3d/format-3d-tiles/implicit-tiling.d.ts +0 -182
  578. package/dist/tileset-3d/format-3d-tiles/implicit-tiling.d.ts.map +0 -1
  579. package/dist/tileset-3d/format-3d-tiles/implicit-tiling.js +0 -681
  580. package/dist/tileset-3d/format-3d-tiles/implicit-tiling.js.map +0 -1
  581. package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.d.ts +0 -221
  582. package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.d.ts.map +0 -1
  583. package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.js +0 -770
  584. package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.js.map +0 -1
  585. package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.d.ts +0 -111
  586. package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.d.ts.map +0 -1
  587. package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.js +0 -339
  588. package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.js.map +0 -1
  589. package/dist/tileset-3d/format-i3s/i3s-pending-tiles-register.d.ts +0 -27
  590. package/dist/tileset-3d/format-i3s/i3s-pending-tiles-register.d.ts.map +0 -1
  591. package/dist/tileset-3d/format-i3s/i3s-pending-tiles-register.js +0 -45
  592. package/dist/tileset-3d/format-i3s/i3s-pending-tiles-register.js.map +0 -1
  593. package/dist/tileset-3d/format-i3s/i3s-source.d.ts +0 -116
  594. package/dist/tileset-3d/format-i3s/i3s-source.d.ts.map +0 -1
  595. package/dist/tileset-3d/format-i3s/i3s-source.js +0 -450
  596. package/dist/tileset-3d/format-i3s/i3s-source.js.map +0 -1
  597. package/dist/tileset-3d/format-i3s/i3s-tile-manager.d.ts +0 -34
  598. package/dist/tileset-3d/format-i3s/i3s-tile-manager.d.ts.map +0 -1
  599. package/dist/tileset-3d/format-i3s/i3s-tile-manager.js +0 -81
  600. package/dist/tileset-3d/format-i3s/i3s-tile-manager.js.map +0 -1
  601. package/dist/tileset-3d/format-i3s/i3s-tileset-traverser.d.ts +0 -25
  602. package/dist/tileset-3d/format-i3s/i3s-tileset-traverser.d.ts.map +0 -1
  603. package/dist/tileset-3d/format-i3s/i3s-tileset-traverser.js +0 -84
  604. package/dist/tileset-3d/format-i3s/i3s-tileset-traverser.js.map +0 -1
  605. package/dist/tileset-3d/helpers/3d-tiles-options.d.ts +0 -5
  606. package/dist/tileset-3d/helpers/3d-tiles-options.d.ts.map +0 -1
  607. package/dist/tileset-3d/helpers/3d-tiles-options.js +0 -9
  608. package/dist/tileset-3d/helpers/3d-tiles-options.js.map +0 -1
  609. package/dist/tileset-3d/helpers/bounding-volume.d.ts +0 -23
  610. package/dist/tileset-3d/helpers/bounding-volume.d.ts.map +0 -1
  611. package/dist/tileset-3d/helpers/bounding-volume.js +0 -236
  612. package/dist/tileset-3d/helpers/bounding-volume.js.map +0 -1
  613. package/dist/tileset-3d/helpers/frame-state.d.ts +0 -93
  614. package/dist/tileset-3d/helpers/frame-state.d.ts.map +0 -1
  615. package/dist/tileset-3d/helpers/frame-state.js +0 -211
  616. package/dist/tileset-3d/helpers/frame-state.js.map +0 -1
  617. package/dist/tileset-3d/helpers/i3s-lod.d.ts +0 -20
  618. package/dist/tileset-3d/helpers/i3s-lod.d.ts.map +0 -1
  619. package/dist/tileset-3d/helpers/i3s-lod.js +0 -95
  620. package/dist/tileset-3d/helpers/i3s-lod.js.map +0 -1
  621. package/dist/tileset-3d/helpers/s2-bounding-volume.d.ts +0 -17
  622. package/dist/tileset-3d/helpers/s2-bounding-volume.d.ts.map +0 -1
  623. package/dist/tileset-3d/helpers/s2-bounding-volume.js +0 -20
  624. package/dist/tileset-3d/helpers/s2-bounding-volume.js.map +0 -1
  625. package/dist/tileset-3d/helpers/tiles-3d-lod.d.ts +0 -72
  626. package/dist/tileset-3d/helpers/tiles-3d-lod.d.ts.map +0 -1
  627. package/dist/tileset-3d/helpers/tiles-3d-lod.js +0 -257
  628. package/dist/tileset-3d/helpers/tiles-3d-lod.js.map +0 -1
  629. package/dist/tileset-3d/helpers/tiles-3d-request-priority.d.ts +0 -134
  630. package/dist/tileset-3d/helpers/tiles-3d-request-priority.d.ts.map +0 -1
  631. package/dist/tileset-3d/helpers/tiles-3d-request-priority.js +0 -179
  632. package/dist/tileset-3d/helpers/tiles-3d-request-priority.js.map +0 -1
  633. package/dist/tileset-3d/helpers/transform-utils.d.ts +0 -3
  634. package/dist/tileset-3d/helpers/transform-utils.d.ts.map +0 -1
  635. package/dist/tileset-3d/helpers/transform-utils.js +0 -86
  636. package/dist/tileset-3d/helpers/transform-utils.js.map +0 -1
  637. package/dist/tileset-3d/helpers/zoom.d.ts +0 -46
  638. package/dist/tileset-3d/helpers/zoom.d.ts.map +0 -1
  639. package/dist/tileset-3d/helpers/zoom.js +0 -86
  640. package/dist/tileset-3d/helpers/zoom.js.map +0 -1
  641. package/dist/types.d.ts +0 -48
  642. package/dist/types.d.ts.map +0 -1
  643. package/dist/types.js.map +0 -1
  644. package/dist/utils/doubly-linked-list-node.d.ts +0 -11
  645. package/dist/utils/doubly-linked-list-node.d.ts.map +0 -1
  646. package/dist/utils/doubly-linked-list-node.js +0 -20
  647. package/dist/utils/doubly-linked-list-node.js.map +0 -1
  648. package/dist/utils/doubly-linked-list.d.ts +0 -30
  649. package/dist/utils/doubly-linked-list.d.ts.map +0 -1
  650. package/dist/utils/doubly-linked-list.js +0 -93
  651. package/dist/utils/doubly-linked-list.js.map +0 -1
  652. package/dist/utils/managed-array.d.ts +0 -85
  653. package/dist/utils/managed-array.d.ts.map +0 -1
  654. package/dist/utils/managed-array.js +0 -152
  655. package/dist/utils/managed-array.js.map +0 -1
  656. package/src/constants.ts +0 -59
  657. package/src/point-cloud/point-cloud-tile.ts +0 -80
  658. package/src/point-cloud/point-cloud-tileset.ts +0 -767
  659. package/src/point-cloud/types.ts +0 -99
  660. package/src/spatial/format-spatial-reference.ts +0 -385
  661. package/src/spatial/get-spatial-coordinate-frame.ts +0 -169
  662. package/src/spatial/i3s-elevation.ts +0 -96
  663. package/src/spatial/i3s-spatial-transformer.ts +0 -1021
  664. package/src/spatial/normalize-crs-identifier.ts +0 -26
  665. package/src/spatial/spatial-coordinate-transformer.ts +0 -377
  666. package/src/spatial/spatial-resource-registry.ts +0 -90
  667. package/src/spatial/spatial-types.ts +0 -422
  668. package/src/spatial/tiles-3d-spatial-transformer.ts +0 -194
  669. package/src/tileset-3d/common/indexed-archive-tileset-source.ts +0 -205
  670. package/src/tileset-3d/common/tile-3d-contracts.ts +0 -115
  671. package/src/tileset-3d/common/tile-3d.ts +0 -1310
  672. package/src/tileset-3d/common/tileset-3d.ts +0 -1208
  673. package/src/tileset-3d/common/tileset-cache.ts +0 -111
  674. package/src/tileset-3d/common/tileset-content-traversal.ts +0 -114
  675. package/src/tileset-3d/common/tileset-observability.ts +0 -100
  676. package/src/tileset-3d/common/tileset-source.ts +0 -284
  677. package/src/tileset-3d/common/tileset-traverser.ts +0 -416
  678. package/src/tileset-3d/format-3d-tiles/implicit-tiling.ts +0 -1059
  679. package/src/tileset-3d/format-3d-tiles/tiles-3d-source.ts +0 -1025
  680. package/src/tileset-3d/format-3d-tiles/tileset-3d-traverser.ts +0 -391
  681. package/src/tileset-3d/format-i3s/i3s-pending-tiles-register.ts +0 -48
  682. package/src/tileset-3d/format-i3s/i3s-source.ts +0 -557
  683. package/src/tileset-3d/format-i3s/i3s-tile-manager.ts +0 -105
  684. package/src/tileset-3d/format-i3s/i3s-tileset-traverser.ts +0 -102
  685. package/src/tileset-3d/helpers/3d-tiles-options.ts +0 -11
  686. package/src/tileset-3d/helpers/bounding-volume.ts +0 -281
  687. package/src/tileset-3d/helpers/frame-state.ts +0 -322
  688. package/src/tileset-3d/helpers/i3s-lod.ts +0 -109
  689. package/src/tileset-3d/helpers/s2-bounding-volume.ts +0 -35
  690. package/src/tileset-3d/helpers/tiles-3d-lod.ts +0 -370
  691. package/src/tileset-3d/helpers/tiles-3d-request-priority.ts +0 -301
  692. package/src/tileset-3d/helpers/transform-utils.ts +0 -109
  693. package/src/tileset-3d/helpers/zoom.ts +0 -120
  694. package/src/types.ts +0 -54
  695. package/src/utils/doubly-linked-list-node.ts +0 -22
  696. package/src/utils/doubly-linked-list.ts +0 -105
  697. package/src/utils/managed-array.ts +0 -174
  698. /package/dist/{point-cloud → mvt/lib}/types.js +0 -0
@@ -0,0 +1,289 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
5
+ import {ImageWriter} from '@loaders.gl/images';
6
+ import {
7
+ rasterCoordinateToPixel,
8
+ sampleRaster,
9
+ waitForPromiseWithSignal
10
+ } from '@loaders.gl/core/loader-utils';
11
+ import type {
12
+ NumericRasterData,
13
+ RasterBoundingBox,
14
+ RasterRegionSource
15
+ } from '@loaders.gl/core/loader-utils';
16
+ import {encodePMTiles} from './lib/encode-pmtiles';
17
+ import type {PMTilesEncodeOptions, PMTilesTile} from './pmtiles-writer-types';
18
+
19
+ /** Existing numeric region source; the exporter never takes ownership or finalizes it. */
20
+ export type RasterPMTilesSource = Pick<RasterRegionSource, 'getMetadata' | 'getRasterForRegion'>;
21
+
22
+ /** Bounded selected-tile PNG authoring from an existing georeferenced raster source. */
23
+ export type RasterPMTilesOptions = {
24
+ /** Finite canonical XYZ selection; empty requests count against maxTiles. */
25
+ readonly tiles:
26
+ | Iterable<Pick<PMTilesTile, 'z' | 'x' | 'y'>>
27
+ | AsyncIterable<Pick<PMTilesTile, 'z' | 'x' | 'y'>>;
28
+ /** Square output tile width and height; default 256, maximum 1024. */
29
+ readonly tileSize?: number;
30
+ /** Source band indices in gray, gray/alpha, RGB or RGBA order; default all bands. */
31
+ readonly bands?: readonly number[];
32
+ /** Nonspatial source dimension selection, forwarded to region requests. */
33
+ readonly selection?: Readonly<Record<string, number>>;
34
+ /** Maximum returned region pixels, default 1,048,576. Also forwarded to the source. */
35
+ readonly maxSourcePixels?: number;
36
+ /** Budget for returned sample/mask buffers plus RGBA pixels, default 32 MiB. Forwarded to the source. */
37
+ readonly maxDecodedBytes?: number;
38
+ /** Archive budgets, cancellation, bounds, center and auxiliary metadata. */
39
+ readonly pmtiles?: Omit<PMTilesEncodeOptions, 'tileType' | 'tileCompression'>;
40
+ };
41
+
42
+ /** Web Mercator half-world extent in meters (EPSG:3857). */
43
+ const HALF_WORLD = Math.PI * 6378137;
44
+
45
+ /**
46
+ * Requests selected regions, samples byte-valued imagery into Web Mercator PNG tiles, and packages PMTiles v3.
47
+ * Longitude/latitude inputs are sampled at Mercator pixel centers; other CRSs require prior reprojection.
48
+ * Sampling uses raw bytes, validity masks and nodata. No styling or physical-value scaling is inferred.
49
+ * PNG encoding uses ImageWriter (browser canvas, or the application's installed Node image polyfill).
50
+ * Input region decoding, PNG encoding and archive allocation retain their own temporary allocations.
51
+ */
52
+ export async function encodeRasterPMTiles(
53
+ source: RasterPMTilesSource,
54
+ options: RasterPMTilesOptions
55
+ ): Promise<ArrayBuffer> {
56
+ const configuration = {
57
+ ...options,
58
+ bands: options.bands?.slice(),
59
+ selection: options.selection ? {...options.selection} : undefined,
60
+ pmtiles: {...options.pmtiles}
61
+ };
62
+ const signal = configuration.pmtiles.signal;
63
+ signal?.throwIfAborted();
64
+ const tileSize = configuration.tileSize ?? 256;
65
+ const maxSourcePixels = configuration.maxSourcePixels ?? 1024 * 1024;
66
+ const maxDecodedBytes = configuration.maxDecodedBytes ?? 32 * 1024 * 1024;
67
+ const maxTiles = configuration.pmtiles.maxTiles ?? 100000;
68
+ if (
69
+ !Number.isSafeInteger(tileSize) ||
70
+ tileSize < 1 ||
71
+ tileSize > 1024 ||
72
+ !Number.isSafeInteger(maxSourcePixels) ||
73
+ maxSourcePixels < tileSize * tileSize ||
74
+ !Number.isSafeInteger(maxDecodedBytes) ||
75
+ maxDecodedBytes < tileSize * tileSize * 4 ||
76
+ !Number.isSafeInteger(maxTiles) ||
77
+ maxTiles < 1
78
+ )
79
+ throw new Error('Invalid raster PMTiles size or budget');
80
+ const metadata = await waitForPromiseWithSignal(source.getMetadata({signal}), signal);
81
+ signal?.throwIfAborted();
82
+ const sourceCRS = metadata.crs;
83
+ if (sourceCRS !== 'EPSG:3857' && sourceCRS !== 'EPSG:4326' && sourceCRS !== 'OGC:CRS84')
84
+ throw new Error('Raster PMTiles requires EPSG:3857, EPSG:4326 or OGC:CRS84');
85
+ const crs = sourceCRS;
86
+ if (!Number.isSafeInteger(metadata.bandCount) || metadata.bandCount < 1)
87
+ throw new Error('Invalid raster source band count');
88
+ const bands =
89
+ configuration.bands ??
90
+ Array.from({length: Math.min(metadata.bandCount, 5)}, (_, index) => index);
91
+ if (
92
+ ![1, 2, 3, 4].includes(bands.length) ||
93
+ new Set(bands).size !== bands.length ||
94
+ bands.some(band => !Number.isSafeInteger(band) || band < 0 || band >= metadata.bandCount)
95
+ )
96
+ throw new Error('Select one through four distinct raster bands');
97
+ const sampleOptions = {bands: bands.map((_band, index) => index)};
98
+ const archiveMetadata = {...configuration.pmtiles.metadata};
99
+ for (const name of [
100
+ 'vector_layers',
101
+ 'bounds',
102
+ 'minzoom',
103
+ 'maxzoom',
104
+ 'center',
105
+ 'tiles',
106
+ 'tilestats'
107
+ ])
108
+ delete archiveMetadata[name];
109
+ return encodePMTiles(encodeTiles(), {
110
+ ...configuration.pmtiles,
111
+ metadata: archiveMetadata,
112
+ tileType: 'png',
113
+ tileCompression: 'none'
114
+ });
115
+
116
+ /** Acquires one bounded region at a time and closes selection iterators on failure/abort. */
117
+ async function* encodeTiles(): AsyncIterable<PMTilesTile> {
118
+ const seen = new Set<string>();
119
+ let requested = 0;
120
+ for await (const address of configuration.tiles) {
121
+ signal?.throwIfAborted();
122
+ const tile = {...address};
123
+ if (++requested > maxTiles) throw new Error('Raster PMTiles requested tile limit exceeded');
124
+ if (
125
+ !Number.isInteger(tile.z) ||
126
+ tile.z < 0 ||
127
+ tile.z > 26 ||
128
+ !Number.isInteger(tile.x) ||
129
+ !Number.isInteger(tile.y) ||
130
+ tile.x < 0 ||
131
+ tile.y < 0 ||
132
+ tile.x >= 2 ** tile.z ||
133
+ tile.y >= 2 ** tile.z
134
+ )
135
+ throw new Error('Invalid raster PMTiles selected XYZ address');
136
+ const key = `${tile.z}/${tile.x}/${tile.y}`;
137
+ if (seen.has(key)) throw new Error('Duplicate raster PMTiles selected XYZ address');
138
+ seen.add(key);
139
+ const scale = 2 ** tile.z;
140
+ const west = tile.x / scale;
141
+ const east = (tile.x + 1) / scale;
142
+ const north = tile.y / scale;
143
+ const south = (tile.y + 1) / scale;
144
+ const bounds: RasterBoundingBox =
145
+ crs === 'EPSG:3857'
146
+ ? [
147
+ [(2 * west - 1) * HALF_WORLD, (1 - 2 * south) * HALF_WORLD],
148
+ [(2 * east - 1) * HALF_WORLD, (1 - 2 * north) * HALF_WORLD]
149
+ ]
150
+ : [
151
+ [360 * west - 180, getLatitude(south)],
152
+ [360 * east - 180, getLatitude(north)]
153
+ ];
154
+ const raster = await waitForPromiseWithSignal(
155
+ source.getRasterForRegion({
156
+ bounds,
157
+ crs,
158
+ width: tileSize,
159
+ height: tileSize,
160
+ bands: bands.slice(),
161
+ selection: configuration.selection,
162
+ interleaved: false,
163
+ resampleMethod: 'nearest',
164
+ maxPixels: maxSourcePixels,
165
+ maxDecodedBytes,
166
+ signal
167
+ }),
168
+ signal
169
+ );
170
+ signal?.throwIfAborted();
171
+ validateRaster(raster, bands.length, tileSize, maxSourcePixels, maxDecodedBytes);
172
+ const pixels = new Uint8Array(tileSize * tileSize * 4);
173
+ let visible = false;
174
+ const firstX = bounds[0][0] + (bounds[1][0] - bounds[0][0]) / (2 * tileSize);
175
+ const lastX = bounds[1][0] - (bounds[1][0] - bounds[0][0]) / (2 * tileSize);
176
+ for (let row = 0; row < tileSize; row++) {
177
+ if (row % 32 === 0) {
178
+ signal?.throwIfAborted();
179
+ if (row) await new Promise<void>(resolve => setTimeout(resolve, 0));
180
+ signal?.throwIfAborted();
181
+ }
182
+ const normalizedY = north + (row + 0.5) / (tileSize * scale);
183
+ const sourceY =
184
+ crs === 'EPSG:3857' ? (1 - 2 * normalizedY) * HALF_WORLD : getLatitude(normalizedY);
185
+ const firstPixel = rasterCoordinateToPixel(raster, [firstX, sourceY], crs);
186
+ const lastPixel = rasterCoordinateToPixel(raster, [lastX, sourceY], crs);
187
+ for (let column = 0; column < tileSize; column++) {
188
+ const fraction = tileSize === 1 ? 0 : column / (tileSize - 1);
189
+ const sample = sampleRaster(
190
+ raster,
191
+ [
192
+ firstPixel[0] + (lastPixel[0] - firstPixel[0]) * fraction,
193
+ firstPixel[1] + (lastPixel[1] - firstPixel[1]) * fraction
194
+ ],
195
+ sampleOptions
196
+ );
197
+ if (!sample.valid.every(Boolean)) continue;
198
+ const values = sample.values as number[];
199
+ const offset = (row * tileSize + column) * 4;
200
+ const grayscale = values.length < 3;
201
+ pixels[offset] = values[0];
202
+ pixels[offset + 1] = grayscale ? values[0] : values[1];
203
+ pixels[offset + 2] = grayscale ? values[0] : values[2];
204
+ pixels[offset + 3] =
205
+ values.length === 2 ? values[1] : values.length === 4 ? values[3] : 255;
206
+ visible ||= pixels[offset + 3] > 0;
207
+ }
208
+ }
209
+ if (!visible) continue;
210
+ const data = await waitForPromiseWithSignal(
211
+ ImageWriter.encode(
212
+ {data: pixels, width: tileSize, height: tileSize},
213
+ {image: {mimeType: 'image/png'}}
214
+ ),
215
+ signal
216
+ );
217
+ signal?.throwIfAborted();
218
+ yield {...tile, data};
219
+ }
220
+ }
221
+ }
222
+
223
+ /** Converts north-origin normalized Web Mercator Y to latitude in degrees. */
224
+ function getLatitude(normalizedY: number): number {
225
+ return (Math.atan(Math.sinh(Math.PI * (1 - 2 * normalizedY))) * 180) / Math.PI;
226
+ }
227
+
228
+ /** Rejects unsupported imagery and bounds returned buffers before allocating RGBA output. */
229
+ function validateRaster(
230
+ raster: NumericRasterData,
231
+ bandCount: number,
232
+ tileSize: number,
233
+ maxPixels: number,
234
+ maxBytes: number
235
+ ): void {
236
+ const pixels = raster.width * raster.height;
237
+ if (
238
+ !Number.isSafeInteger(raster.width) ||
239
+ raster.width < 1 ||
240
+ !Number.isSafeInteger(raster.height) ||
241
+ raster.height < 1 ||
242
+ !Number.isSafeInteger(pixels) ||
243
+ pixels > maxPixels ||
244
+ raster.bandCount !== bandCount ||
245
+ raster.dtype !== 'uint8' ||
246
+ (raster.bands && raster.bands.length !== bandCount) ||
247
+ raster.bands?.some(
248
+ band => band.dtype !== 'uint8' || (band.scale ?? 1) !== 1 || (band.offset ?? 0) !== 0
249
+ )
250
+ )
251
+ throw new Error(
252
+ 'Raster PMTiles requires bounded raw uint8 imagery with matching selected bands'
253
+ );
254
+ const buffers = Array.isArray(raster.data) ? raster.data : [raster.data];
255
+ const expectedLength = Array.isArray(raster.data) ? pixels : pixels * bandCount;
256
+ if (
257
+ (Array.isArray(raster.data) && buffers.length !== bandCount) ||
258
+ buffers.some(
259
+ buffer =>
260
+ (!(buffer instanceof Uint8Array) && !(buffer instanceof Uint8ClampedArray)) ||
261
+ buffer.length !== expectedLength
262
+ )
263
+ )
264
+ throw new Error('Invalid raster PMTiles sample buffers');
265
+ for (const mask of raster.validityMasks ?? []) {
266
+ const offset = mask.offset ?? 0;
267
+ const pixelStride = mask.pixelStride ?? 1;
268
+ const rowStride = mask.rowStride ?? mask.width;
269
+ if (
270
+ !(mask.data instanceof Uint8Array) ||
271
+ mask.width !== raster.width ||
272
+ mask.height !== raster.height ||
273
+ !Number.isSafeInteger(offset) ||
274
+ offset < 0 ||
275
+ !Number.isSafeInteger(pixelStride) ||
276
+ pixelStride < 1 ||
277
+ !Number.isSafeInteger(rowStride) ||
278
+ rowStride < 1 ||
279
+ offset + (mask.height - 1) * rowStride + (mask.width - 1) * pixelStride >= mask.data.length ||
280
+ (mask.band !== undefined &&
281
+ (!Number.isInteger(mask.band) || mask.band < 0 || mask.band >= bandCount))
282
+ )
283
+ throw new Error('Invalid raster PMTiles validity mask');
284
+ }
285
+ const bytes =
286
+ buffers.reduce((total, buffer) => total + buffer.byteLength, tileSize * tileSize * 4) +
287
+ (raster.validityMasks ?? []).reduce((total, mask) => total + mask.data.byteLength, 0);
288
+ if (bytes > maxBytes) throw new Error('Raster PMTiles decoded-byte budget exceeded');
289
+ }
@@ -0,0 +1,25 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
5
+ import {Schema} from '@loaders.gl/core/schema';
6
+
7
+ export type SourceInfo = VectorSourceInfo | ImageSourceInfo;
8
+
9
+ /** Information about a vector source */
10
+ export type VectorSourceInfo = {
11
+ shape: 'vector-source';
12
+ /** List of geospatial tables */
13
+ layers: {name: string; schema: Schema}[];
14
+ /** List of nongeospatial tables */
15
+ tables: {name: string; schema: Schema}[];
16
+ /** Format specific metadata */
17
+ formatSpecificMetadata?: Record<string, any>;
18
+ };
19
+
20
+ /** Information about an image source */
21
+ export type ImageSourceInfo = {
22
+ shape: 'image-source';
23
+ /** Format specific metadata */
24
+ formatSpecificMetadata?: Record<string, any>;
25
+ };
@@ -0,0 +1,6 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
5
+ export type {PMTilesLoaderOptions} from './pmtiles-loader';
6
+ export {PMTilesLoader as _PMTilesLoader} from './pmtiles-loader';
package/src/raster-set.ts CHANGED
@@ -8,8 +8,8 @@ import type {
8
8
  RasterData,
9
9
  RasterSource,
10
10
  RasterSourceMetadata
11
- } from '@loaders.gl/loader-utils';
12
- import {waitForPromiseWithSignals} from '@loaders.gl/loader-utils';
11
+ } from '@loaders.gl/core/loader-utils';
12
+ import {waitForPromiseWithSignals} from '@loaders.gl/core/loader-utils';
13
13
 
14
14
  /** Accepted raster request currently retained by {@link RasterSet}. */
15
15
  export type RasterSetRequest<
@@ -0,0 +1,138 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
5
+ import {
6
+ getTileBounds,
7
+ getTileRange,
8
+ isTileIndexInRange,
9
+ selectTileMatrix
10
+ } from '@math.gl/geospatial/tile-matrix';
11
+ import type {
12
+ TileMatrix,
13
+ TileMatrixBounds,
14
+ TileMatrixLimits,
15
+ TileMatrixSet
16
+ } from '@math.gl/geospatial/tile-matrix';
17
+ import type {NonGeoBoundingBox, TileIndex} from './tileset-2d/types';
18
+ import type {GetTileDataParameters} from '@loaders.gl/core/loader-utils';
19
+
20
+ /** Renderer-independent view frame, already expressed in the grid's canonical X/Y coordinates. */
21
+ export type TileMatrixViewFrame = {
22
+ /** Exact grid CRS identifier; no identifier equivalence or reprojection is inferred. */
23
+ crs: string;
24
+ /** Ordered finite [minimumX, minimumY, maximumX, maximumY] extent in grid coordinates. */
25
+ extent: TileMatrixBounds;
26
+ /** Positive coordinate units per pixel; both axes must meet this target. */
27
+ resolution: number;
28
+ };
29
+
30
+ /** The geometry and coverage subset of TileGrid needed for selection. */
31
+ export type TileMatrixSelectionGrid = {
32
+ /** Complete native geometry; absence is rejected rather than inferred from partial fields. */
33
+ tileMatrixSet?: TileMatrixSet;
34
+ /** Optional inclusive per-matrix coverage; an empty list means no available tiles. */
35
+ limits?: readonly (TileMatrixLimits & {
36
+ /** Native matrix identifier addressed by this coverage rectangle. */
37
+ tileMatrix: string;
38
+ })[];
39
+ };
40
+
41
+ /** A native tile request; its Cartesian bbox stays in crs, including for geographic grids. */
42
+ export type TileMatrixTile = {
43
+ /** Native column/row and compatibility z equal to the selected matrix's array position. */
44
+ index: TileIndex;
45
+ /** Stable source/grid-scoped identifier, independent of numeric z or matrix ordering. */
46
+ id: string;
47
+ /** Required native matrix identifier; numeric index.z is not a substitute. */
48
+ tileMatrix: string;
49
+ /** Cartesian native-coordinate bounds, with no automatic geographic reinterpretation. */
50
+ bbox: NonGeoBoundingBox;
51
+ /** Native CRS of bbox; this is not necessarily a longitude/latitude bounding box. */
52
+ crs: string;
53
+ /** The selected level's logical width and height in pixels. */
54
+ tileSize: readonly [number, number];
55
+ };
56
+
57
+ /** Resource budget for an eager fixed-frame selection. */
58
+ export type TileMatrixSelectionOptions = {
59
+ /** Maximum tiles returned, default 4096. Oversized selections throw before allocation. */
60
+ maximumTileCount?: number;
61
+ };
62
+
63
+ /**
64
+ * Selects regular-grid tiles for an explicit native-CRS frame, with source coverage applied.
65
+ * Uses math.gl's coarsest level meeting the target, or its finest available fallback. z is the
66
+ * matrix's array index for compatibility; tileMatrix is authoritative. Cache ids encode the CRS,
67
+ * native matrix id and column/row, and are scoped to this source/grid, not globally unique.
68
+ * Returns an empty array outside the grid or available coverage. Partial geometry, coalesced
69
+ * rows, mismatched CRS identifiers and invalid coverage reject rather than approximating XYZ.
70
+ * This does not infer parents, transform a viewport, reproject content or configure a renderer.
71
+ */
72
+ export function selectTileMatrixTiles(
73
+ grid: TileMatrixSelectionGrid,
74
+ frame: TileMatrixViewFrame,
75
+ options: TileMatrixSelectionOptions = {}
76
+ ): TileMatrixTile[] {
77
+ const matrixSet = grid.tileMatrixSet;
78
+ if (!matrixSet || !matrixSet.crs || frame.crs !== matrixSet.crs) {
79
+ throw new Error('Tile selection requires complete geometry and a frame in the exact grid CRS.');
80
+ }
81
+ if (
82
+ frame.extent.length !== 4 ||
83
+ !frame.extent.every(Number.isFinite) ||
84
+ frame.extent[0] > frame.extent[2] ||
85
+ frame.extent[1] > frame.extent[3]
86
+ ) {
87
+ throw new RangeError('Tile frame extent must be finite and ordered.');
88
+ }
89
+ const maximumTileCount = options.maximumTileCount ?? 4096;
90
+ if (!Number.isSafeInteger(maximumTileCount) || maximumTileCount < 0) {
91
+ throw new RangeError('maximumTileCount must be a nonnegative safe integer.');
92
+ }
93
+ for (const matrix of matrixSet.matrices) {
94
+ // Newer math.gl models can describe coalescence; this selector deliberately accepts regular grids only.
95
+ const coalescenceBands = (matrix as TileMatrix & {variableMatrixWidths?: readonly unknown[]})
96
+ .variableMatrixWidths;
97
+ if (
98
+ coalescenceBands !== undefined &&
99
+ (!Array.isArray(coalescenceBands) || coalescenceBands.length > 0)
100
+ ) {
101
+ throw new Error('Regular-grid selection does not support variable-width rows.');
102
+ }
103
+ }
104
+ const selectedMatrix = selectTileMatrix(matrixSet, frame.resolution);
105
+ const coverage = new Map<string, NonNullable<TileMatrixSelectionGrid['limits']>[number]>();
106
+ for (const limit of grid.limits ?? []) {
107
+ const matrix = matrixSet.matrices.find(candidate => candidate.id === limit.tileMatrix);
108
+ if (!matrix || coverage.has(limit.tileMatrix)) {
109
+ throw new RangeError('Tile coverage must reference unique, known matrix ids.');
110
+ }
111
+ // math.gl validates every endpoint of the inclusive rectangle, not just these two indices.
112
+ isTileIndexInRange(matrix, limit.minTileColumn, limit.minTileRow, limit);
113
+ coverage.set(limit.tileMatrix, limit);
114
+ }
115
+ if (!selectedMatrix || (grid.limits !== undefined && !coverage.has(selectedMatrix.id))) return [];
116
+ const range = getTileRange(selectedMatrix, frame.extent, coverage.get(selectedMatrix.id));
117
+ if (!range) return [];
118
+ const width = range.maxTileColumn - range.minTileColumn + 1;
119
+ const height = range.maxTileRow - range.minTileRow + 1;
120
+ if (width > maximumTileCount / height)
121
+ throw new RangeError('Tile selection exceeds maximumTileCount.');
122
+ const matrixIndex = matrixSet.matrices.indexOf(selectedMatrix);
123
+ const tiles: TileMatrixTile[] = [];
124
+ for (let row = range.minTileRow; row <= range.maxTileRow; row++) {
125
+ for (let column = range.minTileColumn; column <= range.maxTileColumn; column++) {
126
+ const [left, bottom, right, top] = getTileBounds(selectedMatrix, column, row);
127
+ tiles.push({
128
+ index: {x: column, y: row, z: matrixIndex},
129
+ tileMatrix: selectedMatrix.id,
130
+ id: JSON.stringify([matrixSet.crs, selectedMatrix.id, column, row]),
131
+ bbox: {left, bottom, right, top},
132
+ crs: matrixSet.crs,
133
+ tileSize: [selectedMatrix.tileSize[0], selectedMatrix.tileSize[1]]
134
+ } satisfies TileMatrixTile & GetTileDataParameters);
135
+ }
136
+ }
137
+ return tiles;
138
+ }
@@ -3,7 +3,7 @@
3
3
  // Copyright (c) vis.gl contributors
4
4
 
5
5
  /* eslint-env browser */
6
- import {RequestScheduler} from '@loaders.gl/loader-utils';
6
+ import {RequestScheduler} from '@loaders.gl/core/loader-utils';
7
7
  import type {TileBoundingBox, TileIndex, TileLoadProps} from './types';
8
8
 
9
9
  /** Parameters used by {@link SharedTile2DHeader.loadData}. */
@@ -129,8 +129,9 @@ export class SharedTile2DHeader<DataT = any> {
129
129
  onLoad,
130
130
  onError
131
131
  }: Tile2DLoadDataProps<DataT>): Promise<void> {
132
+ /** Publishes only the current, uncanceled request's content or error. */
132
133
  const completeLoad = (tileData: DataT | null, error: unknown, loaderId: number): void => {
133
- if (loaderId !== this._loaderId) {
134
+ if (loaderId !== this._loaderId || this._isCancelled) {
134
135
  return;
135
136
  }
136
137
 
@@ -138,11 +139,6 @@ export class SharedTile2DHeader<DataT = any> {
138
139
  this.content = tileData;
139
140
  this.error = error ? normalizeTileError(error) : null;
140
141
 
141
- if (this._isCancelled && !tileData) {
142
- this._isLoaded = false;
143
- return;
144
- }
145
-
146
142
  this._isLoaded = true;
147
143
  this._isCancelled = false;
148
144
 
@@ -158,14 +154,17 @@ export class SharedTile2DHeader<DataT = any> {
158
154
 
159
155
  this._abortController = new AbortController();
160
156
  const {signal} = this._abortController;
161
- const requestToken = await requestScheduler.scheduleRequest(this, () => 1);
157
+ // Reloads must not reuse the scheduler token of an aborted request for this tile.
158
+ const requestToken = await requestScheduler.scheduleRequest({tile: this, loaderId}, () =>
159
+ loaderId === this._loaderId && !this._isCancelled ? 1 : -1
160
+ );
162
161
 
163
- if (!requestToken) {
164
- this._isCancelled = true;
162
+ if (this._isCancelled || loaderId !== this._loaderId) {
163
+ requestToken?.done();
165
164
  return;
166
165
  }
167
- if (this._isCancelled) {
168
- requestToken.done();
166
+ if (!requestToken) {
167
+ this._isCancelled = true;
169
168
  return;
170
169
  }
171
170
 
@@ -202,12 +201,14 @@ export class SharedTile2DHeader<DataT = any> {
202
201
  this._needsReload = true;
203
202
  }
204
203
 
205
- /** Cancels an in-flight tile request. */
204
+ /** Cancels a request and invalidates its result even if the loader ignores the abort signal. */
206
205
  abort(): void {
207
206
  if (this.isLoaded) {
208
207
  return;
209
208
  }
210
209
  this._isCancelled = true;
210
+ this._loaderId++;
211
+ this._loader = undefined;
211
212
  this._abortController?.abort();
212
213
  }
213
214
  }