@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
@@ -1,1025 +0,0 @@
1
- // loaders.gl
2
- // SPDX-License-Identifier: MIT
3
- // Copyright (c) vis.gl contributors
4
-
5
- import {path, RequestCache, sliceArrayBuffer} from '@loaders.gl/loader-utils';
6
- import {Ellipsoid} from '@math.gl/geospatial';
7
- import {Matrix4, Vector3} from '@math.gl/core';
8
- import type {CoreAPI, Loader, LoaderContext, LoaderOptions} from '@loaders.gl/loader-utils';
9
- import type {Tile3D} from '../common/tile-3d';
10
- import {Tileset3DTraverser} from './tileset-3d-traverser';
11
- import type {Tileset3D} from '../common/tileset-3d';
12
- import type {
13
- TileChildrenLoadResult,
14
- TileContentLoadResult,
15
- TilesetContentFormats,
16
- TilesetJSON,
17
- Tileset3DSource,
18
- TilesetSourceInput,
19
- TilesetSourceMetadata,
20
- TilesetSourceRequest,
21
- TilesetSourceResolver,
22
- TilesetSourceViewState
23
- } from '../common/tileset-source';
24
- import {Tile3D as Tile3DNode} from '../common/tile-3d';
25
- import {getZoomFromBoundingVolume} from '../helpers/zoom';
26
- import {TILESET_TYPE} from '../../constants';
27
- import type {TilesetTraverser, TilesetTraverserProps} from '../common/tileset-traverser';
28
- import type {FrameState} from '../helpers/frame-state';
29
- import {get3DTilesSpatialReference} from '../../spatial/format-spatial-reference';
30
- import {Tiles3DSpatialTransformer} from '../../spatial/tiles-3d-spatial-transformer';
31
- import {
32
- applyTilesetSpatialOptions,
33
- markTilesetSpatialReferenceTransformed
34
- } from '../../spatial/spatial-types';
35
- import type {TilesetSpatialReference} from '../../spatial/spatial-types';
36
- import {
37
- materializeImplicitSubtree,
38
- type ImplicitSubtreeReference,
39
- type ParsedImplicitSubtree
40
- } from './implicit-tiling';
41
-
42
- const EMPTY_CONTENT_FORMATS: TilesetContentFormats = {
43
- draco: false,
44
- meshopt: false,
45
- dds: false,
46
- ktx2: false
47
- };
48
-
49
- const DEFAULT_MAXIMUM_CACHED_SUBTREES = 32;
50
-
51
- type PackageFile = {
52
- name?: string;
53
- mimeType: string;
54
- uri?: string;
55
- originalUri?: string;
56
- data?: ArrayBuffer;
57
- byteOffset: number;
58
- byteLength: number;
59
- bufferUri?: string;
60
- };
61
-
62
- type PackageResource = {fileIndex: number; files: PackageFile[]};
63
-
64
- type Tiles3DPackageLoaderContext = LoaderContext & {
65
- /** Parent package records available while parsing an embedded tileset or subtree. */
66
- _tiles3dPackageFiles: PackageFile[];
67
- };
68
-
69
- /** Diagnostics for source-managed implicit subtree loading. */
70
- export type ImplicitTilingStats = {
71
- /** Subtree resources requested from the resolver or core API. */
72
- requestedSubtrees: number;
73
- /** Successful subtree materializations, including parsed-cache hits. */
74
- loadedSubtrees: number;
75
- /** Requests served by the source's parsed-subtree cache. */
76
- cacheHits: number;
77
- /** Parsed subtree resources currently retained for reuse. */
78
- cachedSubtrees: number;
79
- /** Subtree resource requests currently in flight. */
80
- pendingSubtrees: number;
81
- /** Runtime headers created below already-existing subtree-root placeholders. */
82
- materializedTiles: number;
83
- };
84
-
85
- /**
86
- * {@link Tileset3DSource} implementation for 3D Tiles datasets.
87
- */
88
- export class Tiles3DSource implements Tileset3DSource {
89
- /** 3D Tiles format discriminator. */
90
- readonly type = TILESET_TYPE.TILES3D;
91
- /** Loader used for tile content requests. */
92
- readonly loader: Loader;
93
- /** Root tileset URL. */
94
- readonly url: string;
95
- /** Base path used for relative tile resource resolution. */
96
- readonly basePath: string;
97
- /** Parsed root tileset payload. */
98
- tileset: TilesetJSON | null = null;
99
- /** Loader options forwarded to content requests. */
100
- readonly loadOptions: LoaderOptions;
101
- /** Core API used for root and tile-content loads when injected by the caller. */
102
- coreApi?: CoreAPI;
103
- /** Aggregate content-format flags discovered during streaming. */
104
- readonly contentFormats: TilesetContentFormats = {...EMPTY_CONTENT_FORMATS};
105
-
106
- /** Top-level 3D Tiles asset metadata. */
107
- asset?: Record<string, any>;
108
- /** Top-level per-feature properties metadata. */
109
- properties?: any;
110
- /** Top-level application-specific metadata. */
111
- extras?: any;
112
- /** Source-provided attribution metadata. */
113
- credits?: any;
114
- /** Normalized source metadata after initialization. */
115
- metadata?: TilesetSourceMetadata;
116
-
117
- private readonly queryParams: Record<string, string> = {};
118
- /** Final request URLs cached by unmodified tile content URL. */
119
- private readonly tileUrlCache: Map<string, string> = new Map();
120
- /** Original content descriptors retained across {@link Tile3D.unloadContent} calls. */
121
- private readonly tileContentHeaders = new WeakMap<Tile3D, Record<string, any>[]>();
122
- /** Installed nested roots by parent placement and ordered nested-content slot, across reloads. */
123
- private readonly nestedTilesetRoots = new WeakMap<Tile3D, Tile3D[]>();
124
- /** Source-local namespaces assigned to distinct embedded glTF package file collections. */
125
- private readonly packageNamespaces = new WeakMap<PackageFile[], number>();
126
- /** Next source-local package namespace. */
127
- private nextPackageNamespace = 0;
128
- /** Parsed subtree requests keyed by final source URL for deduplication and LRU reuse. */
129
- private readonly implicitSubtreeCache: RequestCache<ParsedImplicitSubtree>;
130
- /** Mutable counters exposed as a defensive snapshot through {@link getImplicitTilingStats}. */
131
- private readonly implicitTilingStats: Omit<
132
- ImplicitTilingStats,
133
- 'cachedSubtrees' | 'pendingSubtrees'
134
- > = {
135
- requestedSubtrees: 0,
136
- loadedSubtrees: 0,
137
- cacheHits: 0,
138
- materializedTiles: 0
139
- };
140
- /** Whether the owning tileset has released this source. */
141
- private destroyed = false;
142
- private readonly extensionsUsed: string[] = [];
143
- private readonly resolver?: TilesetSourceResolver;
144
- private rootTileset: TilesetJSON;
145
- /** CRS transformer shared by this source's headers and decoded glTF content. */
146
- private spatialTransformer?: Tiles3DSpatialTransformer;
147
- /** Root header after composing source-frame transforms and rebuilding target bounds. */
148
- private preparedRootHeader?: Record<string, any>;
149
-
150
- /**
151
- * Creates a 3D Tiles source.
152
- * @param input Root metadata request, or preloaded root metadata for tests and internal callers.
153
- * @param loadOptions Loader options forwarded to tile requests.
154
- */
155
- constructor(input: TilesetSourceInput, loadOptions: LoaderOptions = {}) {
156
- const request = normalizeTiles3DRequest(input);
157
- this.rootTileset = isTilesetRequest(input) ? null : input;
158
- this.tileset = this.rootTileset;
159
- this.loader = request.loader;
160
- this.url = request.url;
161
- this.basePath = request.basePath || path.dirname(request.url);
162
- this.resolver = request.resolver;
163
- this.coreApi = request.coreApi;
164
- this.loadOptions = loadOptions;
165
- const maximumCachedSubtrees = Number(
166
- (loadOptions['3d-tiles'] as Record<string, unknown> | undefined)?.maximumCachedSubtrees
167
- );
168
- const maximumCacheEntries = Number.isFinite(maximumCachedSubtrees)
169
- ? Math.max(0, Math.floor(maximumCachedSubtrees))
170
- : DEFAULT_MAXIMUM_CACHED_SUBTREES;
171
- this.implicitSubtreeCache = new RequestCache({maxEntries: maximumCacheEntries});
172
- }
173
-
174
- /**
175
- * Releases URL and parsed-subtree caches and blocks late subtree installation.
176
- *
177
- * The injected resolver or core API remains responsible for transport-level abort signals. A
178
- * request that cannot be aborted may finish parsing, but it will not mutate destroyed tiles.
179
- */
180
- destroy(): void {
181
- this.destroyed = true;
182
- this.tileUrlCache.clear();
183
- this.implicitSubtreeCache.clear();
184
- }
185
-
186
- /**
187
- * Fetches and validates top-level metadata, then normalizes common fields used by {@link Tileset3D}.
188
- */
189
- async initialize(): Promise<void> {
190
- if (!this.rootTileset) {
191
- const loaderOptions = (this.loadOptions[this.loader.id] as Record<string, unknown>) || {};
192
- this.rootTileset = await this.loadRootData(this.url, {
193
- ...this.loadOptions,
194
- [this.loader.id]: {
195
- ...loaderOptions,
196
- isTileset: true
197
- }
198
- });
199
- }
200
- this.tileset = this.rootTileset;
201
-
202
- if (this.rootTileset.queryString) {
203
- const searchParams = new URLSearchParams(this.rootTileset.queryString);
204
- for (const [parameterName, parameterValue] of searchParams.entries()) {
205
- this.setQueryParameter(parameterName, parameterValue);
206
- }
207
- }
208
-
209
- this.asset = this.rootTileset.asset;
210
- if (!this.asset) {
211
- throw new Error('Tileset must have an asset property.');
212
- }
213
- if (
214
- this.rootTileset.formatVersion !== '2.0-draft' &&
215
- this.asset.version !== '0.0' &&
216
- this.asset.version !== '1.0' &&
217
- this.asset.version !== '1.1'
218
- ) {
219
- throw new Error('The tileset must be 3D Tiles version 0.0, 1.0, 1.1, or 2.0-draft.');
220
- }
221
-
222
- if ('tilesetVersion' in this.asset) {
223
- this.setQueryParameter('v', this.asset.tilesetVersion);
224
- }
225
-
226
- this.properties = this.rootTileset.properties;
227
- this.extras = this.rootTileset.extras;
228
- this.credits = {attributions: []};
229
- this.extensionsUsed.splice(
230
- 0,
231
- this.extensionsUsed.length,
232
- ...(this.rootTileset.extensionsUsed || [])
233
- );
234
- this.metadata = {
235
- type: this.type,
236
- loader: this.loader,
237
- url: this.url,
238
- basePath: this.basePath,
239
- tileset: this.rootTileset,
240
- lodMetricType: this.rootTileset.lodMetricType,
241
- lodMetricValue: this.rootTileset.lodMetricValue,
242
- refine: this.rootTileset.root?.refine,
243
- spatialReference: get3DTilesSpatialReference(this.rootTileset)
244
- };
245
- }
246
-
247
- /**
248
- * Returns normalized source metadata after initialization.
249
- */
250
- getMetadata(): TilesetSourceMetadata {
251
- if (!this.metadata) {
252
- throw new Error('Tiles3DSource has not been initialized');
253
- }
254
- return this.metadata;
255
- }
256
-
257
- /**
258
- * Returns the root 3D Tiles payload.
259
- */
260
- async getRootTileset(): Promise<TilesetJSON> {
261
- return this.getMetadata().tileset;
262
- }
263
-
264
- /** Prepare nonlinear CRS state before runtime headers are materialized. */
265
- async prepareTileset(tileset: Tileset3D): Promise<void> {
266
- const spatialReference = tileset.spatialReference;
267
- if (spatialReference.status === 'unresolved') {
268
- throw new Error(
269
- spatialReference.warnings[0] ||
270
- '3D Tiles spatial operations cannot be resolved from the supplied metadata and options'
271
- );
272
- }
273
- if (spatialReference.status !== 'transformable' && spatialReference.status !== 'transformed') {
274
- return;
275
- }
276
- this.spatialTransformer ||= new Tiles3DSpatialTransformer(
277
- spatialReference,
278
- tileset.options.spatial
279
- );
280
- tileset.spatialReference = markTilesetSpatialReferenceTransformed(spatialReference);
281
- this.preparedRootHeader = this.transformTileHeader(
282
- this.getMetadata().tileset.root,
283
- new Matrix4()
284
- );
285
- }
286
-
287
- /**
288
- * Builds explicit runtime headers while leaving implicit subtree references lazy.
289
- */
290
- initializeTileHeaders(
291
- tileset: Tileset3D,
292
- tilesetJson: TilesetJSON,
293
- parentTile?: Tile3D | null
294
- ): Tile3D {
295
- const rootHeader = parentTile ? tilesetJson.root : this.preparedRootHeader || tilesetJson.root;
296
- const rootTile = new Tile3DNode(tileset, rootHeader, parentTile || undefined);
297
-
298
- if (parentTile) {
299
- parentTile.children.push(rootTile);
300
- rootTile.depth = parentTile.depth + 1;
301
- }
302
-
303
- const stack: Tile3D[] = [rootTile];
304
- while (stack.length > 0) {
305
- const tile = stack.pop() as Tile3D;
306
- tileset.stats.get('Tiles In Tileset(s)').incrementCount();
307
- const children = tile.header.children || [];
308
- for (const childHeader of children) {
309
- const childTile = new Tile3DNode(tileset, childHeader, tile);
310
- if (childTile.contentUrl?.includes('?session=')) {
311
- const url = new URL(childTile.contentUrl);
312
- const session = url.searchParams.get('session');
313
- if (session) {
314
- this.setQueryParameter('session', session);
315
- }
316
- }
317
- tile.children.push(childTile);
318
- childTile.depth = tile.depth + 1;
319
- stack.push(childTile);
320
- }
321
- }
322
-
323
- return rootTile;
324
- }
325
-
326
- /**
327
- * Creates the standard 3D Tiles traverser.
328
- */
329
- createTraverser(options: TilesetTraverserProps): TilesetTraverser {
330
- return new Tileset3DTraverser(options);
331
- }
332
-
333
- /**
334
- * Loads binary content or nested tileset JSON for a runtime tile.
335
- */
336
- async loadTileContent(tile: Tile3D): Promise<TileContentLoadResult> {
337
- const contentUrls = (tile.contentUrls || [tile.contentUrl]).filter(Boolean);
338
- const cachedContentHeaders = this.tileContentHeaders.get(tile);
339
- const contentHeaders: Record<string, any>[] =
340
- cachedContentHeaders ||
341
- (Array.isArray(tile.header?.content)
342
- ? tile.header.content
343
- : tile.header?.content
344
- ? [tile.header.content]
345
- : []);
346
- if (!cachedContentHeaders) {
347
- this.tileContentHeaders.set(tile, contentHeaders);
348
- }
349
- const tilesetLoaderOptions =
350
- (this.loadOptions[this.loader.id] as Record<string, unknown>) || {};
351
- const options = {
352
- ...this.loadOptions,
353
- [this.loader.id]: {
354
- ...tilesetLoaderOptions,
355
- // Content bytes, rather than URL suffixes, distinguish external tilesets from renderable
356
- // payloads. This is required for signed and extensionless resources.
357
- isTileset: 'auto',
358
- assetGltfUpAxis: (this.asset && this.asset.gltfUpAxis) || 'Y',
359
- _tilesetOptions: {
360
- spatialReference: tile.header?._spatialReference || tile.tileset?.spatialReference,
361
- spatialOptions: tile.tileset?.options.spatial,
362
- spatialTransform: tile.header?._spatialTransform
363
- }
364
- }
365
- };
366
-
367
- const contents = await Promise.all(
368
- contentUrls.map((contentUrl, contentIndex) => {
369
- const contentHeader = contentHeaders[contentIndex] || {};
370
- const vectorExtension = contentHeader.extensions?.['3DTILES_content_gltf_vector'];
371
- const vectorContent =
372
- contentHeader._vectorContent ||
373
- (vectorExtension?.vector === true ? {clip: vectorExtension.clip === true} : undefined);
374
- const contentOptions = vectorContent
375
- ? {
376
- ...options,
377
- [this.loader.id]: {
378
- ...(options[this.loader.id] as Record<string, unknown>),
379
- vectorContent
380
- }
381
- }
382
- : options;
383
- return this.loadContentResource(
384
- this.getTileUrl(contentUrl),
385
- contentHeader._resource,
386
- contentOptions
387
- );
388
- })
389
- );
390
- tile.contents = contents;
391
- tile.content = contents[0] || null;
392
- const nestedTilesets = contents.filter(content => content?.shape === 'tileset3d');
393
-
394
- return {
395
- loaded: true,
396
- contents,
397
- nestedTileset: nestedTilesets[0],
398
- nestedTilesets
399
- };
400
- }
401
-
402
- /** Transform a tile header and its eagerly declared descendants. */
403
- private transformTileHeader(
404
- header: Record<string, any>,
405
- parentTransform: Matrix4 = new Matrix4()
406
- ): Record<string, any> {
407
- if (!this.spatialTransformer) {
408
- return header;
409
- }
410
- return this.transformTileHeaderWithTransformer(
411
- header,
412
- this.spatialTransformer,
413
- parentTransform
414
- );
415
- }
416
-
417
- /** Rebuilds one header subtree using an explicitly selected CRS transformer. */
418
- private transformTileHeaderWithTransformer(
419
- header: Record<string, any>,
420
- transformer: Tiles3DSpatialTransformer,
421
- parentTransform: Matrix4,
422
- spatialReference?: TilesetSpatialReference
423
- ): Record<string, any> {
424
- const localTransform = header.transform ? new Matrix4(header.transform) : new Matrix4();
425
- const composedTransform = new Matrix4(parentTransform).multiplyRight(localTransform);
426
- const content = Array.isArray(header.content)
427
- ? header.content.map((entry: Record<string, any>) =>
428
- this.transformContentHeader(entry, composedTransform, transformer)
429
- )
430
- : header.content
431
- ? this.transformContentHeader(header.content, composedTransform, transformer)
432
- : header.content;
433
- return {
434
- ...header,
435
- transform: undefined,
436
- boundingVolume: header.boundingVolume
437
- ? transformer.transformBoundingVolume(header.boundingVolume, composedTransform)
438
- : header.boundingVolume,
439
- _spatialReference: spatialReference,
440
- _spatialTransform: composedTransform.toArray(),
441
- content,
442
- children: Array.isArray(header.children)
443
- ? header.children.map((child: Record<string, any>) =>
444
- this.transformTileHeaderWithTransformer(
445
- child,
446
- transformer,
447
- composedTransform,
448
- spatialReference
449
- )
450
- )
451
- : header.children
452
- };
453
- }
454
-
455
- private transformContentHeader(
456
- content: Record<string, any>,
457
- composedTransform: Matrix4,
458
- transformer: Tiles3DSpatialTransformer
459
- ): Record<string, any> {
460
- return {
461
- ...content,
462
- boundingVolume: content.boundingVolume
463
- ? transformer.transformBoundingVolume(content.boundingVolume, composedTransform)
464
- : content.boundingVolume
465
- };
466
- }
467
-
468
- /**
469
- * Loads, materializes, and installs exactly one implicit subtree.
470
- *
471
- * Final URLs pass through the same query inheritance and archive/custom resolver path as render
472
- * content. Parsed resources are deduplicated by final URL, while the pure materializer creates
473
- * lazy placeholders for every available child subtree instead of recursively fetching them.
474
- *
475
- * @param tile - Existing contentless subtree-root placeholder.
476
- * @param frameState - View state that made this request eligible; priority is consumed earlier.
477
- * @returns Counts describing the installed subtree.
478
- */
479
- async loadTileChildren(tile: Tile3D, frameState: FrameState): Promise<TileChildrenLoadResult> {
480
- void frameState;
481
- const reference = tile.header.implicitSubtree as ImplicitSubtreeReference | undefined;
482
- if (!reference) {
483
- return {loaded: false, tileCount: 0, childSubtreeCount: 0};
484
- }
485
-
486
- const subtreeUrl = this.getTileUrl(reference.subtreeUrl);
487
- const subtree = await this.loadImplicitSubtreeResource(subtreeUrl, reference.resource);
488
- if (this.destroyed || tile.isDestroyed()) {
489
- return {loaded: false, tileCount: 0, childSubtreeCount: 0};
490
- }
491
- const materializedSubtree = materializeImplicitSubtree(subtree, {
492
- ...reference,
493
- subtreeUrl
494
- });
495
-
496
- const nestedSpatialReference = tile.header._spatialReference as
497
- | TilesetSpatialReference
498
- | undefined;
499
- const subtreeTransformer = nestedSpatialReference
500
- ? new Tiles3DSpatialTransformer(nestedSpatialReference, tile.tileset.options.spatial)
501
- : this.spatialTransformer;
502
- const materializedRoot = subtreeTransformer
503
- ? this.transformTileHeaderWithTransformer(
504
- materializedSubtree.root,
505
- subtreeTransformer,
506
- new Matrix4(),
507
- nestedSpatialReference
508
- )
509
- : materializedSubtree.root;
510
- tile.applyImplicitSubtreeHeader(materializedRoot);
511
- const materializedTileCount = this.initializeMaterializedChildren(
512
- tile.tileset,
513
- tile,
514
- materializedRoot.children
515
- );
516
- this.implicitTilingStats.loadedSubtrees++;
517
- this.implicitTilingStats.materializedTiles += materializedTileCount;
518
-
519
- return {
520
- loaded: true,
521
- tileCount: materializedSubtree.tileCount,
522
- childSubtreeCount: materializedSubtree.childSubtreeCount
523
- };
524
- }
525
-
526
- /** Loads an implicit subtree for dataset traversal without camera state. */
527
- async loadTileChildrenForTraversal(
528
- tile: Tile3D,
529
- signal?: AbortSignal
530
- ): Promise<TileChildrenLoadResult> {
531
- throwIfTraversalAborted(signal);
532
- const result = await this.loadTileChildren(tile, {} as FrameState);
533
- throwIfTraversalAborted(signal);
534
- return result;
535
- }
536
-
537
- /**
538
- * Returns a snapshot of implicit-subtree request, cache, and materialization counters.
539
- *
540
- * @returns Immutable-by-convention diagnostic values for runtime inspection.
541
- */
542
- getImplicitTilingStats(): ImplicitTilingStats {
543
- return {
544
- ...this.implicitTilingStats,
545
- cachedSubtrees: this.implicitSubtreeCache.size - this.implicitSubtreeCache.pendingSize,
546
- pendingSubtrees: this.implicitSubtreeCache.pendingSize
547
- };
548
- }
549
-
550
- /**
551
- * Resolves a tile content URL with source-managed query parameters.
552
- *
553
- * Existing per-resource parameters take precedence over inherited root, version, and session
554
- * values. Completed URLs are cached by the original tile path; {@link setQueryParameter}
555
- * invalidates the cache before changed source state can be observed.
556
- *
557
- * @param tilePath - Unmodified absolute content URL or data URL from the tile header.
558
- * @returns Content URL with any missing source parameters appended.
559
- */
560
- getTileUrl(tilePath: string): string {
561
- if (tilePath.startsWith('data:')) {
562
- return tilePath;
563
- }
564
-
565
- const cachedTileUrl = this.tileUrlCache.get(tilePath);
566
- if (cachedTileUrl) {
567
- return cachedTileUrl;
568
- }
569
-
570
- if (!Object.keys(this.queryParams).length) {
571
- this.tileUrlCache.set(tilePath, tilePath);
572
- return tilePath;
573
- }
574
-
575
- const [pathWithoutQuery, existingQuery = ''] = tilePath.split('?');
576
- const mergedQueryParams = new URLSearchParams(existingQuery);
577
-
578
- for (const [key, value] of Object.entries(this.queryParams)) {
579
- if (!mergedQueryParams.has(key)) {
580
- mergedQueryParams.set(key, value);
581
- }
582
- }
583
-
584
- const queryParams = mergedQueryParams.toString();
585
- const tileUrl = queryParams ? `${pathWithoutQuery}?${queryParams}` : pathWithoutQuery;
586
- this.tileUrlCache.set(tilePath, tileUrl);
587
- return tileUrl;
588
- }
589
-
590
- /**
591
- * Updates an inherited source query parameter and invalidates derived request URLs.
592
- *
593
- * Root tokens and tileset versions normally settle during initialization. Some providers expose
594
- * a session parameter on a child URL, so invalidation is required to prevent URLs cached earlier
595
- * in header construction from retaining stale authentication state.
596
- *
597
- * @param parameterName - Query parameter name.
598
- * @param parameterValue - Query parameter value.
599
- */
600
- private setQueryParameter(parameterName: string, parameterValue: string): void {
601
- if (this.queryParams[parameterName] === parameterValue) {
602
- return;
603
- }
604
- this.queryParams[parameterName] = parameterValue;
605
- this.tileUrlCache.clear();
606
- }
607
-
608
- /**
609
- * Derives the default view state from the root bounding volume.
610
- */
611
- getViewState(rootTile: Tile3D | null): TilesetSourceViewState {
612
- if (!rootTile) {
613
- return {
614
- asset: this.asset,
615
- properties: this.properties,
616
- extras: this.extras,
617
- credits: this.credits
618
- };
619
- }
620
-
621
- const {center} = rootTile.boundingVolume;
622
- let cartographicCenter: Vector3;
623
- if (center && (center[0] !== 0 || center[1] !== 0 || center[2] !== 0)) {
624
- cartographicCenter = new Vector3();
625
- Ellipsoid.WGS84.cartesianToCartographic(center, cartographicCenter);
626
- } else {
627
- cartographicCenter = new Vector3(0, 0, -Ellipsoid.WGS84.radii[0]);
628
- }
629
-
630
- return {
631
- asset: this.asset,
632
- properties: this.properties,
633
- extras: this.extras,
634
- credits: this.credits,
635
- boundingVolume: rootTile.boundingVolume,
636
- cartographicCenter,
637
- cartesianCenter: center,
638
- zoom: getZoomFromBoundingVolume(rootTile.boundingVolume, cartographicCenter)
639
- };
640
- }
641
-
642
- /**
643
- * Checks whether the root tileset declares the given extension.
644
- */
645
- hasExtension(extensionName: string): boolean {
646
- return this.extensionsUsed.includes(extensionName);
647
- }
648
-
649
- /**
650
- * Updates content-format flags and installs nested tileset subtrees once per content slot.
651
- * Reloading payloads retains attached roots and their descendants, including duplicate URLs
652
- * declared in separate slots or parent placements. Detached roots are reinstalled in declaration order.
653
- */
654
- onTileLoaded(tileset: Tileset3D, tile: Tile3D, loadResult: TileContentLoadResult): void {
655
- const contents = tile.contents.length ? tile.contents : [tile.content];
656
- const extensionsRemoved = contents.flatMap(content => content?.gltf?.extensionsRemoved || []);
657
- if (extensionsRemoved.includes('KHR_draco_mesh_compression')) {
658
- this.contentFormats.draco = true;
659
- }
660
- if (extensionsRemoved.includes('EXT_meshopt_compression')) {
661
- this.contentFormats.meshopt = true;
662
- }
663
- if (extensionsRemoved.includes('KHR_texture_basisu')) {
664
- this.contentFormats.ktx2 = true;
665
- }
666
-
667
- const nestedTilesets =
668
- loadResult.nestedTilesets || (loadResult.nestedTileset ? [loadResult.nestedTileset] : []);
669
- const installedRoots = this.nestedTilesetRoots.get(tile) || [];
670
- for (const [nestedIndex, nestedTileset] of nestedTilesets.entries()) {
671
- const installedRoot = installedRoots[nestedIndex];
672
- if (installedRoot && tile.children.includes(installedRoot)) {
673
- continue;
674
- }
675
- const nextRoot = installedRoots
676
- .slice(nestedIndex + 1)
677
- .find(root => tile.children.includes(root));
678
- const nestedRoot = tileset._initializeTileHeaders(
679
- this.prepareNestedTileset(tileset, nestedTileset),
680
- tile
681
- );
682
- // Header installation appends roots; restore declaration order before any later retained slot.
683
- if (nextRoot) {
684
- tile.children.splice(tile.children.indexOf(nestedRoot), 1);
685
- tile.children.splice(tile.children.indexOf(nextRoot), 0, nestedRoot);
686
- }
687
- installedRoots[nestedIndex] = nestedRoot;
688
- this.nestedTilesetRoots.set(tile, installedRoots);
689
- }
690
- }
691
-
692
- /**
693
- * Resolves a nested tileset's CRS independently and adapts it to the owning tileset output frame.
694
- *
695
- * Nested resources may use a different source CRS from their parent. Their headers and glTF
696
- * payloads must therefore use a transformer built from the nested descriptor, while the parent
697
- * runtime continues to expose one requested output frame to traversal and rendering.
698
- */
699
- private prepareNestedTileset(tileset: Tileset3D, nestedTileset: TilesetJSON): TilesetJSON {
700
- const nestedSpatialReference = nestedTileset.spatialMetadata;
701
- const parentSpatialReference = tileset.spatialReference;
702
-
703
- if (
704
- nestedSpatialReference?.status === 'unresolved' ||
705
- nestedSpatialReference?.crs.state === 'unknown'
706
- ) {
707
- throw new Error(
708
- nestedSpatialReference.warnings[0] ||
709
- 'Nested 3D Tiles CRS is explicitly unresolved and cannot be placed in the parent frame'
710
- );
711
- }
712
-
713
- if (!nestedSpatialReference || !nestedSpatialReference.sourceCrs) {
714
- if (
715
- this.spatialTransformer &&
716
- (parentSpatialReference.status === 'transformable' ||
717
- parentSpatialReference.status === 'transformed')
718
- ) {
719
- return {
720
- ...nestedTileset,
721
- spatialMetadata: parentSpatialReference,
722
- root: this.transformTileHeaderWithTransformer(
723
- nestedTileset.root,
724
- this.spatialTransformer,
725
- new Matrix4(),
726
- parentSpatialReference
727
- )
728
- };
729
- }
730
- return addNestedSpatialReference(nestedTileset, parentSpatialReference);
731
- }
732
-
733
- const parentCoordinateEpoch = parentSpatialReference.coordinateEpoch;
734
- const nestedCoordinateEpoch = nestedSpatialReference.coordinateEpoch;
735
- if (
736
- parentCoordinateEpoch !== undefined &&
737
- nestedCoordinateEpoch !== undefined &&
738
- parentCoordinateEpoch !== nestedCoordinateEpoch
739
- ) {
740
- throw new Error(
741
- `Nested 3D Tiles coordinate epoch ${nestedCoordinateEpoch} differs from parent epoch ${parentCoordinateEpoch}; epoch-aware transformation is unavailable`
742
- );
743
- }
744
-
745
- const outputCrs = parentSpatialReference.targetCrs || parentSpatialReference.sourceCrs;
746
- if (!outputCrs) {
747
- return addNestedSpatialReference(nestedTileset, nestedSpatialReference);
748
- }
749
-
750
- const nestedOutputReference = applyTilesetSpatialOptions(nestedSpatialReference, {
751
- ...tileset.options.spatial,
752
- outputCoordinates: 'target-crs',
753
- targetCrs: outputCrs
754
- });
755
- if (nestedOutputReference.status === 'unresolved') {
756
- throw new Error(
757
- nestedOutputReference.warnings[0] ||
758
- 'Nested 3D Tiles CRS cannot be resolved in the parent output frame'
759
- );
760
- }
761
- if (nestedOutputReference.status === 'native') {
762
- return addNestedSpatialReference(nestedTileset, nestedOutputReference);
763
- }
764
-
765
- const nestedTransformer = new Tiles3DSpatialTransformer(
766
- nestedOutputReference,
767
- tileset.options.spatial
768
- );
769
- return {
770
- ...nestedTileset,
771
- spatialMetadata: nestedOutputReference,
772
- root: this.transformTileHeaderWithTransformer(
773
- nestedTileset.root,
774
- nestedTransformer,
775
- new Matrix4(),
776
- nestedOutputReference
777
- )
778
- };
779
- }
780
-
781
- /**
782
- * Loads data through injected core APIs so this module stays independent from `@loaders.gl/core`.
783
- */
784
- private async loadWithCoreApi(
785
- url: string,
786
- options: LoaderOptions,
787
- loader: Loader = this.loader
788
- ): Promise<any> {
789
- if (!this.coreApi) {
790
- throw new Error('Tiles3DSource requires an injected coreApi to load tileset data');
791
- }
792
-
793
- return await this.coreApi.load(url, loader, options);
794
- }
795
-
796
- /**
797
- * Loads data through an injected resolver when present, otherwise through the injected core API.
798
- */
799
- private async loadRootData(url: string, options: LoaderOptions): Promise<any> {
800
- if (this.resolver) {
801
- return await this.resolver.loadRoot(url, this.loader, options);
802
- }
803
-
804
- return await this.loadWithCoreApi(url, options);
805
- }
806
-
807
- /**
808
- * Loads an arbitrary source resource through an injected resolver or core API.
809
- */
810
- private async loadResourceData(
811
- url: string,
812
- options: LoaderOptions,
813
- loader: Loader = this.loader
814
- ): Promise<any> {
815
- if (this.resolver) {
816
- return await this.resolver.loadResource(url, loader, options);
817
- }
818
-
819
- return await this.loadWithCoreApi(url, options, loader);
820
- }
821
-
822
- /** Loads a URL content reference or parses a buffer-view file retained from a glTF package. */
823
- private async loadContentResource(
824
- url: string,
825
- packageResource: PackageResource | undefined,
826
- options: LoaderOptions
827
- ): Promise<any> {
828
- if (!packageResource) {
829
- return await this.loadResourceData(url, options);
830
- }
831
- const file = packageResource.files[packageResource.fileIndex];
832
- if (!file) {
833
- throw new Error(`3D Tiles package references missing file ${packageResource.fileIndex}`);
834
- }
835
- if (file.uri) {
836
- return await this.loadResourceData(this.getTileUrl(file.uri), options);
837
- }
838
- if (!this.coreApi) {
839
- throw new Error('Tiles3DSource requires an injected coreApi to parse embedded package data');
840
- }
841
-
842
- const data = await this.getPackageFileData(file);
843
- const packageNamespace = this.getPackageNamespace(packageResource.files);
844
- const packageRootUrl = `gltf-package://${packageNamespace}/${packageResource.fileIndex}`;
845
- const fileName = file.name || 'content';
846
- const directorySeparatorIndex = fileName.lastIndexOf('/');
847
- const packageBaseUrl =
848
- directorySeparatorIndex >= 0
849
- ? `${packageRootUrl}/${fileName.slice(0, directorySeparatorIndex)}`
850
- : packageRootUrl;
851
- return await this.coreApi.parse(data, this.loader, options, {
852
- url: `${packageRootUrl}/${fileName}`,
853
- filename: fileName,
854
- baseUrl: packageBaseUrl,
855
- loaders: [this.loader],
856
- coreApi: this.coreApi,
857
- _parse: this.coreApi.parse,
858
- _tiles3dPackageFiles: packageResource.files,
859
- fetch: async (resource: string, init?: RequestInit) => {
860
- const reference = resource.startsWith(`${packageRootUrl}/`)
861
- ? resource.slice(packageRootUrl.length + 1)
862
- : resource;
863
- const referencedFile = packageResource.files.find(
864
- packageFile => packageFile.name === reference || packageFile.originalUri === reference
865
- );
866
- if (!referencedFile) {
867
- throw new Error(`3D Tiles glTF package does not contain file ${reference}`);
868
- }
869
- if (referencedFile.uri) {
870
- return await this.coreApi!.fetchFile(this.getTileUrl(referencedFile.uri), init);
871
- }
872
- const referencedData = await this.getPackageFileData(referencedFile);
873
- return new Response(referencedData, {
874
- headers: {'content-type': referencedFile.mimeType}
875
- });
876
- }
877
- } as Tiles3DPackageLoaderContext);
878
- }
879
-
880
- /** Returns a stable source-local namespace for one embedded glTF package file collection. */
881
- private getPackageNamespace(files: PackageFile[]): number {
882
- const existingNamespace = this.packageNamespaces.get(files);
883
- if (existingNamespace !== undefined) {
884
- return existingNamespace;
885
- }
886
- const packageNamespace = this.nextPackageNamespace++;
887
- this.packageNamespaces.set(files, packageNamespace);
888
- return packageNamespace;
889
- }
890
-
891
- /** Resolves a retained package-file byte range without eagerly copying other package files. */
892
- private async getPackageFileData(file: PackageFile): Promise<ArrayBuffer> {
893
- if (file.data) {
894
- return sliceArrayBuffer(file.data, file.byteOffset, file.byteLength);
895
- }
896
- if (file.bufferUri && this.coreApi) {
897
- const response = await this.coreApi.fetchFile(this.getTileUrl(file.bufferUri));
898
- if (!response.ok) {
899
- throw new Error(`Failed to fetch 3D Tiles package buffer: HTTP ${response.status}`);
900
- }
901
- const buffer = await response.arrayBuffer();
902
- return sliceArrayBuffer(buffer, file.byteOffset, file.byteLength);
903
- }
904
- throw new Error('3D Tiles package file has no available byte source');
905
- }
906
-
907
- /**
908
- * Returns a parsed subtree from the LRU cache or starts one source-managed request.
909
- *
910
- * @param subtreeUrl - Final subtree URL after query inheritance.
911
- * @param packageResource - Optional glTF package file satisfying the subtree reference.
912
- * @returns Parsed subtree availability data.
913
- */
914
- private async loadImplicitSubtreeResource(
915
- subtreeUrl: string,
916
- packageResource?: PackageResource
917
- ): Promise<ParsedImplicitSubtree> {
918
- const cachedSubtree = this.implicitSubtreeCache.get(subtreeUrl);
919
- if (cachedSubtree) {
920
- this.implicitTilingStats.cacheHits++;
921
- return await cachedSubtree;
922
- }
923
-
924
- this.implicitTilingStats.requestedSubtrees++;
925
- const loaderOptions = (this.loadOptions[this.loader.id] as Record<string, unknown>) || {};
926
- return await this.implicitSubtreeCache.getOrLoad(subtreeUrl, async () => {
927
- const options = {
928
- ...this.loadOptions,
929
- [this.loader.id]: {
930
- ...loaderOptions,
931
- isTileset: false,
932
- isSubtree: true
933
- }
934
- };
935
- return (await (packageResource
936
- ? this.loadContentResource(subtreeUrl, packageResource, options)
937
- : this.loadResourceData(subtreeUrl, options))) as ParsedImplicitSubtree;
938
- });
939
- }
940
-
941
- /**
942
- * Instantiates every header represented by one materialized subtree.
943
- *
944
- * @param tileset - Owning runtime tileset.
945
- * @param parentTile - Existing materialized parent.
946
- * @param childHeaders - Headers to install below the parent.
947
- * @returns Number of newly allocated runtime tile nodes.
948
- */
949
- private initializeMaterializedChildren(
950
- tileset: Tileset3D,
951
- parentTile: Tile3D,
952
- childHeaders: Record<string, any>[]
953
- ): number {
954
- let materializedTileCount = 0;
955
- const stack: Array<{parentTile: Tile3D; childHeaders: Record<string, any>[]}> = [
956
- {parentTile, childHeaders}
957
- ];
958
- while (stack.length > 0) {
959
- const entry = stack.pop()!;
960
- for (const childHeader of entry.childHeaders) {
961
- const childTile = new Tile3DNode(tileset, childHeader, entry.parentTile);
962
- entry.parentTile.children.push(childTile);
963
- childTile.depth = entry.parentTile.depth + 1;
964
- tileset.stats.get('Tiles In Tileset(s)').incrementCount();
965
- materializedTileCount++;
966
- if (childHeader.children?.length) {
967
- stack.push({parentTile: childTile, childHeaders: childHeader.children});
968
- }
969
- }
970
- }
971
- return materializedTileCount;
972
- }
973
- }
974
-
975
- /** Throws a cancellation reason before or after source-managed traversal work. */
976
- function throwIfTraversalAborted(signal?: AbortSignal): void {
977
- if (signal?.aborted) {
978
- throw signal.reason ?? new DOMException('The operation was aborted', 'AbortError');
979
- }
980
- }
981
-
982
- function isTilesetRequest(input: TilesetSourceInput): input is TilesetSourceRequest {
983
- return Boolean(
984
- input && typeof input === 'object' && 'url' in input && 'loader' in input && !('type' in input)
985
- );
986
- }
987
-
988
- /**
989
- * Normalizes constructor input into a URL request descriptor.
990
- * @param input Constructor input for {@link Tiles3DSource}.
991
- * @returns A normalized request with a resolved base path.
992
- */
993
- function normalizeTiles3DRequest(input: TilesetSourceInput): TilesetSourceRequest {
994
- if (isTilesetRequest(input)) {
995
- return {
996
- ...input,
997
- basePath: input.basePath || path.dirname(input.url)
998
- };
999
- }
1000
-
1001
- return {
1002
- url: input.url,
1003
- loader: input.loader,
1004
- basePath: input.basePath || path.dirname(input.url),
1005
- resolver: (input as TilesetSourceRequest).resolver,
1006
- coreApi: (input as TilesetSourceRequest).coreApi
1007
- };
1008
- }
1009
-
1010
- /** Adds a nested CRS descriptor to each header without changing its native placement. */
1011
- function addNestedSpatialReference(
1012
- nestedTileset: TilesetJSON,
1013
- spatialReference: TilesetSpatialReference
1014
- ): TilesetJSON {
1015
- const addToHeader = (header: Record<string, any>): Record<string, any> => ({
1016
- ...header,
1017
- _spatialReference: spatialReference,
1018
- children: Array.isArray(header.children) ? header.children.map(addToHeader) : header.children
1019
- });
1020
- return {
1021
- ...nestedTileset,
1022
- spatialMetadata: spatialReference,
1023
- root: addToHeader(nestedTileset.root)
1024
- };
1025
- }