@honua/react 0.0.20-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (597) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +9 -0
  3. package/contract/analytics-sources.d.ts +149 -0
  4. package/contract/analytics-sources.d.ts.map +1 -0
  5. package/contract/analytics-sources.js +235 -0
  6. package/contract/edit-session.d.ts +203 -0
  7. package/contract/edit-session.d.ts.map +1 -0
  8. package/contract/edit-session.js +760 -0
  9. package/contract/edit-sketch.d.ts +91 -0
  10. package/contract/edit-sketch.d.ts.map +1 -0
  11. package/contract/edit-sketch.js +281 -0
  12. package/contract/index.d.ts +61 -0
  13. package/contract/index.d.ts.map +1 -0
  14. package/contract/index.js +51 -0
  15. package/contract/jobs.d.ts +149 -0
  16. package/contract/jobs.d.ts.map +1 -0
  17. package/contract/jobs.js +40 -0
  18. package/contract/source.d.ts +423 -0
  19. package/contract/source.d.ts.map +1 -0
  20. package/contract/source.js +3802 -0
  21. package/contract/spatial-aggregation.d.ts +336 -0
  22. package/contract/spatial-aggregation.d.ts.map +1 -0
  23. package/contract/spatial-aggregation.js +298 -0
  24. package/contract/temporal.d.ts +455 -0
  25. package/contract/temporal.d.ts.map +1 -0
  26. package/contract/temporal.js +146 -0
  27. package/contract/tiles.d.ts +370 -0
  28. package/contract/tiles.d.ts.map +1 -0
  29. package/contract/tiles.js +519 -0
  30. package/contract/types.d.ts +665 -0
  31. package/contract/types.d.ts.map +1 -0
  32. package/contract/types.js +175 -0
  33. package/contract/widget-source.d.ts +205 -0
  34. package/contract/widget-source.d.ts.map +1 -0
  35. package/contract/widget-source.js +1473 -0
  36. package/control-plane/client.d.ts +95 -0
  37. package/control-plane/client.d.ts.map +1 -0
  38. package/control-plane/client.js +374 -0
  39. package/control-plane/index.d.ts +18 -0
  40. package/control-plane/index.d.ts.map +1 -0
  41. package/control-plane/index.js +14 -0
  42. package/control-plane/types.d.ts +233 -0
  43. package/control-plane/types.d.ts.map +1 -0
  44. package/control-plane/types.js +7 -0
  45. package/core/batch.d.ts +37 -0
  46. package/core/batch.d.ts.map +1 -0
  47. package/core/batch.js +79 -0
  48. package/core/cache-state.d.ts +79 -0
  49. package/core/cache-state.d.ts.map +1 -0
  50. package/core/cache-state.js +87 -0
  51. package/core/client.d.ts +577 -0
  52. package/core/client.d.ts.map +1 -0
  53. package/core/client.js +1664 -0
  54. package/core/compatibility.d.ts +18 -0
  55. package/core/compatibility.d.ts.map +1 -0
  56. package/core/compatibility.js +245 -0
  57. package/core/errors.d.ts +107 -0
  58. package/core/errors.d.ts.map +1 -0
  59. package/core/errors.js +156 -0
  60. package/core/esri-geojson.d.ts +66 -0
  61. package/core/esri-geojson.d.ts.map +1 -0
  62. package/core/esri-geojson.js +363 -0
  63. package/core/geoservices.d.ts +34 -0
  64. package/core/geoservices.d.ts.map +1 -0
  65. package/core/geoservices.js +434 -0
  66. package/core/grpc-adapter.d.ts +23 -0
  67. package/core/grpc-adapter.d.ts.map +1 -0
  68. package/core/grpc-adapter.js +688 -0
  69. package/core/odata.d.ts +347 -0
  70. package/core/odata.d.ts.map +1 -0
  71. package/core/odata.js +913 -0
  72. package/core/ogc-conformance.d.ts +35 -0
  73. package/core/ogc-conformance.d.ts.map +1 -0
  74. package/core/ogc-conformance.js +134 -0
  75. package/core/ogc-features.d.ts +23 -0
  76. package/core/ogc-features.d.ts.map +1 -0
  77. package/core/ogc-features.js +114 -0
  78. package/core/ogc-maps.d.ts +49 -0
  79. package/core/ogc-maps.d.ts.map +1 -0
  80. package/core/ogc-maps.js +126 -0
  81. package/core/ogc-processes.d.ts +118 -0
  82. package/core/ogc-processes.d.ts.map +1 -0
  83. package/core/ogc-processes.js +423 -0
  84. package/core/ogc-records.d.ts +75 -0
  85. package/core/ogc-records.d.ts.map +1 -0
  86. package/core/ogc-records.js +251 -0
  87. package/core/ogc-tiles.d.ts +125 -0
  88. package/core/ogc-tiles.d.ts.map +1 -0
  89. package/core/ogc-tiles.js +183 -0
  90. package/core/path-utils.d.ts +69 -0
  91. package/core/path-utils.d.ts.map +1 -0
  92. package/core/path-utils.js +123 -0
  93. package/core/pbf-decoder.d.ts +39 -0
  94. package/core/pbf-decoder.d.ts.map +1 -0
  95. package/core/pbf-decoder.js +702 -0
  96. package/core/process-runner.d.ts +104 -0
  97. package/core/process-runner.d.ts.map +1 -0
  98. package/core/process-runner.js +315 -0
  99. package/core/protocol-transport.d.ts +76 -0
  100. package/core/protocol-transport.d.ts.map +1 -0
  101. package/core/protocol-transport.js +15 -0
  102. package/core/query-builder.d.ts +261 -0
  103. package/core/query-builder.d.ts.map +1 -0
  104. package/core/query-builder.js +538 -0
  105. package/core/request-pipeline.d.ts +88 -0
  106. package/core/request-pipeline.d.ts.map +1 -0
  107. package/core/request-pipeline.js +273 -0
  108. package/core/spatial-filter.d.ts +93 -0
  109. package/core/spatial-filter.d.ts.map +1 -0
  110. package/core/spatial-filter.js +153 -0
  111. package/core/stac.d.ts +55 -0
  112. package/core/stac.d.ts.map +1 -0
  113. package/core/stac.js +229 -0
  114. package/core/surfaces.d.ts +527 -0
  115. package/core/surfaces.d.ts.map +1 -0
  116. package/core/surfaces.js +1917 -0
  117. package/core/terrain-elevation.d.ts +114 -0
  118. package/core/terrain-elevation.d.ts.map +1 -0
  119. package/core/terrain-elevation.js +150 -0
  120. package/core/types.d.ts +1355 -0
  121. package/core/types.d.ts.map +1 -0
  122. package/core/types.js +13 -0
  123. package/core/wfs-capabilities.d.ts +143 -0
  124. package/core/wfs-capabilities.d.ts.map +1 -0
  125. package/core/wfs-capabilities.js +478 -0
  126. package/core/wfs-filter.d.ts +118 -0
  127. package/core/wfs-filter.d.ts.map +1 -0
  128. package/core/wfs-filter.js +634 -0
  129. package/core/wfs.d.ts +219 -0
  130. package/core/wfs.d.ts.map +1 -0
  131. package/core/wfs.js +406 -0
  132. package/core/wire-shared.d.ts +32 -0
  133. package/core/wire-shared.d.ts.map +1 -0
  134. package/core/wire-shared.js +76 -0
  135. package/core/wms-axis.d.ts +36 -0
  136. package/core/wms-axis.d.ts.map +1 -0
  137. package/core/wms-axis.js +73 -0
  138. package/core/wms-capabilities.d.ts +110 -0
  139. package/core/wms-capabilities.d.ts.map +1 -0
  140. package/core/wms-capabilities.js +559 -0
  141. package/core/wms-types.d.ts +128 -0
  142. package/core/wms-types.d.ts.map +1 -0
  143. package/core/wms-types.js +32 -0
  144. package/core/wms.d.ts +144 -0
  145. package/core/wms.d.ts.map +1 -0
  146. package/core/wms.js +338 -0
  147. package/core/wmts-capabilities.d.ts +82 -0
  148. package/core/wmts-capabilities.d.ts.map +1 -0
  149. package/core/wmts-capabilities.js +402 -0
  150. package/core/wmts.d.ts +103 -0
  151. package/core/wmts.d.ts.map +1 -0
  152. package/core/wmts.js +332 -0
  153. package/core/xml-text.d.ts +20 -0
  154. package/core/xml-text.d.ts.map +1 -0
  155. package/core/xml-text.js +85 -0
  156. package/esri-compat/basemap-gallery.d.ts +38 -0
  157. package/esri-compat/basemap-gallery.d.ts.map +1 -0
  158. package/esri-compat/basemap-gallery.js +159 -0
  159. package/esri-compat/basemap-layer-list.d.ts +35 -0
  160. package/esri-compat/basemap-layer-list.d.ts.map +1 -0
  161. package/esri-compat/basemap-layer-list.js +139 -0
  162. package/esri-compat/basemap.d.ts +32 -0
  163. package/esri-compat/basemap.d.ts.map +1 -0
  164. package/esri-compat/basemap.js +84 -0
  165. package/esri-compat/bookmarks.d.ts +36 -0
  166. package/esri-compat/bookmarks.d.ts.map +1 -0
  167. package/esri-compat/bookmarks.js +108 -0
  168. package/esri-compat/class-breaks-renderer.d.ts +50 -0
  169. package/esri-compat/class-breaks-renderer.d.ts.map +1 -0
  170. package/esri-compat/class-breaks-renderer.js +164 -0
  171. package/esri-compat/color.d.ts +22 -0
  172. package/esri-compat/color.d.ts.map +1 -0
  173. package/esri-compat/color.js +106 -0
  174. package/esri-compat/controls.d.ts +174 -0
  175. package/esri-compat/controls.d.ts.map +1 -0
  176. package/esri-compat/controls.js +479 -0
  177. package/esri-compat/coordinate-conversion.d.ts +41 -0
  178. package/esri-compat/coordinate-conversion.d.ts.map +1 -0
  179. package/esri-compat/coordinate-conversion.js +125 -0
  180. package/esri-compat/directions.d.ts +45 -0
  181. package/esri-compat/directions.d.ts.map +1 -0
  182. package/esri-compat/directions.js +123 -0
  183. package/esri-compat/editor.d.ts +47 -0
  184. package/esri-compat/editor.d.ts.map +1 -0
  185. package/esri-compat/editor.js +170 -0
  186. package/esri-compat/esri-config.d.ts +16 -0
  187. package/esri-compat/esri-config.d.ts.map +1 -0
  188. package/esri-compat/esri-config.js +23 -0
  189. package/esri-compat/esri-request.d.ts +17 -0
  190. package/esri-compat/esri-request.d.ts.map +1 -0
  191. package/esri-compat/esri-request.js +127 -0
  192. package/esri-compat/event-bus.d.ts +106 -0
  193. package/esri-compat/event-bus.d.ts.map +1 -0
  194. package/esri-compat/event-bus.js +90 -0
  195. package/esri-compat/expand.d.ts +36 -0
  196. package/esri-compat/expand.d.ts.map +1 -0
  197. package/esri-compat/expand.js +97 -0
  198. package/esri-compat/extent.d.ts +43 -0
  199. package/esri-compat/extent.d.ts.map +1 -0
  200. package/esri-compat/extent.js +140 -0
  201. package/esri-compat/feature-filter.d.ts +55 -0
  202. package/esri-compat/feature-filter.d.ts.map +1 -0
  203. package/esri-compat/feature-filter.js +109 -0
  204. package/esri-compat/feature-form.d.ts +64 -0
  205. package/esri-compat/feature-form.d.ts.map +1 -0
  206. package/esri-compat/feature-form.js +137 -0
  207. package/esri-compat/feature-layer.d.ts +173 -0
  208. package/esri-compat/feature-layer.d.ts.map +1 -0
  209. package/esri-compat/feature-layer.js +661 -0
  210. package/esri-compat/feature-set.d.ts +32 -0
  211. package/esri-compat/feature-set.d.ts.map +1 -0
  212. package/esri-compat/feature-set.js +80 -0
  213. package/esri-compat/feature-table.d.ts +141 -0
  214. package/esri-compat/feature-table.d.ts.map +1 -0
  215. package/esri-compat/feature-table.js +500 -0
  216. package/esri-compat/feature-templates.d.ts +41 -0
  217. package/esri-compat/feature-templates.d.ts.map +1 -0
  218. package/esri-compat/feature-templates.js +97 -0
  219. package/esri-compat/feature.d.ts +33 -0
  220. package/esri-compat/feature.d.ts.map +1 -0
  221. package/esri-compat/feature.js +83 -0
  222. package/esri-compat/geojson-layer.d.ts +86 -0
  223. package/esri-compat/geojson-layer.d.ts.map +1 -0
  224. package/esri-compat/geojson-layer.js +191 -0
  225. package/esri-compat/geometry-engine.d.ts +107 -0
  226. package/esri-compat/geometry-engine.d.ts.map +1 -0
  227. package/esri-compat/geometry-engine.js +266 -0
  228. package/esri-compat/graphic.d.ts +46 -0
  229. package/esri-compat/graphic.d.ts.map +1 -0
  230. package/esri-compat/graphic.js +103 -0
  231. package/esri-compat/graphics-layer.d.ts +49 -0
  232. package/esri-compat/graphics-layer.d.ts.map +1 -0
  233. package/esri-compat/graphics-layer.js +185 -0
  234. package/esri-compat/group-layer.d.ts +48 -0
  235. package/esri-compat/group-layer.d.ts.map +1 -0
  236. package/esri-compat/group-layer.js +212 -0
  237. package/esri-compat/identify.d.ts +71 -0
  238. package/esri-compat/identify.d.ts.map +1 -0
  239. package/esri-compat/identify.js +299 -0
  240. package/esri-compat/identity-manager.d.ts +31 -0
  241. package/esri-compat/identity-manager.d.ts.map +1 -0
  242. package/esri-compat/identity-manager.js +115 -0
  243. package/esri-compat/imagery-layer.d.ts +78 -0
  244. package/esri-compat/imagery-layer.d.ts.map +1 -0
  245. package/esri-compat/imagery-layer.js +167 -0
  246. package/esri-compat/label-class.d.ts +31 -0
  247. package/esri-compat/label-class.d.ts.map +1 -0
  248. package/esri-compat/label-class.js +102 -0
  249. package/esri-compat/layer-list.d.ts +77 -0
  250. package/esri-compat/layer-list.d.ts.map +1 -0
  251. package/esri-compat/layer-list.js +342 -0
  252. package/esri-compat/legend.d.ts +53 -0
  253. package/esri-compat/legend.d.ts.map +1 -0
  254. package/esri-compat/legend.js +254 -0
  255. package/esri-compat/map-image-layer.d.ts +162 -0
  256. package/esri-compat/map-image-layer.d.ts.map +1 -0
  257. package/esri-compat/map-image-layer.js +709 -0
  258. package/esri-compat/map-view.d.ts +323 -0
  259. package/esri-compat/map-view.d.ts.map +1 -0
  260. package/esri-compat/map-view.js +1175 -0
  261. package/esri-compat/map.d.ts +47 -0
  262. package/esri-compat/map.d.ts.map +1 -0
  263. package/esri-compat/map.js +209 -0
  264. package/esri-compat/measurement-2d.d.ts +61 -0
  265. package/esri-compat/measurement-2d.d.ts.map +1 -0
  266. package/esri-compat/measurement-2d.js +184 -0
  267. package/esri-compat/measurement.d.ts +45 -0
  268. package/esri-compat/measurement.d.ts.map +1 -0
  269. package/esri-compat/measurement.js +193 -0
  270. package/esri-compat/oauth-info.d.ts +35 -0
  271. package/esri-compat/oauth-info.d.ts.map +1 -0
  272. package/esri-compat/oauth-info.js +115 -0
  273. package/esri-compat/picture-marker-symbol.d.ts +35 -0
  274. package/esri-compat/picture-marker-symbol.d.ts.map +1 -0
  275. package/esri-compat/picture-marker-symbol.js +126 -0
  276. package/esri-compat/point.d.ts +31 -0
  277. package/esri-compat/point.d.ts.map +1 -0
  278. package/esri-compat/point.js +102 -0
  279. package/esri-compat/polygon.d.ts +31 -0
  280. package/esri-compat/polygon.d.ts.map +1 -0
  281. package/esri-compat/polygon.js +107 -0
  282. package/esri-compat/polyline.d.ts +31 -0
  283. package/esri-compat/polyline.d.ts.map +1 -0
  284. package/esri-compat/polyline.js +107 -0
  285. package/esri-compat/popup-template.d.ts +55 -0
  286. package/esri-compat/popup-template.d.ts.map +1 -0
  287. package/esri-compat/popup-template.js +128 -0
  288. package/esri-compat/popup.d.ts +54 -0
  289. package/esri-compat/popup.d.ts.map +1 -0
  290. package/esri-compat/popup.js +312 -0
  291. package/esri-compat/print.d.ts +47 -0
  292. package/esri-compat/print.d.ts.map +1 -0
  293. package/esri-compat/print.js +105 -0
  294. package/esri-compat/query.d.ts +58 -0
  295. package/esri-compat/query.d.ts.map +1 -0
  296. package/esri-compat/query.js +128 -0
  297. package/esri-compat/reactive-utils.d.ts +24 -0
  298. package/esri-compat/reactive-utils.d.ts.map +1 -0
  299. package/esri-compat/reactive-utils.js +193 -0
  300. package/esri-compat/request.d.ts +41 -0
  301. package/esri-compat/request.d.ts.map +1 -0
  302. package/esri-compat/request.js +253 -0
  303. package/esri-compat/route-layer.d.ts +59 -0
  304. package/esri-compat/route-layer.d.ts.map +1 -0
  305. package/esri-compat/route-layer.js +223 -0
  306. package/esri-compat/route-task.d.ts +88 -0
  307. package/esri-compat/route-task.d.ts.map +1 -0
  308. package/esri-compat/route-task.js +225 -0
  309. package/esri-compat/scene-view.d.ts +41 -0
  310. package/esri-compat/scene-view.d.ts.map +1 -0
  311. package/esri-compat/scene-view.js +68 -0
  312. package/esri-compat/search.d.ts +112 -0
  313. package/esri-compat/search.d.ts.map +1 -0
  314. package/esri-compat/search.js +820 -0
  315. package/esri-compat/simple-fill-symbol.d.ts +27 -0
  316. package/esri-compat/simple-fill-symbol.d.ts.map +1 -0
  317. package/esri-compat/simple-fill-symbol.js +85 -0
  318. package/esri-compat/simple-line-symbol.d.ts +27 -0
  319. package/esri-compat/simple-line-symbol.d.ts.map +1 -0
  320. package/esri-compat/simple-line-symbol.js +85 -0
  321. package/esri-compat/simple-marker-symbol.d.ts +29 -0
  322. package/esri-compat/simple-marker-symbol.d.ts.map +1 -0
  323. package/esri-compat/simple-marker-symbol.js +92 -0
  324. package/esri-compat/simple-renderer.d.ts +29 -0
  325. package/esri-compat/simple-renderer.d.ts.map +1 -0
  326. package/esri-compat/simple-renderer.js +92 -0
  327. package/esri-compat/sketch.d.ts +64 -0
  328. package/esri-compat/sketch.d.ts.map +1 -0
  329. package/esri-compat/sketch.js +227 -0
  330. package/esri-compat/spatial-reference.d.ts +31 -0
  331. package/esri-compat/spatial-reference.d.ts.map +1 -0
  332. package/esri-compat/spatial-reference.js +102 -0
  333. package/esri-compat/swipe.d.ts +34 -0
  334. package/esri-compat/swipe.d.ts.map +1 -0
  335. package/esri-compat/swipe.js +93 -0
  336. package/esri-compat/table-list.d.ts +36 -0
  337. package/esri-compat/table-list.d.ts.map +1 -0
  338. package/esri-compat/table-list.js +126 -0
  339. package/esri-compat/text-symbol.d.ts +37 -0
  340. package/esri-compat/text-symbol.d.ts.map +1 -0
  341. package/esri-compat/text-symbol.js +123 -0
  342. package/esri-compat/tile-layer.d.ts +52 -0
  343. package/esri-compat/tile-layer.d.ts.map +1 -0
  344. package/esri-compat/tile-layer.js +168 -0
  345. package/esri-compat/time-slider.d.ts +70 -0
  346. package/esri-compat/time-slider.d.ts.map +1 -0
  347. package/esri-compat/time-slider.js +208 -0
  348. package/esri-compat/track.d.ts +51 -0
  349. package/esri-compat/track.d.ts.map +1 -0
  350. package/esri-compat/track.js +174 -0
  351. package/esri-compat/unique-value-renderer.d.ts +41 -0
  352. package/esri-compat/unique-value-renderer.d.ts.map +1 -0
  353. package/esri-compat/unique-value-renderer.js +127 -0
  354. package/esri-compat/url.d.ts +13 -0
  355. package/esri-compat/url.d.ts.map +1 -0
  356. package/esri-compat/url.js +68 -0
  357. package/esri-compat/vector-tile-layer.d.ts +47 -0
  358. package/esri-compat/vector-tile-layer.d.ts.map +1 -0
  359. package/esri-compat/vector-tile-layer.js +130 -0
  360. package/esri-compat/web-map.d.ts +14 -0
  361. package/esri-compat/web-map.d.ts.map +1 -0
  362. package/esri-compat/web-map.js +24 -0
  363. package/esri-compat/wfs-layer.d.ts +64 -0
  364. package/esri-compat/wfs-layer.d.ts.map +1 -0
  365. package/esri-compat/wfs-layer.js +145 -0
  366. package/esri-compat/wms-layer.d.ts +76 -0
  367. package/esri-compat/wms-layer.d.ts.map +1 -0
  368. package/esri-compat/wms-layer.js +157 -0
  369. package/exploration/context.d.ts +25 -0
  370. package/exploration/context.d.ts.map +1 -0
  371. package/exploration/context.js +396 -0
  372. package/exploration/index.d.ts +27 -0
  373. package/exploration/index.d.ts.map +1 -0
  374. package/exploration/index.js +24 -0
  375. package/exploration/presets.d.ts +27 -0
  376. package/exploration/presets.d.ts.map +1 -0
  377. package/exploration/presets.js +114 -0
  378. package/exploration/reducer.d.ts +23 -0
  379. package/exploration/reducer.d.ts.map +1 -0
  380. package/exploration/reducer.js +332 -0
  381. package/exploration/selection.d.ts +25 -0
  382. package/exploration/selection.d.ts.map +1 -0
  383. package/exploration/selection.js +34 -0
  384. package/exploration/selectors.d.ts +56 -0
  385. package/exploration/selectors.d.ts.map +1 -0
  386. package/exploration/selectors.js +110 -0
  387. package/exploration/types.d.ts +294 -0
  388. package/exploration/types.d.ts.map +1 -0
  389. package/exploration/types.js +33 -0
  390. package/expr/expression.d.ts +457 -0
  391. package/expr/expression.d.ts.map +1 -0
  392. package/expr/expression.js +663 -0
  393. package/expr/index.d.ts +32 -0
  394. package/expr/index.d.ts.map +1 -0
  395. package/expr/index.js +30 -0
  396. package/gen/honua/v1/feature_service_pb.d.ts +918 -0
  397. package/gen/honua/v1/feature_service_pb.d.ts.map +1 -0
  398. package/gen/honua/v1/feature_service_pb.js +375 -0
  399. package/generated-app/errors.d.ts +41 -0
  400. package/generated-app/errors.d.ts.map +1 -0
  401. package/generated-app/errors.js +41 -0
  402. package/generated-app/index.d.ts +17 -0
  403. package/generated-app/index.d.ts.map +1 -0
  404. package/generated-app/index.js +12 -0
  405. package/generated-app/manifest.d.ts +183 -0
  406. package/generated-app/manifest.d.ts.map +1 -0
  407. package/generated-app/manifest.js +14 -0
  408. package/generated-app/projection.d.ts +44 -0
  409. package/generated-app/projection.d.ts.map +1 -0
  410. package/generated-app/projection.js +234 -0
  411. package/generated-app/runtime.d.ts +215 -0
  412. package/generated-app/runtime.d.ts.map +1 -0
  413. package/generated-app/runtime.js +1196 -0
  414. package/interactions/detail-model.d.ts +54 -0
  415. package/interactions/detail-model.d.ts.map +1 -0
  416. package/interactions/detail-model.js +105 -0
  417. package/interactions/exploration-bindings.d.ts +120 -0
  418. package/interactions/exploration-bindings.d.ts.map +1 -0
  419. package/interactions/exploration-bindings.js +218 -0
  420. package/interactions/feature-state.d.ts +144 -0
  421. package/interactions/feature-state.d.ts.map +1 -0
  422. package/interactions/feature-state.js +169 -0
  423. package/interactions/hit-test.d.ts +112 -0
  424. package/interactions/hit-test.d.ts.map +1 -0
  425. package/interactions/hit-test.js +291 -0
  426. package/interactions/index.d.ts +31 -0
  427. package/interactions/index.d.ts.map +1 -0
  428. package/interactions/index.js +24 -0
  429. package/interactions/share-state.d.ts +36 -0
  430. package/interactions/share-state.d.ts.map +1 -0
  431. package/interactions/share-state.js +123 -0
  432. package/map/feature-service-adapter.d.ts +138 -0
  433. package/map/feature-service-adapter.d.ts.map +1 -0
  434. package/map/feature-service-adapter.js +279 -0
  435. package/map/honua-map.d.ts +203 -0
  436. package/map/honua-map.d.ts.map +1 -0
  437. package/map/honua-map.js +347 -0
  438. package/map/index.d.ts +27 -0
  439. package/map/index.d.ts.map +1 -0
  440. package/map/index.js +22 -0
  441. package/map/maplibre-target.d.ts +103 -0
  442. package/map/maplibre-target.d.ts.map +1 -0
  443. package/map/maplibre-target.js +164 -0
  444. package/map/webmap-maplibre.d.ts +60 -0
  445. package/map/webmap-maplibre.d.ts.map +1 -0
  446. package/map/webmap-maplibre.js +212 -0
  447. package/package.json +37 -0
  448. package/react/context.d.ts +32 -0
  449. package/react/context.d.ts.map +1 -0
  450. package/react/context.js +19 -0
  451. package/react/honua-layer.d.ts +35 -0
  452. package/react/honua-layer.d.ts.map +1 -0
  453. package/react/honua-layer.js +47 -0
  454. package/react/honua-map.d.ts +83 -0
  455. package/react/honua-map.d.ts.map +1 -0
  456. package/react/honua-map.js +109 -0
  457. package/react/honua-popup.d.ts +26 -0
  458. package/react/honua-popup.d.ts.map +1 -0
  459. package/react/honua-popup.js +34 -0
  460. package/react/hooks.d.ts +127 -0
  461. package/react/hooks.d.ts.map +1 -0
  462. package/react/hooks.js +206 -0
  463. package/react/index.d.ts +42 -0
  464. package/react/index.d.ts.map +1 -0
  465. package/react/index.js +34 -0
  466. package/react/provider.d.ts +36 -0
  467. package/react/provider.d.ts.map +1 -0
  468. package/react/provider.js +35 -0
  469. package/react/query-cache.d.ts +76 -0
  470. package/react/query-cache.d.ts.map +1 -0
  471. package/react/query-cache.js +188 -0
  472. package/runtime/diff.d.ts +31 -0
  473. package/runtime/diff.d.ts.map +1 -0
  474. package/runtime/diff.js +143 -0
  475. package/runtime/errors.d.ts +40 -0
  476. package/runtime/errors.d.ts.map +1 -0
  477. package/runtime/errors.js +35 -0
  478. package/runtime/index.d.ts +59 -0
  479. package/runtime/index.d.ts.map +1 -0
  480. package/runtime/index.js +43 -0
  481. package/runtime/legend.d.ts +23 -0
  482. package/runtime/legend.d.ts.map +1 -0
  483. package/runtime/legend.js +38 -0
  484. package/runtime/load-package.d.ts +125 -0
  485. package/runtime/load-package.d.ts.map +1 -0
  486. package/runtime/load-package.js +264 -0
  487. package/runtime/map-package-fetch.d.ts +107 -0
  488. package/runtime/map-package-fetch.d.ts.map +1 -0
  489. package/runtime/map-package-fetch.js +336 -0
  490. package/runtime/map-package-realtime.d.ts +169 -0
  491. package/runtime/map-package-realtime.d.ts.map +1 -0
  492. package/runtime/map-package-realtime.js +350 -0
  493. package/runtime/map-package-validation.d.ts +43 -0
  494. package/runtime/map-package-validation.d.ts.map +1 -0
  495. package/runtime/map-package-validation.js +269 -0
  496. package/runtime/map-package-watch.d.ts +78 -0
  497. package/runtime/map-package-watch.d.ts.map +1 -0
  498. package/runtime/map-package-watch.js +695 -0
  499. package/runtime/map-package.d.ts +167 -0
  500. package/runtime/map-package.d.ts.map +1 -0
  501. package/runtime/map-package.js +15 -0
  502. package/runtime/ogc-styles.d.ts +110 -0
  503. package/runtime/ogc-styles.d.ts.map +1 -0
  504. package/runtime/ogc-styles.js +195 -0
  505. package/runtime/popups.d.ts +62 -0
  506. package/runtime/popups.d.ts.map +1 -0
  507. package/runtime/popups.js +95 -0
  508. package/runtime/query-tiles.d.ts +217 -0
  509. package/runtime/query-tiles.d.ts.map +1 -0
  510. package/runtime/query-tiles.js +801 -0
  511. package/runtime/runtime.d.ts +243 -0
  512. package/runtime/runtime.d.ts.map +1 -0
  513. package/runtime/runtime.js +1147 -0
  514. package/runtime/source-bridge.d.ts +99 -0
  515. package/runtime/source-bridge.d.ts.map +1 -0
  516. package/runtime/source-bridge.js +401 -0
  517. package/runtime/style-compose.d.ts +46 -0
  518. package/runtime/style-compose.d.ts.map +1 -0
  519. package/runtime/style-compose.js +144 -0
  520. package/runtime/style-interactions.d.ts +141 -0
  521. package/runtime/style-interactions.d.ts.map +1 -0
  522. package/runtime/style-interactions.js +574 -0
  523. package/runtime/style-spec-validation.d.ts +23 -0
  524. package/runtime/style-spec-validation.d.ts.map +1 -0
  525. package/runtime/style-spec-validation.js +357 -0
  526. package/studio/capability-manifest.d.ts +285 -0
  527. package/studio/capability-manifest.d.ts.map +1 -0
  528. package/studio/capability-manifest.js +59 -0
  529. package/studio/chart-spec.d.ts +85 -0
  530. package/studio/chart-spec.d.ts.map +1 -0
  531. package/studio/chart-spec.js +106 -0
  532. package/studio/index.d.ts +34 -0
  533. package/studio/index.d.ts.map +1 -0
  534. package/studio/index.js +27 -0
  535. package/studio/provenance.d.ts +131 -0
  536. package/studio/provenance.d.ts.map +1 -0
  537. package/studio/provenance.js +39 -0
  538. package/studio/publish.d.ts +64 -0
  539. package/studio/publish.d.ts.map +1 -0
  540. package/studio/publish.js +13 -0
  541. package/studio/types.d.ts +278 -0
  542. package/studio/types.d.ts.map +1 -0
  543. package/studio/types.js +71 -0
  544. package/studio/validate.d.ts +45 -0
  545. package/studio/validate.d.ts.map +1 -0
  546. package/studio/validate.js +255 -0
  547. package/studio/validation.d.ts +112 -0
  548. package/studio/validation.d.ts.map +1 -0
  549. package/studio/validation.js +42 -0
  550. package/style/factory.d.ts +30 -0
  551. package/style/factory.d.ts.map +1 -0
  552. package/style/factory.js +61 -0
  553. package/style/index.d.ts +25 -0
  554. package/style/index.d.ts.map +1 -0
  555. package/style/index.js +24 -0
  556. package/style/specification.d.ts +203 -0
  557. package/style/specification.d.ts.map +1 -0
  558. package/style/specification.js +178 -0
  559. package/style/wms-wmts-resolvers.d.ts +38 -0
  560. package/style/wms-wmts-resolvers.d.ts.map +1 -0
  561. package/style/wms-wmts-resolvers.js +92 -0
  562. package/webmap/contract.d.ts +28 -0
  563. package/webmap/contract.d.ts.map +1 -0
  564. package/webmap/contract.js +130 -0
  565. package/webmap/convert-basemap.d.ts +17 -0
  566. package/webmap/convert-basemap.d.ts.map +1 -0
  567. package/webmap/convert-basemap.js +78 -0
  568. package/webmap/convert-extent.d.ts +17 -0
  569. package/webmap/convert-extent.d.ts.map +1 -0
  570. package/webmap/convert-extent.js +114 -0
  571. package/webmap/convert-label.d.ts +13 -0
  572. package/webmap/convert-label.d.ts.map +1 -0
  573. package/webmap/convert-label.js +125 -0
  574. package/webmap/convert-layer.d.ts +22 -0
  575. package/webmap/convert-layer.d.ts.map +1 -0
  576. package/webmap/convert-layer.js +181 -0
  577. package/webmap/convert-popup.d.ts +34 -0
  578. package/webmap/convert-popup.d.ts.map +1 -0
  579. package/webmap/convert-popup.js +68 -0
  580. package/webmap/convert-renderer.d.ts +17 -0
  581. package/webmap/convert-renderer.d.ts.map +1 -0
  582. package/webmap/convert-renderer.js +161 -0
  583. package/webmap/convert-symbol.d.ts +17 -0
  584. package/webmap/convert-symbol.d.ts.map +1 -0
  585. package/webmap/convert-symbol.js +122 -0
  586. package/webmap/index.d.ts +44 -0
  587. package/webmap/index.d.ts.map +1 -0
  588. package/webmap/index.js +33 -0
  589. package/webmap/parse.d.ts +25 -0
  590. package/webmap/parse.d.ts.map +1 -0
  591. package/webmap/parse.js +83 -0
  592. package/webmap/types.d.ts +264 -0
  593. package/webmap/types.d.ts.map +1 -0
  594. package/webmap/types.js +13 -0
  595. package/webmap/warnings.d.ts +30 -0
  596. package/webmap/warnings.d.ts.map +1 -0
  597. package/webmap/warnings.js +37 -0
@@ -0,0 +1,665 @@
1
+ /**
2
+ * Shared client contract — canonical nouns that all protocol adapters
3
+ * (`HonuaFeatureLayer`, `HonuaMapService`, `HonuaOgcFeatureCollection`, plus
4
+ * future WFS / WMS / OData adapters) must speak. The contract is documented
5
+ * in `docs/shared-client-contract.md`; capability coverage by protocol is
6
+ * documented in `docs/protocol-capability-matrix.md`.
7
+ *
8
+ * The runtime classes in `src/core/surfaces.ts` are not replaced — they
9
+ * remain the implementation. The contract here wraps their request /
10
+ * response shapes (`QueryFeaturesRequest`, `OgcItemsRequest`,
11
+ * `HonuaTypedQueryResponse`, `HonuaOgcFeatureCollectionResponse`) so that
12
+ * cross-protocol code can speak one vocabulary without re-litigating the
13
+ * surface in every downstream ticket.
14
+ *
15
+ * @module
16
+ */
17
+ import type { HonuaClient } from "../core/client.js";
18
+ import type { SpatialFilter } from "../core/spatial-filter.js";
19
+ import type { HonuaExtent, HonuaFieldInfo, HonuaServerCompatibilityFeature, HonuaTypedFeature } from "../core/types.js";
20
+ /**
21
+ * Canonical protocol identifiers. Spatial / tabular protocols served
22
+ * behind a `Source` come first, with the shared canonical gRPC
23
+ * FeatureService transport leading the list. Render-only OGC tile and map
24
+ * adapters (reachable through `Source.protocol()`), then OGC Records and
25
+ * STAC catalog/search adapters, the WFS / WMS / WMTS / OData adapters, and
26
+ * finally the
27
+ * MapLibre-native sources composed alongside protocol sources by
28
+ * `HonuaMap` and `MapBinding`.
29
+ *
30
+ * The five GeoServices identifiers correspond to the five Esri service
31
+ * types Honua Server publishes: FeatureServer, MapServer, ImageServer,
32
+ * Geometry Service, and GP Service. Geometry and GP services do not host
33
+ * features, so their `Source` instances expose only the typed `protocol()`
34
+ * escape hatch — every cross-protocol request shape goes through one
35
+ * vocabulary even when the underlying protocol is utility-only.
36
+ */
37
+ export type Protocol = "grpc" | "geoservices-feature-service" | "geoservices-map-service" | "geoservices-image-service" | "geoservices-geometry-service" | "geoservices-gp-service" | "ogc-features" | "ogc-tiles" | "ogc-maps" | "ogc-records" | "stac" | "wfs" | "wms" | "wmts" | "odata" | "maplibre-vector" | "maplibre-raster" | "maplibre-geojson";
38
+ /** All protocol identifiers, in declaration order. */
39
+ export declare const PROTOCOLS: readonly Protocol[];
40
+ /**
41
+ * Coarse-grained protocol capabilities negotiated across the canonical
42
+ * `Source` methods and the typed `Source.adapter()` escape hatch. This
43
+ * ticket intentionally standardizes only the query-family subset on
44
+ * `Source`; capabilities such as `render`, `tiles`, `sql`, and
45
+ * `queryObjectIds` stay in the shared registry so downstream adapter
46
+ * tickets can reuse one vocabulary without widening the top-level API.
47
+ *
48
+ * Keep this list aligned with `docs/protocol-capability-matrix.md`.
49
+ */
50
+ export type Capability = "query" | "queryAggregate" | "spatialAggregate" | "queryExtent" | "queryObjectIds" | "queryRelated" | "applyEdits" | "attachments" | "render" | "tiles" | "sql" | "stream" | "pbf" | "connect" | "image" | "geometry" | "geoprocess" | "processes";
51
+ /** All capability identifiers, in declaration order. */
52
+ export declare const CAPABILITIES: readonly Capability[];
53
+ /**
54
+ * Per-source capability registry. Set membership = first-party support
55
+ * (the adapter can fulfill the capability without client-side fallback).
56
+ * Capabilities that require a client-side fallback should be omitted from
57
+ * the set; callers either swap to a different protocol or opt into a
58
+ * `degraded: true` policy at the `ExplorationContext` level.
59
+ */
60
+ export type Capabilities = ReadonlySet<Capability>;
61
+ /**
62
+ * Build a `Capabilities` set from a readonly array. Provided as a tiny
63
+ * helper so callers do not need to import `Set` literals at every adapter
64
+ * site.
65
+ */
66
+ export declare function capabilities(values: readonly Capability[]): Capabilities;
67
+ /**
68
+ * Compute the **weakest** (intersected) capability set across one or
69
+ * more participating sources / descriptors. This is the canonical helper
70
+ * for cross-protocol capability negotiation in a mixed-source
71
+ * composition (`#22`): a composition supports a capability only when
72
+ * **every** participating source supports it.
73
+ *
74
+ * Promising a capability the weakest source lacks is the worst possible
75
+ * mixed-source failure mode (silent wrong result), so consumers should
76
+ * always intersect before fanning a query out to a heterogeneous set.
77
+ *
78
+ * Accepts anything with a `capabilities` field (live `Source` instances
79
+ * or plain `SourceDescriptor`s). Empty input returns an empty set.
80
+ *
81
+ * For per-operation reasoning across a heterogeneous mix, partition
82
+ * sources first (e.g., feature sources only) and intersect on the
83
+ * partition; intersecting a render-only source with a feature source
84
+ * yields the empty set, which is honest but rarely actionable on its
85
+ * own.
86
+ */
87
+ export declare function intersectCapabilities(participants: ReadonlyArray<{
88
+ readonly capabilities: Capabilities;
89
+ }>): Capabilities;
90
+ /**
91
+ * Companion of {@link intersectCapabilities}: the union (best-case)
92
+ * capability set across participants. Useful for documenting what
93
+ * capability fan-out under `degraded` policy could reach if every
94
+ * source were queried independently — never use this to gate a single
95
+ * fan-out call (that needs the intersection).
96
+ */
97
+ export declare function unionCapabilities(participants: ReadonlyArray<{
98
+ readonly capabilities: Capabilities;
99
+ }>): Capabilities;
100
+ /**
101
+ * Default capability sets keyed by protocol. Callers that need a narrower
102
+ * surface for a specific source must intersect the default set themselves
103
+ * and pass the result on `SourceDescriptor.capabilities`; the built-in
104
+ * adapter constructors do not read service metadata today.
105
+ *
106
+ * The matrix here mirrors the one in `docs/protocol-capability-matrix.md`.
107
+ * Update both together.
108
+ */
109
+ export declare const PROTOCOL_DEFAULT_CAPABILITIES: Readonly<Record<Protocol, Capabilities>>;
110
+ export type SourceId = string;
111
+ export type DatasetId = string;
112
+ export type FeatureId = number | string;
113
+ /**
114
+ * Protocol-specific endpoint information. Field-compatible with the server
115
+ * `SourceBinding.locator` shape documented in
116
+ * `docs/source-binding-alignment.md` (a Honua SDK `SourceDescriptor` may be
117
+ * exported into a server `SourceBinding` without re-shaping the locator).
118
+ */
119
+ export interface SourceLocator {
120
+ /** Fully qualified URL to the protocol endpoint. */
121
+ url: string;
122
+ /** GeoServices service identifier (FeatureServer / MapServer / ImageServer / Geometry / GP). */
123
+ serviceId?: string;
124
+ /** GeoServices layer identifier within the service. */
125
+ layerId?: number;
126
+ /** OGC API Features / Tiles / Maps collection identifier, or Records catalog id. */
127
+ collectionId?: string | number;
128
+ /** OGC API Tiles tile-matrix-set identifier (e.g. `WebMercatorQuad`). */
129
+ tileMatrixSetId?: string;
130
+ /** OGC API Maps / Tiles style identifier for styled-output endpoints. */
131
+ styleId?: string;
132
+ /** WFS / WMS type-name identifier. */
133
+ typeName?: string;
134
+ /**
135
+ * WFS feature namespace URI bound to the prefix in `typeName`. Required for
136
+ * WFS-T `applyEdits` when `typeName` carries a namespace prefix
137
+ * (e.g. `parcels:lot`) — the prefix is declared on the
138
+ * `<wfs:Transaction>` root with this URI so the per-handle feature
139
+ * element resolves to the schema element the server expects. The
140
+ * namespace URI typically appears on the `<wfs:WFS_Capabilities>` root
141
+ * (`xmlns:<prefix>=…`); record it on the descriptor so applyEdits does
142
+ * not have to fetch capabilities synchronously.
143
+ */
144
+ featureNamespace?: string;
145
+ /**
146
+ * WFS coordinate reference system for the layer's native geometry (e.g.
147
+ * `EPSG:4326`, a numeric WKID, or an OGC URN like
148
+ * `urn:ogc:def:crs:EPSG::4326`). When set, WFS-T `applyEdits` emits it as the
149
+ * `srsName` attribute on `<wfs:Insert>` / `<wfs:Update>` geometries. Servers
150
+ * that require `srsName` on transaction geometry, or whose native CRS differs
151
+ * from the unqualified default, otherwise reject or mis-place the written
152
+ * feature.
153
+ */
154
+ srsName?: string | number;
155
+ /** OData entity-set identifier. */
156
+ entitySet?: string;
157
+ /** GP Service task identifier (for `geoservices-gp-service`). */
158
+ taskName?: string;
159
+ }
160
+ /** Optional schema description; mirrors `HonuaLayerMetadata.fields`. */
161
+ export interface SourceSchema {
162
+ fields?: readonly HonuaFieldInfo[];
163
+ primaryKey?: string;
164
+ /** Hint that the source's records carry temporal validity. */
165
+ timeField?: string;
166
+ }
167
+ export interface SourceFreshnessContract {
168
+ readonly mode: "snapshot" | "watermark" | "cursor" | "delta" | "realtime";
169
+ readonly ttlMs?: number;
170
+ readonly watermarkField?: string;
171
+ readonly cursorField?: string;
172
+ readonly updatedAtField?: string;
173
+ }
174
+ export interface SourceHistogramCapabilityMetadata {
175
+ readonly fields?: readonly string[];
176
+ readonly maxBins?: number;
177
+ }
178
+ export interface SourceTimeSeriesCapabilityMetadata {
179
+ readonly fields?: readonly string[];
180
+ readonly intervals?: readonly AggregationTimeIntervalUnit[];
181
+ }
182
+ export interface SourceAnalyticsCapabilities {
183
+ readonly histogram?: boolean | SourceHistogramCapabilityMetadata;
184
+ readonly timeSeries?: boolean | SourceTimeSeriesCapabilityMetadata;
185
+ readonly freshness?: SourceFreshnessContract;
186
+ }
187
+ /**
188
+ * Canonical descriptor for one protocol-backed data source. Carries
189
+ * everything required to construct a `Source`, negotiate capabilities, and
190
+ * project the source onto a server `SourceBinding`.
191
+ */
192
+ export interface SourceDescriptor {
193
+ id: SourceId;
194
+ protocol: Protocol;
195
+ locator: SourceLocator;
196
+ capabilities: Capabilities;
197
+ schema?: SourceSchema;
198
+ analytics?: SourceAnalyticsCapabilities;
199
+ attribution?: string;
200
+ }
201
+ export interface PaginationSpec {
202
+ /** Zero-based offset of the first record. */
203
+ offset?: number;
204
+ /** Maximum records per page. Implementation may clamp. */
205
+ limit?: number;
206
+ }
207
+ export interface SortSpec {
208
+ field: string;
209
+ direction?: "asc" | "desc";
210
+ }
211
+ export type AggregationFn = "count" | "sum" | "avg" | "min" | "max" | "stddev" | "var";
212
+ export type AggregationTimeIntervalUnit = "minute" | "hour" | "day" | "week" | "month" | "quarter" | "year";
213
+ export interface AggregationHistogramBucketAliases {
214
+ /** Bucket index or id emitted by a server histogram response. */
215
+ bucket?: string;
216
+ /** Inclusive lower bucket boundary. */
217
+ min?: string;
218
+ /** Upper bucket boundary. */
219
+ max?: string;
220
+ /** Optional display label emitted by the server. */
221
+ label?: string;
222
+ }
223
+ export interface AggregationHistogramBucketSpec {
224
+ readonly field: string;
225
+ readonly bins: number;
226
+ readonly min?: number;
227
+ readonly max?: number;
228
+ readonly boundary?: "inclusive-exclusive" | "inclusive";
229
+ readonly aliases?: AggregationHistogramBucketAliases;
230
+ }
231
+ export interface AggregationTimeIntervalSpec {
232
+ readonly unit: AggregationTimeIntervalUnit;
233
+ readonly step?: number;
234
+ readonly timezone?: string;
235
+ }
236
+ export interface AggregationTimeSeriesAliases {
237
+ /** Inclusive interval start emitted by a server time-series response. */
238
+ start?: string;
239
+ /** Exclusive interval end emitted by a server time-series response. */
240
+ end?: string;
241
+ /** Optional display label emitted by the server. */
242
+ label?: string;
243
+ }
244
+ export interface AggregationTimeSeriesSpec {
245
+ readonly field: string;
246
+ readonly interval: AggregationTimeIntervalSpec;
247
+ readonly start?: string | number;
248
+ readonly end?: string | number;
249
+ readonly aliases?: AggregationTimeSeriesAliases;
250
+ }
251
+ export interface AggregationSpec {
252
+ /** Optional grouping fields. Empty / omitted = single-row aggregate. */
253
+ groupBy?: readonly string[];
254
+ /** Aggregation expressions. */
255
+ metrics: readonly AggregationMetric[];
256
+ /** Optional numeric bucketization intent for server-side histograms. */
257
+ histogram?: AggregationHistogramBucketSpec;
258
+ /** Optional temporal interval intent for server-side time-series widgets. */
259
+ timeSeries?: AggregationTimeSeriesSpec;
260
+ }
261
+ export interface AggregationMetric {
262
+ fn: AggregationFn;
263
+ field: string;
264
+ alias?: string;
265
+ }
266
+ /**
267
+ * Protocol-neutral query intent. `Source.query()` adapters translate this
268
+ * into a `QueryFeaturesRequest`, `MapLayerQueryRequest`, `OgcItemsRequest`,
269
+ * or the corresponding WFS / OData request.
270
+ *
271
+ * `spatialFilter` is a `SpatialFilter` produced by the spatial-filter builders
272
+ * (`envelope`, `point`, `polygon`, `buffer`, …), not an inline literal.
273
+ *
274
+ * @example
275
+ * ```ts
276
+ * import { envelope } from "@honua/sdk-js";
277
+ *
278
+ * const query: Query = {
279
+ * where: "STATUS = 'ACTIVE'",
280
+ * outFields: ["OBJECTID", "NAME"],
281
+ * spatialFilter: envelope(-158.5, 21.2, -157.6, 21.7),
282
+ * orderBy: [{ field: "REPORTED_AT", direction: "desc" }],
283
+ * pagination: { limit: 500 },
284
+ * returnGeometry: true,
285
+ * };
286
+ * ```
287
+ */
288
+ export interface Query<_T = Record<string, unknown>> {
289
+ /** Logical filter expression. SQL-92 WHERE for GeoServices, CQL2 for OGC. */
290
+ where?: string;
291
+ /** Spatial constraint. Reuses `core/spatial-filter.ts`. */
292
+ spatialFilter?: SpatialFilter;
293
+ /** Subset of fields to return. Adapters default to all when omitted. */
294
+ outFields?: readonly string[];
295
+ /** Sort order. */
296
+ orderBy?: readonly SortSpec[];
297
+ /** Pagination. */
298
+ pagination?: PaginationSpec;
299
+ /** Aggregation request; if present the `Result` contains aggregate rows. */
300
+ aggregation?: AggregationSpec;
301
+ /** Whether the result envelope should include geometry. */
302
+ returnGeometry?: boolean;
303
+ /** Output spatial reference (WKID, "auto", or full reference object). */
304
+ outSr?: string | number;
305
+ /** Caller-supplied cancellation. */
306
+ signal?: AbortSignal;
307
+ }
308
+ /**
309
+ * Reasons that a `Source` may have fulfilled a `Query` with a degraded
310
+ * strategy. Surfaced in `Result.degraded`. Downstream views should check
311
+ * this field before reporting numbers as authoritative.
312
+ *
313
+ * `sourceId` is populated by mixed-source consumers (`#22`) so a fan-out
314
+ * across multiple sources can attribute each degradation back to the
315
+ * exact source that triggered it without parsing the human-readable
316
+ * `reason`.
317
+ */
318
+ export interface DegradedReason {
319
+ /** The capability that was missing or partially supported. */
320
+ capability: Capability;
321
+ /** Human-readable explanation. */
322
+ reason: string;
323
+ /** Which protocol the degradation was relative to. */
324
+ protocol?: Protocol;
325
+ /**
326
+ * Optional id of the source that emitted this degradation. Set by the
327
+ * adapter when the degradation can be attributed to a specific source
328
+ * (the common case once mixed-source compositions are in play).
329
+ */
330
+ sourceId?: SourceId;
331
+ }
332
+ /**
333
+ * Unified query result envelope. Wraps (does not replace)
334
+ * `HonuaTypedQueryResponse<T>` and `HonuaOgcFeatureCollectionResponse`;
335
+ * adapters fill the optional fields that their underlying response carries
336
+ * and leave the rest undefined.
337
+ *
338
+ * @example
339
+ * ```ts
340
+ * const result: Result<{ name: string }> = await source.query({ where: "1=1" });
341
+ * for (const feature of result.features) {
342
+ * console.log(feature.attributes.name, feature.geometry?.type);
343
+ * }
344
+ * if (result.exceededTransferLimit) {
345
+ * // re-issue with pagination.offset or use source.queryAll() to drain
346
+ * }
347
+ * ```
348
+ */
349
+ export interface Result<T = Record<string, unknown>> {
350
+ /** Returned features. Empty array (not undefined) when nothing matched. */
351
+ features: readonly HonuaTypedFeature<T>[];
352
+ /** True if the server signalled that more records exist than were returned. */
353
+ exceededTransferLimit: boolean;
354
+ /** Total count when known (counts request, OGC `numberMatched`). */
355
+ totalCount?: number;
356
+ /** Aggregated rows when the query carried an `aggregation` spec. */
357
+ aggregateRows?: ReadonlyArray<Record<string, unknown>>;
358
+ /** Spatial extent of the returned features (extent-only query response). */
359
+ extent?: HonuaExtent;
360
+ /** Field schema as returned by the protocol, when the response carried one. */
361
+ fields?: readonly HonuaFieldInfo[];
362
+ /** Degradation flags emitted by the source while serving this query. */
363
+ degraded?: readonly DegradedReason[];
364
+ }
365
+ /**
366
+ * Canonical feature shape used by edit envelopes. Mirrors the canonical
367
+ * `HonuaTypedFeature<T>` (attributes + optional geometry) so the same value
368
+ * an adapter returns from `query()` may be fed back into `applyEdits()`.
369
+ */
370
+ export interface CanonicalFeature<T = Record<string, unknown>> {
371
+ /** Optional row identity. Required for updates and deletes. */
372
+ id?: FeatureId;
373
+ attributes: T;
374
+ geometry?: Record<string, unknown> | null;
375
+ }
376
+ /**
377
+ * Single-source edit envelope. Adapters that do not advertise `applyEdits`
378
+ * throw `HonuaCapabilityNotSupportedError` rather than dropping records.
379
+ */
380
+ export interface EditEnvelope<T = Record<string, unknown>> {
381
+ adds?: ReadonlyArray<CanonicalFeature<T>>;
382
+ updates?: ReadonlyArray<CanonicalFeature<T>>;
383
+ deletes?: ReadonlyArray<FeatureId>;
384
+ /** When true (and the protocol honors it) the edit batch is atomic. */
385
+ rollbackOnFailure?: boolean;
386
+ /** Caller-supplied cancellation. */
387
+ signal?: AbortSignal;
388
+ }
389
+ /** Per-feature edit outcome. */
390
+ export interface EditOutcome {
391
+ id?: FeatureId;
392
+ success: boolean;
393
+ error?: {
394
+ code: number;
395
+ description: string;
396
+ };
397
+ }
398
+ /** Canonical edit response. Buckets mirror `EditEnvelope`. */
399
+ export interface EditResult {
400
+ added: ReadonlyArray<EditOutcome>;
401
+ updated: ReadonlyArray<EditOutcome>;
402
+ deleted: ReadonlyArray<EditOutcome>;
403
+ /** Degradation flags for partial-success or fallback paths. */
404
+ degraded?: readonly DegradedReason[];
405
+ }
406
+ /**
407
+ * Canonical related-records request. The `relationshipId` is protocol-specific
408
+ * (GeoServices uses numeric ids; OData uses navigation property names) so
409
+ * adapters that lack relationships throw `HonuaCapabilityNotSupportedError`
410
+ * rather than silently dropping the request.
411
+ */
412
+ export interface RelatedQuery {
413
+ relationshipId: number;
414
+ /** Source feature ids whose related records to return. */
415
+ sourceIds: ReadonlyArray<FeatureId>;
416
+ where?: string;
417
+ outFields?: readonly string[];
418
+ returnGeometry?: boolean;
419
+ signal?: AbortSignal;
420
+ }
421
+ /** One source feature plus its related records. */
422
+ export interface RelatedGroup<T = Record<string, unknown>> {
423
+ sourceId: FeatureId;
424
+ features: ReadonlyArray<HonuaTypedFeature<T>>;
425
+ }
426
+ /** Canonical related-records response. */
427
+ export interface RelatedResult<T = Record<string, unknown>> {
428
+ groups: ReadonlyArray<RelatedGroup<T>>;
429
+ fields?: readonly HonuaFieldInfo[];
430
+ degraded?: readonly DegradedReason[];
431
+ }
432
+ /** Metadata for a single attachment on a feature. */
433
+ export interface AttachmentInfo {
434
+ id: FeatureId;
435
+ parentId: FeatureId;
436
+ name?: string;
437
+ contentType?: string;
438
+ size?: number;
439
+ }
440
+ /** Canonical attachment-query envelope. */
441
+ export interface AttachmentQuery {
442
+ /** Optional caller-supplied parent ids. Empty = all matching `where`. */
443
+ parentIds?: ReadonlyArray<FeatureId>;
444
+ where?: string;
445
+ signal?: AbortSignal;
446
+ }
447
+ /** Group of attachments for a single parent feature. */
448
+ export interface AttachmentGroup {
449
+ parentId: FeatureId;
450
+ attachments: ReadonlyArray<AttachmentInfo>;
451
+ }
452
+ /** Add-attachment request. `attachment` accepts `Blob`, `File`, or string. */
453
+ export interface AttachmentAdd {
454
+ parentId: FeatureId;
455
+ attachment: Blob | File | string;
456
+ name?: string;
457
+ contentType?: string;
458
+ signal?: AbortSignal;
459
+ }
460
+ /** Update an existing attachment in place. */
461
+ export interface AttachmentUpdate extends AttachmentAdd {
462
+ attachmentId: FeatureId;
463
+ }
464
+ /** Delete one or more attachments from a parent feature. */
465
+ export interface AttachmentDelete {
466
+ parentId: FeatureId;
467
+ attachmentIds: ReadonlyArray<FeatureId>;
468
+ signal?: AbortSignal;
469
+ }
470
+ /** Outcome envelope for add / update / delete operations. */
471
+ export interface AttachmentEditOutcome {
472
+ parentId?: FeatureId;
473
+ attachmentId?: FeatureId;
474
+ success: boolean;
475
+ error?: {
476
+ code: number;
477
+ description: string;
478
+ };
479
+ }
480
+ /**
481
+ * Namespace returned by `Source.attachments`. Adapters that do not advertise
482
+ * the `attachments` capability throw `HonuaCapabilityNotSupportedError`
483
+ * from each method rather than ship a `null`-ish placeholder.
484
+ */
485
+ export interface AttachmentApi {
486
+ query(request?: AttachmentQuery): Promise<ReadonlyArray<AttachmentGroup>>;
487
+ list(parentId: FeatureId, options?: {
488
+ signal?: AbortSignal;
489
+ }): Promise<ReadonlyArray<AttachmentInfo>>;
490
+ add(request: AttachmentAdd): Promise<AttachmentEditOutcome>;
491
+ update(request: AttachmentUpdate): Promise<AttachmentEditOutcome>;
492
+ delete(request: AttachmentDelete): Promise<ReadonlyArray<AttachmentEditOutcome>>;
493
+ }
494
+ /**
495
+ * Formalizes the `HonuaMap.addSource` / `addLayer` binding. A `MapBinding`
496
+ * names the source that backs one or more rendering layers and carries an
497
+ * optional partial style block. `MapBinding` arrays serialize to
498
+ * `MapPackage.sourceBindings` + `MapPackage.mapSpec` on the server side.
499
+ */
500
+ export interface MapBinding {
501
+ /** ID of the `Source` whose data backs the layers. */
502
+ sourceId: SourceId;
503
+ /** Layer ids consuming the source. */
504
+ layerIds: readonly string[];
505
+ /** Style overrides; merged with the source-driven defaults. */
506
+ style?: Record<string, unknown>;
507
+ /** Optional minimum zoom for visibility (forwarded to layer specs). */
508
+ minzoom?: number;
509
+ /** Optional maximum zoom for visibility (forwarded to layer specs). */
510
+ maxzoom?: number;
511
+ }
512
+ /**
513
+ * Discriminated union of the runtime adapter classes that implement
514
+ * `Source`. `Source.protocol()` (and the legacy `Source.adapter()` alias)
515
+ * narrows the typed escape hatch to one of these without forcing callers
516
+ * to cast through `unknown`.
517
+ */
518
+ export type AdapterKind = "geoservices-feature-service" | "geoservices-map-service" | "geoservices-map-layer" | "geoservices-image-service" | "geoservices-geometry-service" | "geoservices-gp-service" | "ogc-features" | "ogc-tiles" | "ogc-maps" | "ogc-records" | "ogc-processes" | "stac" | "wfs" | "wms" | "wms-layer" | "wmts" | "wmts-layer" | "wmts-tileset" | "odata";
519
+ /**
520
+ * Compile-time map from `AdapterKind` → underlying class instance. Adapter
521
+ * tickets extend this map by augmenting the `AdapterTypeMap` interface in
522
+ * their own module so `Source.protocol("wfs")` returns the right type
523
+ * without a cast. The interface ships empty by design — built-in adapters
524
+ * augment it from `src/contract/source.ts`.
525
+ */
526
+ export interface AdapterTypeMap {
527
+ }
528
+ export type AdapterFor<K extends AdapterKind> = K extends keyof AdapterTypeMap ? AdapterTypeMap[K] : unknown;
529
+ /**
530
+ * Protocol-neutral data-source handle. Adapters returned by
531
+ * `Dataset.source()` implement this interface directly; the existing
532
+ * `HonuaFeatureLayer`, `HonuaMapService`, and `HonuaOgcFeatureCollection`
533
+ * classes are reachable through the typed `protocol()` escape hatch
534
+ * (alias `adapter()`).
535
+ *
536
+ * The canonical surface covers the query family plus edit / related /
537
+ * attachment operations. Operations that are protocol-specific (raw
538
+ * `where`, raw `outFields`, GeoServices `calculate` / `validateSQL` /
539
+ * `replica` etc.) live behind `protocol()` so the top-level API stays
540
+ * free of ArcGIS-typed structures.
541
+ *
542
+ * @example
543
+ * ```ts
544
+ * const parcels = dataset.source<{ NAME: string }>("parcels")!;
545
+ * const result = await parcels.queryAll({ where: "STATUS = 'ACTIVE'" });
546
+ * for await (const page of parcels.stream({ where: "1=1" })) {
547
+ * console.log(page.features.length);
548
+ * }
549
+ * const fs = parcels.protocol("geoservices-feature-service");
550
+ * await fs?.calculate({ where: "1=1", calcExpression: { field: "AREA", sqlExpression: "ST_Area(SHAPE)" } });
551
+ * ```
552
+ */
553
+ export interface Source<T = Record<string, unknown>> {
554
+ readonly descriptor: SourceDescriptor;
555
+ readonly capabilities: Capabilities;
556
+ /** Single-page query. */
557
+ query(request?: Query<T>): Promise<Result<T>>;
558
+ /** Drain all pages into a single result. Honors `Query.pagination.limit`. */
559
+ queryAll(request?: Query<T>): Promise<Result<T>>;
560
+ /** Server-side aggregation; falls back to client-side under `degraded` policy. */
561
+ queryAggregate(request: Query<T> & {
562
+ aggregation: AggregationSpec;
563
+ }): Promise<Result<T>>;
564
+ /** Extent of the records that match `request`. */
565
+ queryExtent(request?: Query<T>): Promise<{
566
+ extent: HonuaExtent | null;
567
+ count?: number;
568
+ }>;
569
+ /** Async-generator paging stream. */
570
+ stream(request?: Query<T>): AsyncGenerator<Result<T>, void, undefined>;
571
+ /** Object ids of the records matching `request`. */
572
+ queryObjectIds(request?: Query<T>): Promise<readonly FeatureId[]>;
573
+ /** Apply add / update / delete edits to the source. */
574
+ applyEdits(envelope: EditEnvelope<T>): Promise<EditResult>;
575
+ /** Pull related records for the addressed source ids. */
576
+ queryRelated<R = Record<string, unknown>>(request: RelatedQuery): Promise<RelatedResult<R>>;
577
+ /** Attachment operations namespace; methods throw if `attachments` is missing. */
578
+ readonly attachments: AttachmentApi;
579
+ /**
580
+ * Typed escape hatch to the underlying protocol-specific class. Use this
581
+ * when a caller needs raw protocol semantics (e.g. raw `where`, raw
582
+ * `outFields`, GeoServices `calculate` / `validateSQL` / replica /
583
+ * `queryBins` / `getEstimates`) that the canonical surface intentionally
584
+ * does not expose.
585
+ */
586
+ protocol<K extends AdapterKind>(kind: K): AdapterFor<K> | undefined;
587
+ /**
588
+ * Legacy alias of {@link Source.protocol}. Retained for callers written
589
+ * against the original ticket-23 surface; new code should prefer
590
+ * `protocol()` because the name reflects the design intent of
591
+ * protocol-namespaced escape hatches.
592
+ */
593
+ adapter<K extends AdapterKind>(kind: K): AdapterFor<K> | undefined;
594
+ }
595
+ /**
596
+ * Logical grouping of one or more sources sharing identity and (optionally)
597
+ * a field schema. `Dataset` is the canonical entry point: `createDataset`
598
+ * gates the compatibility check and caches it per `HonuaClient`.
599
+ *
600
+ * @example
601
+ * ```ts
602
+ * const dataset = createDataset({ id: "parcels", client, sources: [...] });
603
+ * if (!(await dataset.isCompatible())) throw new Error("server too old");
604
+ * for (const id of dataset.sourceIds()) {
605
+ * console.log(id, dataset.source(id)?.capabilities);
606
+ * }
607
+ * ```
608
+ */
609
+ export interface Dataset {
610
+ readonly id: DatasetId;
611
+ readonly client: HonuaClient;
612
+ readonly sourceDescriptors: ReadonlyArray<SourceDescriptor>;
613
+ /** Get a `Source` handle by id. Returns `undefined` if not registered. */
614
+ source<T = Record<string, unknown>>(id: SourceId): Source<T> | undefined;
615
+ /** Iterate registered source ids, in registration order. */
616
+ sourceIds(): readonly SourceId[];
617
+ /**
618
+ * Returns `true` when `client.checkCompatibility()` reported a supported
619
+ * server. The dataset caches the negotiation per `HonuaClient` instance.
620
+ */
621
+ isCompatible(): Promise<boolean>;
622
+ /** Server-feature gate that mirrors `HonuaClient.supportsFeature`. */
623
+ supportsFeature(feature: HonuaServerCompatibilityFeature): Promise<boolean>;
624
+ }
625
+ export type CapabilityPolicy = "strict" | "degraded";
626
+ /**
627
+ * Context passed to a `SourceResolver`. Carries the active `HonuaClient`
628
+ * and the dataset's capability policy so adapters can react to either.
629
+ */
630
+ export interface ResolveSourceContext {
631
+ readonly client: HonuaClient;
632
+ readonly capabilityPolicy: CapabilityPolicy;
633
+ }
634
+ /**
635
+ * Adapter factory invoked for descriptors the built-in resolvers cannot
636
+ * handle (today: `wfs`, `wms`, MapLibre-native sources). Downstream
637
+ * tickets register their adapters by passing one through
638
+ * `CreateDatasetOptions.resolveSource`.
639
+ */
640
+ export type SourceResolver = (descriptor: SourceDescriptor, ctx: ResolveSourceContext) => Source | undefined;
641
+ export interface CreateDatasetOptions {
642
+ id: DatasetId;
643
+ client: HonuaClient;
644
+ /** Source descriptors; `Source` instances are constructed lazily. */
645
+ sources: ReadonlyArray<SourceDescriptor>;
646
+ /**
647
+ * Capability policy. `"strict"` (default) refuses to construct a `Source`
648
+ * whose required capability is missing. `"degraded"` allows client-side
649
+ * fallback paths that report via `Result.degraded`.
650
+ */
651
+ capabilityPolicy?: CapabilityPolicy;
652
+ /**
653
+ * When `true`, skips the `client.checkCompatibility()` gate. Reserved for
654
+ * test fixtures and conformance suites; production code should leave this
655
+ * unset.
656
+ */
657
+ skipCompatibilityCheck?: boolean;
658
+ /**
659
+ * Resolver invoked for descriptors the built-in resolvers do not know how
660
+ * to handle. Built-in coverage includes GeoServices, OGC API
661
+ * Features/Tiles/Maps/Records, STAC, WFS, WMS, WMTS, and OData.
662
+ */
663
+ resolveSource?: SourceResolver;
664
+ }
665
+ //# sourceMappingURL=types.d.ts.map