@honua/app-platform 0.0.20-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (840) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +11 -0
  3. package/app/index.d.ts +164 -0
  4. package/app/index.d.ts.map +1 -0
  5. package/app/index.js +424 -0
  6. package/app-controller/controller.d.ts +425 -0
  7. package/app-controller/controller.d.ts.map +1 -0
  8. package/app-controller/controller.js +1173 -0
  9. package/app-controller/index.d.ts +14 -0
  10. package/app-controller/index.d.ts.map +1 -0
  11. package/app-controller/index.js +12 -0
  12. package/app-workspace/index.d.ts +421 -0
  13. package/app-workspace/index.d.ts.map +1 -0
  14. package/app-workspace/index.js +722 -0
  15. package/collaboration/client.d.ts +40 -0
  16. package/collaboration/client.d.ts.map +1 -0
  17. package/collaboration/client.js +299 -0
  18. package/collaboration/errors.d.ts +15 -0
  19. package/collaboration/errors.d.ts.map +1 -0
  20. package/collaboration/errors.js +17 -0
  21. package/collaboration/fixture.d.ts +41 -0
  22. package/collaboration/fixture.d.ts.map +1 -0
  23. package/collaboration/fixture.js +362 -0
  24. package/collaboration/index.d.ts +18 -0
  25. package/collaboration/index.d.ts.map +1 -0
  26. package/collaboration/index.js +14 -0
  27. package/collaboration/types.d.ts +240 -0
  28. package/collaboration/types.d.ts.map +1 -0
  29. package/collaboration/types.js +1 -0
  30. package/contract/analytics-sources.d.ts +149 -0
  31. package/contract/analytics-sources.d.ts.map +1 -0
  32. package/contract/analytics-sources.js +235 -0
  33. package/contract/edit-session.d.ts +203 -0
  34. package/contract/edit-session.d.ts.map +1 -0
  35. package/contract/edit-session.js +760 -0
  36. package/contract/edit-sketch.d.ts +91 -0
  37. package/contract/edit-sketch.d.ts.map +1 -0
  38. package/contract/edit-sketch.js +281 -0
  39. package/contract/index.d.ts +63 -0
  40. package/contract/index.d.ts.map +1 -0
  41. package/contract/index.js +52 -0
  42. package/contract/jobs.d.ts +149 -0
  43. package/contract/jobs.d.ts.map +1 -0
  44. package/contract/jobs.js +40 -0
  45. package/contract/pmtiles.d.ts +162 -0
  46. package/contract/pmtiles.d.ts.map +1 -0
  47. package/contract/pmtiles.js +155 -0
  48. package/contract/source.d.ts +447 -0
  49. package/contract/source.d.ts.map +1 -0
  50. package/contract/source.js +3909 -0
  51. package/contract/spatial-aggregation.d.ts +336 -0
  52. package/contract/spatial-aggregation.d.ts.map +1 -0
  53. package/contract/spatial-aggregation.js +298 -0
  54. package/contract/temporal.d.ts +455 -0
  55. package/contract/temporal.d.ts.map +1 -0
  56. package/contract/temporal.js +146 -0
  57. package/contract/tiles.d.ts +370 -0
  58. package/contract/tiles.d.ts.map +1 -0
  59. package/contract/tiles.js +519 -0
  60. package/contract/types.d.ts +694 -0
  61. package/contract/types.d.ts.map +1 -0
  62. package/contract/types.js +183 -0
  63. package/contract/widget-source.d.ts +205 -0
  64. package/contract/widget-source.d.ts.map +1 -0
  65. package/contract/widget-source.js +1473 -0
  66. package/control-plane/client.d.ts +95 -0
  67. package/control-plane/client.d.ts.map +1 -0
  68. package/control-plane/client.js +374 -0
  69. package/control-plane/index.d.ts +18 -0
  70. package/control-plane/index.d.ts.map +1 -0
  71. package/control-plane/index.js +14 -0
  72. package/control-plane/types.d.ts +233 -0
  73. package/control-plane/types.d.ts.map +1 -0
  74. package/control-plane/types.js +7 -0
  75. package/controls/basemap-style-binding.d.ts +54 -0
  76. package/controls/basemap-style-binding.d.ts.map +1 -0
  77. package/controls/basemap-style-binding.js +199 -0
  78. package/controls/basemap-switcher.d.ts +95 -0
  79. package/controls/basemap-switcher.d.ts.map +1 -0
  80. package/controls/basemap-switcher.js +379 -0
  81. package/controls/element-utils.d.ts +48 -0
  82. package/controls/element-utils.d.ts.map +1 -0
  83. package/controls/element-utils.js +78 -0
  84. package/controls/index.d.ts +33 -0
  85. package/controls/index.d.ts.map +1 -0
  86. package/controls/index.js +30 -0
  87. package/controls/layer-list.d.ts +98 -0
  88. package/controls/layer-list.d.ts.map +1 -0
  89. package/controls/layer-list.js +375 -0
  90. package/controls/legend-derive.d.ts +53 -0
  91. package/controls/legend-derive.d.ts.map +1 -0
  92. package/controls/legend-derive.js +196 -0
  93. package/controls/legend.d.ts +104 -0
  94. package/controls/legend.d.ts.map +1 -0
  95. package/controls/legend.js +381 -0
  96. package/controls/swipe-control.d.ts +80 -0
  97. package/controls/swipe-control.d.ts.map +1 -0
  98. package/controls/swipe-control.js +368 -0
  99. package/controls/types.d.ts +227 -0
  100. package/controls/types.d.ts.map +1 -0
  101. package/controls/types.js +11 -0
  102. package/core/auth/client-credentials-provider.d.ts +51 -0
  103. package/core/auth/client-credentials-provider.d.ts.map +1 -0
  104. package/core/auth/client-credentials-provider.js +115 -0
  105. package/core/auth/credential-store.d.ts +52 -0
  106. package/core/auth/credential-store.d.ts.map +1 -0
  107. package/core/auth/credential-store.js +82 -0
  108. package/core/auth/index.d.ts +23 -0
  109. package/core/auth/index.d.ts.map +1 -0
  110. package/core/auth/index.js +20 -0
  111. package/core/auth/oauth2-provider.d.ts +114 -0
  112. package/core/auth/oauth2-provider.d.ts.map +1 -0
  113. package/core/auth/oauth2-provider.js +408 -0
  114. package/core/auth/pkce.d.ts +25 -0
  115. package/core/auth/pkce.d.ts.map +1 -0
  116. package/core/auth/pkce.js +46 -0
  117. package/core/auth/static-providers.d.ts +20 -0
  118. package/core/auth/static-providers.d.ts.map +1 -0
  119. package/core/auth/static-providers.js +26 -0
  120. package/core/auth/token-endpoint.d.ts +40 -0
  121. package/core/auth/token-endpoint.d.ts.map +1 -0
  122. package/core/auth/token-endpoint.js +133 -0
  123. package/core/auth/types.d.ts +144 -0
  124. package/core/auth/types.d.ts.map +1 -0
  125. package/core/auth/types.js +8 -0
  126. package/core/batch.d.ts +37 -0
  127. package/core/batch.d.ts.map +1 -0
  128. package/core/batch.js +79 -0
  129. package/core/cache-state.d.ts +79 -0
  130. package/core/cache-state.d.ts.map +1 -0
  131. package/core/cache-state.js +87 -0
  132. package/core/client.d.ts +607 -0
  133. package/core/client.d.ts.map +1 -0
  134. package/core/client.js +1716 -0
  135. package/core/compatibility.d.ts +18 -0
  136. package/core/compatibility.d.ts.map +1 -0
  137. package/core/compatibility.js +245 -0
  138. package/core/errors.d.ts +139 -0
  139. package/core/errors.d.ts.map +1 -0
  140. package/core/errors.js +176 -0
  141. package/core/esri-geojson.d.ts +66 -0
  142. package/core/esri-geojson.d.ts.map +1 -0
  143. package/core/esri-geojson.js +363 -0
  144. package/core/geoparquet-sql.d.ts +162 -0
  145. package/core/geoparquet-sql.d.ts.map +1 -0
  146. package/core/geoparquet-sql.js +333 -0
  147. package/core/geoservices.d.ts +34 -0
  148. package/core/geoservices.d.ts.map +1 -0
  149. package/core/geoservices.js +434 -0
  150. package/core/grpc-adapter.d.ts +23 -0
  151. package/core/grpc-adapter.d.ts.map +1 -0
  152. package/core/grpc-adapter.js +688 -0
  153. package/core/odata.d.ts +347 -0
  154. package/core/odata.d.ts.map +1 -0
  155. package/core/odata.js +913 -0
  156. package/core/ogc-conformance.d.ts +35 -0
  157. package/core/ogc-conformance.d.ts.map +1 -0
  158. package/core/ogc-conformance.js +134 -0
  159. package/core/ogc-endpoint-layout.d.ts +70 -0
  160. package/core/ogc-endpoint-layout.d.ts.map +1 -0
  161. package/core/ogc-endpoint-layout.js +173 -0
  162. package/core/ogc-features.d.ts +23 -0
  163. package/core/ogc-features.d.ts.map +1 -0
  164. package/core/ogc-features.js +129 -0
  165. package/core/ogc-maps.d.ts +49 -0
  166. package/core/ogc-maps.d.ts.map +1 -0
  167. package/core/ogc-maps.js +126 -0
  168. package/core/ogc-processes.d.ts +118 -0
  169. package/core/ogc-processes.d.ts.map +1 -0
  170. package/core/ogc-processes.js +423 -0
  171. package/core/ogc-records.d.ts +75 -0
  172. package/core/ogc-records.d.ts.map +1 -0
  173. package/core/ogc-records.js +251 -0
  174. package/core/ogc-tiles.d.ts +125 -0
  175. package/core/ogc-tiles.d.ts.map +1 -0
  176. package/core/ogc-tiles.js +183 -0
  177. package/core/path-utils.d.ts +69 -0
  178. package/core/path-utils.d.ts.map +1 -0
  179. package/core/path-utils.js +123 -0
  180. package/core/pbf-decoder.d.ts +39 -0
  181. package/core/pbf-decoder.d.ts.map +1 -0
  182. package/core/pbf-decoder.js +702 -0
  183. package/core/process-runner.d.ts +104 -0
  184. package/core/process-runner.d.ts.map +1 -0
  185. package/core/process-runner.js +315 -0
  186. package/core/protocol-transport.d.ts +76 -0
  187. package/core/protocol-transport.d.ts.map +1 -0
  188. package/core/protocol-transport.js +15 -0
  189. package/core/query-builder.d.ts +261 -0
  190. package/core/query-builder.d.ts.map +1 -0
  191. package/core/query-builder.js +538 -0
  192. package/core/request-pipeline.d.ts +88 -0
  193. package/core/request-pipeline.d.ts.map +1 -0
  194. package/core/request-pipeline.js +273 -0
  195. package/core/spatial-filter.d.ts +93 -0
  196. package/core/spatial-filter.d.ts.map +1 -0
  197. package/core/spatial-filter.js +153 -0
  198. package/core/stac-static.d.ts +51 -0
  199. package/core/stac-static.d.ts.map +1 -0
  200. package/core/stac-static.js +195 -0
  201. package/core/stac.d.ts +67 -0
  202. package/core/stac.d.ts.map +1 -0
  203. package/core/stac.js +259 -0
  204. package/core/surfaces.d.ts +540 -0
  205. package/core/surfaces.d.ts.map +1 -0
  206. package/core/surfaces.js +1964 -0
  207. package/core/terrain-elevation.d.ts +114 -0
  208. package/core/terrain-elevation.d.ts.map +1 -0
  209. package/core/terrain-elevation.js +150 -0
  210. package/core/types.d.ts +1404 -0
  211. package/core/types.d.ts.map +1 -0
  212. package/core/types.js +13 -0
  213. package/core/wfs-capabilities.d.ts +153 -0
  214. package/core/wfs-capabilities.d.ts.map +1 -0
  215. package/core/wfs-capabilities.js +490 -0
  216. package/core/wfs-filter.d.ts +118 -0
  217. package/core/wfs-filter.d.ts.map +1 -0
  218. package/core/wfs-filter.js +634 -0
  219. package/core/wfs.d.ts +232 -0
  220. package/core/wfs.d.ts.map +1 -0
  221. package/core/wfs.js +426 -0
  222. package/core/wire-shared.d.ts +32 -0
  223. package/core/wire-shared.d.ts.map +1 -0
  224. package/core/wire-shared.js +76 -0
  225. package/core/wms-axis.d.ts +36 -0
  226. package/core/wms-axis.d.ts.map +1 -0
  227. package/core/wms-axis.js +73 -0
  228. package/core/wms-capabilities.d.ts +110 -0
  229. package/core/wms-capabilities.d.ts.map +1 -0
  230. package/core/wms-capabilities.js +559 -0
  231. package/core/wms-types.d.ts +128 -0
  232. package/core/wms-types.d.ts.map +1 -0
  233. package/core/wms-types.js +32 -0
  234. package/core/wms.d.ts +144 -0
  235. package/core/wms.d.ts.map +1 -0
  236. package/core/wms.js +338 -0
  237. package/core/wmts-capabilities.d.ts +82 -0
  238. package/core/wmts-capabilities.d.ts.map +1 -0
  239. package/core/wmts-capabilities.js +402 -0
  240. package/core/wmts.d.ts +103 -0
  241. package/core/wmts.d.ts.map +1 -0
  242. package/core/wmts.js +332 -0
  243. package/core/xml-text.d.ts +20 -0
  244. package/core/xml-text.d.ts.map +1 -0
  245. package/core/xml-text.js +85 -0
  246. package/esri-compat/basemap-gallery.d.ts +38 -0
  247. package/esri-compat/basemap-gallery.d.ts.map +1 -0
  248. package/esri-compat/basemap-gallery.js +159 -0
  249. package/esri-compat/basemap-layer-list.d.ts +35 -0
  250. package/esri-compat/basemap-layer-list.d.ts.map +1 -0
  251. package/esri-compat/basemap-layer-list.js +139 -0
  252. package/esri-compat/basemap.d.ts +32 -0
  253. package/esri-compat/basemap.d.ts.map +1 -0
  254. package/esri-compat/basemap.js +84 -0
  255. package/esri-compat/bookmarks.d.ts +36 -0
  256. package/esri-compat/bookmarks.d.ts.map +1 -0
  257. package/esri-compat/bookmarks.js +108 -0
  258. package/esri-compat/class-breaks-renderer.d.ts +50 -0
  259. package/esri-compat/class-breaks-renderer.d.ts.map +1 -0
  260. package/esri-compat/class-breaks-renderer.js +164 -0
  261. package/esri-compat/color.d.ts +22 -0
  262. package/esri-compat/color.d.ts.map +1 -0
  263. package/esri-compat/color.js +106 -0
  264. package/esri-compat/controls.d.ts +174 -0
  265. package/esri-compat/controls.d.ts.map +1 -0
  266. package/esri-compat/controls.js +479 -0
  267. package/esri-compat/coordinate-conversion.d.ts +41 -0
  268. package/esri-compat/coordinate-conversion.d.ts.map +1 -0
  269. package/esri-compat/coordinate-conversion.js +125 -0
  270. package/esri-compat/directions.d.ts +45 -0
  271. package/esri-compat/directions.d.ts.map +1 -0
  272. package/esri-compat/directions.js +123 -0
  273. package/esri-compat/editor.d.ts +47 -0
  274. package/esri-compat/editor.d.ts.map +1 -0
  275. package/esri-compat/editor.js +170 -0
  276. package/esri-compat/esri-config.d.ts +16 -0
  277. package/esri-compat/esri-config.d.ts.map +1 -0
  278. package/esri-compat/esri-config.js +23 -0
  279. package/esri-compat/esri-request.d.ts +17 -0
  280. package/esri-compat/esri-request.d.ts.map +1 -0
  281. package/esri-compat/esri-request.js +127 -0
  282. package/esri-compat/event-bus.d.ts +106 -0
  283. package/esri-compat/event-bus.d.ts.map +1 -0
  284. package/esri-compat/event-bus.js +90 -0
  285. package/esri-compat/expand.d.ts +36 -0
  286. package/esri-compat/expand.d.ts.map +1 -0
  287. package/esri-compat/expand.js +97 -0
  288. package/esri-compat/extent.d.ts +43 -0
  289. package/esri-compat/extent.d.ts.map +1 -0
  290. package/esri-compat/extent.js +140 -0
  291. package/esri-compat/feature-filter.d.ts +55 -0
  292. package/esri-compat/feature-filter.d.ts.map +1 -0
  293. package/esri-compat/feature-filter.js +109 -0
  294. package/esri-compat/feature-form.d.ts +64 -0
  295. package/esri-compat/feature-form.d.ts.map +1 -0
  296. package/esri-compat/feature-form.js +137 -0
  297. package/esri-compat/feature-layer.d.ts +173 -0
  298. package/esri-compat/feature-layer.d.ts.map +1 -0
  299. package/esri-compat/feature-layer.js +661 -0
  300. package/esri-compat/feature-set.d.ts +32 -0
  301. package/esri-compat/feature-set.d.ts.map +1 -0
  302. package/esri-compat/feature-set.js +80 -0
  303. package/esri-compat/feature-table.d.ts +141 -0
  304. package/esri-compat/feature-table.d.ts.map +1 -0
  305. package/esri-compat/feature-table.js +500 -0
  306. package/esri-compat/feature-templates.d.ts +41 -0
  307. package/esri-compat/feature-templates.d.ts.map +1 -0
  308. package/esri-compat/feature-templates.js +97 -0
  309. package/esri-compat/feature.d.ts +33 -0
  310. package/esri-compat/feature.d.ts.map +1 -0
  311. package/esri-compat/feature.js +83 -0
  312. package/esri-compat/geojson-layer.d.ts +86 -0
  313. package/esri-compat/geojson-layer.d.ts.map +1 -0
  314. package/esri-compat/geojson-layer.js +191 -0
  315. package/esri-compat/geometry-engine.d.ts +107 -0
  316. package/esri-compat/geometry-engine.d.ts.map +1 -0
  317. package/esri-compat/geometry-engine.js +266 -0
  318. package/esri-compat/graphic.d.ts +46 -0
  319. package/esri-compat/graphic.d.ts.map +1 -0
  320. package/esri-compat/graphic.js +103 -0
  321. package/esri-compat/graphics-layer.d.ts +49 -0
  322. package/esri-compat/graphics-layer.d.ts.map +1 -0
  323. package/esri-compat/graphics-layer.js +185 -0
  324. package/esri-compat/group-layer.d.ts +48 -0
  325. package/esri-compat/group-layer.d.ts.map +1 -0
  326. package/esri-compat/group-layer.js +212 -0
  327. package/esri-compat/identify.d.ts +71 -0
  328. package/esri-compat/identify.d.ts.map +1 -0
  329. package/esri-compat/identify.js +299 -0
  330. package/esri-compat/identity-manager.d.ts +74 -0
  331. package/esri-compat/identity-manager.d.ts.map +1 -0
  332. package/esri-compat/identity-manager.js +245 -0
  333. package/esri-compat/imagery-layer.d.ts +78 -0
  334. package/esri-compat/imagery-layer.d.ts.map +1 -0
  335. package/esri-compat/imagery-layer.js +167 -0
  336. package/esri-compat/label-class.d.ts +31 -0
  337. package/esri-compat/label-class.d.ts.map +1 -0
  338. package/esri-compat/label-class.js +102 -0
  339. package/esri-compat/layer-list.d.ts +77 -0
  340. package/esri-compat/layer-list.d.ts.map +1 -0
  341. package/esri-compat/layer-list.js +342 -0
  342. package/esri-compat/legend.d.ts +53 -0
  343. package/esri-compat/legend.d.ts.map +1 -0
  344. package/esri-compat/legend.js +254 -0
  345. package/esri-compat/map-image-layer.d.ts +162 -0
  346. package/esri-compat/map-image-layer.d.ts.map +1 -0
  347. package/esri-compat/map-image-layer.js +709 -0
  348. package/esri-compat/map-view.d.ts +323 -0
  349. package/esri-compat/map-view.d.ts.map +1 -0
  350. package/esri-compat/map-view.js +1175 -0
  351. package/esri-compat/map.d.ts +47 -0
  352. package/esri-compat/map.d.ts.map +1 -0
  353. package/esri-compat/map.js +209 -0
  354. package/esri-compat/measurement-2d.d.ts +61 -0
  355. package/esri-compat/measurement-2d.d.ts.map +1 -0
  356. package/esri-compat/measurement-2d.js +184 -0
  357. package/esri-compat/measurement.d.ts +45 -0
  358. package/esri-compat/measurement.d.ts.map +1 -0
  359. package/esri-compat/measurement.js +193 -0
  360. package/esri-compat/oauth-info.d.ts +50 -0
  361. package/esri-compat/oauth-info.d.ts.map +1 -0
  362. package/esri-compat/oauth-info.js +142 -0
  363. package/esri-compat/picture-marker-symbol.d.ts +35 -0
  364. package/esri-compat/picture-marker-symbol.d.ts.map +1 -0
  365. package/esri-compat/picture-marker-symbol.js +126 -0
  366. package/esri-compat/point.d.ts +31 -0
  367. package/esri-compat/point.d.ts.map +1 -0
  368. package/esri-compat/point.js +102 -0
  369. package/esri-compat/polygon.d.ts +31 -0
  370. package/esri-compat/polygon.d.ts.map +1 -0
  371. package/esri-compat/polygon.js +107 -0
  372. package/esri-compat/polyline.d.ts +31 -0
  373. package/esri-compat/polyline.d.ts.map +1 -0
  374. package/esri-compat/polyline.js +107 -0
  375. package/esri-compat/popup-template.d.ts +55 -0
  376. package/esri-compat/popup-template.d.ts.map +1 -0
  377. package/esri-compat/popup-template.js +128 -0
  378. package/esri-compat/popup.d.ts +54 -0
  379. package/esri-compat/popup.d.ts.map +1 -0
  380. package/esri-compat/popup.js +312 -0
  381. package/esri-compat/print.d.ts +47 -0
  382. package/esri-compat/print.d.ts.map +1 -0
  383. package/esri-compat/print.js +105 -0
  384. package/esri-compat/query.d.ts +58 -0
  385. package/esri-compat/query.d.ts.map +1 -0
  386. package/esri-compat/query.js +128 -0
  387. package/esri-compat/reactive-utils.d.ts +24 -0
  388. package/esri-compat/reactive-utils.d.ts.map +1 -0
  389. package/esri-compat/reactive-utils.js +193 -0
  390. package/esri-compat/request.d.ts +41 -0
  391. package/esri-compat/request.d.ts.map +1 -0
  392. package/esri-compat/request.js +253 -0
  393. package/esri-compat/route-layer.d.ts +59 -0
  394. package/esri-compat/route-layer.d.ts.map +1 -0
  395. package/esri-compat/route-layer.js +223 -0
  396. package/esri-compat/route-task.d.ts +88 -0
  397. package/esri-compat/route-task.d.ts.map +1 -0
  398. package/esri-compat/route-task.js +225 -0
  399. package/esri-compat/scene-view.d.ts +41 -0
  400. package/esri-compat/scene-view.d.ts.map +1 -0
  401. package/esri-compat/scene-view.js +68 -0
  402. package/esri-compat/search.d.ts +112 -0
  403. package/esri-compat/search.d.ts.map +1 -0
  404. package/esri-compat/search.js +820 -0
  405. package/esri-compat/simple-fill-symbol.d.ts +27 -0
  406. package/esri-compat/simple-fill-symbol.d.ts.map +1 -0
  407. package/esri-compat/simple-fill-symbol.js +85 -0
  408. package/esri-compat/simple-line-symbol.d.ts +27 -0
  409. package/esri-compat/simple-line-symbol.d.ts.map +1 -0
  410. package/esri-compat/simple-line-symbol.js +85 -0
  411. package/esri-compat/simple-marker-symbol.d.ts +29 -0
  412. package/esri-compat/simple-marker-symbol.d.ts.map +1 -0
  413. package/esri-compat/simple-marker-symbol.js +92 -0
  414. package/esri-compat/simple-renderer.d.ts +29 -0
  415. package/esri-compat/simple-renderer.d.ts.map +1 -0
  416. package/esri-compat/simple-renderer.js +92 -0
  417. package/esri-compat/sketch.d.ts +64 -0
  418. package/esri-compat/sketch.d.ts.map +1 -0
  419. package/esri-compat/sketch.js +227 -0
  420. package/esri-compat/spatial-reference.d.ts +31 -0
  421. package/esri-compat/spatial-reference.d.ts.map +1 -0
  422. package/esri-compat/spatial-reference.js +102 -0
  423. package/esri-compat/swipe.d.ts +34 -0
  424. package/esri-compat/swipe.d.ts.map +1 -0
  425. package/esri-compat/swipe.js +93 -0
  426. package/esri-compat/table-list.d.ts +36 -0
  427. package/esri-compat/table-list.d.ts.map +1 -0
  428. package/esri-compat/table-list.js +126 -0
  429. package/esri-compat/text-symbol.d.ts +37 -0
  430. package/esri-compat/text-symbol.d.ts.map +1 -0
  431. package/esri-compat/text-symbol.js +123 -0
  432. package/esri-compat/tile-layer.d.ts +52 -0
  433. package/esri-compat/tile-layer.d.ts.map +1 -0
  434. package/esri-compat/tile-layer.js +168 -0
  435. package/esri-compat/time-slider.d.ts +70 -0
  436. package/esri-compat/time-slider.d.ts.map +1 -0
  437. package/esri-compat/time-slider.js +208 -0
  438. package/esri-compat/track.d.ts +51 -0
  439. package/esri-compat/track.d.ts.map +1 -0
  440. package/esri-compat/track.js +174 -0
  441. package/esri-compat/unique-value-renderer.d.ts +41 -0
  442. package/esri-compat/unique-value-renderer.d.ts.map +1 -0
  443. package/esri-compat/unique-value-renderer.js +127 -0
  444. package/esri-compat/url.d.ts +13 -0
  445. package/esri-compat/url.d.ts.map +1 -0
  446. package/esri-compat/url.js +68 -0
  447. package/esri-compat/vector-tile-layer.d.ts +47 -0
  448. package/esri-compat/vector-tile-layer.d.ts.map +1 -0
  449. package/esri-compat/vector-tile-layer.js +130 -0
  450. package/esri-compat/web-map.d.ts +14 -0
  451. package/esri-compat/web-map.d.ts.map +1 -0
  452. package/esri-compat/web-map.js +24 -0
  453. package/esri-compat/wfs-layer.d.ts +64 -0
  454. package/esri-compat/wfs-layer.d.ts.map +1 -0
  455. package/esri-compat/wfs-layer.js +145 -0
  456. package/esri-compat/wms-layer.d.ts +76 -0
  457. package/esri-compat/wms-layer.d.ts.map +1 -0
  458. package/esri-compat/wms-layer.js +157 -0
  459. package/exploration/context.d.ts +25 -0
  460. package/exploration/context.d.ts.map +1 -0
  461. package/exploration/context.js +396 -0
  462. package/exploration/index.d.ts +27 -0
  463. package/exploration/index.d.ts.map +1 -0
  464. package/exploration/index.js +24 -0
  465. package/exploration/presets.d.ts +27 -0
  466. package/exploration/presets.d.ts.map +1 -0
  467. package/exploration/presets.js +114 -0
  468. package/exploration/reducer.d.ts +23 -0
  469. package/exploration/reducer.d.ts.map +1 -0
  470. package/exploration/reducer.js +332 -0
  471. package/exploration/selection.d.ts +25 -0
  472. package/exploration/selection.d.ts.map +1 -0
  473. package/exploration/selection.js +34 -0
  474. package/exploration/selectors.d.ts +56 -0
  475. package/exploration/selectors.d.ts.map +1 -0
  476. package/exploration/selectors.js +110 -0
  477. package/exploration/types.d.ts +294 -0
  478. package/exploration/types.d.ts.map +1 -0
  479. package/exploration/types.js +33 -0
  480. package/expr/expression.d.ts +457 -0
  481. package/expr/expression.d.ts.map +1 -0
  482. package/expr/expression.js +663 -0
  483. package/expr/index.d.ts +32 -0
  484. package/expr/index.d.ts.map +1 -0
  485. package/expr/index.js +30 -0
  486. package/filter-registry/index.d.ts +145 -0
  487. package/filter-registry/index.d.ts.map +1 -0
  488. package/filter-registry/index.js +531 -0
  489. package/gen/honua/v1/feature_service_pb.d.ts +918 -0
  490. package/gen/honua/v1/feature_service_pb.d.ts.map +1 -0
  491. package/gen/honua/v1/feature_service_pb.js +375 -0
  492. package/generated-app/errors.d.ts +41 -0
  493. package/generated-app/errors.d.ts.map +1 -0
  494. package/generated-app/errors.js +41 -0
  495. package/generated-app/index.d.ts +17 -0
  496. package/generated-app/index.d.ts.map +1 -0
  497. package/generated-app/index.js +12 -0
  498. package/generated-app/manifest.d.ts +183 -0
  499. package/generated-app/manifest.d.ts.map +1 -0
  500. package/generated-app/manifest.js +14 -0
  501. package/generated-app/projection.d.ts +44 -0
  502. package/generated-app/projection.d.ts.map +1 -0
  503. package/generated-app/projection.js +234 -0
  504. package/generated-app/runtime.d.ts +215 -0
  505. package/generated-app/runtime.d.ts.map +1 -0
  506. package/generated-app/runtime.js +1196 -0
  507. package/geocoding/index.d.ts +106 -0
  508. package/geocoding/index.d.ts.map +1 -0
  509. package/geocoding/index.js +278 -0
  510. package/interactions/detail-model.d.ts +54 -0
  511. package/interactions/detail-model.d.ts.map +1 -0
  512. package/interactions/detail-model.js +105 -0
  513. package/interactions/exploration-bindings.d.ts +120 -0
  514. package/interactions/exploration-bindings.d.ts.map +1 -0
  515. package/interactions/exploration-bindings.js +218 -0
  516. package/interactions/feature-state.d.ts +144 -0
  517. package/interactions/feature-state.d.ts.map +1 -0
  518. package/interactions/feature-state.js +169 -0
  519. package/interactions/hit-test.d.ts +112 -0
  520. package/interactions/hit-test.d.ts.map +1 -0
  521. package/interactions/hit-test.js +291 -0
  522. package/interactions/index.d.ts +31 -0
  523. package/interactions/index.d.ts.map +1 -0
  524. package/interactions/index.js +24 -0
  525. package/interactions/share-state.d.ts +36 -0
  526. package/interactions/share-state.d.ts.map +1 -0
  527. package/interactions/share-state.js +123 -0
  528. package/map/feature-service-adapter.d.ts +138 -0
  529. package/map/feature-service-adapter.d.ts.map +1 -0
  530. package/map/feature-service-adapter.js +279 -0
  531. package/map/honua-map.d.ts +203 -0
  532. package/map/honua-map.d.ts.map +1 -0
  533. package/map/honua-map.js +347 -0
  534. package/map/index.d.ts +27 -0
  535. package/map/index.d.ts.map +1 -0
  536. package/map/index.js +22 -0
  537. package/map/maplibre-target.d.ts +103 -0
  538. package/map/maplibre-target.d.ts.map +1 -0
  539. package/map/maplibre-target.js +164 -0
  540. package/map/webmap-maplibre.d.ts +60 -0
  541. package/map/webmap-maplibre.d.ts.map +1 -0
  542. package/map/webmap-maplibre.js +212 -0
  543. package/operate/client.d.ts +94 -0
  544. package/operate/client.d.ts.map +1 -0
  545. package/operate/client.js +361 -0
  546. package/operate/index.d.ts +22 -0
  547. package/operate/index.d.ts.map +1 -0
  548. package/operate/index.js +19 -0
  549. package/operate/types.d.ts +397 -0
  550. package/operate/types.d.ts.map +1 -0
  551. package/operate/types.js +17 -0
  552. package/operator/client.d.ts +60 -0
  553. package/operator/client.d.ts.map +1 -0
  554. package/operator/client.js +20 -0
  555. package/operator/controllers/approval.d.ts +52 -0
  556. package/operator/controllers/approval.d.ts.map +1 -0
  557. package/operator/controllers/approval.js +123 -0
  558. package/operator/controllers/base.d.ts +27 -0
  559. package/operator/controllers/base.d.ts.map +1 -0
  560. package/operator/controllers/base.js +53 -0
  561. package/operator/controllers/builder-workspace.d.ts +55 -0
  562. package/operator/controllers/builder-workspace.d.ts.map +1 -0
  563. package/operator/controllers/builder-workspace.js +108 -0
  564. package/operator/controllers/chat.d.ts +61 -0
  565. package/operator/controllers/chat.d.ts.map +1 -0
  566. package/operator/controllers/chat.js +154 -0
  567. package/operator/controllers/clarification.d.ts +52 -0
  568. package/operator/controllers/clarification.d.ts.map +1 -0
  569. package/operator/controllers/clarification.js +121 -0
  570. package/operator/controllers/execution.d.ts +60 -0
  571. package/operator/controllers/execution.d.ts.map +1 -0
  572. package/operator/controllers/execution.js +286 -0
  573. package/operator/controllers/index.d.ts +23 -0
  574. package/operator/controllers/index.d.ts.map +1 -0
  575. package/operator/controllers/index.js +15 -0
  576. package/operator/controllers/map-workspace.d.ts +85 -0
  577. package/operator/controllers/map-workspace.d.ts.map +1 -0
  578. package/operator/controllers/map-workspace.js +296 -0
  579. package/operator/controllers/plan-review.d.ts +66 -0
  580. package/operator/controllers/plan-review.d.ts.map +1 -0
  581. package/operator/controllers/plan-review.js +124 -0
  582. package/operator/errors.d.ts +62 -0
  583. package/operator/errors.d.ts.map +1 -0
  584. package/operator/errors.js +75 -0
  585. package/operator/i18n/index.d.ts +10 -0
  586. package/operator/i18n/index.d.ts.map +1 -0
  587. package/operator/i18n/index.js +8 -0
  588. package/operator/i18n/messages.d.ts +19 -0
  589. package/operator/i18n/messages.d.ts.map +1 -0
  590. package/operator/i18n/messages.js +54 -0
  591. package/operator/index.d.ts +19 -0
  592. package/operator/index.d.ts.map +1 -0
  593. package/operator/index.js +15 -0
  594. package/operator/telemetry.d.ts +26 -0
  595. package/operator/telemetry.d.ts.map +1 -0
  596. package/operator/telemetry.js +9 -0
  597. package/operator/theming/index.d.ts +12 -0
  598. package/operator/theming/index.d.ts.map +1 -0
  599. package/operator/theming/index.js +9 -0
  600. package/operator/theming/provider.d.ts +27 -0
  601. package/operator/theming/provider.d.ts.map +1 -0
  602. package/operator/theming/provider.js +26 -0
  603. package/operator/theming/tokens.d.ts +28 -0
  604. package/operator/theming/tokens.d.ts.map +1 -0
  605. package/operator/theming/tokens.js +65 -0
  606. package/operator/workspace/events.d.ts +70 -0
  607. package/operator/workspace/events.d.ts.map +1 -0
  608. package/operator/workspace/events.js +9 -0
  609. package/operator/workspace/index.d.ts +12 -0
  610. package/operator/workspace/index.d.ts.map +1 -0
  611. package/operator/workspace/index.js +8 -0
  612. package/operator/workspace/types.d.ts +178 -0
  613. package/operator/workspace/types.d.ts.map +1 -0
  614. package/operator/workspace/types.js +47 -0
  615. package/operator/workspace/workspace.d.ts +58 -0
  616. package/operator/workspace/workspace.d.ts.map +1 -0
  617. package/operator/workspace/workspace.js +339 -0
  618. package/package.json +105 -0
  619. package/realtime/exploration.d.ts +16 -0
  620. package/realtime/exploration.d.ts.map +1 -0
  621. package/realtime/exploration.js +32 -0
  622. package/realtime/honua-server.d.ts +123 -0
  623. package/realtime/honua-server.d.ts.map +1 -0
  624. package/realtime/honua-server.js +188 -0
  625. package/realtime/index.d.ts +20 -0
  626. package/realtime/index.d.ts.map +1 -0
  627. package/realtime/index.js +14 -0
  628. package/realtime/projections.d.ts +30 -0
  629. package/realtime/projections.d.ts.map +1 -0
  630. package/realtime/projections.js +51 -0
  631. package/realtime/reducer.d.ts +14 -0
  632. package/realtime/reducer.d.ts.map +1 -0
  633. package/realtime/reducer.js +351 -0
  634. package/realtime/sse.d.ts +23 -0
  635. package/realtime/sse.d.ts.map +1 -0
  636. package/realtime/sse.js +143 -0
  637. package/realtime/store.d.ts +18 -0
  638. package/realtime/store.d.ts.map +1 -0
  639. package/realtime/store.js +63 -0
  640. package/realtime/types.d.ts +190 -0
  641. package/realtime/types.d.ts.map +1 -0
  642. package/realtime/types.js +10 -0
  643. package/replica-sync/client.d.ts +32 -0
  644. package/replica-sync/client.d.ts.map +1 -0
  645. package/replica-sync/client.js +52 -0
  646. package/replica-sync/errors.d.ts +22 -0
  647. package/replica-sync/errors.d.ts.map +1 -0
  648. package/replica-sync/errors.js +29 -0
  649. package/replica-sync/fixture.d.ts +40 -0
  650. package/replica-sync/fixture.d.ts.map +1 -0
  651. package/replica-sync/fixture.js +364 -0
  652. package/replica-sync/index.d.ts +22 -0
  653. package/replica-sync/index.d.ts.map +1 -0
  654. package/replica-sync/index.js +17 -0
  655. package/replica-sync/types.d.ts +270 -0
  656. package/replica-sync/types.d.ts.map +1 -0
  657. package/replica-sync/types.js +13 -0
  658. package/runtime/diff.d.ts +31 -0
  659. package/runtime/diff.d.ts.map +1 -0
  660. package/runtime/diff.js +143 -0
  661. package/runtime/errors.d.ts +40 -0
  662. package/runtime/errors.d.ts.map +1 -0
  663. package/runtime/errors.js +35 -0
  664. package/runtime/index.d.ts +59 -0
  665. package/runtime/index.d.ts.map +1 -0
  666. package/runtime/index.js +40 -0
  667. package/runtime/legend.d.ts +23 -0
  668. package/runtime/legend.d.ts.map +1 -0
  669. package/runtime/legend.js +38 -0
  670. package/runtime/load-package.d.ts +125 -0
  671. package/runtime/load-package.d.ts.map +1 -0
  672. package/runtime/load-package.js +272 -0
  673. package/runtime/map-package-fetch.d.ts +107 -0
  674. package/runtime/map-package-fetch.d.ts.map +1 -0
  675. package/runtime/map-package-fetch.js +336 -0
  676. package/runtime/map-package-realtime.d.ts +169 -0
  677. package/runtime/map-package-realtime.d.ts.map +1 -0
  678. package/runtime/map-package-realtime.js +350 -0
  679. package/runtime/map-package-validation.d.ts +30 -0
  680. package/runtime/map-package-validation.d.ts.map +1 -0
  681. package/runtime/map-package-validation.js +257 -0
  682. package/runtime/map-package-watch.d.ts +78 -0
  683. package/runtime/map-package-watch.d.ts.map +1 -0
  684. package/runtime/map-package-watch.js +695 -0
  685. package/runtime/map-package.d.ts +167 -0
  686. package/runtime/map-package.d.ts.map +1 -0
  687. package/runtime/map-package.js +15 -0
  688. package/runtime/ogc-styles.d.ts +110 -0
  689. package/runtime/ogc-styles.d.ts.map +1 -0
  690. package/runtime/ogc-styles.js +195 -0
  691. package/runtime/pmtiles-protocol.d.ts +77 -0
  692. package/runtime/pmtiles-protocol.d.ts.map +1 -0
  693. package/runtime/pmtiles-protocol.js +120 -0
  694. package/runtime/popups.d.ts +62 -0
  695. package/runtime/popups.d.ts.map +1 -0
  696. package/runtime/popups.js +95 -0
  697. package/runtime/query-tiles.d.ts +217 -0
  698. package/runtime/query-tiles.d.ts.map +1 -0
  699. package/runtime/query-tiles.js +801 -0
  700. package/runtime/runtime.d.ts +243 -0
  701. package/runtime/runtime.d.ts.map +1 -0
  702. package/runtime/runtime.js +1147 -0
  703. package/runtime/source-bridge.d.ts +99 -0
  704. package/runtime/source-bridge.d.ts.map +1 -0
  705. package/runtime/source-bridge.js +428 -0
  706. package/runtime/style-compose.d.ts +46 -0
  707. package/runtime/style-compose.d.ts.map +1 -0
  708. package/runtime/style-compose.js +144 -0
  709. package/runtime/style-interactions.d.ts +141 -0
  710. package/runtime/style-interactions.d.ts.map +1 -0
  711. package/runtime/style-interactions.js +574 -0
  712. package/runtime/style-spec-validation.d.ts +23 -0
  713. package/runtime/style-spec-validation.d.ts.map +1 -0
  714. package/runtime/style-spec-validation.js +357 -0
  715. package/scene-workspace/analysis-widgets.d.ts +334 -0
  716. package/scene-workspace/analysis-widgets.d.ts.map +1 -0
  717. package/scene-workspace/analysis-widgets.js +424 -0
  718. package/scene-workspace/cesium-adapter.d.ts +438 -0
  719. package/scene-workspace/cesium-adapter.d.ts.map +1 -0
  720. package/scene-workspace/cesium-adapter.js +493 -0
  721. package/scene-workspace/index.d.ts +21 -0
  722. package/scene-workspace/index.d.ts.map +1 -0
  723. package/scene-workspace/index.js +14 -0
  724. package/scene-workspace/primitives.d.ts +162 -0
  725. package/scene-workspace/primitives.d.ts.map +1 -0
  726. package/scene-workspace/primitives.js +255 -0
  727. package/scene-workspace/scene-discovery.d.ts +196 -0
  728. package/scene-workspace/scene-discovery.d.ts.map +1 -0
  729. package/scene-workspace/scene-discovery.js +228 -0
  730. package/scene-workspace/scene-view.d.ts +209 -0
  731. package/scene-workspace/scene-view.d.ts.map +1 -0
  732. package/scene-workspace/scene-view.js +267 -0
  733. package/scene-workspace/types.d.ts +229 -0
  734. package/scene-workspace/types.d.ts.map +1 -0
  735. package/scene-workspace/types.js +23 -0
  736. package/scene-workspace/workspace.d.ts +13 -0
  737. package/scene-workspace/workspace.d.ts.map +1 -0
  738. package/scene-workspace/workspace.js +391 -0
  739. package/share/denial.d.ts +78 -0
  740. package/share/denial.d.ts.map +1 -0
  741. package/share/denial.js +61 -0
  742. package/share/embed-token.d.ts +71 -0
  743. package/share/embed-token.d.ts.map +1 -0
  744. package/share/embed-token.js +99 -0
  745. package/share/index.d.ts +35 -0
  746. package/share/index.d.ts.map +1 -0
  747. package/share/index.js +30 -0
  748. package/share/open-data.d.ts +114 -0
  749. package/share/open-data.d.ts.map +1 -0
  750. package/share/open-data.js +81 -0
  751. package/share/types.d.ts +163 -0
  752. package/share/types.d.ts.map +1 -0
  753. package/share/types.js +17 -0
  754. package/studio/capability-manifest.d.ts +285 -0
  755. package/studio/capability-manifest.d.ts.map +1 -0
  756. package/studio/capability-manifest.js +59 -0
  757. package/studio/chart-spec.d.ts +85 -0
  758. package/studio/chart-spec.d.ts.map +1 -0
  759. package/studio/chart-spec.js +106 -0
  760. package/studio/index.d.ts +34 -0
  761. package/studio/index.d.ts.map +1 -0
  762. package/studio/index.js +27 -0
  763. package/studio/provenance.d.ts +131 -0
  764. package/studio/provenance.d.ts.map +1 -0
  765. package/studio/provenance.js +39 -0
  766. package/studio/publish.d.ts +64 -0
  767. package/studio/publish.d.ts.map +1 -0
  768. package/studio/publish.js +13 -0
  769. package/studio/types.d.ts +278 -0
  770. package/studio/types.d.ts.map +1 -0
  771. package/studio/types.js +71 -0
  772. package/studio/validate.d.ts +45 -0
  773. package/studio/validate.d.ts.map +1 -0
  774. package/studio/validate.js +255 -0
  775. package/studio/validation.d.ts +112 -0
  776. package/studio/validation.d.ts.map +1 -0
  777. package/studio/validation.js +42 -0
  778. package/style/factory.d.ts +30 -0
  779. package/style/factory.d.ts.map +1 -0
  780. package/style/factory.js +61 -0
  781. package/style/index.d.ts +25 -0
  782. package/style/index.d.ts.map +1 -0
  783. package/style/index.js +24 -0
  784. package/style/specification.d.ts +203 -0
  785. package/style/specification.d.ts.map +1 -0
  786. package/style/specification.js +178 -0
  787. package/style/wms-wmts-resolvers.d.ts +38 -0
  788. package/style/wms-wmts-resolvers.d.ts.map +1 -0
  789. package/style/wms-wmts-resolvers.js +92 -0
  790. package/web-components/controller.d.ts +39 -0
  791. package/web-components/controller.d.ts.map +1 -0
  792. package/web-components/controller.js +640 -0
  793. package/web-components/elements.d.ts +210 -0
  794. package/web-components/elements.d.ts.map +1 -0
  795. package/web-components/elements.js +1651 -0
  796. package/web-components/index.d.ts +24 -0
  797. package/web-components/index.d.ts.map +1 -0
  798. package/web-components/index.js +22 -0
  799. package/web-components/maplibre-renderer.d.ts +22 -0
  800. package/web-components/maplibre-renderer.d.ts.map +1 -0
  801. package/web-components/maplibre-renderer.js +474 -0
  802. package/web-components/types.d.ts +397 -0
  803. package/web-components/types.d.ts.map +1 -0
  804. package/web-components/types.js +1 -0
  805. package/webmap/contract.d.ts +28 -0
  806. package/webmap/contract.d.ts.map +1 -0
  807. package/webmap/contract.js +130 -0
  808. package/webmap/convert-basemap.d.ts +17 -0
  809. package/webmap/convert-basemap.d.ts.map +1 -0
  810. package/webmap/convert-basemap.js +78 -0
  811. package/webmap/convert-extent.d.ts +17 -0
  812. package/webmap/convert-extent.d.ts.map +1 -0
  813. package/webmap/convert-extent.js +114 -0
  814. package/webmap/convert-label.d.ts +13 -0
  815. package/webmap/convert-label.d.ts.map +1 -0
  816. package/webmap/convert-label.js +125 -0
  817. package/webmap/convert-layer.d.ts +22 -0
  818. package/webmap/convert-layer.d.ts.map +1 -0
  819. package/webmap/convert-layer.js +181 -0
  820. package/webmap/convert-popup.d.ts +34 -0
  821. package/webmap/convert-popup.d.ts.map +1 -0
  822. package/webmap/convert-popup.js +68 -0
  823. package/webmap/convert-renderer.d.ts +17 -0
  824. package/webmap/convert-renderer.d.ts.map +1 -0
  825. package/webmap/convert-renderer.js +161 -0
  826. package/webmap/convert-symbol.d.ts +17 -0
  827. package/webmap/convert-symbol.d.ts.map +1 -0
  828. package/webmap/convert-symbol.js +122 -0
  829. package/webmap/index.d.ts +44 -0
  830. package/webmap/index.d.ts.map +1 -0
  831. package/webmap/index.js +33 -0
  832. package/webmap/parse.d.ts +25 -0
  833. package/webmap/parse.d.ts.map +1 -0
  834. package/webmap/parse.js +83 -0
  835. package/webmap/types.d.ts +264 -0
  836. package/webmap/types.d.ts.map +1 -0
  837. package/webmap/types.js +13 -0
  838. package/webmap/warnings.d.ts +30 -0
  839. package/webmap/warnings.d.ts.map +1 -0
  840. package/webmap/warnings.js +37 -0
package/core/wfs.d.ts ADDED
@@ -0,0 +1,232 @@
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
+ private resolvedSnapshot;
56
+ constructor(options: HonuaWfsOptions);
57
+ /**
58
+ * Fetch and cache the GetCapabilities document. Subsequent calls reuse the
59
+ * parsed snapshot. Throws `HonuaWfsExceptionError` on `<ows:ExceptionReport>`.
60
+ */
61
+ capabilities(options?: {
62
+ signal?: AbortSignal;
63
+ }): Promise<WfsCapabilitiesSnapshot>;
64
+ /** Discard the cached capabilities snapshot so the next call re-fetches. */
65
+ refresh(): void;
66
+ /**
67
+ * Resolve the concrete request URL for a WFS operation, honouring the
68
+ * DCP `xlink:href` a raw server advertises in GetCapabilities (e.g.
69
+ * GeoServer mounted at `/geoserver/ows` that advertises its operation
70
+ * URL at `/geoserver/wfs`). Falls back to the configured endpoint URL
71
+ * when capabilities have not been resolved yet or the server omits the
72
+ * DCP href. This peeks at the already-resolved snapshot synchronously,
73
+ * so it never forces an extra GetCapabilities round-trip: the canonical
74
+ * WFS query path resolves capabilities for output-format negotiation
75
+ * before issuing GetFeature.
76
+ */
77
+ operationUrl(operation: string, method: "GET" | "POST"): string;
78
+ /** Last raw capabilities XML payload (populated after the first fetch). */
79
+ rawCapabilities(): string | undefined;
80
+ /** Bind a feature-type handle. Does not network. */
81
+ featureType(typeName: string): HonuaWfsFeatureType;
82
+ /**
83
+ * Discover stored queries through the `ListStoredQueries` operation. Returns
84
+ * the bare list of identifier strings; per-query metadata is exposed via
85
+ * `storedQuery(id).describe()`.
86
+ */
87
+ storedQueries(options?: {
88
+ signal?: AbortSignal;
89
+ }): Promise<readonly string[]>;
90
+ storedQuery(id: string): HonuaWfsStoredQuery;
91
+ /** Internal helper used by feature-type / stored-query handles. */
92
+ requestText(method: "GET" | "POST", path: string, options: {
93
+ accept: string;
94
+ contentType?: string;
95
+ body?: string;
96
+ signal?: AbortSignal;
97
+ }): Promise<{
98
+ text: string;
99
+ contentType: string;
100
+ status: number;
101
+ }>;
102
+ /** Negotiate an output format for the GetFeature call. */
103
+ negotiateOutputFormat(snapshot: WfsCapabilitiesSnapshot): OutputFormatChoice | undefined;
104
+ private fetchCapabilities;
105
+ }
106
+ interface HonuaWfsFeatureTypeOptions {
107
+ root: HonuaWfs;
108
+ typeName: string;
109
+ }
110
+ /**
111
+ * Per-feature-type WFS surface. Implements the wire methods that the
112
+ * canonical `wfsSource` translates onto, and the protocol escape-hatch
113
+ * methods that ship raw XML payloads back to callers.
114
+ */
115
+ export declare class HonuaWfsFeatureType {
116
+ readonly root: HonuaWfs;
117
+ readonly typeName: string;
118
+ constructor(options: HonuaWfsFeatureTypeOptions);
119
+ /** Convenience: capabilities snapshot from the bound root. */
120
+ capabilities(options?: {
121
+ signal?: AbortSignal;
122
+ }): Promise<WfsCapabilitiesSnapshot>;
123
+ /**
124
+ * Issue a GetFeature request. Returns parsed JSON when the negotiated
125
+ * output format is JSON; otherwise returns the raw body as a string for
126
+ * downstream callers (the canonical surface throws in that case).
127
+ */
128
+ getFeature(params: {
129
+ filter?: string;
130
+ bbox?: string;
131
+ propertyName?: string[];
132
+ sortBy?: string;
133
+ count?: number;
134
+ startIndex?: number;
135
+ resultType?: "results" | "hits";
136
+ srsName?: string;
137
+ outputFormat?: string;
138
+ method?: "GET" | "POST";
139
+ body?: string;
140
+ signal?: AbortSignal;
141
+ }): Promise<{
142
+ kind: "json";
143
+ data: unknown;
144
+ contentType: string;
145
+ } | {
146
+ kind: "raw";
147
+ text: string;
148
+ contentType: string;
149
+ }>;
150
+ /**
151
+ * Issue a `GetPropertyValue` request. WFS-specific (returns raw XML), so
152
+ * the canonical surface only reaches it via `protocol("wfs")`.
153
+ */
154
+ getPropertyValue(params: {
155
+ valueReference: string;
156
+ filter?: string;
157
+ count?: number;
158
+ startIndex?: number;
159
+ signal?: AbortSignal;
160
+ }): Promise<{
161
+ text: string;
162
+ contentType: string;
163
+ }>;
164
+ /**
165
+ * Submit a `<wfs:Transaction>` POST body. Returns the parsed transaction
166
+ * summary; throws `HonuaWfsExceptionError` on `<ows:ExceptionReport>`.
167
+ */
168
+ transaction(params: {
169
+ body: string;
170
+ signal?: AbortSignal;
171
+ }): Promise<WfsTransactionSummary>;
172
+ /** Build (but do not send) the URL the GET GetFeature request would use. */
173
+ buildGetFeatureUrl(params: {
174
+ filter?: string;
175
+ bbox?: string;
176
+ count?: number;
177
+ startIndex?: number;
178
+ outputFormat?: string;
179
+ }): string;
180
+ }
181
+ interface HonuaWfsStoredQueryOptions {
182
+ root: HonuaWfs;
183
+ id: string;
184
+ }
185
+ /**
186
+ * Bound stored-query handle. `execute(params)` runs `GetFeature?storedquery_id=…`.
187
+ */
188
+ export declare class HonuaWfsStoredQuery {
189
+ readonly root: HonuaWfs;
190
+ readonly id: string;
191
+ constructor(options: HonuaWfsStoredQueryOptions);
192
+ /** Run `DescribeStoredQueries` for this stored query. Returns the raw XML. */
193
+ describe(options?: {
194
+ signal?: AbortSignal;
195
+ }): Promise<{
196
+ text: string;
197
+ contentType: string;
198
+ }>;
199
+ /**
200
+ * Execute the stored query against `GetFeature`. Caller passes the
201
+ * stored-query parameter map; values are coerced to strings via
202
+ * `String(value)`. Returns parsed JSON when the server replies with a
203
+ * JSON output format, raw text otherwise.
204
+ */
205
+ execute(params: {
206
+ parameters?: Record<string, string | number | boolean>;
207
+ outputFormat?: string;
208
+ count?: number;
209
+ startIndex?: number;
210
+ signal?: AbortSignal;
211
+ }): Promise<{
212
+ kind: "json";
213
+ data: unknown;
214
+ contentType: string;
215
+ } | {
216
+ kind: "raw";
217
+ text: string;
218
+ contentType: string;
219
+ }>;
220
+ }
221
+ export declare function appendQuery(url: string, params: URLSearchParams): string;
222
+ export declare function looksLikeJson(contentType: string | undefined, text: string): boolean;
223
+ export declare function looksLikeXml(contentType: string | undefined, text: string): boolean;
224
+ /**
225
+ * If the underlying client failure carries a WFS ExceptionReport in its
226
+ * body, re-throw as `HonuaWfsExceptionError`; otherwise leave the original
227
+ * error in place. The body is wrapped by `parseResponseBody` as
228
+ * `{ raw: text, contentType? }` for non-JSON responses.
229
+ */
230
+ export declare function rethrowAsWfsExceptionIfPossible(err: unknown): unknown;
231
+ export {};
232
+ //# 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,426 @@
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
+ resolvedSnapshot;
58
+ constructor(options) {
59
+ this.client = options.client;
60
+ this.endpointUrl = options.endpointUrl;
61
+ this.version = options.version ?? DEFAULT_VERSION;
62
+ }
63
+ /**
64
+ * Fetch and cache the GetCapabilities document. Subsequent calls reuse the
65
+ * parsed snapshot. Throws `HonuaWfsExceptionError` on `<ows:ExceptionReport>`.
66
+ */
67
+ capabilities(options) {
68
+ if (!this.capabilitiesPromise) {
69
+ this.capabilitiesPromise = this.fetchCapabilities(options).catch((err) => {
70
+ // Allow retry after a transient failure.
71
+ this.capabilitiesPromise = undefined;
72
+ throw err;
73
+ });
74
+ }
75
+ return this.capabilitiesPromise;
76
+ }
77
+ /** Discard the cached capabilities snapshot so the next call re-fetches. */
78
+ refresh() {
79
+ this.capabilitiesPromise = undefined;
80
+ this.rawCapabilitiesXml = undefined;
81
+ this.resolvedSnapshot = undefined;
82
+ }
83
+ /**
84
+ * Resolve the concrete request URL for a WFS operation, honouring the
85
+ * DCP `xlink:href` a raw server advertises in GetCapabilities (e.g.
86
+ * GeoServer mounted at `/geoserver/ows` that advertises its operation
87
+ * URL at `/geoserver/wfs`). Falls back to the configured endpoint URL
88
+ * when capabilities have not been resolved yet or the server omits the
89
+ * DCP href. This peeks at the already-resolved snapshot synchronously,
90
+ * so it never forces an extra GetCapabilities round-trip: the canonical
91
+ * WFS query path resolves capabilities for output-format negotiation
92
+ * before issuing GetFeature.
93
+ */
94
+ operationUrl(operation, method) {
95
+ const op = this.resolvedSnapshot?.operations.get(operation);
96
+ const url = method === "GET" ? op?.getUrl : op?.postUrl;
97
+ return url ?? this.endpointUrl;
98
+ }
99
+ /** Last raw capabilities XML payload (populated after the first fetch). */
100
+ rawCapabilities() {
101
+ return this.rawCapabilitiesXml;
102
+ }
103
+ /** Bind a feature-type handle. Does not network. */
104
+ featureType(typeName) {
105
+ return new HonuaWfsFeatureType({ root: this, typeName });
106
+ }
107
+ /**
108
+ * Discover stored queries through the `ListStoredQueries` operation. Returns
109
+ * the bare list of identifier strings; per-query metadata is exposed via
110
+ * `storedQuery(id).describe()`.
111
+ */
112
+ async storedQueries(options) {
113
+ const params = new URLSearchParams({
114
+ service: SERVICE_PARAM,
115
+ version: this.version,
116
+ request: "ListStoredQueries",
117
+ });
118
+ const requestOptions = { accept: "application/xml, text/xml" };
119
+ if (options?.signal)
120
+ requestOptions.signal = options.signal;
121
+ const { text } = await this.requestText("GET", appendQuery(this.endpointUrl, params), requestOptions);
122
+ return parseListStoredQueriesResponse(text);
123
+ }
124
+ storedQuery(id) {
125
+ return new HonuaWfsStoredQuery({ root: this, id });
126
+ }
127
+ /** Internal helper used by feature-type / stored-query handles. */
128
+ async requestText(method, path, options) {
129
+ try {
130
+ const requestOptions = {
131
+ accept: options.accept,
132
+ };
133
+ if (options.contentType !== undefined)
134
+ requestOptions.contentType = options.contentType;
135
+ if (options.body !== undefined)
136
+ requestOptions.body = options.body;
137
+ if (options.signal !== undefined)
138
+ requestOptions.signal = options.signal;
139
+ return await this.client.requestText(method, path, requestOptions);
140
+ }
141
+ catch (err) {
142
+ throw rethrowAsWfsExceptionIfPossible(err);
143
+ }
144
+ }
145
+ /** Negotiate an output format for the GetFeature call. */
146
+ negotiateOutputFormat(snapshot) {
147
+ const formats = snapshot.outputFormatsByOp.get("GetFeature") ?? [];
148
+ for (const format of formats) {
149
+ if (JSON_OUTPUT_FORMATS.has(format))
150
+ return { kind: "json", format };
151
+ }
152
+ for (const format of formats) {
153
+ if (GML_OUTPUT_FORMATS.has(format))
154
+ return { kind: "gml", format };
155
+ }
156
+ if (formats.length === 0) {
157
+ // Honua Server advertises GeoJSON in OperationsMetadata; absence is
158
+ // treated as "JSON unknown" — fall back to GeoJSON optimistically. The
159
+ // first request will surface the actual server behaviour through an
160
+ // ExceptionReport.
161
+ return { kind: "json", format: "application/geo+json" };
162
+ }
163
+ // Server advertises an output format the canonical adapter does not
164
+ // recognise — let the caller decide whether to throw or escape-hatch.
165
+ return { kind: "gml", format: formats[0] };
166
+ }
167
+ async fetchCapabilities(options) {
168
+ this.capabilitiesFetches += 1;
169
+ const params = new URLSearchParams({
170
+ service: SERVICE_PARAM,
171
+ version: this.version,
172
+ request: "GetCapabilities",
173
+ });
174
+ const requestOptions = { accept: "application/xml, text/xml" };
175
+ if (options?.signal)
176
+ requestOptions.signal = options.signal;
177
+ const { text } = await this.requestText("GET", appendQuery(this.endpointUrl, params), requestOptions);
178
+ this.rawCapabilitiesXml = text;
179
+ const snapshot = parseWfsCapabilities(text);
180
+ this.resolvedSnapshot = snapshot;
181
+ return snapshot;
182
+ }
183
+ }
184
+ /**
185
+ * Per-feature-type WFS surface. Implements the wire methods that the
186
+ * canonical `wfsSource` translates onto, and the protocol escape-hatch
187
+ * methods that ship raw XML payloads back to callers.
188
+ */
189
+ export class HonuaWfsFeatureType {
190
+ root;
191
+ typeName;
192
+ constructor(options) {
193
+ this.root = options.root;
194
+ this.typeName = options.typeName;
195
+ }
196
+ /** Convenience: capabilities snapshot from the bound root. */
197
+ capabilities(options) {
198
+ return this.root.capabilities(options);
199
+ }
200
+ /**
201
+ * Issue a GetFeature request. Returns parsed JSON when the negotiated
202
+ * output format is JSON; otherwise returns the raw body as a string for
203
+ * downstream callers (the canonical surface throws in that case).
204
+ */
205
+ async getFeature(params) {
206
+ const method = params.method ?? "GET";
207
+ const accept = params.outputFormat ?? "application/geo+json, application/json;q=0.9, application/xml;q=0.5";
208
+ const requestOptions = { accept };
209
+ if (params.signal)
210
+ requestOptions.signal = params.signal;
211
+ let response;
212
+ if (method === "POST" && params.body !== undefined) {
213
+ requestOptions.contentType = "application/xml";
214
+ requestOptions.body = params.body;
215
+ response = await this.root.requestText("POST", this.root.operationUrl("GetFeature", "POST"), requestOptions);
216
+ }
217
+ else {
218
+ const search = new URLSearchParams({
219
+ service: SERVICE_PARAM,
220
+ version: this.root.version,
221
+ request: "GetFeature",
222
+ typeNames: this.typeName,
223
+ });
224
+ if (params.filter !== undefined)
225
+ search.set("filter", params.filter);
226
+ if (params.bbox !== undefined)
227
+ search.set("bbox", params.bbox);
228
+ if (params.propertyName && params.propertyName.length > 0) {
229
+ search.set("propertyName", params.propertyName.join(","));
230
+ }
231
+ if (params.sortBy !== undefined)
232
+ search.set("sortBy", params.sortBy);
233
+ if (typeof params.count === "number")
234
+ search.set("count", String(params.count));
235
+ if (typeof params.startIndex === "number")
236
+ search.set("startIndex", String(params.startIndex));
237
+ if (params.resultType !== undefined)
238
+ search.set("resultType", params.resultType);
239
+ if (params.srsName !== undefined)
240
+ search.set("srsName", params.srsName);
241
+ if (params.outputFormat !== undefined)
242
+ search.set("outputFormat", params.outputFormat);
243
+ response = await this.root.requestText("GET", appendQuery(this.root.operationUrl("GetFeature", "GET"), search), requestOptions);
244
+ }
245
+ if (looksLikeJson(response.contentType, response.text)) {
246
+ return { kind: "json", data: parseJsonOrThrow(response.text), contentType: response.contentType };
247
+ }
248
+ if (looksLikeXml(response.contentType, response.text) && /ExceptionReport/i.test(response.text)) {
249
+ const report = parseWfsExceptionReport(response.text);
250
+ throw new HonuaWfsExceptionError(report.exceptionCode, report.message, report.locator);
251
+ }
252
+ return { kind: "raw", text: response.text, contentType: response.contentType };
253
+ }
254
+ /**
255
+ * Issue a `GetPropertyValue` request. WFS-specific (returns raw XML), so
256
+ * the canonical surface only reaches it via `protocol("wfs")`.
257
+ */
258
+ async getPropertyValue(params) {
259
+ const search = new URLSearchParams({
260
+ service: SERVICE_PARAM,
261
+ version: this.root.version,
262
+ request: "GetPropertyValue",
263
+ typeNames: this.typeName,
264
+ valueReference: params.valueReference,
265
+ });
266
+ if (params.filter !== undefined)
267
+ search.set("filter", params.filter);
268
+ if (typeof params.count === "number")
269
+ search.set("count", String(params.count));
270
+ if (typeof params.startIndex === "number")
271
+ search.set("startIndex", String(params.startIndex));
272
+ const requestOptions = { accept: "application/xml, text/xml" };
273
+ if (params.signal)
274
+ requestOptions.signal = params.signal;
275
+ const { text, contentType } = await this.root.requestText("GET", appendQuery(this.root.endpointUrl, search), requestOptions);
276
+ return { text, contentType };
277
+ }
278
+ /**
279
+ * Submit a `<wfs:Transaction>` POST body. Returns the parsed transaction
280
+ * summary; throws `HonuaWfsExceptionError` on `<ows:ExceptionReport>`.
281
+ */
282
+ async transaction(params) {
283
+ const requestOptions = {
284
+ accept: "application/xml, text/xml",
285
+ contentType: "application/xml",
286
+ body: params.body,
287
+ };
288
+ if (params.signal)
289
+ requestOptions.signal = params.signal;
290
+ const { text } = await this.root.requestText("POST", this.root.operationUrl("Transaction", "POST"), requestOptions);
291
+ return parseWfsTransactionResponse(text);
292
+ }
293
+ /** Build (but do not send) the URL the GET GetFeature request would use. */
294
+ buildGetFeatureUrl(params) {
295
+ const search = new URLSearchParams({
296
+ service: SERVICE_PARAM,
297
+ version: this.root.version,
298
+ request: "GetFeature",
299
+ typeNames: this.typeName,
300
+ });
301
+ if (params.filter !== undefined)
302
+ search.set("filter", params.filter);
303
+ if (params.bbox !== undefined)
304
+ search.set("bbox", params.bbox);
305
+ if (typeof params.count === "number")
306
+ search.set("count", String(params.count));
307
+ if (typeof params.startIndex === "number")
308
+ search.set("startIndex", String(params.startIndex));
309
+ if (params.outputFormat !== undefined)
310
+ search.set("outputFormat", params.outputFormat);
311
+ return appendQuery(this.root.endpointUrl, search);
312
+ }
313
+ }
314
+ /**
315
+ * Bound stored-query handle. `execute(params)` runs `GetFeature?storedquery_id=…`.
316
+ */
317
+ export class HonuaWfsStoredQuery {
318
+ root;
319
+ id;
320
+ constructor(options) {
321
+ this.root = options.root;
322
+ this.id = options.id;
323
+ }
324
+ /** Run `DescribeStoredQueries` for this stored query. Returns the raw XML. */
325
+ async describe(options) {
326
+ const search = new URLSearchParams({
327
+ service: SERVICE_PARAM,
328
+ version: this.root.version,
329
+ request: "DescribeStoredQueries",
330
+ storedQuery_Id: this.id,
331
+ });
332
+ const requestOptions = { accept: "application/xml, text/xml" };
333
+ if (options?.signal)
334
+ requestOptions.signal = options.signal;
335
+ const { text, contentType } = await this.root.requestText("GET", appendQuery(this.root.endpointUrl, search), requestOptions);
336
+ return { text, contentType };
337
+ }
338
+ /**
339
+ * Execute the stored query against `GetFeature`. Caller passes the
340
+ * stored-query parameter map; values are coerced to strings via
341
+ * `String(value)`. Returns parsed JSON when the server replies with a
342
+ * JSON output format, raw text otherwise.
343
+ */
344
+ async execute(params) {
345
+ const search = new URLSearchParams({
346
+ service: SERVICE_PARAM,
347
+ version: this.root.version,
348
+ request: "GetFeature",
349
+ storedquery_id: this.id,
350
+ });
351
+ if (typeof params.count === "number")
352
+ search.set("count", String(params.count));
353
+ if (typeof params.startIndex === "number")
354
+ search.set("startIndex", String(params.startIndex));
355
+ if (params.outputFormat !== undefined)
356
+ search.set("outputFormat", params.outputFormat);
357
+ if (params.parameters) {
358
+ for (const [key, value] of Object.entries(params.parameters)) {
359
+ search.set(key, String(value));
360
+ }
361
+ }
362
+ const accept = params.outputFormat ?? "application/geo+json, application/json;q=0.9, application/xml;q=0.5";
363
+ const requestOptions = { accept };
364
+ if (params.signal)
365
+ requestOptions.signal = params.signal;
366
+ const { text, contentType } = await this.root.requestText("GET", appendQuery(this.root.operationUrl("GetFeature", "GET"), search), requestOptions);
367
+ if (looksLikeJson(contentType, text)) {
368
+ return { kind: "json", data: parseJsonOrThrow(text), contentType };
369
+ }
370
+ if (looksLikeXml(contentType, text) && /ExceptionReport/i.test(text)) {
371
+ const report = parseWfsExceptionReport(text);
372
+ throw new HonuaWfsExceptionError(report.exceptionCode, report.message, report.locator);
373
+ }
374
+ return { kind: "raw", text, contentType };
375
+ }
376
+ }
377
+ // ── Helpers ───────────────────────────────────────────────────
378
+ export function appendQuery(url, params) {
379
+ // Preserve any pre-existing query string on the endpoint URL (some servers
380
+ // sit behind URL signatures that include their own params).
381
+ const sep = url.includes("?") ? "&" : "?";
382
+ return `${url}${sep}${params.toString()}`;
383
+ }
384
+ export function looksLikeJson(contentType, text) {
385
+ if (contentType && /json/i.test(contentType))
386
+ return true;
387
+ const trimmed = text.trimStart();
388
+ return trimmed.startsWith("{") || trimmed.startsWith("[");
389
+ }
390
+ export function looksLikeXml(contentType, text) {
391
+ if (contentType && /xml/i.test(contentType))
392
+ return true;
393
+ return text.trimStart().startsWith("<");
394
+ }
395
+ function parseJsonOrThrow(text) {
396
+ try {
397
+ return JSON.parse(text);
398
+ }
399
+ catch (err) {
400
+ const message = err instanceof Error ? err.message : String(err);
401
+ throw new Error(`WFS GetFeature returned non-JSON output despite Accept negotiation: ${message}`);
402
+ }
403
+ }
404
+ /**
405
+ * If the underlying client failure carries a WFS ExceptionReport in its
406
+ * body, re-throw as `HonuaWfsExceptionError`; otherwise leave the original
407
+ * error in place. The body is wrapped by `parseResponseBody` as
408
+ * `{ raw: text, contentType? }` for non-JSON responses.
409
+ */
410
+ export function rethrowAsWfsExceptionIfPossible(err) {
411
+ if (!(err instanceof HonuaHttpError))
412
+ return err;
413
+ const body = err.body;
414
+ if (!body || typeof body !== "object" || typeof body.raw !== "string")
415
+ return err;
416
+ const raw = body.raw;
417
+ if (!/ExceptionReport/i.test(raw))
418
+ return err;
419
+ try {
420
+ const report = parseWfsExceptionReport(raw);
421
+ return new HonuaWfsExceptionError(report.exceptionCode, report.message, report.locator);
422
+ }
423
+ catch {
424
+ return err;
425
+ }
426
+ }