@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
package/core/wfs.d.ts ADDED
@@ -0,0 +1,219 @@
1
+ /**
2
+ * Runtime classes for the WFS 2.0 adapter. Three layers:
3
+ *
4
+ * - `HonuaWfs` — root handle bound to a WFS endpoint URL. Owns the
5
+ * capabilities cache and exposes feature-type / stored-query factories.
6
+ * - `HonuaWfsFeatureType` — bound to a single namespace-qualified type
7
+ * name. Implements GetFeature / GetPropertyValue / Transaction; routed
8
+ * from `Source.protocol("wfs")`.
9
+ * - `HonuaWfsStoredQuery` — bound to a stored-query identifier. Used by
10
+ * `Source.protocol("wfs").storedQuery(id)`.
11
+ *
12
+ * All wire calls go through `HonuaClient.requestText`, so the existing
13
+ * interceptor / retry / timeout pipeline applies.
14
+ *
15
+ * Canonical translation (KVP and FES emission, GeoJSON ↔ canonical
16
+ * envelope, etc.) lives in `src/contract/source.ts`'s `wfsSource` factory;
17
+ * this module only carries the wire-level surface.
18
+ *
19
+ * @module
20
+ */
21
+ import type { HonuaClient } from "./client.js";
22
+ import { type WfsCapabilitiesSnapshot, type WfsTransactionSummary } from "./wfs-capabilities.js";
23
+ /**
24
+ * Negotiated output-format preference for a WFS GetFeature call. `format` is
25
+ * the wire value to send back (the original case the server advertised); the
26
+ * categorical kind is what the canonical surface acts on.
27
+ */
28
+ export interface OutputFormatChoice {
29
+ kind: "json" | "gml";
30
+ format: string;
31
+ }
32
+ /**
33
+ * Construction options for `HonuaWfs`. The adapter is endpoint-bound: one
34
+ * `HonuaWfs` per server URL.
35
+ */
36
+ export interface HonuaWfsOptions {
37
+ client: HonuaClient;
38
+ /** Fully qualified or relative WFS endpoint URL (e.g. `/wfs`). */
39
+ endpointUrl: string;
40
+ /** WFS version to request. Default `2.0.0`. */
41
+ version?: string;
42
+ }
43
+ /**
44
+ * Root WFS handle. Holds the capabilities cache and exposes feature-type /
45
+ * stored-query factories.
46
+ */
47
+ export declare class HonuaWfs {
48
+ readonly client: HonuaClient;
49
+ readonly endpointUrl: string;
50
+ readonly version: string;
51
+ /** Counter exposed for tests / diagnostics: how many times capabilities was fetched. */
52
+ capabilitiesFetches: number;
53
+ private capabilitiesPromise;
54
+ private rawCapabilitiesXml;
55
+ constructor(options: HonuaWfsOptions);
56
+ /**
57
+ * Fetch and cache the GetCapabilities document. Subsequent calls reuse the
58
+ * parsed snapshot. Throws `HonuaWfsExceptionError` on `<ows:ExceptionReport>`.
59
+ */
60
+ capabilities(options?: {
61
+ signal?: AbortSignal;
62
+ }): Promise<WfsCapabilitiesSnapshot>;
63
+ /** Discard the cached capabilities snapshot so the next call re-fetches. */
64
+ refresh(): void;
65
+ /** Last raw capabilities XML payload (populated after the first fetch). */
66
+ rawCapabilities(): string | undefined;
67
+ /** Bind a feature-type handle. Does not network. */
68
+ featureType(typeName: string): HonuaWfsFeatureType;
69
+ /**
70
+ * Discover stored queries through the `ListStoredQueries` operation. Returns
71
+ * the bare list of identifier strings; per-query metadata is exposed via
72
+ * `storedQuery(id).describe()`.
73
+ */
74
+ storedQueries(options?: {
75
+ signal?: AbortSignal;
76
+ }): Promise<readonly string[]>;
77
+ storedQuery(id: string): HonuaWfsStoredQuery;
78
+ /** Internal helper used by feature-type / stored-query handles. */
79
+ requestText(method: "GET" | "POST", path: string, options: {
80
+ accept: string;
81
+ contentType?: string;
82
+ body?: string;
83
+ signal?: AbortSignal;
84
+ }): Promise<{
85
+ text: string;
86
+ contentType: string;
87
+ status: number;
88
+ }>;
89
+ /** Negotiate an output format for the GetFeature call. */
90
+ negotiateOutputFormat(snapshot: WfsCapabilitiesSnapshot): OutputFormatChoice | undefined;
91
+ private fetchCapabilities;
92
+ }
93
+ interface HonuaWfsFeatureTypeOptions {
94
+ root: HonuaWfs;
95
+ typeName: string;
96
+ }
97
+ /**
98
+ * Per-feature-type WFS surface. Implements the wire methods that the
99
+ * canonical `wfsSource` translates onto, and the protocol escape-hatch
100
+ * methods that ship raw XML payloads back to callers.
101
+ */
102
+ export declare class HonuaWfsFeatureType {
103
+ readonly root: HonuaWfs;
104
+ readonly typeName: string;
105
+ constructor(options: HonuaWfsFeatureTypeOptions);
106
+ /** Convenience: capabilities snapshot from the bound root. */
107
+ capabilities(options?: {
108
+ signal?: AbortSignal;
109
+ }): Promise<WfsCapabilitiesSnapshot>;
110
+ /**
111
+ * Issue a GetFeature request. Returns parsed JSON when the negotiated
112
+ * output format is JSON; otherwise returns the raw body as a string for
113
+ * downstream callers (the canonical surface throws in that case).
114
+ */
115
+ getFeature(params: {
116
+ filter?: string;
117
+ bbox?: string;
118
+ propertyName?: string[];
119
+ sortBy?: string;
120
+ count?: number;
121
+ startIndex?: number;
122
+ resultType?: "results" | "hits";
123
+ srsName?: string;
124
+ outputFormat?: string;
125
+ method?: "GET" | "POST";
126
+ body?: string;
127
+ signal?: AbortSignal;
128
+ }): Promise<{
129
+ kind: "json";
130
+ data: unknown;
131
+ contentType: string;
132
+ } | {
133
+ kind: "raw";
134
+ text: string;
135
+ contentType: string;
136
+ }>;
137
+ /**
138
+ * Issue a `GetPropertyValue` request. WFS-specific (returns raw XML), so
139
+ * the canonical surface only reaches it via `protocol("wfs")`.
140
+ */
141
+ getPropertyValue(params: {
142
+ valueReference: string;
143
+ filter?: string;
144
+ count?: number;
145
+ startIndex?: number;
146
+ signal?: AbortSignal;
147
+ }): Promise<{
148
+ text: string;
149
+ contentType: string;
150
+ }>;
151
+ /**
152
+ * Submit a `<wfs:Transaction>` POST body. Returns the parsed transaction
153
+ * summary; throws `HonuaWfsExceptionError` on `<ows:ExceptionReport>`.
154
+ */
155
+ transaction(params: {
156
+ body: string;
157
+ signal?: AbortSignal;
158
+ }): Promise<WfsTransactionSummary>;
159
+ /** Build (but do not send) the URL the GET GetFeature request would use. */
160
+ buildGetFeatureUrl(params: {
161
+ filter?: string;
162
+ bbox?: string;
163
+ count?: number;
164
+ startIndex?: number;
165
+ outputFormat?: string;
166
+ }): string;
167
+ }
168
+ interface HonuaWfsStoredQueryOptions {
169
+ root: HonuaWfs;
170
+ id: string;
171
+ }
172
+ /**
173
+ * Bound stored-query handle. `execute(params)` runs `GetFeature?storedquery_id=…`.
174
+ */
175
+ export declare class HonuaWfsStoredQuery {
176
+ readonly root: HonuaWfs;
177
+ readonly id: string;
178
+ constructor(options: HonuaWfsStoredQueryOptions);
179
+ /** Run `DescribeStoredQueries` for this stored query. Returns the raw XML. */
180
+ describe(options?: {
181
+ signal?: AbortSignal;
182
+ }): Promise<{
183
+ text: string;
184
+ contentType: string;
185
+ }>;
186
+ /**
187
+ * Execute the stored query against `GetFeature`. Caller passes the
188
+ * stored-query parameter map; values are coerced to strings via
189
+ * `String(value)`. Returns parsed JSON when the server replies with a
190
+ * JSON output format, raw text otherwise.
191
+ */
192
+ execute(params: {
193
+ parameters?: Record<string, string | number | boolean>;
194
+ outputFormat?: string;
195
+ count?: number;
196
+ startIndex?: number;
197
+ signal?: AbortSignal;
198
+ }): Promise<{
199
+ kind: "json";
200
+ data: unknown;
201
+ contentType: string;
202
+ } | {
203
+ kind: "raw";
204
+ text: string;
205
+ contentType: string;
206
+ }>;
207
+ }
208
+ export declare function appendQuery(url: string, params: URLSearchParams): string;
209
+ export declare function looksLikeJson(contentType: string | undefined, text: string): boolean;
210
+ export declare function looksLikeXml(contentType: string | undefined, text: string): boolean;
211
+ /**
212
+ * If the underlying client failure carries a WFS ExceptionReport in its
213
+ * body, re-throw as `HonuaWfsExceptionError`; otherwise leave the original
214
+ * error in place. The body is wrapped by `parseResponseBody` as
215
+ * `{ raw: text, contentType? }` for non-JSON responses.
216
+ */
217
+ export declare function rethrowAsWfsExceptionIfPossible(err: unknown): unknown;
218
+ export {};
219
+ //# sourceMappingURL=wfs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wfs.d.ts","sourceRoot":"","sources":["../../../src/core/wfs.ts"],"names":[],"mappings":"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"}
package/core/wfs.js ADDED
@@ -0,0 +1,406 @@
1
+ /**
2
+ * Runtime classes for the WFS 2.0 adapter. Three layers:
3
+ *
4
+ * - `HonuaWfs` — root handle bound to a WFS endpoint URL. Owns the
5
+ * capabilities cache and exposes feature-type / stored-query factories.
6
+ * - `HonuaWfsFeatureType` — bound to a single namespace-qualified type
7
+ * name. Implements GetFeature / GetPropertyValue / Transaction; routed
8
+ * from `Source.protocol("wfs")`.
9
+ * - `HonuaWfsStoredQuery` — bound to a stored-query identifier. Used by
10
+ * `Source.protocol("wfs").storedQuery(id)`.
11
+ *
12
+ * All wire calls go through `HonuaClient.requestText`, so the existing
13
+ * interceptor / retry / timeout pipeline applies.
14
+ *
15
+ * Canonical translation (KVP and FES emission, GeoJSON ↔ canonical
16
+ * envelope, etc.) lives in `src/contract/source.ts`'s `wfsSource` factory;
17
+ * this module only carries the wire-level surface.
18
+ *
19
+ * @module
20
+ */
21
+ import { HonuaHttpError, HonuaWfsExceptionError } from "./errors.js";
22
+ import { parseListStoredQueriesResponse, parseWfsCapabilities, parseWfsExceptionReport, parseWfsTransactionResponse, } from "./wfs-capabilities.js";
23
+ const DEFAULT_VERSION = "2.0.0";
24
+ const SERVICE_PARAM = "WFS";
25
+ /** Output formats (lower-cased) the canonical adapter treats as JSON. */
26
+ const JSON_OUTPUT_FORMATS = new Set([
27
+ "application/json",
28
+ "application/geo+json",
29
+ "application/vnd.geo+json",
30
+ "json",
31
+ "geojson",
32
+ ]);
33
+ /** Output formats (lower-cased) the canonical adapter treats as GML. */
34
+ const GML_OUTPUT_FORMATS = new Set([
35
+ "application/gml+xml; version=3.2",
36
+ "application/gml+xml;version=3.2",
37
+ "application/gml+xml",
38
+ "gml3.2",
39
+ "gml32",
40
+ "text/xml; subtype=gml/3.2",
41
+ "text/xml;subtype=gml/3.2",
42
+ "text/xml; subtype=gml/3.2.1",
43
+ "text/xml;subtype=gml/3.2.1",
44
+ ]);
45
+ /**
46
+ * Root WFS handle. Holds the capabilities cache and exposes feature-type /
47
+ * stored-query factories.
48
+ */
49
+ export class HonuaWfs {
50
+ client;
51
+ endpointUrl;
52
+ version;
53
+ /** Counter exposed for tests / diagnostics: how many times capabilities was fetched. */
54
+ capabilitiesFetches = 0;
55
+ capabilitiesPromise;
56
+ rawCapabilitiesXml;
57
+ constructor(options) {
58
+ this.client = options.client;
59
+ this.endpointUrl = options.endpointUrl;
60
+ this.version = options.version ?? DEFAULT_VERSION;
61
+ }
62
+ /**
63
+ * Fetch and cache the GetCapabilities document. Subsequent calls reuse the
64
+ * parsed snapshot. Throws `HonuaWfsExceptionError` on `<ows:ExceptionReport>`.
65
+ */
66
+ capabilities(options) {
67
+ if (!this.capabilitiesPromise) {
68
+ this.capabilitiesPromise = this.fetchCapabilities(options).catch((err) => {
69
+ // Allow retry after a transient failure.
70
+ this.capabilitiesPromise = undefined;
71
+ throw err;
72
+ });
73
+ }
74
+ return this.capabilitiesPromise;
75
+ }
76
+ /** Discard the cached capabilities snapshot so the next call re-fetches. */
77
+ refresh() {
78
+ this.capabilitiesPromise = undefined;
79
+ this.rawCapabilitiesXml = undefined;
80
+ }
81
+ /** Last raw capabilities XML payload (populated after the first fetch). */
82
+ rawCapabilities() {
83
+ return this.rawCapabilitiesXml;
84
+ }
85
+ /** Bind a feature-type handle. Does not network. */
86
+ featureType(typeName) {
87
+ return new HonuaWfsFeatureType({ root: this, typeName });
88
+ }
89
+ /**
90
+ * Discover stored queries through the `ListStoredQueries` operation. Returns
91
+ * the bare list of identifier strings; per-query metadata is exposed via
92
+ * `storedQuery(id).describe()`.
93
+ */
94
+ async storedQueries(options) {
95
+ const params = new URLSearchParams({
96
+ service: SERVICE_PARAM,
97
+ version: this.version,
98
+ request: "ListStoredQueries",
99
+ });
100
+ const requestOptions = { accept: "application/xml, text/xml" };
101
+ if (options?.signal)
102
+ requestOptions.signal = options.signal;
103
+ const { text } = await this.requestText("GET", appendQuery(this.endpointUrl, params), requestOptions);
104
+ return parseListStoredQueriesResponse(text);
105
+ }
106
+ storedQuery(id) {
107
+ return new HonuaWfsStoredQuery({ root: this, id });
108
+ }
109
+ /** Internal helper used by feature-type / stored-query handles. */
110
+ async requestText(method, path, options) {
111
+ try {
112
+ const requestOptions = {
113
+ accept: options.accept,
114
+ };
115
+ if (options.contentType !== undefined)
116
+ requestOptions.contentType = options.contentType;
117
+ if (options.body !== undefined)
118
+ requestOptions.body = options.body;
119
+ if (options.signal !== undefined)
120
+ requestOptions.signal = options.signal;
121
+ return await this.client.requestText(method, path, requestOptions);
122
+ }
123
+ catch (err) {
124
+ throw rethrowAsWfsExceptionIfPossible(err);
125
+ }
126
+ }
127
+ /** Negotiate an output format for the GetFeature call. */
128
+ negotiateOutputFormat(snapshot) {
129
+ const formats = snapshot.outputFormatsByOp.get("GetFeature") ?? [];
130
+ for (const format of formats) {
131
+ if (JSON_OUTPUT_FORMATS.has(format))
132
+ return { kind: "json", format };
133
+ }
134
+ for (const format of formats) {
135
+ if (GML_OUTPUT_FORMATS.has(format))
136
+ return { kind: "gml", format };
137
+ }
138
+ if (formats.length === 0) {
139
+ // Honua Server advertises GeoJSON in OperationsMetadata; absence is
140
+ // treated as "JSON unknown" — fall back to GeoJSON optimistically. The
141
+ // first request will surface the actual server behaviour through an
142
+ // ExceptionReport.
143
+ return { kind: "json", format: "application/geo+json" };
144
+ }
145
+ // Server advertises an output format the canonical adapter does not
146
+ // recognise — let the caller decide whether to throw or escape-hatch.
147
+ return { kind: "gml", format: formats[0] };
148
+ }
149
+ async fetchCapabilities(options) {
150
+ this.capabilitiesFetches += 1;
151
+ const params = new URLSearchParams({
152
+ service: SERVICE_PARAM,
153
+ version: this.version,
154
+ request: "GetCapabilities",
155
+ });
156
+ const requestOptions = { accept: "application/xml, text/xml" };
157
+ if (options?.signal)
158
+ requestOptions.signal = options.signal;
159
+ const { text } = await this.requestText("GET", appendQuery(this.endpointUrl, params), requestOptions);
160
+ this.rawCapabilitiesXml = text;
161
+ return parseWfsCapabilities(text);
162
+ }
163
+ }
164
+ /**
165
+ * Per-feature-type WFS surface. Implements the wire methods that the
166
+ * canonical `wfsSource` translates onto, and the protocol escape-hatch
167
+ * methods that ship raw XML payloads back to callers.
168
+ */
169
+ export class HonuaWfsFeatureType {
170
+ root;
171
+ typeName;
172
+ constructor(options) {
173
+ this.root = options.root;
174
+ this.typeName = options.typeName;
175
+ }
176
+ /** Convenience: capabilities snapshot from the bound root. */
177
+ capabilities(options) {
178
+ return this.root.capabilities(options);
179
+ }
180
+ /**
181
+ * Issue a GetFeature request. Returns parsed JSON when the negotiated
182
+ * output format is JSON; otherwise returns the raw body as a string for
183
+ * downstream callers (the canonical surface throws in that case).
184
+ */
185
+ async getFeature(params) {
186
+ const method = params.method ?? "GET";
187
+ const accept = params.outputFormat ?? "application/geo+json, application/json;q=0.9, application/xml;q=0.5";
188
+ const requestOptions = { accept };
189
+ if (params.signal)
190
+ requestOptions.signal = params.signal;
191
+ let response;
192
+ if (method === "POST" && params.body !== undefined) {
193
+ requestOptions.contentType = "application/xml";
194
+ requestOptions.body = params.body;
195
+ response = await this.root.requestText("POST", this.root.endpointUrl, requestOptions);
196
+ }
197
+ else {
198
+ const search = new URLSearchParams({
199
+ service: SERVICE_PARAM,
200
+ version: this.root.version,
201
+ request: "GetFeature",
202
+ typeNames: this.typeName,
203
+ });
204
+ if (params.filter !== undefined)
205
+ search.set("filter", params.filter);
206
+ if (params.bbox !== undefined)
207
+ search.set("bbox", params.bbox);
208
+ if (params.propertyName && params.propertyName.length > 0) {
209
+ search.set("propertyName", params.propertyName.join(","));
210
+ }
211
+ if (params.sortBy !== undefined)
212
+ search.set("sortBy", params.sortBy);
213
+ if (typeof params.count === "number")
214
+ search.set("count", String(params.count));
215
+ if (typeof params.startIndex === "number")
216
+ search.set("startIndex", String(params.startIndex));
217
+ if (params.resultType !== undefined)
218
+ search.set("resultType", params.resultType);
219
+ if (params.srsName !== undefined)
220
+ search.set("srsName", params.srsName);
221
+ if (params.outputFormat !== undefined)
222
+ search.set("outputFormat", params.outputFormat);
223
+ response = await this.root.requestText("GET", appendQuery(this.root.endpointUrl, search), requestOptions);
224
+ }
225
+ if (looksLikeJson(response.contentType, response.text)) {
226
+ return { kind: "json", data: parseJsonOrThrow(response.text), contentType: response.contentType };
227
+ }
228
+ if (looksLikeXml(response.contentType, response.text) && /ExceptionReport/i.test(response.text)) {
229
+ const report = parseWfsExceptionReport(response.text);
230
+ throw new HonuaWfsExceptionError(report.exceptionCode, report.message, report.locator);
231
+ }
232
+ return { kind: "raw", text: response.text, contentType: response.contentType };
233
+ }
234
+ /**
235
+ * Issue a `GetPropertyValue` request. WFS-specific (returns raw XML), so
236
+ * the canonical surface only reaches it via `protocol("wfs")`.
237
+ */
238
+ async getPropertyValue(params) {
239
+ const search = new URLSearchParams({
240
+ service: SERVICE_PARAM,
241
+ version: this.root.version,
242
+ request: "GetPropertyValue",
243
+ typeNames: this.typeName,
244
+ valueReference: params.valueReference,
245
+ });
246
+ if (params.filter !== undefined)
247
+ search.set("filter", params.filter);
248
+ if (typeof params.count === "number")
249
+ search.set("count", String(params.count));
250
+ if (typeof params.startIndex === "number")
251
+ search.set("startIndex", String(params.startIndex));
252
+ const requestOptions = { accept: "application/xml, text/xml" };
253
+ if (params.signal)
254
+ requestOptions.signal = params.signal;
255
+ const { text, contentType } = await this.root.requestText("GET", appendQuery(this.root.endpointUrl, search), requestOptions);
256
+ return { text, contentType };
257
+ }
258
+ /**
259
+ * Submit a `<wfs:Transaction>` POST body. Returns the parsed transaction
260
+ * summary; throws `HonuaWfsExceptionError` on `<ows:ExceptionReport>`.
261
+ */
262
+ async transaction(params) {
263
+ const requestOptions = {
264
+ accept: "application/xml, text/xml",
265
+ contentType: "application/xml",
266
+ body: params.body,
267
+ };
268
+ if (params.signal)
269
+ requestOptions.signal = params.signal;
270
+ const { text } = await this.root.requestText("POST", this.root.endpointUrl, requestOptions);
271
+ return parseWfsTransactionResponse(text);
272
+ }
273
+ /** Build (but do not send) the URL the GET GetFeature request would use. */
274
+ buildGetFeatureUrl(params) {
275
+ const search = new URLSearchParams({
276
+ service: SERVICE_PARAM,
277
+ version: this.root.version,
278
+ request: "GetFeature",
279
+ typeNames: this.typeName,
280
+ });
281
+ if (params.filter !== undefined)
282
+ search.set("filter", params.filter);
283
+ if (params.bbox !== undefined)
284
+ search.set("bbox", params.bbox);
285
+ if (typeof params.count === "number")
286
+ search.set("count", String(params.count));
287
+ if (typeof params.startIndex === "number")
288
+ search.set("startIndex", String(params.startIndex));
289
+ if (params.outputFormat !== undefined)
290
+ search.set("outputFormat", params.outputFormat);
291
+ return appendQuery(this.root.endpointUrl, search);
292
+ }
293
+ }
294
+ /**
295
+ * Bound stored-query handle. `execute(params)` runs `GetFeature?storedquery_id=…`.
296
+ */
297
+ export class HonuaWfsStoredQuery {
298
+ root;
299
+ id;
300
+ constructor(options) {
301
+ this.root = options.root;
302
+ this.id = options.id;
303
+ }
304
+ /** Run `DescribeStoredQueries` for this stored query. Returns the raw XML. */
305
+ async describe(options) {
306
+ const search = new URLSearchParams({
307
+ service: SERVICE_PARAM,
308
+ version: this.root.version,
309
+ request: "DescribeStoredQueries",
310
+ storedQuery_Id: this.id,
311
+ });
312
+ const requestOptions = { accept: "application/xml, text/xml" };
313
+ if (options?.signal)
314
+ requestOptions.signal = options.signal;
315
+ const { text, contentType } = await this.root.requestText("GET", appendQuery(this.root.endpointUrl, search), requestOptions);
316
+ return { text, contentType };
317
+ }
318
+ /**
319
+ * Execute the stored query against `GetFeature`. Caller passes the
320
+ * stored-query parameter map; values are coerced to strings via
321
+ * `String(value)`. Returns parsed JSON when the server replies with a
322
+ * JSON output format, raw text otherwise.
323
+ */
324
+ async execute(params) {
325
+ const search = new URLSearchParams({
326
+ service: SERVICE_PARAM,
327
+ version: this.root.version,
328
+ request: "GetFeature",
329
+ storedquery_id: this.id,
330
+ });
331
+ if (typeof params.count === "number")
332
+ search.set("count", String(params.count));
333
+ if (typeof params.startIndex === "number")
334
+ search.set("startIndex", String(params.startIndex));
335
+ if (params.outputFormat !== undefined)
336
+ search.set("outputFormat", params.outputFormat);
337
+ if (params.parameters) {
338
+ for (const [key, value] of Object.entries(params.parameters)) {
339
+ search.set(key, String(value));
340
+ }
341
+ }
342
+ const accept = params.outputFormat ?? "application/geo+json, application/json;q=0.9, application/xml;q=0.5";
343
+ const requestOptions = { accept };
344
+ if (params.signal)
345
+ requestOptions.signal = params.signal;
346
+ const { text, contentType } = await this.root.requestText("GET", appendQuery(this.root.endpointUrl, search), requestOptions);
347
+ if (looksLikeJson(contentType, text)) {
348
+ return { kind: "json", data: parseJsonOrThrow(text), contentType };
349
+ }
350
+ if (looksLikeXml(contentType, text) && /ExceptionReport/i.test(text)) {
351
+ const report = parseWfsExceptionReport(text);
352
+ throw new HonuaWfsExceptionError(report.exceptionCode, report.message, report.locator);
353
+ }
354
+ return { kind: "raw", text, contentType };
355
+ }
356
+ }
357
+ // ── Helpers ───────────────────────────────────────────────────
358
+ export function appendQuery(url, params) {
359
+ // Preserve any pre-existing query string on the endpoint URL (some servers
360
+ // sit behind URL signatures that include their own params).
361
+ const sep = url.includes("?") ? "&" : "?";
362
+ return `${url}${sep}${params.toString()}`;
363
+ }
364
+ export function looksLikeJson(contentType, text) {
365
+ if (contentType && /json/i.test(contentType))
366
+ return true;
367
+ const trimmed = text.trimStart();
368
+ return trimmed.startsWith("{") || trimmed.startsWith("[");
369
+ }
370
+ export function looksLikeXml(contentType, text) {
371
+ if (contentType && /xml/i.test(contentType))
372
+ return true;
373
+ return text.trimStart().startsWith("<");
374
+ }
375
+ function parseJsonOrThrow(text) {
376
+ try {
377
+ return JSON.parse(text);
378
+ }
379
+ catch (err) {
380
+ const message = err instanceof Error ? err.message : String(err);
381
+ throw new Error(`WFS GetFeature returned non-JSON output despite Accept negotiation: ${message}`);
382
+ }
383
+ }
384
+ /**
385
+ * If the underlying client failure carries a WFS ExceptionReport in its
386
+ * body, re-throw as `HonuaWfsExceptionError`; otherwise leave the original
387
+ * error in place. The body is wrapped by `parseResponseBody` as
388
+ * `{ raw: text, contentType? }` for non-JSON responses.
389
+ */
390
+ export function rethrowAsWfsExceptionIfPossible(err) {
391
+ if (!(err instanceof HonuaHttpError))
392
+ return err;
393
+ const body = err.body;
394
+ if (!body || typeof body !== "object" || typeof body.raw !== "string")
395
+ return err;
396
+ const raw = body.raw;
397
+ if (!/ExceptionReport/i.test(raw))
398
+ return err;
399
+ try {
400
+ const report = parseWfsExceptionReport(raw);
401
+ return new HonuaWfsExceptionError(report.exceptionCode, report.message, report.locator);
402
+ }
403
+ catch {
404
+ return err;
405
+ }
406
+ }
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Helpers shared across the per-protocol wire modules and the client's
3
+ * transport core: header merging and the common OGC metadata query-param
4
+ * builder plus CSV normalizers. Kept transport-agnostic so both
5
+ * `HonuaClient` and the protocol modules can import them without a cycle.
6
+ *
7
+ * @module
8
+ */
9
+ import type { OgcMetadataRequest } from "./types.js";
10
+ /**
11
+ * Merge any number of `HeadersInit` values into a plain `Record<string,string>`,
12
+ * with later entries overriding earlier ones. Accepts `Headers`, tuple arrays,
13
+ * and plain objects; `undefined`/`null` object values are skipped.
14
+ */
15
+ export declare function mergeHeaders(...headersList: Array<HeadersInit | undefined>): Record<string, string>;
16
+ /** Build the shared OGC metadata query params (`f` + caller `extraParams`). */
17
+ export declare function createOgcMetadataParams(request: OgcMetadataRequest): URLSearchParams;
18
+ /** Normalize a string-or-(string|number)-array value to a CSV string. */
19
+ export declare function normalizeCsv(value: string | readonly (string | number)[]): string;
20
+ /** Normalize a string-or-string-array value to a CSV string. */
21
+ export declare function normalizeStringCsv(value: string | readonly string[]): string;
22
+ /**
23
+ * True when a GeoServices/FeatureServer response advertises more pages via
24
+ * `exceededTransferLimit`. GeoServices servers clamp `resultRecordCount` to
25
+ * their `maxRecordCount` and set this flag when more rows remain, so
26
+ * offset-paginated fetch-all loops must keep paging while it is set — advancing
27
+ * by the actual returned row count, never a fixed `page * pageSize` stride that
28
+ * would skip the rows the server capped off — rather than stopping on the first
29
+ * page that comes back shorter than the requested `pageSize`.
30
+ */
31
+ export declare function responseExceededTransferLimit(response: unknown): boolean;
32
+ //# sourceMappingURL=wire-shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wire-shared.d.ts","sourceRoot":"","sources":["../../../src/core/wire-shared.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,GAAG,WAAW,EAAE,KAAK,CAAC,WAAW,GAAG,SAAS,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA6BnG;AAED,+EAA+E;AAC/E,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,kBAAkB,GAAG,eAAe,CASpF;AAED,yEAAyE;AACzE,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,MAAM,CAKjF;AAED,gEAAgE;AAChE,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,MAAM,CAE5E;AAED;;;;;;;;GAQG;AACH,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAMxE"}