@honua/app-platform 0.0.20-alpha.0

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 (840) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +11 -0
  3. package/app/index.d.ts +164 -0
  4. package/app/index.d.ts.map +1 -0
  5. package/app/index.js +424 -0
  6. package/app-controller/controller.d.ts +425 -0
  7. package/app-controller/controller.d.ts.map +1 -0
  8. package/app-controller/controller.js +1173 -0
  9. package/app-controller/index.d.ts +14 -0
  10. package/app-controller/index.d.ts.map +1 -0
  11. package/app-controller/index.js +12 -0
  12. package/app-workspace/index.d.ts +421 -0
  13. package/app-workspace/index.d.ts.map +1 -0
  14. package/app-workspace/index.js +722 -0
  15. package/collaboration/client.d.ts +40 -0
  16. package/collaboration/client.d.ts.map +1 -0
  17. package/collaboration/client.js +299 -0
  18. package/collaboration/errors.d.ts +15 -0
  19. package/collaboration/errors.d.ts.map +1 -0
  20. package/collaboration/errors.js +17 -0
  21. package/collaboration/fixture.d.ts +41 -0
  22. package/collaboration/fixture.d.ts.map +1 -0
  23. package/collaboration/fixture.js +362 -0
  24. package/collaboration/index.d.ts +18 -0
  25. package/collaboration/index.d.ts.map +1 -0
  26. package/collaboration/index.js +14 -0
  27. package/collaboration/types.d.ts +240 -0
  28. package/collaboration/types.d.ts.map +1 -0
  29. package/collaboration/types.js +1 -0
  30. package/contract/analytics-sources.d.ts +149 -0
  31. package/contract/analytics-sources.d.ts.map +1 -0
  32. package/contract/analytics-sources.js +235 -0
  33. package/contract/edit-session.d.ts +203 -0
  34. package/contract/edit-session.d.ts.map +1 -0
  35. package/contract/edit-session.js +760 -0
  36. package/contract/edit-sketch.d.ts +91 -0
  37. package/contract/edit-sketch.d.ts.map +1 -0
  38. package/contract/edit-sketch.js +281 -0
  39. package/contract/index.d.ts +63 -0
  40. package/contract/index.d.ts.map +1 -0
  41. package/contract/index.js +52 -0
  42. package/contract/jobs.d.ts +149 -0
  43. package/contract/jobs.d.ts.map +1 -0
  44. package/contract/jobs.js +40 -0
  45. package/contract/pmtiles.d.ts +162 -0
  46. package/contract/pmtiles.d.ts.map +1 -0
  47. package/contract/pmtiles.js +155 -0
  48. package/contract/source.d.ts +447 -0
  49. package/contract/source.d.ts.map +1 -0
  50. package/contract/source.js +3909 -0
  51. package/contract/spatial-aggregation.d.ts +336 -0
  52. package/contract/spatial-aggregation.d.ts.map +1 -0
  53. package/contract/spatial-aggregation.js +298 -0
  54. package/contract/temporal.d.ts +455 -0
  55. package/contract/temporal.d.ts.map +1 -0
  56. package/contract/temporal.js +146 -0
  57. package/contract/tiles.d.ts +370 -0
  58. package/contract/tiles.d.ts.map +1 -0
  59. package/contract/tiles.js +519 -0
  60. package/contract/types.d.ts +694 -0
  61. package/contract/types.d.ts.map +1 -0
  62. package/contract/types.js +183 -0
  63. package/contract/widget-source.d.ts +205 -0
  64. package/contract/widget-source.d.ts.map +1 -0
  65. package/contract/widget-source.js +1473 -0
  66. package/control-plane/client.d.ts +95 -0
  67. package/control-plane/client.d.ts.map +1 -0
  68. package/control-plane/client.js +374 -0
  69. package/control-plane/index.d.ts +18 -0
  70. package/control-plane/index.d.ts.map +1 -0
  71. package/control-plane/index.js +14 -0
  72. package/control-plane/types.d.ts +233 -0
  73. package/control-plane/types.d.ts.map +1 -0
  74. package/control-plane/types.js +7 -0
  75. package/controls/basemap-style-binding.d.ts +54 -0
  76. package/controls/basemap-style-binding.d.ts.map +1 -0
  77. package/controls/basemap-style-binding.js +199 -0
  78. package/controls/basemap-switcher.d.ts +95 -0
  79. package/controls/basemap-switcher.d.ts.map +1 -0
  80. package/controls/basemap-switcher.js +379 -0
  81. package/controls/element-utils.d.ts +48 -0
  82. package/controls/element-utils.d.ts.map +1 -0
  83. package/controls/element-utils.js +78 -0
  84. package/controls/index.d.ts +33 -0
  85. package/controls/index.d.ts.map +1 -0
  86. package/controls/index.js +30 -0
  87. package/controls/layer-list.d.ts +98 -0
  88. package/controls/layer-list.d.ts.map +1 -0
  89. package/controls/layer-list.js +375 -0
  90. package/controls/legend-derive.d.ts +53 -0
  91. package/controls/legend-derive.d.ts.map +1 -0
  92. package/controls/legend-derive.js +196 -0
  93. package/controls/legend.d.ts +104 -0
  94. package/controls/legend.d.ts.map +1 -0
  95. package/controls/legend.js +381 -0
  96. package/controls/swipe-control.d.ts +80 -0
  97. package/controls/swipe-control.d.ts.map +1 -0
  98. package/controls/swipe-control.js +368 -0
  99. package/controls/types.d.ts +227 -0
  100. package/controls/types.d.ts.map +1 -0
  101. package/controls/types.js +11 -0
  102. package/core/auth/client-credentials-provider.d.ts +51 -0
  103. package/core/auth/client-credentials-provider.d.ts.map +1 -0
  104. package/core/auth/client-credentials-provider.js +115 -0
  105. package/core/auth/credential-store.d.ts +52 -0
  106. package/core/auth/credential-store.d.ts.map +1 -0
  107. package/core/auth/credential-store.js +82 -0
  108. package/core/auth/index.d.ts +23 -0
  109. package/core/auth/index.d.ts.map +1 -0
  110. package/core/auth/index.js +20 -0
  111. package/core/auth/oauth2-provider.d.ts +114 -0
  112. package/core/auth/oauth2-provider.d.ts.map +1 -0
  113. package/core/auth/oauth2-provider.js +408 -0
  114. package/core/auth/pkce.d.ts +25 -0
  115. package/core/auth/pkce.d.ts.map +1 -0
  116. package/core/auth/pkce.js +46 -0
  117. package/core/auth/static-providers.d.ts +20 -0
  118. package/core/auth/static-providers.d.ts.map +1 -0
  119. package/core/auth/static-providers.js +26 -0
  120. package/core/auth/token-endpoint.d.ts +40 -0
  121. package/core/auth/token-endpoint.d.ts.map +1 -0
  122. package/core/auth/token-endpoint.js +133 -0
  123. package/core/auth/types.d.ts +144 -0
  124. package/core/auth/types.d.ts.map +1 -0
  125. package/core/auth/types.js +8 -0
  126. package/core/batch.d.ts +37 -0
  127. package/core/batch.d.ts.map +1 -0
  128. package/core/batch.js +79 -0
  129. package/core/cache-state.d.ts +79 -0
  130. package/core/cache-state.d.ts.map +1 -0
  131. package/core/cache-state.js +87 -0
  132. package/core/client.d.ts +607 -0
  133. package/core/client.d.ts.map +1 -0
  134. package/core/client.js +1716 -0
  135. package/core/compatibility.d.ts +18 -0
  136. package/core/compatibility.d.ts.map +1 -0
  137. package/core/compatibility.js +245 -0
  138. package/core/errors.d.ts +139 -0
  139. package/core/errors.d.ts.map +1 -0
  140. package/core/errors.js +176 -0
  141. package/core/esri-geojson.d.ts +66 -0
  142. package/core/esri-geojson.d.ts.map +1 -0
  143. package/core/esri-geojson.js +363 -0
  144. package/core/geoparquet-sql.d.ts +162 -0
  145. package/core/geoparquet-sql.d.ts.map +1 -0
  146. package/core/geoparquet-sql.js +333 -0
  147. package/core/geoservices.d.ts +34 -0
  148. package/core/geoservices.d.ts.map +1 -0
  149. package/core/geoservices.js +434 -0
  150. package/core/grpc-adapter.d.ts +23 -0
  151. package/core/grpc-adapter.d.ts.map +1 -0
  152. package/core/grpc-adapter.js +688 -0
  153. package/core/odata.d.ts +347 -0
  154. package/core/odata.d.ts.map +1 -0
  155. package/core/odata.js +913 -0
  156. package/core/ogc-conformance.d.ts +35 -0
  157. package/core/ogc-conformance.d.ts.map +1 -0
  158. package/core/ogc-conformance.js +134 -0
  159. package/core/ogc-endpoint-layout.d.ts +70 -0
  160. package/core/ogc-endpoint-layout.d.ts.map +1 -0
  161. package/core/ogc-endpoint-layout.js +173 -0
  162. package/core/ogc-features.d.ts +23 -0
  163. package/core/ogc-features.d.ts.map +1 -0
  164. package/core/ogc-features.js +129 -0
  165. package/core/ogc-maps.d.ts +49 -0
  166. package/core/ogc-maps.d.ts.map +1 -0
  167. package/core/ogc-maps.js +126 -0
  168. package/core/ogc-processes.d.ts +118 -0
  169. package/core/ogc-processes.d.ts.map +1 -0
  170. package/core/ogc-processes.js +423 -0
  171. package/core/ogc-records.d.ts +75 -0
  172. package/core/ogc-records.d.ts.map +1 -0
  173. package/core/ogc-records.js +251 -0
  174. package/core/ogc-tiles.d.ts +125 -0
  175. package/core/ogc-tiles.d.ts.map +1 -0
  176. package/core/ogc-tiles.js +183 -0
  177. package/core/path-utils.d.ts +69 -0
  178. package/core/path-utils.d.ts.map +1 -0
  179. package/core/path-utils.js +123 -0
  180. package/core/pbf-decoder.d.ts +39 -0
  181. package/core/pbf-decoder.d.ts.map +1 -0
  182. package/core/pbf-decoder.js +702 -0
  183. package/core/process-runner.d.ts +104 -0
  184. package/core/process-runner.d.ts.map +1 -0
  185. package/core/process-runner.js +315 -0
  186. package/core/protocol-transport.d.ts +76 -0
  187. package/core/protocol-transport.d.ts.map +1 -0
  188. package/core/protocol-transport.js +15 -0
  189. package/core/query-builder.d.ts +261 -0
  190. package/core/query-builder.d.ts.map +1 -0
  191. package/core/query-builder.js +538 -0
  192. package/core/request-pipeline.d.ts +88 -0
  193. package/core/request-pipeline.d.ts.map +1 -0
  194. package/core/request-pipeline.js +273 -0
  195. package/core/spatial-filter.d.ts +93 -0
  196. package/core/spatial-filter.d.ts.map +1 -0
  197. package/core/spatial-filter.js +153 -0
  198. package/core/stac-static.d.ts +51 -0
  199. package/core/stac-static.d.ts.map +1 -0
  200. package/core/stac-static.js +195 -0
  201. package/core/stac.d.ts +67 -0
  202. package/core/stac.d.ts.map +1 -0
  203. package/core/stac.js +259 -0
  204. package/core/surfaces.d.ts +540 -0
  205. package/core/surfaces.d.ts.map +1 -0
  206. package/core/surfaces.js +1964 -0
  207. package/core/terrain-elevation.d.ts +114 -0
  208. package/core/terrain-elevation.d.ts.map +1 -0
  209. package/core/terrain-elevation.js +150 -0
  210. package/core/types.d.ts +1404 -0
  211. package/core/types.d.ts.map +1 -0
  212. package/core/types.js +13 -0
  213. package/core/wfs-capabilities.d.ts +153 -0
  214. package/core/wfs-capabilities.d.ts.map +1 -0
  215. package/core/wfs-capabilities.js +490 -0
  216. package/core/wfs-filter.d.ts +118 -0
  217. package/core/wfs-filter.d.ts.map +1 -0
  218. package/core/wfs-filter.js +634 -0
  219. package/core/wfs.d.ts +232 -0
  220. package/core/wfs.d.ts.map +1 -0
  221. package/core/wfs.js +426 -0
  222. package/core/wire-shared.d.ts +32 -0
  223. package/core/wire-shared.d.ts.map +1 -0
  224. package/core/wire-shared.js +76 -0
  225. package/core/wms-axis.d.ts +36 -0
  226. package/core/wms-axis.d.ts.map +1 -0
  227. package/core/wms-axis.js +73 -0
  228. package/core/wms-capabilities.d.ts +110 -0
  229. package/core/wms-capabilities.d.ts.map +1 -0
  230. package/core/wms-capabilities.js +559 -0
  231. package/core/wms-types.d.ts +128 -0
  232. package/core/wms-types.d.ts.map +1 -0
  233. package/core/wms-types.js +32 -0
  234. package/core/wms.d.ts +144 -0
  235. package/core/wms.d.ts.map +1 -0
  236. package/core/wms.js +338 -0
  237. package/core/wmts-capabilities.d.ts +82 -0
  238. package/core/wmts-capabilities.d.ts.map +1 -0
  239. package/core/wmts-capabilities.js +402 -0
  240. package/core/wmts.d.ts +103 -0
  241. package/core/wmts.d.ts.map +1 -0
  242. package/core/wmts.js +332 -0
  243. package/core/xml-text.d.ts +20 -0
  244. package/core/xml-text.d.ts.map +1 -0
  245. package/core/xml-text.js +85 -0
  246. package/esri-compat/basemap-gallery.d.ts +38 -0
  247. package/esri-compat/basemap-gallery.d.ts.map +1 -0
  248. package/esri-compat/basemap-gallery.js +159 -0
  249. package/esri-compat/basemap-layer-list.d.ts +35 -0
  250. package/esri-compat/basemap-layer-list.d.ts.map +1 -0
  251. package/esri-compat/basemap-layer-list.js +139 -0
  252. package/esri-compat/basemap.d.ts +32 -0
  253. package/esri-compat/basemap.d.ts.map +1 -0
  254. package/esri-compat/basemap.js +84 -0
  255. package/esri-compat/bookmarks.d.ts +36 -0
  256. package/esri-compat/bookmarks.d.ts.map +1 -0
  257. package/esri-compat/bookmarks.js +108 -0
  258. package/esri-compat/class-breaks-renderer.d.ts +50 -0
  259. package/esri-compat/class-breaks-renderer.d.ts.map +1 -0
  260. package/esri-compat/class-breaks-renderer.js +164 -0
  261. package/esri-compat/color.d.ts +22 -0
  262. package/esri-compat/color.d.ts.map +1 -0
  263. package/esri-compat/color.js +106 -0
  264. package/esri-compat/controls.d.ts +174 -0
  265. package/esri-compat/controls.d.ts.map +1 -0
  266. package/esri-compat/controls.js +479 -0
  267. package/esri-compat/coordinate-conversion.d.ts +41 -0
  268. package/esri-compat/coordinate-conversion.d.ts.map +1 -0
  269. package/esri-compat/coordinate-conversion.js +125 -0
  270. package/esri-compat/directions.d.ts +45 -0
  271. package/esri-compat/directions.d.ts.map +1 -0
  272. package/esri-compat/directions.js +123 -0
  273. package/esri-compat/editor.d.ts +47 -0
  274. package/esri-compat/editor.d.ts.map +1 -0
  275. package/esri-compat/editor.js +170 -0
  276. package/esri-compat/esri-config.d.ts +16 -0
  277. package/esri-compat/esri-config.d.ts.map +1 -0
  278. package/esri-compat/esri-config.js +23 -0
  279. package/esri-compat/esri-request.d.ts +17 -0
  280. package/esri-compat/esri-request.d.ts.map +1 -0
  281. package/esri-compat/esri-request.js +127 -0
  282. package/esri-compat/event-bus.d.ts +106 -0
  283. package/esri-compat/event-bus.d.ts.map +1 -0
  284. package/esri-compat/event-bus.js +90 -0
  285. package/esri-compat/expand.d.ts +36 -0
  286. package/esri-compat/expand.d.ts.map +1 -0
  287. package/esri-compat/expand.js +97 -0
  288. package/esri-compat/extent.d.ts +43 -0
  289. package/esri-compat/extent.d.ts.map +1 -0
  290. package/esri-compat/extent.js +140 -0
  291. package/esri-compat/feature-filter.d.ts +55 -0
  292. package/esri-compat/feature-filter.d.ts.map +1 -0
  293. package/esri-compat/feature-filter.js +109 -0
  294. package/esri-compat/feature-form.d.ts +64 -0
  295. package/esri-compat/feature-form.d.ts.map +1 -0
  296. package/esri-compat/feature-form.js +137 -0
  297. package/esri-compat/feature-layer.d.ts +173 -0
  298. package/esri-compat/feature-layer.d.ts.map +1 -0
  299. package/esri-compat/feature-layer.js +661 -0
  300. package/esri-compat/feature-set.d.ts +32 -0
  301. package/esri-compat/feature-set.d.ts.map +1 -0
  302. package/esri-compat/feature-set.js +80 -0
  303. package/esri-compat/feature-table.d.ts +141 -0
  304. package/esri-compat/feature-table.d.ts.map +1 -0
  305. package/esri-compat/feature-table.js +500 -0
  306. package/esri-compat/feature-templates.d.ts +41 -0
  307. package/esri-compat/feature-templates.d.ts.map +1 -0
  308. package/esri-compat/feature-templates.js +97 -0
  309. package/esri-compat/feature.d.ts +33 -0
  310. package/esri-compat/feature.d.ts.map +1 -0
  311. package/esri-compat/feature.js +83 -0
  312. package/esri-compat/geojson-layer.d.ts +86 -0
  313. package/esri-compat/geojson-layer.d.ts.map +1 -0
  314. package/esri-compat/geojson-layer.js +191 -0
  315. package/esri-compat/geometry-engine.d.ts +107 -0
  316. package/esri-compat/geometry-engine.d.ts.map +1 -0
  317. package/esri-compat/geometry-engine.js +266 -0
  318. package/esri-compat/graphic.d.ts +46 -0
  319. package/esri-compat/graphic.d.ts.map +1 -0
  320. package/esri-compat/graphic.js +103 -0
  321. package/esri-compat/graphics-layer.d.ts +49 -0
  322. package/esri-compat/graphics-layer.d.ts.map +1 -0
  323. package/esri-compat/graphics-layer.js +185 -0
  324. package/esri-compat/group-layer.d.ts +48 -0
  325. package/esri-compat/group-layer.d.ts.map +1 -0
  326. package/esri-compat/group-layer.js +212 -0
  327. package/esri-compat/identify.d.ts +71 -0
  328. package/esri-compat/identify.d.ts.map +1 -0
  329. package/esri-compat/identify.js +299 -0
  330. package/esri-compat/identity-manager.d.ts +74 -0
  331. package/esri-compat/identity-manager.d.ts.map +1 -0
  332. package/esri-compat/identity-manager.js +245 -0
  333. package/esri-compat/imagery-layer.d.ts +78 -0
  334. package/esri-compat/imagery-layer.d.ts.map +1 -0
  335. package/esri-compat/imagery-layer.js +167 -0
  336. package/esri-compat/label-class.d.ts +31 -0
  337. package/esri-compat/label-class.d.ts.map +1 -0
  338. package/esri-compat/label-class.js +102 -0
  339. package/esri-compat/layer-list.d.ts +77 -0
  340. package/esri-compat/layer-list.d.ts.map +1 -0
  341. package/esri-compat/layer-list.js +342 -0
  342. package/esri-compat/legend.d.ts +53 -0
  343. package/esri-compat/legend.d.ts.map +1 -0
  344. package/esri-compat/legend.js +254 -0
  345. package/esri-compat/map-image-layer.d.ts +162 -0
  346. package/esri-compat/map-image-layer.d.ts.map +1 -0
  347. package/esri-compat/map-image-layer.js +709 -0
  348. package/esri-compat/map-view.d.ts +323 -0
  349. package/esri-compat/map-view.d.ts.map +1 -0
  350. package/esri-compat/map-view.js +1175 -0
  351. package/esri-compat/map.d.ts +47 -0
  352. package/esri-compat/map.d.ts.map +1 -0
  353. package/esri-compat/map.js +209 -0
  354. package/esri-compat/measurement-2d.d.ts +61 -0
  355. package/esri-compat/measurement-2d.d.ts.map +1 -0
  356. package/esri-compat/measurement-2d.js +184 -0
  357. package/esri-compat/measurement.d.ts +45 -0
  358. package/esri-compat/measurement.d.ts.map +1 -0
  359. package/esri-compat/measurement.js +193 -0
  360. package/esri-compat/oauth-info.d.ts +50 -0
  361. package/esri-compat/oauth-info.d.ts.map +1 -0
  362. package/esri-compat/oauth-info.js +142 -0
  363. package/esri-compat/picture-marker-symbol.d.ts +35 -0
  364. package/esri-compat/picture-marker-symbol.d.ts.map +1 -0
  365. package/esri-compat/picture-marker-symbol.js +126 -0
  366. package/esri-compat/point.d.ts +31 -0
  367. package/esri-compat/point.d.ts.map +1 -0
  368. package/esri-compat/point.js +102 -0
  369. package/esri-compat/polygon.d.ts +31 -0
  370. package/esri-compat/polygon.d.ts.map +1 -0
  371. package/esri-compat/polygon.js +107 -0
  372. package/esri-compat/polyline.d.ts +31 -0
  373. package/esri-compat/polyline.d.ts.map +1 -0
  374. package/esri-compat/polyline.js +107 -0
  375. package/esri-compat/popup-template.d.ts +55 -0
  376. package/esri-compat/popup-template.d.ts.map +1 -0
  377. package/esri-compat/popup-template.js +128 -0
  378. package/esri-compat/popup.d.ts +54 -0
  379. package/esri-compat/popup.d.ts.map +1 -0
  380. package/esri-compat/popup.js +312 -0
  381. package/esri-compat/print.d.ts +47 -0
  382. package/esri-compat/print.d.ts.map +1 -0
  383. package/esri-compat/print.js +105 -0
  384. package/esri-compat/query.d.ts +58 -0
  385. package/esri-compat/query.d.ts.map +1 -0
  386. package/esri-compat/query.js +128 -0
  387. package/esri-compat/reactive-utils.d.ts +24 -0
  388. package/esri-compat/reactive-utils.d.ts.map +1 -0
  389. package/esri-compat/reactive-utils.js +193 -0
  390. package/esri-compat/request.d.ts +41 -0
  391. package/esri-compat/request.d.ts.map +1 -0
  392. package/esri-compat/request.js +253 -0
  393. package/esri-compat/route-layer.d.ts +59 -0
  394. package/esri-compat/route-layer.d.ts.map +1 -0
  395. package/esri-compat/route-layer.js +223 -0
  396. package/esri-compat/route-task.d.ts +88 -0
  397. package/esri-compat/route-task.d.ts.map +1 -0
  398. package/esri-compat/route-task.js +225 -0
  399. package/esri-compat/scene-view.d.ts +41 -0
  400. package/esri-compat/scene-view.d.ts.map +1 -0
  401. package/esri-compat/scene-view.js +68 -0
  402. package/esri-compat/search.d.ts +112 -0
  403. package/esri-compat/search.d.ts.map +1 -0
  404. package/esri-compat/search.js +820 -0
  405. package/esri-compat/simple-fill-symbol.d.ts +27 -0
  406. package/esri-compat/simple-fill-symbol.d.ts.map +1 -0
  407. package/esri-compat/simple-fill-symbol.js +85 -0
  408. package/esri-compat/simple-line-symbol.d.ts +27 -0
  409. package/esri-compat/simple-line-symbol.d.ts.map +1 -0
  410. package/esri-compat/simple-line-symbol.js +85 -0
  411. package/esri-compat/simple-marker-symbol.d.ts +29 -0
  412. package/esri-compat/simple-marker-symbol.d.ts.map +1 -0
  413. package/esri-compat/simple-marker-symbol.js +92 -0
  414. package/esri-compat/simple-renderer.d.ts +29 -0
  415. package/esri-compat/simple-renderer.d.ts.map +1 -0
  416. package/esri-compat/simple-renderer.js +92 -0
  417. package/esri-compat/sketch.d.ts +64 -0
  418. package/esri-compat/sketch.d.ts.map +1 -0
  419. package/esri-compat/sketch.js +227 -0
  420. package/esri-compat/spatial-reference.d.ts +31 -0
  421. package/esri-compat/spatial-reference.d.ts.map +1 -0
  422. package/esri-compat/spatial-reference.js +102 -0
  423. package/esri-compat/swipe.d.ts +34 -0
  424. package/esri-compat/swipe.d.ts.map +1 -0
  425. package/esri-compat/swipe.js +93 -0
  426. package/esri-compat/table-list.d.ts +36 -0
  427. package/esri-compat/table-list.d.ts.map +1 -0
  428. package/esri-compat/table-list.js +126 -0
  429. package/esri-compat/text-symbol.d.ts +37 -0
  430. package/esri-compat/text-symbol.d.ts.map +1 -0
  431. package/esri-compat/text-symbol.js +123 -0
  432. package/esri-compat/tile-layer.d.ts +52 -0
  433. package/esri-compat/tile-layer.d.ts.map +1 -0
  434. package/esri-compat/tile-layer.js +168 -0
  435. package/esri-compat/time-slider.d.ts +70 -0
  436. package/esri-compat/time-slider.d.ts.map +1 -0
  437. package/esri-compat/time-slider.js +208 -0
  438. package/esri-compat/track.d.ts +51 -0
  439. package/esri-compat/track.d.ts.map +1 -0
  440. package/esri-compat/track.js +174 -0
  441. package/esri-compat/unique-value-renderer.d.ts +41 -0
  442. package/esri-compat/unique-value-renderer.d.ts.map +1 -0
  443. package/esri-compat/unique-value-renderer.js +127 -0
  444. package/esri-compat/url.d.ts +13 -0
  445. package/esri-compat/url.d.ts.map +1 -0
  446. package/esri-compat/url.js +68 -0
  447. package/esri-compat/vector-tile-layer.d.ts +47 -0
  448. package/esri-compat/vector-tile-layer.d.ts.map +1 -0
  449. package/esri-compat/vector-tile-layer.js +130 -0
  450. package/esri-compat/web-map.d.ts +14 -0
  451. package/esri-compat/web-map.d.ts.map +1 -0
  452. package/esri-compat/web-map.js +24 -0
  453. package/esri-compat/wfs-layer.d.ts +64 -0
  454. package/esri-compat/wfs-layer.d.ts.map +1 -0
  455. package/esri-compat/wfs-layer.js +145 -0
  456. package/esri-compat/wms-layer.d.ts +76 -0
  457. package/esri-compat/wms-layer.d.ts.map +1 -0
  458. package/esri-compat/wms-layer.js +157 -0
  459. package/exploration/context.d.ts +25 -0
  460. package/exploration/context.d.ts.map +1 -0
  461. package/exploration/context.js +396 -0
  462. package/exploration/index.d.ts +27 -0
  463. package/exploration/index.d.ts.map +1 -0
  464. package/exploration/index.js +24 -0
  465. package/exploration/presets.d.ts +27 -0
  466. package/exploration/presets.d.ts.map +1 -0
  467. package/exploration/presets.js +114 -0
  468. package/exploration/reducer.d.ts +23 -0
  469. package/exploration/reducer.d.ts.map +1 -0
  470. package/exploration/reducer.js +332 -0
  471. package/exploration/selection.d.ts +25 -0
  472. package/exploration/selection.d.ts.map +1 -0
  473. package/exploration/selection.js +34 -0
  474. package/exploration/selectors.d.ts +56 -0
  475. package/exploration/selectors.d.ts.map +1 -0
  476. package/exploration/selectors.js +110 -0
  477. package/exploration/types.d.ts +294 -0
  478. package/exploration/types.d.ts.map +1 -0
  479. package/exploration/types.js +33 -0
  480. package/expr/expression.d.ts +457 -0
  481. package/expr/expression.d.ts.map +1 -0
  482. package/expr/expression.js +663 -0
  483. package/expr/index.d.ts +32 -0
  484. package/expr/index.d.ts.map +1 -0
  485. package/expr/index.js +30 -0
  486. package/filter-registry/index.d.ts +145 -0
  487. package/filter-registry/index.d.ts.map +1 -0
  488. package/filter-registry/index.js +531 -0
  489. package/gen/honua/v1/feature_service_pb.d.ts +918 -0
  490. package/gen/honua/v1/feature_service_pb.d.ts.map +1 -0
  491. package/gen/honua/v1/feature_service_pb.js +375 -0
  492. package/generated-app/errors.d.ts +41 -0
  493. package/generated-app/errors.d.ts.map +1 -0
  494. package/generated-app/errors.js +41 -0
  495. package/generated-app/index.d.ts +17 -0
  496. package/generated-app/index.d.ts.map +1 -0
  497. package/generated-app/index.js +12 -0
  498. package/generated-app/manifest.d.ts +183 -0
  499. package/generated-app/manifest.d.ts.map +1 -0
  500. package/generated-app/manifest.js +14 -0
  501. package/generated-app/projection.d.ts +44 -0
  502. package/generated-app/projection.d.ts.map +1 -0
  503. package/generated-app/projection.js +234 -0
  504. package/generated-app/runtime.d.ts +215 -0
  505. package/generated-app/runtime.d.ts.map +1 -0
  506. package/generated-app/runtime.js +1196 -0
  507. package/geocoding/index.d.ts +106 -0
  508. package/geocoding/index.d.ts.map +1 -0
  509. package/geocoding/index.js +278 -0
  510. package/interactions/detail-model.d.ts +54 -0
  511. package/interactions/detail-model.d.ts.map +1 -0
  512. package/interactions/detail-model.js +105 -0
  513. package/interactions/exploration-bindings.d.ts +120 -0
  514. package/interactions/exploration-bindings.d.ts.map +1 -0
  515. package/interactions/exploration-bindings.js +218 -0
  516. package/interactions/feature-state.d.ts +144 -0
  517. package/interactions/feature-state.d.ts.map +1 -0
  518. package/interactions/feature-state.js +169 -0
  519. package/interactions/hit-test.d.ts +112 -0
  520. package/interactions/hit-test.d.ts.map +1 -0
  521. package/interactions/hit-test.js +291 -0
  522. package/interactions/index.d.ts +31 -0
  523. package/interactions/index.d.ts.map +1 -0
  524. package/interactions/index.js +24 -0
  525. package/interactions/share-state.d.ts +36 -0
  526. package/interactions/share-state.d.ts.map +1 -0
  527. package/interactions/share-state.js +123 -0
  528. package/map/feature-service-adapter.d.ts +138 -0
  529. package/map/feature-service-adapter.d.ts.map +1 -0
  530. package/map/feature-service-adapter.js +279 -0
  531. package/map/honua-map.d.ts +203 -0
  532. package/map/honua-map.d.ts.map +1 -0
  533. package/map/honua-map.js +347 -0
  534. package/map/index.d.ts +27 -0
  535. package/map/index.d.ts.map +1 -0
  536. package/map/index.js +22 -0
  537. package/map/maplibre-target.d.ts +103 -0
  538. package/map/maplibre-target.d.ts.map +1 -0
  539. package/map/maplibre-target.js +164 -0
  540. package/map/webmap-maplibre.d.ts +60 -0
  541. package/map/webmap-maplibre.d.ts.map +1 -0
  542. package/map/webmap-maplibre.js +212 -0
  543. package/operate/client.d.ts +94 -0
  544. package/operate/client.d.ts.map +1 -0
  545. package/operate/client.js +361 -0
  546. package/operate/index.d.ts +22 -0
  547. package/operate/index.d.ts.map +1 -0
  548. package/operate/index.js +19 -0
  549. package/operate/types.d.ts +397 -0
  550. package/operate/types.d.ts.map +1 -0
  551. package/operate/types.js +17 -0
  552. package/operator/client.d.ts +60 -0
  553. package/operator/client.d.ts.map +1 -0
  554. package/operator/client.js +20 -0
  555. package/operator/controllers/approval.d.ts +52 -0
  556. package/operator/controllers/approval.d.ts.map +1 -0
  557. package/operator/controllers/approval.js +123 -0
  558. package/operator/controllers/base.d.ts +27 -0
  559. package/operator/controllers/base.d.ts.map +1 -0
  560. package/operator/controllers/base.js +53 -0
  561. package/operator/controllers/builder-workspace.d.ts +55 -0
  562. package/operator/controllers/builder-workspace.d.ts.map +1 -0
  563. package/operator/controllers/builder-workspace.js +108 -0
  564. package/operator/controllers/chat.d.ts +61 -0
  565. package/operator/controllers/chat.d.ts.map +1 -0
  566. package/operator/controllers/chat.js +154 -0
  567. package/operator/controllers/clarification.d.ts +52 -0
  568. package/operator/controllers/clarification.d.ts.map +1 -0
  569. package/operator/controllers/clarification.js +121 -0
  570. package/operator/controllers/execution.d.ts +60 -0
  571. package/operator/controllers/execution.d.ts.map +1 -0
  572. package/operator/controllers/execution.js +286 -0
  573. package/operator/controllers/index.d.ts +23 -0
  574. package/operator/controllers/index.d.ts.map +1 -0
  575. package/operator/controllers/index.js +15 -0
  576. package/operator/controllers/map-workspace.d.ts +85 -0
  577. package/operator/controllers/map-workspace.d.ts.map +1 -0
  578. package/operator/controllers/map-workspace.js +296 -0
  579. package/operator/controllers/plan-review.d.ts +66 -0
  580. package/operator/controllers/plan-review.d.ts.map +1 -0
  581. package/operator/controllers/plan-review.js +124 -0
  582. package/operator/errors.d.ts +62 -0
  583. package/operator/errors.d.ts.map +1 -0
  584. package/operator/errors.js +75 -0
  585. package/operator/i18n/index.d.ts +10 -0
  586. package/operator/i18n/index.d.ts.map +1 -0
  587. package/operator/i18n/index.js +8 -0
  588. package/operator/i18n/messages.d.ts +19 -0
  589. package/operator/i18n/messages.d.ts.map +1 -0
  590. package/operator/i18n/messages.js +54 -0
  591. package/operator/index.d.ts +19 -0
  592. package/operator/index.d.ts.map +1 -0
  593. package/operator/index.js +15 -0
  594. package/operator/telemetry.d.ts +26 -0
  595. package/operator/telemetry.d.ts.map +1 -0
  596. package/operator/telemetry.js +9 -0
  597. package/operator/theming/index.d.ts +12 -0
  598. package/operator/theming/index.d.ts.map +1 -0
  599. package/operator/theming/index.js +9 -0
  600. package/operator/theming/provider.d.ts +27 -0
  601. package/operator/theming/provider.d.ts.map +1 -0
  602. package/operator/theming/provider.js +26 -0
  603. package/operator/theming/tokens.d.ts +28 -0
  604. package/operator/theming/tokens.d.ts.map +1 -0
  605. package/operator/theming/tokens.js +65 -0
  606. package/operator/workspace/events.d.ts +70 -0
  607. package/operator/workspace/events.d.ts.map +1 -0
  608. package/operator/workspace/events.js +9 -0
  609. package/operator/workspace/index.d.ts +12 -0
  610. package/operator/workspace/index.d.ts.map +1 -0
  611. package/operator/workspace/index.js +8 -0
  612. package/operator/workspace/types.d.ts +178 -0
  613. package/operator/workspace/types.d.ts.map +1 -0
  614. package/operator/workspace/types.js +47 -0
  615. package/operator/workspace/workspace.d.ts +58 -0
  616. package/operator/workspace/workspace.d.ts.map +1 -0
  617. package/operator/workspace/workspace.js +339 -0
  618. package/package.json +105 -0
  619. package/realtime/exploration.d.ts +16 -0
  620. package/realtime/exploration.d.ts.map +1 -0
  621. package/realtime/exploration.js +32 -0
  622. package/realtime/honua-server.d.ts +123 -0
  623. package/realtime/honua-server.d.ts.map +1 -0
  624. package/realtime/honua-server.js +188 -0
  625. package/realtime/index.d.ts +20 -0
  626. package/realtime/index.d.ts.map +1 -0
  627. package/realtime/index.js +14 -0
  628. package/realtime/projections.d.ts +30 -0
  629. package/realtime/projections.d.ts.map +1 -0
  630. package/realtime/projections.js +51 -0
  631. package/realtime/reducer.d.ts +14 -0
  632. package/realtime/reducer.d.ts.map +1 -0
  633. package/realtime/reducer.js +351 -0
  634. package/realtime/sse.d.ts +23 -0
  635. package/realtime/sse.d.ts.map +1 -0
  636. package/realtime/sse.js +143 -0
  637. package/realtime/store.d.ts +18 -0
  638. package/realtime/store.d.ts.map +1 -0
  639. package/realtime/store.js +63 -0
  640. package/realtime/types.d.ts +190 -0
  641. package/realtime/types.d.ts.map +1 -0
  642. package/realtime/types.js +10 -0
  643. package/replica-sync/client.d.ts +32 -0
  644. package/replica-sync/client.d.ts.map +1 -0
  645. package/replica-sync/client.js +52 -0
  646. package/replica-sync/errors.d.ts +22 -0
  647. package/replica-sync/errors.d.ts.map +1 -0
  648. package/replica-sync/errors.js +29 -0
  649. package/replica-sync/fixture.d.ts +40 -0
  650. package/replica-sync/fixture.d.ts.map +1 -0
  651. package/replica-sync/fixture.js +364 -0
  652. package/replica-sync/index.d.ts +22 -0
  653. package/replica-sync/index.d.ts.map +1 -0
  654. package/replica-sync/index.js +17 -0
  655. package/replica-sync/types.d.ts +270 -0
  656. package/replica-sync/types.d.ts.map +1 -0
  657. package/replica-sync/types.js +13 -0
  658. package/runtime/diff.d.ts +31 -0
  659. package/runtime/diff.d.ts.map +1 -0
  660. package/runtime/diff.js +143 -0
  661. package/runtime/errors.d.ts +40 -0
  662. package/runtime/errors.d.ts.map +1 -0
  663. package/runtime/errors.js +35 -0
  664. package/runtime/index.d.ts +59 -0
  665. package/runtime/index.d.ts.map +1 -0
  666. package/runtime/index.js +40 -0
  667. package/runtime/legend.d.ts +23 -0
  668. package/runtime/legend.d.ts.map +1 -0
  669. package/runtime/legend.js +38 -0
  670. package/runtime/load-package.d.ts +125 -0
  671. package/runtime/load-package.d.ts.map +1 -0
  672. package/runtime/load-package.js +272 -0
  673. package/runtime/map-package-fetch.d.ts +107 -0
  674. package/runtime/map-package-fetch.d.ts.map +1 -0
  675. package/runtime/map-package-fetch.js +336 -0
  676. package/runtime/map-package-realtime.d.ts +169 -0
  677. package/runtime/map-package-realtime.d.ts.map +1 -0
  678. package/runtime/map-package-realtime.js +350 -0
  679. package/runtime/map-package-validation.d.ts +30 -0
  680. package/runtime/map-package-validation.d.ts.map +1 -0
  681. package/runtime/map-package-validation.js +257 -0
  682. package/runtime/map-package-watch.d.ts +78 -0
  683. package/runtime/map-package-watch.d.ts.map +1 -0
  684. package/runtime/map-package-watch.js +695 -0
  685. package/runtime/map-package.d.ts +167 -0
  686. package/runtime/map-package.d.ts.map +1 -0
  687. package/runtime/map-package.js +15 -0
  688. package/runtime/ogc-styles.d.ts +110 -0
  689. package/runtime/ogc-styles.d.ts.map +1 -0
  690. package/runtime/ogc-styles.js +195 -0
  691. package/runtime/pmtiles-protocol.d.ts +77 -0
  692. package/runtime/pmtiles-protocol.d.ts.map +1 -0
  693. package/runtime/pmtiles-protocol.js +120 -0
  694. package/runtime/popups.d.ts +62 -0
  695. package/runtime/popups.d.ts.map +1 -0
  696. package/runtime/popups.js +95 -0
  697. package/runtime/query-tiles.d.ts +217 -0
  698. package/runtime/query-tiles.d.ts.map +1 -0
  699. package/runtime/query-tiles.js +801 -0
  700. package/runtime/runtime.d.ts +243 -0
  701. package/runtime/runtime.d.ts.map +1 -0
  702. package/runtime/runtime.js +1147 -0
  703. package/runtime/source-bridge.d.ts +99 -0
  704. package/runtime/source-bridge.d.ts.map +1 -0
  705. package/runtime/source-bridge.js +428 -0
  706. package/runtime/style-compose.d.ts +46 -0
  707. package/runtime/style-compose.d.ts.map +1 -0
  708. package/runtime/style-compose.js +144 -0
  709. package/runtime/style-interactions.d.ts +141 -0
  710. package/runtime/style-interactions.d.ts.map +1 -0
  711. package/runtime/style-interactions.js +574 -0
  712. package/runtime/style-spec-validation.d.ts +23 -0
  713. package/runtime/style-spec-validation.d.ts.map +1 -0
  714. package/runtime/style-spec-validation.js +357 -0
  715. package/scene-workspace/analysis-widgets.d.ts +334 -0
  716. package/scene-workspace/analysis-widgets.d.ts.map +1 -0
  717. package/scene-workspace/analysis-widgets.js +424 -0
  718. package/scene-workspace/cesium-adapter.d.ts +438 -0
  719. package/scene-workspace/cesium-adapter.d.ts.map +1 -0
  720. package/scene-workspace/cesium-adapter.js +493 -0
  721. package/scene-workspace/index.d.ts +21 -0
  722. package/scene-workspace/index.d.ts.map +1 -0
  723. package/scene-workspace/index.js +14 -0
  724. package/scene-workspace/primitives.d.ts +162 -0
  725. package/scene-workspace/primitives.d.ts.map +1 -0
  726. package/scene-workspace/primitives.js +255 -0
  727. package/scene-workspace/scene-discovery.d.ts +196 -0
  728. package/scene-workspace/scene-discovery.d.ts.map +1 -0
  729. package/scene-workspace/scene-discovery.js +228 -0
  730. package/scene-workspace/scene-view.d.ts +209 -0
  731. package/scene-workspace/scene-view.d.ts.map +1 -0
  732. package/scene-workspace/scene-view.js +267 -0
  733. package/scene-workspace/types.d.ts +229 -0
  734. package/scene-workspace/types.d.ts.map +1 -0
  735. package/scene-workspace/types.js +23 -0
  736. package/scene-workspace/workspace.d.ts +13 -0
  737. package/scene-workspace/workspace.d.ts.map +1 -0
  738. package/scene-workspace/workspace.js +391 -0
  739. package/share/denial.d.ts +78 -0
  740. package/share/denial.d.ts.map +1 -0
  741. package/share/denial.js +61 -0
  742. package/share/embed-token.d.ts +71 -0
  743. package/share/embed-token.d.ts.map +1 -0
  744. package/share/embed-token.js +99 -0
  745. package/share/index.d.ts +35 -0
  746. package/share/index.d.ts.map +1 -0
  747. package/share/index.js +30 -0
  748. package/share/open-data.d.ts +114 -0
  749. package/share/open-data.d.ts.map +1 -0
  750. package/share/open-data.js +81 -0
  751. package/share/types.d.ts +163 -0
  752. package/share/types.d.ts.map +1 -0
  753. package/share/types.js +17 -0
  754. package/studio/capability-manifest.d.ts +285 -0
  755. package/studio/capability-manifest.d.ts.map +1 -0
  756. package/studio/capability-manifest.js +59 -0
  757. package/studio/chart-spec.d.ts +85 -0
  758. package/studio/chart-spec.d.ts.map +1 -0
  759. package/studio/chart-spec.js +106 -0
  760. package/studio/index.d.ts +34 -0
  761. package/studio/index.d.ts.map +1 -0
  762. package/studio/index.js +27 -0
  763. package/studio/provenance.d.ts +131 -0
  764. package/studio/provenance.d.ts.map +1 -0
  765. package/studio/provenance.js +39 -0
  766. package/studio/publish.d.ts +64 -0
  767. package/studio/publish.d.ts.map +1 -0
  768. package/studio/publish.js +13 -0
  769. package/studio/types.d.ts +278 -0
  770. package/studio/types.d.ts.map +1 -0
  771. package/studio/types.js +71 -0
  772. package/studio/validate.d.ts +45 -0
  773. package/studio/validate.d.ts.map +1 -0
  774. package/studio/validate.js +255 -0
  775. package/studio/validation.d.ts +112 -0
  776. package/studio/validation.d.ts.map +1 -0
  777. package/studio/validation.js +42 -0
  778. package/style/factory.d.ts +30 -0
  779. package/style/factory.d.ts.map +1 -0
  780. package/style/factory.js +61 -0
  781. package/style/index.d.ts +25 -0
  782. package/style/index.d.ts.map +1 -0
  783. package/style/index.js +24 -0
  784. package/style/specification.d.ts +203 -0
  785. package/style/specification.d.ts.map +1 -0
  786. package/style/specification.js +178 -0
  787. package/style/wms-wmts-resolvers.d.ts +38 -0
  788. package/style/wms-wmts-resolvers.d.ts.map +1 -0
  789. package/style/wms-wmts-resolvers.js +92 -0
  790. package/web-components/controller.d.ts +39 -0
  791. package/web-components/controller.d.ts.map +1 -0
  792. package/web-components/controller.js +640 -0
  793. package/web-components/elements.d.ts +210 -0
  794. package/web-components/elements.d.ts.map +1 -0
  795. package/web-components/elements.js +1651 -0
  796. package/web-components/index.d.ts +24 -0
  797. package/web-components/index.d.ts.map +1 -0
  798. package/web-components/index.js +22 -0
  799. package/web-components/maplibre-renderer.d.ts +22 -0
  800. package/web-components/maplibre-renderer.d.ts.map +1 -0
  801. package/web-components/maplibre-renderer.js +474 -0
  802. package/web-components/types.d.ts +397 -0
  803. package/web-components/types.d.ts.map +1 -0
  804. package/web-components/types.js +1 -0
  805. package/webmap/contract.d.ts +28 -0
  806. package/webmap/contract.d.ts.map +1 -0
  807. package/webmap/contract.js +130 -0
  808. package/webmap/convert-basemap.d.ts +17 -0
  809. package/webmap/convert-basemap.d.ts.map +1 -0
  810. package/webmap/convert-basemap.js +78 -0
  811. package/webmap/convert-extent.d.ts +17 -0
  812. package/webmap/convert-extent.d.ts.map +1 -0
  813. package/webmap/convert-extent.js +114 -0
  814. package/webmap/convert-label.d.ts +13 -0
  815. package/webmap/convert-label.d.ts.map +1 -0
  816. package/webmap/convert-label.js +125 -0
  817. package/webmap/convert-layer.d.ts +22 -0
  818. package/webmap/convert-layer.d.ts.map +1 -0
  819. package/webmap/convert-layer.js +181 -0
  820. package/webmap/convert-popup.d.ts +34 -0
  821. package/webmap/convert-popup.d.ts.map +1 -0
  822. package/webmap/convert-popup.js +68 -0
  823. package/webmap/convert-renderer.d.ts +17 -0
  824. package/webmap/convert-renderer.d.ts.map +1 -0
  825. package/webmap/convert-renderer.js +161 -0
  826. package/webmap/convert-symbol.d.ts +17 -0
  827. package/webmap/convert-symbol.d.ts.map +1 -0
  828. package/webmap/convert-symbol.js +122 -0
  829. package/webmap/index.d.ts +44 -0
  830. package/webmap/index.d.ts.map +1 -0
  831. package/webmap/index.js +33 -0
  832. package/webmap/parse.d.ts +25 -0
  833. package/webmap/parse.d.ts.map +1 -0
  834. package/webmap/parse.js +83 -0
  835. package/webmap/types.d.ts +264 -0
  836. package/webmap/types.d.ts.map +1 -0
  837. package/webmap/types.js +13 -0
  838. package/webmap/warnings.d.ts +30 -0
  839. package/webmap/warnings.d.ts.map +1 -0
  840. package/webmap/warnings.js +37 -0
@@ -0,0 +1,357 @@
1
+ let loadAttempted = false;
2
+ let loadedModule;
3
+ let loadFailure;
4
+ let loadPromise;
5
+ export async function prepareRuntimeStyleSpecValidation(mode = "strict") {
6
+ if (mode === "renderer-deferred")
7
+ return [];
8
+ const mod = await loadMapLibreStyleSpecModule();
9
+ if (mod)
10
+ return [];
11
+ return [validatorUnavailableDiagnostic({ mode })];
12
+ }
13
+ export async function validateRuntimeStyleSpec(style, options = {}) {
14
+ const mode = options.mode ?? "strict";
15
+ if (mode === "renderer-deferred")
16
+ return [];
17
+ const mod = await loadMapLibreStyleSpecModule();
18
+ if (!mod)
19
+ return [validatorUnavailableDiagnostic({ ...options, mode })];
20
+ return mapStyleSpecErrors(mod.validateStyleMin(sanitizeStyle(style)), { ...options, mode }, {});
21
+ }
22
+ export async function validateRuntimeSourceStyleSpec(sourceId, source, options = {}) {
23
+ const mode = options.mode ?? "strict";
24
+ if (mode === "renderer-deferred" || isHonuaSourceLike(source))
25
+ return [];
26
+ const mod = await loadMapLibreStyleSpecModule();
27
+ if (!mod)
28
+ return [
29
+ validatorUnavailableDiagnostic({ ...options, mode, sourceId, path: options.path ?? `sources.${sourceId}` }),
30
+ ];
31
+ return mapStyleSpecErrors(mod.validateStyleMin({
32
+ version: 8,
33
+ sources: { [sourceId]: source },
34
+ layers: [],
35
+ }), { ...options, mode, sourceId, path: options.path ?? `sources.${sourceId}` }, {});
36
+ }
37
+ export async function validateRuntimeLayerStyleSpec(layer, options = {}) {
38
+ const mode = options.mode ?? "strict";
39
+ if (mode === "renderer-deferred")
40
+ return [];
41
+ const mod = await loadMapLibreStyleSpecModule();
42
+ if (!mod) {
43
+ return [
44
+ validatorUnavailableDiagnostic({
45
+ ...options,
46
+ mode,
47
+ layerId: options.layerId ?? layer.id,
48
+ sourceId: options.sourceId ?? layer.source,
49
+ path: options.path ?? layerPath(layer),
50
+ }),
51
+ ];
52
+ }
53
+ return mapStyleSpecErrors(mod.validateStyleMin(styleForLayerValidation(layer, options)), {
54
+ ...options,
55
+ mode,
56
+ layerId: options.layerId ?? layer.id,
57
+ sourceId: options.sourceId ?? layer.source,
58
+ path: options.path ?? layerPath(layer),
59
+ }, { layerId: layer.id });
60
+ }
61
+ export async function validateRuntimeStyleExpressionStyleSpec(value, options = {}) {
62
+ const mode = options.mode ?? "strict";
63
+ if (mode === "renderer-deferred")
64
+ return [];
65
+ const mod = await loadMapLibreStyleSpecModule();
66
+ if (!mod)
67
+ return [validatorUnavailableDiagnostic({ ...options, mode })];
68
+ return validateExpressionWithModule(mod, value, { ...options, mode });
69
+ }
70
+ export async function validateRuntimeFilterStyleSpec(filter, options = {}) {
71
+ const mode = options.mode ?? "strict";
72
+ if (mode === "renderer-deferred")
73
+ return [];
74
+ const mod = await loadMapLibreStyleSpecModule();
75
+ if (!mod)
76
+ return [validatorUnavailableDiagnostic({ ...options, mode })];
77
+ return mapStyleSpecErrors(mod.validateStyleMin(styleForFilterValidation(filter, options.layerId)), { ...options, mode, path: options.path ?? filterPath(options.layerId) }, { layerId: options.layerId ?? "__honua_filter_validation__" });
78
+ }
79
+ export function validateRuntimeSourceStyleSpecSync(sourceId, source, options = {}) {
80
+ if (!shouldRunSyncStyleSpecValidation(options.mode) || isHonuaSourceLike(source))
81
+ return [];
82
+ const mod = loadedStyleSpecModule();
83
+ if (!mod)
84
+ return [validatorUnavailableDiagnostic({ ...options, sourceId, path: options.path ?? `sources.${sourceId}` })];
85
+ return mapStyleSpecErrors(mod.validateStyleMin({
86
+ version: 8,
87
+ sources: { [sourceId]: source },
88
+ layers: [],
89
+ }), { ...options, sourceId, path: options.path ?? `sources.${sourceId}` }, {});
90
+ }
91
+ export function validateRuntimeLayerStyleSpecSync(layer, options = {}) {
92
+ if (!shouldRunSyncStyleSpecValidation(options.mode))
93
+ return [];
94
+ const mod = loadedStyleSpecModule();
95
+ if (!mod) {
96
+ return [
97
+ validatorUnavailableDiagnostic({
98
+ ...options,
99
+ layerId: options.layerId ?? layer.id,
100
+ sourceId: options.sourceId ?? layer.source,
101
+ path: options.path ?? layerPath(layer),
102
+ }),
103
+ ];
104
+ }
105
+ return mapStyleSpecErrors(mod.validateStyleMin(styleForLayerValidation(layer, options)), {
106
+ ...options,
107
+ layerId: options.layerId ?? layer.id,
108
+ sourceId: options.sourceId ?? layer.source,
109
+ path: options.path ?? layerPath(layer),
110
+ }, { layerId: layer.id });
111
+ }
112
+ export function validateRuntimeStyleExpressionStyleSpecSync(value, options = {}) {
113
+ if (!shouldRunSyncStyleSpecValidation(options.mode))
114
+ return [];
115
+ const mod = loadedStyleSpecModule();
116
+ if (!mod)
117
+ return [validatorUnavailableDiagnostic(options)];
118
+ return validateExpressionWithModule(mod, value, options);
119
+ }
120
+ export function validateRuntimeFilterStyleSpecSync(filter, options = {}) {
121
+ if (!shouldRunSyncStyleSpecValidation(options.mode))
122
+ return [];
123
+ const mod = loadedStyleSpecModule();
124
+ if (!mod)
125
+ return [validatorUnavailableDiagnostic(options)];
126
+ return mapStyleSpecErrors(mod.validateStyleMin(styleForFilterValidation(filter, options.layerId)), { ...options, path: options.path ?? filterPath(options.layerId) }, { layerId: options.layerId ?? "__honua_filter_validation__" });
127
+ }
128
+ function validateExpressionWithModule(mod, value, options) {
129
+ const result = mod.createExpression(value);
130
+ if (result.result !== "error" || !Array.isArray(result.value))
131
+ return [];
132
+ return result.value.map((error) => {
133
+ const mapLibrePath = pathWithExpressionKey(options.path, stringProperty(error, "key"));
134
+ return mapLibreDiagnostic(error, stringProperty(error, "message") ?? "Invalid MapLibre style expression.", {
135
+ ...options,
136
+ path: mapLibrePath,
137
+ mapLibrePath,
138
+ });
139
+ });
140
+ }
141
+ async function loadMapLibreStyleSpecModule() {
142
+ if (loadedModule)
143
+ return loadedModule;
144
+ loadAttempted = true;
145
+ loadPromise ??= import("@maplibre/maplibre-gl-style-spec")
146
+ .then((mod) => {
147
+ const candidate = mod;
148
+ if (typeof candidate.validateStyleMin !== "function" || typeof candidate.createExpression !== "function") {
149
+ throw new Error("@maplibre/maplibre-gl-style-spec does not expose the expected validator API.");
150
+ }
151
+ loadedModule = {
152
+ validateStyleMin: candidate.validateStyleMin,
153
+ createExpression: candidate.createExpression,
154
+ };
155
+ loadFailure = undefined;
156
+ return loadedModule;
157
+ })
158
+ .catch((error) => {
159
+ loadFailure = error;
160
+ loadedModule = undefined;
161
+ return undefined;
162
+ });
163
+ return loadPromise;
164
+ }
165
+ function loadedStyleSpecModule() {
166
+ return loadedModule;
167
+ }
168
+ function shouldRunSyncStyleSpecValidation(mode) {
169
+ return mode !== undefined && mode !== "renderer-deferred";
170
+ }
171
+ function mapStyleSpecErrors(errors, options, remap) {
172
+ return errors.map((error) => {
173
+ const parsed = parseMapLibreMessage(stringProperty(error, "message") ?? "Invalid MapLibre style specification.");
174
+ const path = parsed.path ? normalizeStylePath(parsed.path, remap) : options.path;
175
+ return mapLibreDiagnostic(error, parsed.message, {
176
+ ...options,
177
+ path: path ?? options.path,
178
+ mapLibrePath: parsed.path,
179
+ });
180
+ });
181
+ }
182
+ function mapLibreDiagnostic(error, message, options) {
183
+ const mapLibreCode = stringProperty(error, "identifier") ?? "validation-error";
184
+ const line = numberProperty(error, "line");
185
+ return {
186
+ code: "style-spec-invalid",
187
+ severity: severityForMode(options.mode),
188
+ message,
189
+ ...(options.path ? { path: options.path } : {}),
190
+ ...(options.sourceId ? { sourceId: options.sourceId } : {}),
191
+ ...(options.layerId ? { layerId: options.layerId } : {}),
192
+ ...(options.protocol ? { protocol: options.protocol } : {}),
193
+ context: {
194
+ ...(options.context ?? {}),
195
+ mapLibreCode,
196
+ ...(options.mapLibrePath ? { mapLibrePath: options.mapLibrePath } : {}),
197
+ ...(line !== undefined ? { mapLibreLine: line } : {}),
198
+ },
199
+ };
200
+ }
201
+ function validatorUnavailableDiagnostic(options) {
202
+ const cause = loadAttempted
203
+ ? errorMessage(loadFailure) || "unknown import failure"
204
+ : "validator has not been prepared";
205
+ return {
206
+ code: "style-spec-validator-unavailable",
207
+ severity: severityForMode(options.mode),
208
+ message: "MapLibre style-spec validation is unavailable. Install @maplibre/maplibre-gl-style-spec or use renderer-deferred validation.",
209
+ ...(options.path ? { path: options.path } : {}),
210
+ ...(options.sourceId ? { sourceId: options.sourceId } : {}),
211
+ ...(options.layerId ? { layerId: options.layerId } : {}),
212
+ ...(options.protocol ? { protocol: options.protocol } : {}),
213
+ context: {
214
+ ...(options.context ?? {}),
215
+ mapLibreCode: "validator-unavailable",
216
+ cause,
217
+ },
218
+ };
219
+ }
220
+ function sanitizeStyle(style) {
221
+ const sources = {};
222
+ for (const [sourceId, source] of Object.entries(style.sources)) {
223
+ sources[sourceId] = isHonuaSourceLike(source)
224
+ ? placeholderSourceForLayer(firstLayerForSource(style.layers, sourceId), source)
225
+ : source;
226
+ }
227
+ return {
228
+ ...style,
229
+ sources,
230
+ };
231
+ }
232
+ function styleForLayerValidation(layer, options) {
233
+ const sources = {};
234
+ const sourceId = typeof layer.source === "string" ? layer.source : undefined;
235
+ if (sourceId) {
236
+ const existing = options.style?.sources[sourceId];
237
+ if (existing) {
238
+ sources[sourceId] = isHonuaSourceLike(existing) ? placeholderSourceForLayer(layer, existing) : existing;
239
+ }
240
+ else if (!options.style) {
241
+ sources[sourceId] = placeholderSourceForLayer(layer);
242
+ }
243
+ }
244
+ return {
245
+ version: 8,
246
+ sources,
247
+ layers: [layer],
248
+ };
249
+ }
250
+ function styleForFilterValidation(filter, layerId) {
251
+ const sourceId = "__honua_filter_source__";
252
+ return {
253
+ version: 8,
254
+ sources: {
255
+ [sourceId]: geoJsonPlaceholderSource(),
256
+ },
257
+ layers: [
258
+ {
259
+ id: layerId ?? "__honua_filter_validation__",
260
+ type: "circle",
261
+ source: sourceId,
262
+ filter,
263
+ },
264
+ ],
265
+ };
266
+ }
267
+ function placeholderSourceForLayer(layer, source) {
268
+ const sourceType = isPlainObject(source) && typeof source.type === "string" ? source.type : undefined;
269
+ if (sourceType === "honua-wms" || sourceType === "honua-wmts" || sourceType === "honua-map-service") {
270
+ return rasterPlaceholderSource();
271
+ }
272
+ if (layer?.type === "raster")
273
+ return rasterPlaceholderSource();
274
+ if (layer?.type === "hillshade")
275
+ return rasterDemPlaceholderSource();
276
+ return geoJsonPlaceholderSource();
277
+ }
278
+ function geoJsonPlaceholderSource() {
279
+ return {
280
+ type: "geojson",
281
+ data: { type: "FeatureCollection", features: [] },
282
+ };
283
+ }
284
+ function rasterPlaceholderSource() {
285
+ return {
286
+ type: "raster",
287
+ tiles: ["https://example.invalid/{z}/{x}/{y}.png"],
288
+ tileSize: 256,
289
+ };
290
+ }
291
+ function rasterDemPlaceholderSource() {
292
+ return {
293
+ type: "raster-dem",
294
+ tiles: ["https://example.invalid/{z}/{x}/{y}.png"],
295
+ tileSize: 256,
296
+ };
297
+ }
298
+ function firstLayerForSource(layers, sourceId) {
299
+ return layers.find((layer) => layer.source === sourceId);
300
+ }
301
+ function isHonuaSourceLike(value) {
302
+ return isPlainObject(value) && typeof value.type === "string" && value.type.startsWith("honua-");
303
+ }
304
+ function parseMapLibreMessage(message) {
305
+ const separator = message.indexOf(": ");
306
+ if (separator <= 0)
307
+ return { path: undefined, message };
308
+ const path = message.slice(0, separator);
309
+ if (!looksLikeMapLibrePath(path))
310
+ return { path: undefined, message };
311
+ return { path, message: message.slice(separator + 2) };
312
+ }
313
+ function looksLikeMapLibrePath(path) {
314
+ return /^(version|name|metadata|center|zoom|bearing|pitch|sources|layers|sprite|glyphs|transition|light|terrain|projection|sky)(?:$|[.[\]])/.test(path);
315
+ }
316
+ function normalizeStylePath(path, remap) {
317
+ if (remap.layerId) {
318
+ return path.replace(/^layers\[\d+\]/, `layers.${remap.layerId}`);
319
+ }
320
+ return path;
321
+ }
322
+ function pathWithExpressionKey(path, key) {
323
+ if (!key)
324
+ return path;
325
+ if (!path)
326
+ return key.startsWith(".") ? key.slice(1) : key;
327
+ return key.startsWith("[") || key.startsWith(".") ? `${path}${key}` : `${path}.${key}`;
328
+ }
329
+ function filterPath(layerId) {
330
+ return layerId ? `layers.${layerId}.filter` : "filter";
331
+ }
332
+ function layerPath(layer) {
333
+ return layer.id ? `layers.${layer.id}` : "layers[]";
334
+ }
335
+ function severityForMode(mode) {
336
+ return mode === "warning-only" ? "warning" : "error";
337
+ }
338
+ function stringProperty(value, property) {
339
+ if (!isPlainObject(value))
340
+ return undefined;
341
+ const candidate = value[property];
342
+ return typeof candidate === "string" ? candidate : undefined;
343
+ }
344
+ function numberProperty(value, property) {
345
+ if (!isPlainObject(value))
346
+ return undefined;
347
+ const candidate = value[property];
348
+ return typeof candidate === "number" ? candidate : undefined;
349
+ }
350
+ function errorMessage(error) {
351
+ if (error instanceof Error)
352
+ return error.message;
353
+ return typeof error === "string" ? error : undefined;
354
+ }
355
+ function isPlainObject(value) {
356
+ return typeof value === "object" && value !== null && !Array.isArray(value);
357
+ }
@@ -0,0 +1,334 @@
1
+ /**
2
+ * Interactive 3D analysis + measurement widgets for the scene workspace.
3
+ *
4
+ * These widgets consume the server's elevation/analysis endpoints (line-of-sight,
5
+ * viewshed, elevation profile) and render the results into a live Cesium
6
+ * `SceneView`, plus a fully client-side 3D distance/area measurement widget.
7
+ *
8
+ * Like {@link module:scene-workspace/cesium-adapter}, this module never imports
9
+ * CesiumJS statically: the rendering helpers pull the runtime in lazily via
10
+ * `await import("cesium")` so 2D-only consumers never pay the bundle cost. The
11
+ * pure request-shaping and client-side geometry math (haversine distance,
12
+ * spherical polygon area, WKT serialization) carry no Cesium dependency at all
13
+ * and are unit-testable without a WebGL `Viewer`.
14
+ *
15
+ * Server calls go through a caller-supplied {@link SceneAnalysisRequestExecutor}
16
+ * — typically `(...args) => client.pipelineRequestJson(...args)` against a
17
+ * `HonuaClient` — so the widgets reuse the SDK's auth / retry / timeout /
18
+ * interceptor pipeline instead of issuing ad-hoc `fetch` calls.
19
+ *
20
+ * @experimental Part of the experimental `scene-workspace` surface; not yet
21
+ * covered by the SDK's semver contract prior to `1.0.0`.
22
+ * @module
23
+ */
24
+ import type { QueryMethod } from "../core/types.js";
25
+ /**
26
+ * The minimal request-executor the analysis widgets need. This is exactly the
27
+ * shape of `HonuaClient.pipelineRequestJson`, so a consumer wires the SDK's
28
+ * shared HTTP pipeline (auth, retries, timeouts, interceptors) in with:
29
+ *
30
+ * ```ts
31
+ * const executor: SceneAnalysisRequestExecutor =
32
+ * (method, path, init, signal) => client.pipelineRequestJson(method, path, init, signal);
33
+ * ```
34
+ *
35
+ * Modelling the transport as a function rather than depending on the concrete
36
+ * `HonuaClient` keeps this module free of a hard `core/client` import (and keeps
37
+ * it equally usable from a Node backend, a worker, or a test with a mock).
38
+ */
39
+ export type SceneAnalysisRequestExecutor = <T = unknown>(method: QueryMethod, path: string, init?: {
40
+ headers?: Record<string, string>;
41
+ body?: string | null;
42
+ }, signal?: AbortSignal) => Promise<T>;
43
+ /**
44
+ * A lon/lat/height position in the workspace contract units (degrees + metres).
45
+ * Height is optional and defaults to ground (`0`) where the server / renderer
46
+ * needs an explicit value.
47
+ */
48
+ export interface SceneAnalysisPosition {
49
+ readonly longitude: number;
50
+ readonly latitude: number;
51
+ readonly height?: number;
52
+ }
53
+ /**
54
+ * Great-circle (haversine) distance in metres between two lon/lat positions,
55
+ * ignoring height. Pure; the basis of the horizontal leg of a 3D measurement.
56
+ */
57
+ export declare function haversineMeters(a: SceneAnalysisPosition, b: SceneAnalysisPosition): number;
58
+ /**
59
+ * Slant (3D) distance in metres between two positions: the horizontal
60
+ * great-circle distance combined with the height delta via Pythagoras. Heights
61
+ * default to `0`. Pure.
62
+ */
63
+ export declare function slantDistanceMeters(a: SceneAnalysisPosition, b: SceneAnalysisPosition): number;
64
+ /**
65
+ * Total 3D path length in metres along an ordered polyline (sum of per-segment
66
+ * slant distances). Returns `0` for fewer than two positions. Pure.
67
+ */
68
+ export declare function pathLengthMeters(positions: readonly SceneAnalysisPosition[]): number;
69
+ /**
70
+ * Spherical polygon area in square metres for a ring of lon/lat positions,
71
+ * using L'Huilier's spherical-excess formula projected onto the WGS84 mean
72
+ * sphere. The ring is auto-closed; returns `0` for fewer than three positions.
73
+ * The result is unsigned (absolute area). Pure; the basis of the measure
74
+ * widget's area readout.
75
+ */
76
+ export declare function sphericalPolygonAreaSquareMeters(positions: readonly SceneAnalysisPosition[]): number;
77
+ /**
78
+ * Serialize an ordered list of positions as a 2D WKT `LINESTRING` (lon lat),
79
+ * the geometry shape the elevation profile endpoint expects on its `line`
80
+ * query parameter. Height is dropped (the profile endpoint samples the surface).
81
+ * Pure.
82
+ */
83
+ export declare function positionsToWktLineString(positions: readonly SceneAnalysisPosition[]): string;
84
+ /** One ordered sample along an elevation profile, mirroring the server shape. */
85
+ export interface ElevationProfileSample {
86
+ readonly distanceMeters: number;
87
+ readonly elevation: number | null;
88
+ readonly noData: boolean;
89
+ }
90
+ /** The decoded `ElevationProfileResponse` the profile endpoint returns. */
91
+ export interface ElevationProfileResult {
92
+ readonly datasetId: string;
93
+ readonly layerId: number;
94
+ readonly sampleCount: number;
95
+ readonly lineLengthMeters: number;
96
+ readonly lineSrid: number;
97
+ readonly isAllNoData: boolean;
98
+ readonly samples: readonly ElevationProfileSample[];
99
+ }
100
+ /** Parameters for an elevation-profile request along a polyline. */
101
+ export interface ElevationProfileRequest {
102
+ readonly datasetId: string;
103
+ /** Ordered polyline (>= 2 positions) the profile is sampled along. */
104
+ readonly polyline: readonly SceneAnalysisPosition[];
105
+ /** Number of evenly-spaced samples (server clamps to its configured max). */
106
+ readonly sampleCount?: number;
107
+ /** Sample interval in metres (mutually exclusive with `sampleCount`). */
108
+ readonly intervalMeters?: number;
109
+ /** Spatial reference of the polyline coordinates; omitted ⇒ WGS84 lon/lat. */
110
+ readonly srid?: number;
111
+ readonly mosaicRule?: string;
112
+ readonly signal?: AbortSignal;
113
+ }
114
+ /**
115
+ * Build the relative request path (with query string) for an elevation-profile
116
+ * request, including the WKT-serialized `line`. Exported so the request shape is
117
+ * directly unit-testable without a transport. The profile endpoint is a `GET`.
118
+ */
119
+ export declare function buildElevationProfilePath(request: ElevationProfileRequest): string;
120
+ /**
121
+ * Request an elevation profile along a polyline and return the decoded samples.
122
+ * Charting is left to the consumer; pair this with
123
+ * {@link renderElevationProfilePolyline} to draw the sampled line in the scene.
124
+ */
125
+ export declare function requestElevationProfile(execute: SceneAnalysisRequestExecutor, request: ElevationProfileRequest): Promise<ElevationProfileResult>;
126
+ /** Parameters for a line-of-sight request between an observer and a target. */
127
+ export interface LineOfSightRequest {
128
+ readonly datasetId: string;
129
+ readonly observer: SceneAnalysisPosition;
130
+ readonly target: SceneAnalysisPosition;
131
+ /**
132
+ * Observer height OFFSET above the terrain surface, in metres (e.g. eye
133
+ * height). The server's `observerHeight` is exactly this terrain-relative
134
+ * offset, so this value wins over `observer.height` when supplied; otherwise
135
+ * `observer.height` is used as the offset and finally `0`.
136
+ */
137
+ readonly observerOffsetMeters?: number;
138
+ /** Target height OFFSET above the terrain surface, in metres. Same precedence as the observer. */
139
+ readonly targetOffsetMeters?: number;
140
+ /** Number of range samples along the sightline (server requires >= 2 when supplied). */
141
+ readonly sampleCount?: number;
142
+ readonly mosaicRule?: string;
143
+ readonly signal?: AbortSignal;
144
+ }
145
+ /** The decoded line-of-sight result: visibility + first obstruction (if any). */
146
+ export interface LineOfSightResult {
147
+ readonly datasetId: string;
148
+ readonly layerId?: number;
149
+ readonly visible: boolean;
150
+ /** First terrain obstruction between observer and target, when not visible. */
151
+ readonly obstruction?: SceneAnalysisPosition;
152
+ /** Distance from the observer to the first obstruction, in metres, when obstructed. */
153
+ readonly obstructionDistanceMeters?: number;
154
+ /** Great-circle distance between observer and target, in metres. */
155
+ readonly distanceMeters?: number;
156
+ /** Observer elevation (ground elevation + observer height offset), in metres. */
157
+ readonly observerElevation?: number;
158
+ /** Target elevation (ground elevation + target height offset), in metres. */
159
+ readonly targetElevation?: number;
160
+ /** Number of range samples the server took along the sightline. */
161
+ readonly sampleCount?: number;
162
+ /** Whether any sampled point fell on terrain NoData. */
163
+ readonly hasNoDataSamples?: boolean;
164
+ }
165
+ /**
166
+ * Build the FLAT JSON request body sent to the line-of-sight endpoint. Pure.
167
+ *
168
+ * The server contract is flat (`observerLon/observerLat/observerHeight/...`)
169
+ * and treats `observerHeight`/`targetHeight` as the height OFFSET above the
170
+ * terrain surface. We therefore fold the ergonomic offset into that field with
171
+ * precedence `offsetMeters ?? position.height ?? 0`.
172
+ */
173
+ export declare function buildLineOfSightBody(request: LineOfSightRequest): Record<string, unknown>;
174
+ /**
175
+ * Request a line-of-sight analysis between an observer and a target. Pair the
176
+ * result with {@link renderLineOfSight} to draw the sightline (green visible /
177
+ * red obstructed segments) and an obstruction marker into the scene.
178
+ */
179
+ export declare function requestLineOfSight(execute: SceneAnalysisRequestExecutor, request: LineOfSightRequest): Promise<LineOfSightResult>;
180
+ /** Parameters for a viewshed request from an observer position. */
181
+ export interface ViewshedRequest {
182
+ readonly datasetId: string;
183
+ readonly observer: SceneAnalysisPosition;
184
+ /**
185
+ * Observer height OFFSET above the terrain surface, in metres (e.g. tower /
186
+ * mast height). Maps to the server's `observerHeight`. Precedence:
187
+ * `observerOffsetMeters ?? observer.height ?? 0`.
188
+ */
189
+ readonly observerOffsetMeters?: number;
190
+ /** Height offset applied to each sampled target point, in metres. Maps to the server's `targetHeight`. */
191
+ readonly targetHeightMeters?: number;
192
+ /** Analysis radius in metres. Required, must be > 0. */
193
+ readonly radiusMeters: number;
194
+ /** Number of azimuth rays cast over the full 360°. Server requires >= 1 when supplied. */
195
+ readonly rayCount?: number;
196
+ /** Range samples taken along each ray. Server requires >= 2 when supplied. */
197
+ readonly samplesPerRay?: number;
198
+ readonly mosaicRule?: string;
199
+ readonly signal?: AbortSignal;
200
+ }
201
+ /** One radial visibility sample returned by the viewshed endpoint. */
202
+ export interface ViewshedSample {
203
+ /** The sampled ground point (height is the terrain elevation, or `0` for NoData). */
204
+ readonly position: SceneAnalysisPosition;
205
+ /** Azimuth of the ray this sample belongs to, in degrees. */
206
+ readonly azimuthDegrees: number;
207
+ /** Distance from the observer to this sample along the ray, in metres. */
208
+ readonly distanceMeters: number;
209
+ /** Whether the observer can see this sampled point. */
210
+ readonly visible: boolean;
211
+ }
212
+ /**
213
+ * The decoded viewshed result. The visible extent is returned as RADIAL POINT
214
+ * SAMPLES (per-ray range samples), not polygon rings.
215
+ */
216
+ export interface ViewshedResult {
217
+ readonly datasetId: string;
218
+ readonly layerId?: number;
219
+ readonly observer: SceneAnalysisPosition;
220
+ readonly radiusMeters: number;
221
+ /** Number of azimuth rays cast. */
222
+ readonly rayCount?: number;
223
+ /** Range samples per ray. */
224
+ readonly samplesPerRay?: number;
225
+ /** Total number of samples returned. */
226
+ readonly sampleCount: number;
227
+ /** Number of samples flagged visible. */
228
+ readonly visibleSampleCount: number;
229
+ /** The radial visibility samples. */
230
+ readonly samples: readonly ViewshedSample[];
231
+ }
232
+ /**
233
+ * Build the FLAT JSON request body sent to the viewshed endpoint. Pure.
234
+ *
235
+ * The server runs a full-360° radial cast controlled by `rayCount` /
236
+ * `samplesPerRay`; there is no azimuth sweep. `observerHeight`/`targetHeight`
237
+ * are terrain-relative offsets (precedence `offset ?? position.height ?? 0` for
238
+ * the observer).
239
+ */
240
+ export declare function buildViewshedBody(request: ViewshedRequest): Record<string, unknown>;
241
+ /**
242
+ * Request a viewshed analysis from an observer position. Pair the result with
243
+ * {@link renderViewshed} to draw the visible / obstructed radial samples.
244
+ */
245
+ export declare function requestViewshed(execute: SceneAnalysisRequestExecutor, request: ViewshedRequest): Promise<ViewshedResult>;
246
+ /** A 3D measurement computed from picked / supplied scene positions. */
247
+ export interface SceneMeasurement {
248
+ readonly positions: readonly SceneAnalysisPosition[];
249
+ /** Total 3D path length in metres (sum of slant segments). */
250
+ readonly lengthMeters: number;
251
+ /** Per-segment slant distances in metres (length === positions.length - 1). */
252
+ readonly segmentMeters: readonly number[];
253
+ /** Polygon area in m² when `mode` is `area` and there are >= 3 positions. */
254
+ readonly areaSquareMeters?: number;
255
+ readonly mode: "distance" | "area";
256
+ }
257
+ /**
258
+ * Compute a 3D distance or area measurement from an ordered list of positions
259
+ * (typically picked off the scene). For `distance` the result carries the total
260
+ * 3D path length and per-segment slant distances; for `area` it additionally
261
+ * carries the spherical polygon area. Pure.
262
+ */
263
+ export declare function measureScenePositions(positions: readonly SceneAnalysisPosition[], mode?: "distance" | "area"): SceneMeasurement;
264
+ /**
265
+ * The Cesium `EntityCollection` surface (off `viewer.entities`) the analysis
266
+ * renderers add/remove graphics through. Real Cesium `EntityCollection`
267
+ * instances satisfy this; tests pass a plain object.
268
+ */
269
+ export interface CesiumEntityCollectionLike {
270
+ add(entity: unknown): unknown;
271
+ remove(entity: unknown): boolean;
272
+ }
273
+ /**
274
+ * The minimal slice of `typeof import("cesium")` the analysis renderers touch.
275
+ * Modelled so a `vi.mock("cesium")` stub can satisfy it without a WebGL context.
276
+ */
277
+ export interface SceneAnalysisCesiumModule {
278
+ readonly Cartesian3: {
279
+ fromDegrees(longitude: number, latitude: number, height?: number): unknown;
280
+ fromDegreesArrayHeights(coordinates: number[]): unknown;
281
+ };
282
+ readonly Color: {
283
+ fromCssColorString(color: string): unknown;
284
+ readonly LIME: unknown;
285
+ readonly RED: unknown;
286
+ readonly YELLOW: unknown;
287
+ };
288
+ }
289
+ /**
290
+ * A handle over the entities one analysis render added, so a caller can clear
291
+ * the overlay (e.g. before re-running the analysis). Keyed by a stable kind.
292
+ */
293
+ export interface SceneAnalysisOverlay {
294
+ readonly kind: "line-of-sight" | "viewshed" | "elevation-profile" | "measurement";
295
+ readonly entities: readonly unknown[];
296
+ remove(): void;
297
+ }
298
+ /**
299
+ * Render a line-of-sight result into the scene's entity collection: the
300
+ * observer→target sightline (lime when visible, red when obstructed) plus a
301
+ * yellow point marking the first obstruction when present. Returns an overlay
302
+ * handle so the caller can clear it before re-running. Cesium is loaded lazily.
303
+ */
304
+ export declare function renderLineOfSight(entities: CesiumEntityCollectionLike, request: Pick<LineOfSightRequest, "observer" | "target">, result: LineOfSightResult, cesium?: SceneAnalysisCesiumModule): Promise<SceneAnalysisOverlay>;
305
+ /**
306
+ * Render a viewshed result into the scene's entity collection: one point per
307
+ * radial sample — green (`Color.LIME`) where the observer can see the sample,
308
+ * red (`Color.RED`) where it is obstructed. Returns an overlay handle. Cesium
309
+ * is loaded lazily.
310
+ */
311
+ export declare function renderViewshed(entities: CesiumEntityCollectionLike, result: ViewshedResult, cesium?: SceneAnalysisCesiumModule): Promise<SceneAnalysisOverlay>;
312
+ /**
313
+ * Render an elevation profile's sampled line into the scene's entity collection
314
+ * as a polyline draped at the sampled positions. Because the server returns
315
+ * distance/elevation samples (not lon/lat), the caller passes the original
316
+ * `polyline` so the rendered line aligns with the requested geometry; the
317
+ * sample elevations are not required for the line render and charting is left to
318
+ * the consumer. Returns an overlay handle. Cesium is loaded lazily.
319
+ */
320
+ export declare function renderElevationProfilePolyline(entities: CesiumEntityCollectionLike, polyline: readonly SceneAnalysisPosition[], cesium?: SceneAnalysisCesiumModule): Promise<SceneAnalysisOverlay>;
321
+ /**
322
+ * Render a measurement into the scene's entity collection: the measured
323
+ * polyline (or closed polygon outline for `area`) plus a label at the last
324
+ * vertex with the formatted length / area. Returns an overlay handle. Cesium is
325
+ * loaded lazily.
326
+ */
327
+ export declare function renderMeasurement(entities: CesiumEntityCollectionLike, measurement: SceneMeasurement, cesium?: SceneAnalysisCesiumModule): Promise<SceneAnalysisOverlay>;
328
+ /**
329
+ * Format a human-readable label for a measurement (km/m for distance, km²/m²
330
+ * for area). Pure; exported so consumers can reuse the same formatting in
331
+ * their own UI/labels.
332
+ */
333
+ export declare function formatMeasurementLabel(measurement: SceneMeasurement): string;
334
+ //# sourceMappingURL=analysis-widgets.d.ts.map