@honua/react 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 (597) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +9 -0
  3. package/contract/analytics-sources.d.ts +149 -0
  4. package/contract/analytics-sources.d.ts.map +1 -0
  5. package/contract/analytics-sources.js +235 -0
  6. package/contract/edit-session.d.ts +203 -0
  7. package/contract/edit-session.d.ts.map +1 -0
  8. package/contract/edit-session.js +760 -0
  9. package/contract/edit-sketch.d.ts +91 -0
  10. package/contract/edit-sketch.d.ts.map +1 -0
  11. package/contract/edit-sketch.js +281 -0
  12. package/contract/index.d.ts +61 -0
  13. package/contract/index.d.ts.map +1 -0
  14. package/contract/index.js +51 -0
  15. package/contract/jobs.d.ts +149 -0
  16. package/contract/jobs.d.ts.map +1 -0
  17. package/contract/jobs.js +40 -0
  18. package/contract/source.d.ts +423 -0
  19. package/contract/source.d.ts.map +1 -0
  20. package/contract/source.js +3802 -0
  21. package/contract/spatial-aggregation.d.ts +336 -0
  22. package/contract/spatial-aggregation.d.ts.map +1 -0
  23. package/contract/spatial-aggregation.js +298 -0
  24. package/contract/temporal.d.ts +455 -0
  25. package/contract/temporal.d.ts.map +1 -0
  26. package/contract/temporal.js +146 -0
  27. package/contract/tiles.d.ts +370 -0
  28. package/contract/tiles.d.ts.map +1 -0
  29. package/contract/tiles.js +519 -0
  30. package/contract/types.d.ts +665 -0
  31. package/contract/types.d.ts.map +1 -0
  32. package/contract/types.js +175 -0
  33. package/contract/widget-source.d.ts +205 -0
  34. package/contract/widget-source.d.ts.map +1 -0
  35. package/contract/widget-source.js +1473 -0
  36. package/control-plane/client.d.ts +95 -0
  37. package/control-plane/client.d.ts.map +1 -0
  38. package/control-plane/client.js +374 -0
  39. package/control-plane/index.d.ts +18 -0
  40. package/control-plane/index.d.ts.map +1 -0
  41. package/control-plane/index.js +14 -0
  42. package/control-plane/types.d.ts +233 -0
  43. package/control-plane/types.d.ts.map +1 -0
  44. package/control-plane/types.js +7 -0
  45. package/core/batch.d.ts +37 -0
  46. package/core/batch.d.ts.map +1 -0
  47. package/core/batch.js +79 -0
  48. package/core/cache-state.d.ts +79 -0
  49. package/core/cache-state.d.ts.map +1 -0
  50. package/core/cache-state.js +87 -0
  51. package/core/client.d.ts +577 -0
  52. package/core/client.d.ts.map +1 -0
  53. package/core/client.js +1664 -0
  54. package/core/compatibility.d.ts +18 -0
  55. package/core/compatibility.d.ts.map +1 -0
  56. package/core/compatibility.js +245 -0
  57. package/core/errors.d.ts +107 -0
  58. package/core/errors.d.ts.map +1 -0
  59. package/core/errors.js +156 -0
  60. package/core/esri-geojson.d.ts +66 -0
  61. package/core/esri-geojson.d.ts.map +1 -0
  62. package/core/esri-geojson.js +363 -0
  63. package/core/geoservices.d.ts +34 -0
  64. package/core/geoservices.d.ts.map +1 -0
  65. package/core/geoservices.js +434 -0
  66. package/core/grpc-adapter.d.ts +23 -0
  67. package/core/grpc-adapter.d.ts.map +1 -0
  68. package/core/grpc-adapter.js +688 -0
  69. package/core/odata.d.ts +347 -0
  70. package/core/odata.d.ts.map +1 -0
  71. package/core/odata.js +913 -0
  72. package/core/ogc-conformance.d.ts +35 -0
  73. package/core/ogc-conformance.d.ts.map +1 -0
  74. package/core/ogc-conformance.js +134 -0
  75. package/core/ogc-features.d.ts +23 -0
  76. package/core/ogc-features.d.ts.map +1 -0
  77. package/core/ogc-features.js +114 -0
  78. package/core/ogc-maps.d.ts +49 -0
  79. package/core/ogc-maps.d.ts.map +1 -0
  80. package/core/ogc-maps.js +126 -0
  81. package/core/ogc-processes.d.ts +118 -0
  82. package/core/ogc-processes.d.ts.map +1 -0
  83. package/core/ogc-processes.js +423 -0
  84. package/core/ogc-records.d.ts +75 -0
  85. package/core/ogc-records.d.ts.map +1 -0
  86. package/core/ogc-records.js +251 -0
  87. package/core/ogc-tiles.d.ts +125 -0
  88. package/core/ogc-tiles.d.ts.map +1 -0
  89. package/core/ogc-tiles.js +183 -0
  90. package/core/path-utils.d.ts +69 -0
  91. package/core/path-utils.d.ts.map +1 -0
  92. package/core/path-utils.js +123 -0
  93. package/core/pbf-decoder.d.ts +39 -0
  94. package/core/pbf-decoder.d.ts.map +1 -0
  95. package/core/pbf-decoder.js +702 -0
  96. package/core/process-runner.d.ts +104 -0
  97. package/core/process-runner.d.ts.map +1 -0
  98. package/core/process-runner.js +315 -0
  99. package/core/protocol-transport.d.ts +76 -0
  100. package/core/protocol-transport.d.ts.map +1 -0
  101. package/core/protocol-transport.js +15 -0
  102. package/core/query-builder.d.ts +261 -0
  103. package/core/query-builder.d.ts.map +1 -0
  104. package/core/query-builder.js +538 -0
  105. package/core/request-pipeline.d.ts +88 -0
  106. package/core/request-pipeline.d.ts.map +1 -0
  107. package/core/request-pipeline.js +273 -0
  108. package/core/spatial-filter.d.ts +93 -0
  109. package/core/spatial-filter.d.ts.map +1 -0
  110. package/core/spatial-filter.js +153 -0
  111. package/core/stac.d.ts +55 -0
  112. package/core/stac.d.ts.map +1 -0
  113. package/core/stac.js +229 -0
  114. package/core/surfaces.d.ts +527 -0
  115. package/core/surfaces.d.ts.map +1 -0
  116. package/core/surfaces.js +1917 -0
  117. package/core/terrain-elevation.d.ts +114 -0
  118. package/core/terrain-elevation.d.ts.map +1 -0
  119. package/core/terrain-elevation.js +150 -0
  120. package/core/types.d.ts +1355 -0
  121. package/core/types.d.ts.map +1 -0
  122. package/core/types.js +13 -0
  123. package/core/wfs-capabilities.d.ts +143 -0
  124. package/core/wfs-capabilities.d.ts.map +1 -0
  125. package/core/wfs-capabilities.js +478 -0
  126. package/core/wfs-filter.d.ts +118 -0
  127. package/core/wfs-filter.d.ts.map +1 -0
  128. package/core/wfs-filter.js +634 -0
  129. package/core/wfs.d.ts +219 -0
  130. package/core/wfs.d.ts.map +1 -0
  131. package/core/wfs.js +406 -0
  132. package/core/wire-shared.d.ts +32 -0
  133. package/core/wire-shared.d.ts.map +1 -0
  134. package/core/wire-shared.js +76 -0
  135. package/core/wms-axis.d.ts +36 -0
  136. package/core/wms-axis.d.ts.map +1 -0
  137. package/core/wms-axis.js +73 -0
  138. package/core/wms-capabilities.d.ts +110 -0
  139. package/core/wms-capabilities.d.ts.map +1 -0
  140. package/core/wms-capabilities.js +559 -0
  141. package/core/wms-types.d.ts +128 -0
  142. package/core/wms-types.d.ts.map +1 -0
  143. package/core/wms-types.js +32 -0
  144. package/core/wms.d.ts +144 -0
  145. package/core/wms.d.ts.map +1 -0
  146. package/core/wms.js +338 -0
  147. package/core/wmts-capabilities.d.ts +82 -0
  148. package/core/wmts-capabilities.d.ts.map +1 -0
  149. package/core/wmts-capabilities.js +402 -0
  150. package/core/wmts.d.ts +103 -0
  151. package/core/wmts.d.ts.map +1 -0
  152. package/core/wmts.js +332 -0
  153. package/core/xml-text.d.ts +20 -0
  154. package/core/xml-text.d.ts.map +1 -0
  155. package/core/xml-text.js +85 -0
  156. package/esri-compat/basemap-gallery.d.ts +38 -0
  157. package/esri-compat/basemap-gallery.d.ts.map +1 -0
  158. package/esri-compat/basemap-gallery.js +159 -0
  159. package/esri-compat/basemap-layer-list.d.ts +35 -0
  160. package/esri-compat/basemap-layer-list.d.ts.map +1 -0
  161. package/esri-compat/basemap-layer-list.js +139 -0
  162. package/esri-compat/basemap.d.ts +32 -0
  163. package/esri-compat/basemap.d.ts.map +1 -0
  164. package/esri-compat/basemap.js +84 -0
  165. package/esri-compat/bookmarks.d.ts +36 -0
  166. package/esri-compat/bookmarks.d.ts.map +1 -0
  167. package/esri-compat/bookmarks.js +108 -0
  168. package/esri-compat/class-breaks-renderer.d.ts +50 -0
  169. package/esri-compat/class-breaks-renderer.d.ts.map +1 -0
  170. package/esri-compat/class-breaks-renderer.js +164 -0
  171. package/esri-compat/color.d.ts +22 -0
  172. package/esri-compat/color.d.ts.map +1 -0
  173. package/esri-compat/color.js +106 -0
  174. package/esri-compat/controls.d.ts +174 -0
  175. package/esri-compat/controls.d.ts.map +1 -0
  176. package/esri-compat/controls.js +479 -0
  177. package/esri-compat/coordinate-conversion.d.ts +41 -0
  178. package/esri-compat/coordinate-conversion.d.ts.map +1 -0
  179. package/esri-compat/coordinate-conversion.js +125 -0
  180. package/esri-compat/directions.d.ts +45 -0
  181. package/esri-compat/directions.d.ts.map +1 -0
  182. package/esri-compat/directions.js +123 -0
  183. package/esri-compat/editor.d.ts +47 -0
  184. package/esri-compat/editor.d.ts.map +1 -0
  185. package/esri-compat/editor.js +170 -0
  186. package/esri-compat/esri-config.d.ts +16 -0
  187. package/esri-compat/esri-config.d.ts.map +1 -0
  188. package/esri-compat/esri-config.js +23 -0
  189. package/esri-compat/esri-request.d.ts +17 -0
  190. package/esri-compat/esri-request.d.ts.map +1 -0
  191. package/esri-compat/esri-request.js +127 -0
  192. package/esri-compat/event-bus.d.ts +106 -0
  193. package/esri-compat/event-bus.d.ts.map +1 -0
  194. package/esri-compat/event-bus.js +90 -0
  195. package/esri-compat/expand.d.ts +36 -0
  196. package/esri-compat/expand.d.ts.map +1 -0
  197. package/esri-compat/expand.js +97 -0
  198. package/esri-compat/extent.d.ts +43 -0
  199. package/esri-compat/extent.d.ts.map +1 -0
  200. package/esri-compat/extent.js +140 -0
  201. package/esri-compat/feature-filter.d.ts +55 -0
  202. package/esri-compat/feature-filter.d.ts.map +1 -0
  203. package/esri-compat/feature-filter.js +109 -0
  204. package/esri-compat/feature-form.d.ts +64 -0
  205. package/esri-compat/feature-form.d.ts.map +1 -0
  206. package/esri-compat/feature-form.js +137 -0
  207. package/esri-compat/feature-layer.d.ts +173 -0
  208. package/esri-compat/feature-layer.d.ts.map +1 -0
  209. package/esri-compat/feature-layer.js +661 -0
  210. package/esri-compat/feature-set.d.ts +32 -0
  211. package/esri-compat/feature-set.d.ts.map +1 -0
  212. package/esri-compat/feature-set.js +80 -0
  213. package/esri-compat/feature-table.d.ts +141 -0
  214. package/esri-compat/feature-table.d.ts.map +1 -0
  215. package/esri-compat/feature-table.js +500 -0
  216. package/esri-compat/feature-templates.d.ts +41 -0
  217. package/esri-compat/feature-templates.d.ts.map +1 -0
  218. package/esri-compat/feature-templates.js +97 -0
  219. package/esri-compat/feature.d.ts +33 -0
  220. package/esri-compat/feature.d.ts.map +1 -0
  221. package/esri-compat/feature.js +83 -0
  222. package/esri-compat/geojson-layer.d.ts +86 -0
  223. package/esri-compat/geojson-layer.d.ts.map +1 -0
  224. package/esri-compat/geojson-layer.js +191 -0
  225. package/esri-compat/geometry-engine.d.ts +107 -0
  226. package/esri-compat/geometry-engine.d.ts.map +1 -0
  227. package/esri-compat/geometry-engine.js +266 -0
  228. package/esri-compat/graphic.d.ts +46 -0
  229. package/esri-compat/graphic.d.ts.map +1 -0
  230. package/esri-compat/graphic.js +103 -0
  231. package/esri-compat/graphics-layer.d.ts +49 -0
  232. package/esri-compat/graphics-layer.d.ts.map +1 -0
  233. package/esri-compat/graphics-layer.js +185 -0
  234. package/esri-compat/group-layer.d.ts +48 -0
  235. package/esri-compat/group-layer.d.ts.map +1 -0
  236. package/esri-compat/group-layer.js +212 -0
  237. package/esri-compat/identify.d.ts +71 -0
  238. package/esri-compat/identify.d.ts.map +1 -0
  239. package/esri-compat/identify.js +299 -0
  240. package/esri-compat/identity-manager.d.ts +31 -0
  241. package/esri-compat/identity-manager.d.ts.map +1 -0
  242. package/esri-compat/identity-manager.js +115 -0
  243. package/esri-compat/imagery-layer.d.ts +78 -0
  244. package/esri-compat/imagery-layer.d.ts.map +1 -0
  245. package/esri-compat/imagery-layer.js +167 -0
  246. package/esri-compat/label-class.d.ts +31 -0
  247. package/esri-compat/label-class.d.ts.map +1 -0
  248. package/esri-compat/label-class.js +102 -0
  249. package/esri-compat/layer-list.d.ts +77 -0
  250. package/esri-compat/layer-list.d.ts.map +1 -0
  251. package/esri-compat/layer-list.js +342 -0
  252. package/esri-compat/legend.d.ts +53 -0
  253. package/esri-compat/legend.d.ts.map +1 -0
  254. package/esri-compat/legend.js +254 -0
  255. package/esri-compat/map-image-layer.d.ts +162 -0
  256. package/esri-compat/map-image-layer.d.ts.map +1 -0
  257. package/esri-compat/map-image-layer.js +709 -0
  258. package/esri-compat/map-view.d.ts +323 -0
  259. package/esri-compat/map-view.d.ts.map +1 -0
  260. package/esri-compat/map-view.js +1175 -0
  261. package/esri-compat/map.d.ts +47 -0
  262. package/esri-compat/map.d.ts.map +1 -0
  263. package/esri-compat/map.js +209 -0
  264. package/esri-compat/measurement-2d.d.ts +61 -0
  265. package/esri-compat/measurement-2d.d.ts.map +1 -0
  266. package/esri-compat/measurement-2d.js +184 -0
  267. package/esri-compat/measurement.d.ts +45 -0
  268. package/esri-compat/measurement.d.ts.map +1 -0
  269. package/esri-compat/measurement.js +193 -0
  270. package/esri-compat/oauth-info.d.ts +35 -0
  271. package/esri-compat/oauth-info.d.ts.map +1 -0
  272. package/esri-compat/oauth-info.js +115 -0
  273. package/esri-compat/picture-marker-symbol.d.ts +35 -0
  274. package/esri-compat/picture-marker-symbol.d.ts.map +1 -0
  275. package/esri-compat/picture-marker-symbol.js +126 -0
  276. package/esri-compat/point.d.ts +31 -0
  277. package/esri-compat/point.d.ts.map +1 -0
  278. package/esri-compat/point.js +102 -0
  279. package/esri-compat/polygon.d.ts +31 -0
  280. package/esri-compat/polygon.d.ts.map +1 -0
  281. package/esri-compat/polygon.js +107 -0
  282. package/esri-compat/polyline.d.ts +31 -0
  283. package/esri-compat/polyline.d.ts.map +1 -0
  284. package/esri-compat/polyline.js +107 -0
  285. package/esri-compat/popup-template.d.ts +55 -0
  286. package/esri-compat/popup-template.d.ts.map +1 -0
  287. package/esri-compat/popup-template.js +128 -0
  288. package/esri-compat/popup.d.ts +54 -0
  289. package/esri-compat/popup.d.ts.map +1 -0
  290. package/esri-compat/popup.js +312 -0
  291. package/esri-compat/print.d.ts +47 -0
  292. package/esri-compat/print.d.ts.map +1 -0
  293. package/esri-compat/print.js +105 -0
  294. package/esri-compat/query.d.ts +58 -0
  295. package/esri-compat/query.d.ts.map +1 -0
  296. package/esri-compat/query.js +128 -0
  297. package/esri-compat/reactive-utils.d.ts +24 -0
  298. package/esri-compat/reactive-utils.d.ts.map +1 -0
  299. package/esri-compat/reactive-utils.js +193 -0
  300. package/esri-compat/request.d.ts +41 -0
  301. package/esri-compat/request.d.ts.map +1 -0
  302. package/esri-compat/request.js +253 -0
  303. package/esri-compat/route-layer.d.ts +59 -0
  304. package/esri-compat/route-layer.d.ts.map +1 -0
  305. package/esri-compat/route-layer.js +223 -0
  306. package/esri-compat/route-task.d.ts +88 -0
  307. package/esri-compat/route-task.d.ts.map +1 -0
  308. package/esri-compat/route-task.js +225 -0
  309. package/esri-compat/scene-view.d.ts +41 -0
  310. package/esri-compat/scene-view.d.ts.map +1 -0
  311. package/esri-compat/scene-view.js +68 -0
  312. package/esri-compat/search.d.ts +112 -0
  313. package/esri-compat/search.d.ts.map +1 -0
  314. package/esri-compat/search.js +820 -0
  315. package/esri-compat/simple-fill-symbol.d.ts +27 -0
  316. package/esri-compat/simple-fill-symbol.d.ts.map +1 -0
  317. package/esri-compat/simple-fill-symbol.js +85 -0
  318. package/esri-compat/simple-line-symbol.d.ts +27 -0
  319. package/esri-compat/simple-line-symbol.d.ts.map +1 -0
  320. package/esri-compat/simple-line-symbol.js +85 -0
  321. package/esri-compat/simple-marker-symbol.d.ts +29 -0
  322. package/esri-compat/simple-marker-symbol.d.ts.map +1 -0
  323. package/esri-compat/simple-marker-symbol.js +92 -0
  324. package/esri-compat/simple-renderer.d.ts +29 -0
  325. package/esri-compat/simple-renderer.d.ts.map +1 -0
  326. package/esri-compat/simple-renderer.js +92 -0
  327. package/esri-compat/sketch.d.ts +64 -0
  328. package/esri-compat/sketch.d.ts.map +1 -0
  329. package/esri-compat/sketch.js +227 -0
  330. package/esri-compat/spatial-reference.d.ts +31 -0
  331. package/esri-compat/spatial-reference.d.ts.map +1 -0
  332. package/esri-compat/spatial-reference.js +102 -0
  333. package/esri-compat/swipe.d.ts +34 -0
  334. package/esri-compat/swipe.d.ts.map +1 -0
  335. package/esri-compat/swipe.js +93 -0
  336. package/esri-compat/table-list.d.ts +36 -0
  337. package/esri-compat/table-list.d.ts.map +1 -0
  338. package/esri-compat/table-list.js +126 -0
  339. package/esri-compat/text-symbol.d.ts +37 -0
  340. package/esri-compat/text-symbol.d.ts.map +1 -0
  341. package/esri-compat/text-symbol.js +123 -0
  342. package/esri-compat/tile-layer.d.ts +52 -0
  343. package/esri-compat/tile-layer.d.ts.map +1 -0
  344. package/esri-compat/tile-layer.js +168 -0
  345. package/esri-compat/time-slider.d.ts +70 -0
  346. package/esri-compat/time-slider.d.ts.map +1 -0
  347. package/esri-compat/time-slider.js +208 -0
  348. package/esri-compat/track.d.ts +51 -0
  349. package/esri-compat/track.d.ts.map +1 -0
  350. package/esri-compat/track.js +174 -0
  351. package/esri-compat/unique-value-renderer.d.ts +41 -0
  352. package/esri-compat/unique-value-renderer.d.ts.map +1 -0
  353. package/esri-compat/unique-value-renderer.js +127 -0
  354. package/esri-compat/url.d.ts +13 -0
  355. package/esri-compat/url.d.ts.map +1 -0
  356. package/esri-compat/url.js +68 -0
  357. package/esri-compat/vector-tile-layer.d.ts +47 -0
  358. package/esri-compat/vector-tile-layer.d.ts.map +1 -0
  359. package/esri-compat/vector-tile-layer.js +130 -0
  360. package/esri-compat/web-map.d.ts +14 -0
  361. package/esri-compat/web-map.d.ts.map +1 -0
  362. package/esri-compat/web-map.js +24 -0
  363. package/esri-compat/wfs-layer.d.ts +64 -0
  364. package/esri-compat/wfs-layer.d.ts.map +1 -0
  365. package/esri-compat/wfs-layer.js +145 -0
  366. package/esri-compat/wms-layer.d.ts +76 -0
  367. package/esri-compat/wms-layer.d.ts.map +1 -0
  368. package/esri-compat/wms-layer.js +157 -0
  369. package/exploration/context.d.ts +25 -0
  370. package/exploration/context.d.ts.map +1 -0
  371. package/exploration/context.js +396 -0
  372. package/exploration/index.d.ts +27 -0
  373. package/exploration/index.d.ts.map +1 -0
  374. package/exploration/index.js +24 -0
  375. package/exploration/presets.d.ts +27 -0
  376. package/exploration/presets.d.ts.map +1 -0
  377. package/exploration/presets.js +114 -0
  378. package/exploration/reducer.d.ts +23 -0
  379. package/exploration/reducer.d.ts.map +1 -0
  380. package/exploration/reducer.js +332 -0
  381. package/exploration/selection.d.ts +25 -0
  382. package/exploration/selection.d.ts.map +1 -0
  383. package/exploration/selection.js +34 -0
  384. package/exploration/selectors.d.ts +56 -0
  385. package/exploration/selectors.d.ts.map +1 -0
  386. package/exploration/selectors.js +110 -0
  387. package/exploration/types.d.ts +294 -0
  388. package/exploration/types.d.ts.map +1 -0
  389. package/exploration/types.js +33 -0
  390. package/expr/expression.d.ts +457 -0
  391. package/expr/expression.d.ts.map +1 -0
  392. package/expr/expression.js +663 -0
  393. package/expr/index.d.ts +32 -0
  394. package/expr/index.d.ts.map +1 -0
  395. package/expr/index.js +30 -0
  396. package/gen/honua/v1/feature_service_pb.d.ts +918 -0
  397. package/gen/honua/v1/feature_service_pb.d.ts.map +1 -0
  398. package/gen/honua/v1/feature_service_pb.js +375 -0
  399. package/generated-app/errors.d.ts +41 -0
  400. package/generated-app/errors.d.ts.map +1 -0
  401. package/generated-app/errors.js +41 -0
  402. package/generated-app/index.d.ts +17 -0
  403. package/generated-app/index.d.ts.map +1 -0
  404. package/generated-app/index.js +12 -0
  405. package/generated-app/manifest.d.ts +183 -0
  406. package/generated-app/manifest.d.ts.map +1 -0
  407. package/generated-app/manifest.js +14 -0
  408. package/generated-app/projection.d.ts +44 -0
  409. package/generated-app/projection.d.ts.map +1 -0
  410. package/generated-app/projection.js +234 -0
  411. package/generated-app/runtime.d.ts +215 -0
  412. package/generated-app/runtime.d.ts.map +1 -0
  413. package/generated-app/runtime.js +1196 -0
  414. package/interactions/detail-model.d.ts +54 -0
  415. package/interactions/detail-model.d.ts.map +1 -0
  416. package/interactions/detail-model.js +105 -0
  417. package/interactions/exploration-bindings.d.ts +120 -0
  418. package/interactions/exploration-bindings.d.ts.map +1 -0
  419. package/interactions/exploration-bindings.js +218 -0
  420. package/interactions/feature-state.d.ts +144 -0
  421. package/interactions/feature-state.d.ts.map +1 -0
  422. package/interactions/feature-state.js +169 -0
  423. package/interactions/hit-test.d.ts +112 -0
  424. package/interactions/hit-test.d.ts.map +1 -0
  425. package/interactions/hit-test.js +291 -0
  426. package/interactions/index.d.ts +31 -0
  427. package/interactions/index.d.ts.map +1 -0
  428. package/interactions/index.js +24 -0
  429. package/interactions/share-state.d.ts +36 -0
  430. package/interactions/share-state.d.ts.map +1 -0
  431. package/interactions/share-state.js +123 -0
  432. package/map/feature-service-adapter.d.ts +138 -0
  433. package/map/feature-service-adapter.d.ts.map +1 -0
  434. package/map/feature-service-adapter.js +279 -0
  435. package/map/honua-map.d.ts +203 -0
  436. package/map/honua-map.d.ts.map +1 -0
  437. package/map/honua-map.js +347 -0
  438. package/map/index.d.ts +27 -0
  439. package/map/index.d.ts.map +1 -0
  440. package/map/index.js +22 -0
  441. package/map/maplibre-target.d.ts +103 -0
  442. package/map/maplibre-target.d.ts.map +1 -0
  443. package/map/maplibre-target.js +164 -0
  444. package/map/webmap-maplibre.d.ts +60 -0
  445. package/map/webmap-maplibre.d.ts.map +1 -0
  446. package/map/webmap-maplibre.js +212 -0
  447. package/package.json +37 -0
  448. package/react/context.d.ts +32 -0
  449. package/react/context.d.ts.map +1 -0
  450. package/react/context.js +19 -0
  451. package/react/honua-layer.d.ts +35 -0
  452. package/react/honua-layer.d.ts.map +1 -0
  453. package/react/honua-layer.js +47 -0
  454. package/react/honua-map.d.ts +83 -0
  455. package/react/honua-map.d.ts.map +1 -0
  456. package/react/honua-map.js +109 -0
  457. package/react/honua-popup.d.ts +26 -0
  458. package/react/honua-popup.d.ts.map +1 -0
  459. package/react/honua-popup.js +34 -0
  460. package/react/hooks.d.ts +127 -0
  461. package/react/hooks.d.ts.map +1 -0
  462. package/react/hooks.js +206 -0
  463. package/react/index.d.ts +42 -0
  464. package/react/index.d.ts.map +1 -0
  465. package/react/index.js +34 -0
  466. package/react/provider.d.ts +36 -0
  467. package/react/provider.d.ts.map +1 -0
  468. package/react/provider.js +35 -0
  469. package/react/query-cache.d.ts +76 -0
  470. package/react/query-cache.d.ts.map +1 -0
  471. package/react/query-cache.js +188 -0
  472. package/runtime/diff.d.ts +31 -0
  473. package/runtime/diff.d.ts.map +1 -0
  474. package/runtime/diff.js +143 -0
  475. package/runtime/errors.d.ts +40 -0
  476. package/runtime/errors.d.ts.map +1 -0
  477. package/runtime/errors.js +35 -0
  478. package/runtime/index.d.ts +59 -0
  479. package/runtime/index.d.ts.map +1 -0
  480. package/runtime/index.js +43 -0
  481. package/runtime/legend.d.ts +23 -0
  482. package/runtime/legend.d.ts.map +1 -0
  483. package/runtime/legend.js +38 -0
  484. package/runtime/load-package.d.ts +125 -0
  485. package/runtime/load-package.d.ts.map +1 -0
  486. package/runtime/load-package.js +264 -0
  487. package/runtime/map-package-fetch.d.ts +107 -0
  488. package/runtime/map-package-fetch.d.ts.map +1 -0
  489. package/runtime/map-package-fetch.js +336 -0
  490. package/runtime/map-package-realtime.d.ts +169 -0
  491. package/runtime/map-package-realtime.d.ts.map +1 -0
  492. package/runtime/map-package-realtime.js +350 -0
  493. package/runtime/map-package-validation.d.ts +43 -0
  494. package/runtime/map-package-validation.d.ts.map +1 -0
  495. package/runtime/map-package-validation.js +269 -0
  496. package/runtime/map-package-watch.d.ts +78 -0
  497. package/runtime/map-package-watch.d.ts.map +1 -0
  498. package/runtime/map-package-watch.js +695 -0
  499. package/runtime/map-package.d.ts +167 -0
  500. package/runtime/map-package.d.ts.map +1 -0
  501. package/runtime/map-package.js +15 -0
  502. package/runtime/ogc-styles.d.ts +110 -0
  503. package/runtime/ogc-styles.d.ts.map +1 -0
  504. package/runtime/ogc-styles.js +195 -0
  505. package/runtime/popups.d.ts +62 -0
  506. package/runtime/popups.d.ts.map +1 -0
  507. package/runtime/popups.js +95 -0
  508. package/runtime/query-tiles.d.ts +217 -0
  509. package/runtime/query-tiles.d.ts.map +1 -0
  510. package/runtime/query-tiles.js +801 -0
  511. package/runtime/runtime.d.ts +243 -0
  512. package/runtime/runtime.d.ts.map +1 -0
  513. package/runtime/runtime.js +1147 -0
  514. package/runtime/source-bridge.d.ts +99 -0
  515. package/runtime/source-bridge.d.ts.map +1 -0
  516. package/runtime/source-bridge.js +401 -0
  517. package/runtime/style-compose.d.ts +46 -0
  518. package/runtime/style-compose.d.ts.map +1 -0
  519. package/runtime/style-compose.js +144 -0
  520. package/runtime/style-interactions.d.ts +141 -0
  521. package/runtime/style-interactions.d.ts.map +1 -0
  522. package/runtime/style-interactions.js +574 -0
  523. package/runtime/style-spec-validation.d.ts +23 -0
  524. package/runtime/style-spec-validation.d.ts.map +1 -0
  525. package/runtime/style-spec-validation.js +357 -0
  526. package/studio/capability-manifest.d.ts +285 -0
  527. package/studio/capability-manifest.d.ts.map +1 -0
  528. package/studio/capability-manifest.js +59 -0
  529. package/studio/chart-spec.d.ts +85 -0
  530. package/studio/chart-spec.d.ts.map +1 -0
  531. package/studio/chart-spec.js +106 -0
  532. package/studio/index.d.ts +34 -0
  533. package/studio/index.d.ts.map +1 -0
  534. package/studio/index.js +27 -0
  535. package/studio/provenance.d.ts +131 -0
  536. package/studio/provenance.d.ts.map +1 -0
  537. package/studio/provenance.js +39 -0
  538. package/studio/publish.d.ts +64 -0
  539. package/studio/publish.d.ts.map +1 -0
  540. package/studio/publish.js +13 -0
  541. package/studio/types.d.ts +278 -0
  542. package/studio/types.d.ts.map +1 -0
  543. package/studio/types.js +71 -0
  544. package/studio/validate.d.ts +45 -0
  545. package/studio/validate.d.ts.map +1 -0
  546. package/studio/validate.js +255 -0
  547. package/studio/validation.d.ts +112 -0
  548. package/studio/validation.d.ts.map +1 -0
  549. package/studio/validation.js +42 -0
  550. package/style/factory.d.ts +30 -0
  551. package/style/factory.d.ts.map +1 -0
  552. package/style/factory.js +61 -0
  553. package/style/index.d.ts +25 -0
  554. package/style/index.d.ts.map +1 -0
  555. package/style/index.js +24 -0
  556. package/style/specification.d.ts +203 -0
  557. package/style/specification.d.ts.map +1 -0
  558. package/style/specification.js +178 -0
  559. package/style/wms-wmts-resolvers.d.ts +38 -0
  560. package/style/wms-wmts-resolvers.d.ts.map +1 -0
  561. package/style/wms-wmts-resolvers.js +92 -0
  562. package/webmap/contract.d.ts +28 -0
  563. package/webmap/contract.d.ts.map +1 -0
  564. package/webmap/contract.js +130 -0
  565. package/webmap/convert-basemap.d.ts +17 -0
  566. package/webmap/convert-basemap.d.ts.map +1 -0
  567. package/webmap/convert-basemap.js +78 -0
  568. package/webmap/convert-extent.d.ts +17 -0
  569. package/webmap/convert-extent.d.ts.map +1 -0
  570. package/webmap/convert-extent.js +114 -0
  571. package/webmap/convert-label.d.ts +13 -0
  572. package/webmap/convert-label.d.ts.map +1 -0
  573. package/webmap/convert-label.js +125 -0
  574. package/webmap/convert-layer.d.ts +22 -0
  575. package/webmap/convert-layer.d.ts.map +1 -0
  576. package/webmap/convert-layer.js +181 -0
  577. package/webmap/convert-popup.d.ts +34 -0
  578. package/webmap/convert-popup.d.ts.map +1 -0
  579. package/webmap/convert-popup.js +68 -0
  580. package/webmap/convert-renderer.d.ts +17 -0
  581. package/webmap/convert-renderer.d.ts.map +1 -0
  582. package/webmap/convert-renderer.js +161 -0
  583. package/webmap/convert-symbol.d.ts +17 -0
  584. package/webmap/convert-symbol.d.ts.map +1 -0
  585. package/webmap/convert-symbol.js +122 -0
  586. package/webmap/index.d.ts +44 -0
  587. package/webmap/index.d.ts.map +1 -0
  588. package/webmap/index.js +33 -0
  589. package/webmap/parse.d.ts +25 -0
  590. package/webmap/parse.d.ts.map +1 -0
  591. package/webmap/parse.js +83 -0
  592. package/webmap/types.d.ts +264 -0
  593. package/webmap/types.d.ts.map +1 -0
  594. package/webmap/types.js +13 -0
  595. package/webmap/warnings.d.ts +30 -0
  596. package/webmap/warnings.d.ts.map +1 -0
  597. package/webmap/warnings.js +37 -0
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Public request/response envelopes for the WMS / WMTS first-party
3
+ * adapter. Kept in their own module so the canonical SDK surface
4
+ * (`src/contract/index.ts`, `src/runtime/index.ts`, `src/index.ts`) can
5
+ * re-export them without dragging the runtime classes into trees that
6
+ * never reference WMS.
7
+ *
8
+ * @module
9
+ */
10
+ // ── WMTS wire-format helpers ──────────────────────────────────
11
+ /**
12
+ * Canonical mapping from WMTS `Format` MIME types to RESTful path
13
+ * extensions. Shared between the wire client (`getWmtsTile` /
14
+ * `featureInfo` URL builders in `src/core/client.ts`) and the MapLibre
15
+ * raster source helper (`buildWmtsRasterSourceSpec` in
16
+ * `src/runtime/source-bridge.ts`) so a caller-supplied `format` lands on
17
+ * the same extension regardless of which surface composes the URL.
18
+ *
19
+ * The map is intentionally narrow — formats not listed here fall back
20
+ * to `png` per the conservative WMTS default. Add a new entry only when
21
+ * honua-server adds first-party support for the encoding.
22
+ */
23
+ const WMTS_TILE_FORMAT_TO_EXTENSION = new Map([
24
+ ["image/png", "png"],
25
+ ["image/jpeg", "jpeg"],
26
+ ["image/jpg", "jpeg"],
27
+ ["image/webp", "webp"],
28
+ ]);
29
+ /** Resolve the RESTful path extension for a WMTS tile `Format` MIME type. */
30
+ export function wmtsExtensionForFormat(format) {
31
+ return WMTS_TILE_FORMAT_TO_EXTENSION.get(format.toLowerCase()) ?? "png";
32
+ }
package/core/wms.d.ts ADDED
@@ -0,0 +1,144 @@
1
+ /**
2
+ * First-party WMS 1.3.0 adapter. `HonuaWms` is the service-level handle
3
+ * returned by `client.wms(serviceId)`; `HonuaWmsLayer` is the bound
4
+ * handle returned by `HonuaWms.layer(name)` that pre-fills the LAYER and
5
+ * default STYLE so per-call envelopes can drop the routing fields.
6
+ *
7
+ * Wire transport lives on `HonuaClient` (`getWmsCapabilities`,
8
+ * `getWmsMap`, `getWmsFeatureInfo`, `getWmsLegend`); this class is the
9
+ * typed surface consumers reach through `Source.protocol("wms")`.
10
+ *
11
+ * @module
12
+ */
13
+ import type { HonuaClient } from "./client.js";
14
+ import type { HonuaProtocolTransport } from "./protocol-transport.js";
15
+ import type { WmsCapabilities, WmsCapabilityLayer, WmsCapabilityStyle } from "./wms-capabilities.js";
16
+ import type { HonuaWmsFeatureInfoResponse, HonuaWmsImageResponse, WmsFeatureInfoRequest, WmsLegendRequest, WmsMapRequest } from "./wms-types.js";
17
+ export interface HonuaWmsOptions {
18
+ client: HonuaClient;
19
+ serviceId: string;
20
+ }
21
+ /**
22
+ * Split a WMS `LAYERS=` value (or `locator.typeName` / `spec.layers` of
23
+ * the same shape) into the list of non-empty trimmed layer tokens. Used
24
+ * by the contract WMS adapter and shared style resolver so the
25
+ * single-layer handle rule stays in one place.
26
+ */
27
+ export declare function parseWmsLayerNames(value: string | undefined): readonly string[];
28
+ export interface HonuaWmsLayerOptions extends HonuaWmsOptions {
29
+ /** WMS LAYER name (single layer; multi-layer renders use the parent handle). */
30
+ layerName: string;
31
+ /** Default STYLE for renders / feature-info on this layer. */
32
+ defaultStyleId?: string;
33
+ }
34
+ /**
35
+ * Service-level WMS handle. Use `layer(name)` to bind a single LAYER and
36
+ * style; for multi-layer composites (`LAYERS=a,b,c`) call `map()` /
37
+ * `featureInfo()` directly on this handle.
38
+ */
39
+ export declare class HonuaWms {
40
+ readonly client: HonuaClient;
41
+ readonly serviceId: string;
42
+ private capabilitiesPromise;
43
+ constructor(options: HonuaWmsOptions);
44
+ /** Bind a single named layer for layer-scoped requests. */
45
+ layer(name: string, defaultStyleId?: string): HonuaWmsLayer;
46
+ /** Fetch and parse the service `GetCapabilities` document. */
47
+ capabilities(options?: {
48
+ signal?: AbortSignal;
49
+ }): Promise<WmsCapabilities>;
50
+ /** Render a `GetMap` request across one or more advertised layers. */
51
+ map(request: WmsMapRequest): Promise<HonuaWmsImageResponse>;
52
+ /** Issue a `GetFeatureInfo` against one or more advertised layers. */
53
+ featureInfo<T = Record<string, unknown>>(request: WmsFeatureInfoRequest): Promise<HonuaWmsFeatureInfoResponse<T>>;
54
+ /**
55
+ * Fetch a `GetLegendGraphic` image. Always gates on parsed Capabilities:
56
+ * when the caller does not pre-supply `options.capabilities`, the handle
57
+ * lazily loads them once via `getWmsCapabilities` and caches the
58
+ * promise on the instance so repeat calls reuse the same fetch. Throws
59
+ * `HonuaCapabilityNotSupportedError("legend", "wms", serviceId)` when
60
+ * the service does not advertise `<GetLegendGraphic>`.
61
+ */
62
+ legend(request: WmsLegendRequest, options?: {
63
+ capabilities?: WmsCapabilities;
64
+ }): Promise<HonuaWmsImageResponse>;
65
+ private loadCachedCapabilities;
66
+ }
67
+ /**
68
+ * Bound layer handle. Drops `layers` / `styles` from per-call requests
69
+ * and pre-fills the LAYER name. `featureInfo()` carries the same `i`,
70
+ * `j`, and `bbox` envelope as the service-level handle.
71
+ */
72
+ export declare class HonuaWmsLayer {
73
+ readonly client: HonuaClient;
74
+ readonly serviceId: string;
75
+ readonly layerName: string;
76
+ readonly defaultStyleId: string | undefined;
77
+ private capabilitiesPromise;
78
+ constructor(options: HonuaWmsLayerOptions);
79
+ /** Fetch the parent service's `GetCapabilities`. */
80
+ capabilities(options?: {
81
+ signal?: AbortSignal;
82
+ }): Promise<WmsCapabilities>;
83
+ /** Find this layer in a parsed Capabilities document. */
84
+ describe(capabilities: WmsCapabilities): WmsCapabilityLayer | undefined;
85
+ /** Enumerate the styles advertised on this layer. */
86
+ stylesIn(capabilities: WmsCapabilities): readonly WmsCapabilityStyle[];
87
+ map(request: Omit<WmsMapRequest, "layers" | "styles"> & {
88
+ style?: string;
89
+ }): Promise<HonuaWmsImageResponse>;
90
+ featureInfo<T = Record<string, unknown>>(request: Omit<WmsFeatureInfoRequest, "layers" | "queryLayers" | "styles"> & {
91
+ style?: string;
92
+ }): Promise<HonuaWmsFeatureInfoResponse<T>>;
93
+ /**
94
+ * Fetch a `GetLegendGraphic` image scoped to the bound layer + style.
95
+ * Mirrors `HonuaWms.legend`'s gating: when `options.capabilities` is
96
+ * not supplied, the handle lazily loads them once via
97
+ * `getWmsCapabilities` and caches the promise. Throws
98
+ * `HonuaCapabilityNotSupportedError("legend", "wms", serviceId)` when
99
+ * the service does not advertise `<GetLegendGraphic>`.
100
+ */
101
+ legend(request?: Omit<WmsLegendRequest, "layer" | "style"> & {
102
+ style?: string;
103
+ }, options?: {
104
+ capabilities?: WmsCapabilities;
105
+ }): Promise<HonuaWmsImageResponse>;
106
+ private loadCachedCapabilities;
107
+ }
108
+ export declare function createHonuaWms(client: HonuaClient, serviceId: string): HonuaWms;
109
+ /**
110
+ * Fetch and parse a WMS `GetCapabilities` document for the addressed
111
+ * service. The XML body decodes through `requestText`; the parsed
112
+ * shape is the typed `WmsCapabilities` envelope (no XML node leaks
113
+ * through the public surface).
114
+ */
115
+ export declare function getWmsCapabilities(transport: HonuaProtocolTransport, request: {
116
+ serviceId: string;
117
+ version?: string;
118
+ signal?: AbortSignal;
119
+ extraParams?: Record<string, string | number | boolean>;
120
+ }): Promise<WmsCapabilities>;
121
+ /** Render a WMS `GetMap`. Returns the raw image bytes. */
122
+ export declare function getWmsMap(transport: HonuaProtocolTransport, request: {
123
+ serviceId: string;
124
+ } & WmsMapRequest): Promise<HonuaWmsImageResponse>;
125
+ /**
126
+ * Issue a WMS `GetFeatureInfo`. When `INFO_FORMAT=application/json`
127
+ * the JSON body decodes into the canonical `HonuaTypedFeature[]`
128
+ * shape; non-JSON formats round-trip on `bytes` so callers retain the
129
+ * raw payload behind the protocol escape hatch.
130
+ */
131
+ export declare function getWmsFeatureInfo<T = Record<string, unknown>>(transport: HonuaProtocolTransport, request: {
132
+ serviceId: string;
133
+ } & WmsFeatureInfoRequest): Promise<HonuaWmsFeatureInfoResponse<T>>;
134
+ /**
135
+ * Fetch a WMS `GetLegendGraphic`. honua-server does not implement
136
+ * GetLegendGraphic today; callers should branch on
137
+ * `WmsCapabilities.request.getLegendGraphic` before invoking. When
138
+ * the wire returns 5xx the underlying `HonuaHttpError` flows through.
139
+ */
140
+ export declare function getWmsLegend(transport: HonuaProtocolTransport, request: {
141
+ serviceId: string;
142
+ } & WmsLegendRequest): Promise<HonuaWmsImageResponse>;
143
+ export declare function decodeWmsFeatureInfoResponse<T>(bytes: Uint8Array, contentType: string, requestedFormat: string): HonuaWmsFeatureInfoResponse<T>;
144
+ //# sourceMappingURL=wms.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wms.d.ts","sourceRoot":"","sources":["../../../src/core/wms.ts"],"names":[],"mappings":"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"}
package/core/wms.js ADDED
@@ -0,0 +1,338 @@
1
+ /**
2
+ * First-party WMS 1.3.0 adapter. `HonuaWms` is the service-level handle
3
+ * returned by `client.wms(serviceId)`; `HonuaWmsLayer` is the bound
4
+ * handle returned by `HonuaWms.layer(name)` that pre-fills the LAYER and
5
+ * default STYLE so per-call envelopes can drop the routing fields.
6
+ *
7
+ * Wire transport lives on `HonuaClient` (`getWmsCapabilities`,
8
+ * `getWmsMap`, `getWmsFeatureInfo`, `getWmsLegend`); this class is the
9
+ * typed surface consumers reach through `Source.protocol("wms")`.
10
+ *
11
+ * @module
12
+ */
13
+ import { HonuaCapabilityNotSupportedError } from "./errors.js";
14
+ import { encodeServiceIdPath } from "./path-utils.js";
15
+ import { wmsBboxRequiresAxisSwap } from "./wms-axis.js";
16
+ import { findWmsLayer, parseWmsCapabilities } from "./wms-capabilities.js";
17
+ /**
18
+ * Split a WMS `LAYERS=` value (or `locator.typeName` / `spec.layers` of
19
+ * the same shape) into the list of non-empty trimmed layer tokens. Used
20
+ * by the contract WMS adapter and shared style resolver so the
21
+ * single-layer handle rule stays in one place.
22
+ */
23
+ export function parseWmsLayerNames(value) {
24
+ if (typeof value !== "string" || value.length === 0)
25
+ return [];
26
+ return value
27
+ .split(",")
28
+ .map((s) => s.trim())
29
+ .filter((s) => s.length > 0);
30
+ }
31
+ /**
32
+ * Service-level WMS handle. Use `layer(name)` to bind a single LAYER and
33
+ * style; for multi-layer composites (`LAYERS=a,b,c`) call `map()` /
34
+ * `featureInfo()` directly on this handle.
35
+ */
36
+ export class HonuaWms {
37
+ client;
38
+ serviceId;
39
+ capabilitiesPromise;
40
+ constructor(options) {
41
+ this.client = options.client;
42
+ this.serviceId = options.serviceId;
43
+ }
44
+ /** Bind a single named layer for layer-scoped requests. */
45
+ layer(name, defaultStyleId) {
46
+ const opts = {
47
+ client: this.client,
48
+ serviceId: this.serviceId,
49
+ layerName: name,
50
+ };
51
+ if (defaultStyleId !== undefined)
52
+ opts.defaultStyleId = defaultStyleId;
53
+ return new HonuaWmsLayer(opts);
54
+ }
55
+ /** Fetch and parse the service `GetCapabilities` document. */
56
+ async capabilities(options) {
57
+ return this.client.getWmsCapabilities({
58
+ serviceId: this.serviceId,
59
+ ...(options?.signal ? { signal: options.signal } : {}),
60
+ });
61
+ }
62
+ /** Render a `GetMap` request across one or more advertised layers. */
63
+ async map(request) {
64
+ return this.client.getWmsMap({ serviceId: this.serviceId, ...request });
65
+ }
66
+ /** Issue a `GetFeatureInfo` against one or more advertised layers. */
67
+ async featureInfo(request) {
68
+ return this.client.getWmsFeatureInfo({ serviceId: this.serviceId, ...request });
69
+ }
70
+ /**
71
+ * Fetch a `GetLegendGraphic` image. Always gates on parsed Capabilities:
72
+ * when the caller does not pre-supply `options.capabilities`, the handle
73
+ * lazily loads them once via `getWmsCapabilities` and caches the
74
+ * promise on the instance so repeat calls reuse the same fetch. Throws
75
+ * `HonuaCapabilityNotSupportedError("legend", "wms", serviceId)` when
76
+ * the service does not advertise `<GetLegendGraphic>`.
77
+ */
78
+ async legend(request, options) {
79
+ const caps = options?.capabilities ?? (await this.loadCachedCapabilities());
80
+ if (!caps.request.getLegendGraphic) {
81
+ throw new HonuaCapabilityNotSupportedError("legend", "wms", this.serviceId);
82
+ }
83
+ return this.client.getWmsLegend({ serviceId: this.serviceId, ...request });
84
+ }
85
+ async loadCachedCapabilities() {
86
+ if (!this.capabilitiesPromise) {
87
+ this.capabilitiesPromise = this.capabilities().catch((error) => {
88
+ // Drop the cached promise on failure so the next call retries
89
+ // instead of permanently surfacing the same error.
90
+ this.capabilitiesPromise = undefined;
91
+ throw error;
92
+ });
93
+ }
94
+ return this.capabilitiesPromise;
95
+ }
96
+ }
97
+ /**
98
+ * Bound layer handle. Drops `layers` / `styles` from per-call requests
99
+ * and pre-fills the LAYER name. `featureInfo()` carries the same `i`,
100
+ * `j`, and `bbox` envelope as the service-level handle.
101
+ */
102
+ export class HonuaWmsLayer {
103
+ client;
104
+ serviceId;
105
+ layerName;
106
+ defaultStyleId;
107
+ capabilitiesPromise;
108
+ constructor(options) {
109
+ this.client = options.client;
110
+ this.serviceId = options.serviceId;
111
+ this.layerName = options.layerName;
112
+ this.defaultStyleId = options.defaultStyleId;
113
+ }
114
+ /** Fetch the parent service's `GetCapabilities`. */
115
+ async capabilities(options) {
116
+ return this.client.getWmsCapabilities({
117
+ serviceId: this.serviceId,
118
+ ...(options?.signal ? { signal: options.signal } : {}),
119
+ });
120
+ }
121
+ /** Find this layer in a parsed Capabilities document. */
122
+ describe(capabilities) {
123
+ return findWmsLayer(capabilities, this.layerName);
124
+ }
125
+ /** Enumerate the styles advertised on this layer. */
126
+ stylesIn(capabilities) {
127
+ return this.describe(capabilities)?.styles ?? [];
128
+ }
129
+ async map(request) {
130
+ const { style, ...rest } = request;
131
+ const styleId = style ?? this.defaultStyleId;
132
+ return this.client.getWmsMap({
133
+ serviceId: this.serviceId,
134
+ layers: [this.layerName],
135
+ ...(styleId !== undefined ? { styles: [styleId] } : {}),
136
+ ...rest,
137
+ });
138
+ }
139
+ async featureInfo(request) {
140
+ const { style, ...rest } = request;
141
+ const styleId = style ?? this.defaultStyleId;
142
+ return this.client.getWmsFeatureInfo({
143
+ serviceId: this.serviceId,
144
+ layers: [this.layerName],
145
+ queryLayers: [this.layerName],
146
+ ...(styleId !== undefined ? { styles: [styleId] } : {}),
147
+ ...rest,
148
+ });
149
+ }
150
+ /**
151
+ * Fetch a `GetLegendGraphic` image scoped to the bound layer + style.
152
+ * Mirrors `HonuaWms.legend`'s gating: when `options.capabilities` is
153
+ * not supplied, the handle lazily loads them once via
154
+ * `getWmsCapabilities` and caches the promise. Throws
155
+ * `HonuaCapabilityNotSupportedError("legend", "wms", serviceId)` when
156
+ * the service does not advertise `<GetLegendGraphic>`.
157
+ */
158
+ async legend(request = {}, options) {
159
+ const caps = options?.capabilities ?? (await this.loadCachedCapabilities());
160
+ if (!caps.request.getLegendGraphic) {
161
+ throw new HonuaCapabilityNotSupportedError("legend", "wms", this.serviceId);
162
+ }
163
+ const { style, ...rest } = request;
164
+ const styleId = style ?? this.defaultStyleId;
165
+ return this.client.getWmsLegend({
166
+ serviceId: this.serviceId,
167
+ layer: this.layerName,
168
+ ...(styleId !== undefined ? { style: styleId } : {}),
169
+ ...rest,
170
+ });
171
+ }
172
+ async loadCachedCapabilities() {
173
+ if (!this.capabilitiesPromise) {
174
+ this.capabilitiesPromise = this.capabilities().catch((error) => {
175
+ this.capabilitiesPromise = undefined;
176
+ throw error;
177
+ });
178
+ }
179
+ return this.capabilitiesPromise;
180
+ }
181
+ }
182
+ export function createHonuaWms(client, serviceId) {
183
+ return new HonuaWms({ client, serviceId });
184
+ }
185
+ // ── WMS 1.3 wire methods ────────────────────────────────────────
186
+ /** Canonical WMS endpoint path. honua-server publishes both `/rest/services/{id}/MapServer/WMS` and `/ogc/services/{id}/wms`; the SDK targets the GeoServices-aliased path because every Honua deployment exposes it. */
187
+ function wmsBasePath(serviceId) {
188
+ return `/rest/services/${encodeServiceIdPath(serviceId)}/MapServer/WMS`;
189
+ }
190
+ /**
191
+ * Fetch and parse a WMS `GetCapabilities` document for the addressed
192
+ * service. The XML body decodes through `requestText`; the parsed
193
+ * shape is the typed `WmsCapabilities` envelope (no XML node leaks
194
+ * through the public surface).
195
+ */
196
+ export async function getWmsCapabilities(transport, request) {
197
+ const params = new URLSearchParams();
198
+ params.set("SERVICE", "WMS");
199
+ params.set("REQUEST", "GetCapabilities");
200
+ params.set("VERSION", request.version ?? "1.3.0");
201
+ if (request.extraParams) {
202
+ for (const [key, value] of Object.entries(request.extraParams)) {
203
+ params.set(key, String(value));
204
+ }
205
+ }
206
+ const path = `${wmsBasePath(request.serviceId)}?${params.toString()}`;
207
+ const { text: xml } = await transport.requestText("GET", path, {
208
+ accept: "text/xml,application/xml",
209
+ signal: request.signal,
210
+ });
211
+ return parseWmsCapabilities(xml);
212
+ }
213
+ /** Render a WMS `GetMap`. Returns the raw image bytes. */
214
+ export async function getWmsMap(transport, request) {
215
+ const params = serializeWmsMapParams(request);
216
+ params.set("REQUEST", "GetMap");
217
+ const path = `${wmsBasePath(request.serviceId)}?${params.toString()}`;
218
+ const accept = request.format ?? "image/png";
219
+ const response = await transport.requestBytes("GET", path, accept, undefined, request.signal);
220
+ return { bytes: response.bytes, contentType: response.contentType };
221
+ }
222
+ /**
223
+ * Issue a WMS `GetFeatureInfo`. When `INFO_FORMAT=application/json`
224
+ * the JSON body decodes into the canonical `HonuaTypedFeature[]`
225
+ * shape; non-JSON formats round-trip on `bytes` so callers retain the
226
+ * raw payload behind the protocol escape hatch.
227
+ */
228
+ export async function getWmsFeatureInfo(transport, request) {
229
+ const params = serializeWmsMapParams(request);
230
+ params.set("REQUEST", "GetFeatureInfo");
231
+ params.set("QUERY_LAYERS", request.queryLayers.join(","));
232
+ params.set("I", String(Math.trunc(request.i)));
233
+ params.set("J", String(Math.trunc(request.j)));
234
+ const infoFormat = request.infoFormat ?? "application/json";
235
+ params.set("INFO_FORMAT", infoFormat);
236
+ if (request.featureCount !== undefined) {
237
+ params.set("FEATURE_COUNT", String(Math.trunc(request.featureCount)));
238
+ }
239
+ const path = `${wmsBasePath(request.serviceId)}?${params.toString()}`;
240
+ const response = await transport.requestBytes("GET", path, infoFormat, undefined, request.signal);
241
+ return decodeWmsFeatureInfoResponse(response.bytes, response.contentType, infoFormat);
242
+ }
243
+ /**
244
+ * Fetch a WMS `GetLegendGraphic`. honua-server does not implement
245
+ * GetLegendGraphic today; callers should branch on
246
+ * `WmsCapabilities.request.getLegendGraphic` before invoking. When
247
+ * the wire returns 5xx the underlying `HonuaHttpError` flows through.
248
+ */
249
+ export async function getWmsLegend(transport, request) {
250
+ const params = new URLSearchParams();
251
+ params.set("SERVICE", "WMS");
252
+ params.set("VERSION", "1.3.0");
253
+ params.set("REQUEST", "GetLegendGraphic");
254
+ params.set("LAYER", request.layer);
255
+ if (request.style)
256
+ params.set("STYLE", request.style);
257
+ const format = request.format ?? "image/png";
258
+ params.set("FORMAT", format);
259
+ if (request.width !== undefined)
260
+ params.set("WIDTH", String(Math.trunc(request.width)));
261
+ if (request.height !== undefined)
262
+ params.set("HEIGHT", String(Math.trunc(request.height)));
263
+ if (request.extraParams) {
264
+ for (const [key, value] of Object.entries(request.extraParams)) {
265
+ params.set(key, String(value));
266
+ }
267
+ }
268
+ const path = `${wmsBasePath(request.serviceId)}?${params.toString()}`;
269
+ const response = await transport.requestBytes("GET", path, format, undefined, request.signal);
270
+ return { bytes: response.bytes, contentType: response.contentType };
271
+ }
272
+ function serializeWmsMapParams(request) {
273
+ const params = new URLSearchParams();
274
+ params.set("SERVICE", "WMS");
275
+ params.set("VERSION", "1.3.0");
276
+ params.set("LAYERS", request.layers.join(","));
277
+ params.set("STYLES", request.styles ? request.styles.join(",") : "");
278
+ const crs = request.crs ?? "EPSG:3857";
279
+ params.set("CRS", crs);
280
+ const [minx, miny, maxx, maxy] = request.bbox;
281
+ const wireBbox = wmsBboxRequiresAxisSwap(crs) ? [miny, minx, maxy, maxx] : [minx, miny, maxx, maxy];
282
+ params.set("BBOX", wireBbox.join(","));
283
+ params.set("WIDTH", String(Math.trunc(request.width)));
284
+ params.set("HEIGHT", String(Math.trunc(request.height)));
285
+ params.set("FORMAT", request.format ?? "image/png");
286
+ params.set("TRANSPARENT", String(request.transparent ?? true).toUpperCase());
287
+ if (request.bgcolor !== undefined)
288
+ params.set("BGCOLOR", request.bgcolor);
289
+ if (request.time !== undefined)
290
+ params.set("TIME", request.time);
291
+ if (request.elevation !== undefined)
292
+ params.set("ELEVATION", request.elevation);
293
+ if (request.extraParams) {
294
+ for (const [key, value] of Object.entries(request.extraParams)) {
295
+ params.set(key, String(value));
296
+ }
297
+ }
298
+ return params;
299
+ }
300
+ export function decodeWmsFeatureInfoResponse(bytes, contentType, requestedFormat) {
301
+ const isJson = contentType.toLowerCase().includes("application/json") ||
302
+ requestedFormat.toLowerCase().includes("application/json");
303
+ if (!isJson) {
304
+ return { contentType, bytes };
305
+ }
306
+ const text = new TextDecoder("utf-8").decode(bytes);
307
+ if (text.length === 0) {
308
+ return { contentType, features: [] };
309
+ }
310
+ let parsed;
311
+ try {
312
+ parsed = JSON.parse(text);
313
+ }
314
+ catch {
315
+ // Server emitted a non-JSON body despite the JSON Accept; preserve as bytes.
316
+ return { contentType, bytes };
317
+ }
318
+ const features = extractFeatureInfoFeatures(parsed);
319
+ return { contentType, features };
320
+ }
321
+ function extractFeatureInfoFeatures(parsed) {
322
+ if (!parsed || typeof parsed !== "object")
323
+ return [];
324
+ // honua-server emits `{ type: "FeatureInfoResponse", features: [{ layer, attributes }, ...] }`
325
+ // and a fallback GeoJSON `{ type: "FeatureCollection", features: [...] }`; both decode here.
326
+ const obj = parsed;
327
+ const featuresRaw = Array.isArray(obj.features) ? obj.features : [];
328
+ const out = [];
329
+ for (const raw of featuresRaw) {
330
+ if (!raw || typeof raw !== "object")
331
+ continue;
332
+ const feat = raw;
333
+ const attributes = (feat.attributes ?? feat.properties ?? {});
334
+ const geometry = feat.geometry ?? null;
335
+ out.push({ attributes, geometry });
336
+ }
337
+ return out;
338
+ }
@@ -0,0 +1,82 @@
1
+ /**
2
+ * WMTS 1.0.0 Capabilities parser. Hand-rolled, narrow-scope walker over
3
+ * the `Capabilities` document advertised by honua-server (single
4
+ * advertised TileMatrixSet today: `WebMercatorQuad`). Yields a typed
5
+ * `WmtsCapabilities` shape so the SDK can route through the canonical
6
+ * `Source` surface without leaking XML.
7
+ *
8
+ * @module
9
+ */
10
+ /**
11
+ * Top-level WMTS Capabilities surface.
12
+ */
13
+ export interface WmtsCapabilities {
14
+ /** Protocol version. honua-server advertises `1.0.0`. */
15
+ version: string;
16
+ service: WmtsCapabilitiesService;
17
+ layers: ReadonlyArray<WmtsCapabilityLayer>;
18
+ tileMatrixSets: ReadonlyArray<WmtsCapabilityTileMatrixSet>;
19
+ }
20
+ export interface WmtsCapabilitiesService {
21
+ title?: string;
22
+ abstract?: string;
23
+ }
24
+ export interface WmtsCapabilityLayer {
25
+ identifier: string;
26
+ title?: string;
27
+ abstract?: string;
28
+ formats: readonly string[];
29
+ styles: ReadonlyArray<WmtsCapabilityStyle>;
30
+ /** TileMatrixSet identifiers the layer supports. */
31
+ tileMatrixSetIds: readonly string[];
32
+ /** RESTful tile templates (xlink:href) advertised by `ResourceURL@resourceType="tile"`. */
33
+ resourceTemplates: ReadonlyArray<WmtsCapabilityResourceUrl>;
34
+ /** RESTful FeatureInfo templates advertised by `ResourceURL@resourceType="FeatureInfo"`. */
35
+ featureInfoTemplates: ReadonlyArray<WmtsCapabilityResourceUrl>;
36
+ /** Geographic bounding box (WGS84) when advertised. */
37
+ bbox?: {
38
+ west: number;
39
+ south: number;
40
+ east: number;
41
+ north: number;
42
+ };
43
+ }
44
+ export interface WmtsCapabilityStyle {
45
+ identifier: string;
46
+ title?: string;
47
+ isDefault: boolean;
48
+ legendUrl?: string;
49
+ }
50
+ export interface WmtsCapabilityResourceUrl {
51
+ format: string;
52
+ template: string;
53
+ }
54
+ export interface WmtsCapabilityTileMatrixSet {
55
+ identifier: string;
56
+ /** CRS supportedCRS or wellKnownScaleSet href when advertised. */
57
+ supportedCrs?: string;
58
+ wellKnownScaleSet?: string;
59
+ matrices: ReadonlyArray<WmtsCapabilityTileMatrix>;
60
+ }
61
+ export interface WmtsCapabilityTileMatrix {
62
+ identifier: string;
63
+ scaleDenominator: number;
64
+ matrixWidth: number;
65
+ matrixHeight: number;
66
+ tileWidth: number;
67
+ tileHeight: number;
68
+ topLeftCorner: readonly [number, number];
69
+ }
70
+ export declare class HonuaWmtsCapabilitiesParseError extends Error {
71
+ constructor(message: string);
72
+ }
73
+ /**
74
+ * Parse a `Capabilities` text body for WMTS 1.0 into the typed
75
+ * `WmtsCapabilities` shape.
76
+ */
77
+ export declare function parseWmtsCapabilities(xml: string): WmtsCapabilities;
78
+ /** Find a layer by identifier in a parsed `WmtsCapabilities`. */
79
+ export declare function findWmtsLayer(capabilities: WmtsCapabilities, identifier: string): WmtsCapabilityLayer | undefined;
80
+ /** Find a tile-matrix-set by identifier. */
81
+ export declare function findWmtsTileMatrixSet(capabilities: WmtsCapabilities, identifier: string): WmtsCapabilityTileMatrixSet | undefined;
82
+ //# sourceMappingURL=wmts-capabilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wmts-capabilities.d.ts","sourceRoot":"","sources":["../../../src/core/wmts-capabilities.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,yDAAyD;IACzD,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,uBAAuB,CAAC;IACjC,MAAM,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAC;IAC3C,cAAc,EAAE,aAAa,CAAC,2BAA2B,CAAC,CAAC;CAC5D;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,MAAM,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAC;IAC3C,oDAAoD;IACpD,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,2FAA2F;IAC3F,iBAAiB,EAAE,aAAa,CAAC,yBAAyB,CAAC,CAAC;IAC5D,4FAA4F;IAC5F,oBAAoB,EAAE,aAAa,CAAC,yBAAyB,CAAC,CAAC;IAC/D,uDAAuD;IACvD,IAAI,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CACrE;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,2BAA2B;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB,kEAAkE;IAClE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,EAAE,aAAa,CAAC,wBAAwB,CAAC,CAAC;CACnD;AAED,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1C;AAED,qBAAa,+BAAgC,SAAQ,KAAK;gBACrC,OAAO,EAAE,MAAM;CAInC;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAcnE;AAgWD,iEAAiE;AACjE,wBAAgB,aAAa,CAAC,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAEjH;AAED,4CAA4C;AAC5C,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,gBAAgB,EAC9B,UAAU,EAAE,MAAM,GACjB,2BAA2B,GAAG,SAAS,CAEzC"}