@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,336 @@
1
+ /**
2
+ * Protocol-neutral request and response shapes for indexed spatial aggregation.
3
+ *
4
+ * This module is intentionally a contract surface only. It describes the
5
+ * request envelope SDKs send to a backend that can aggregate into indexed
6
+ * cells, and the response metadata apps need to build widgets and load
7
+ * progressively. The index model id is opaque so callers can work with H3,
8
+ * Quadbin, WebMercatorQuad, or a provider-specific grid without switching on
9
+ * one implementation.
10
+ *
11
+ * @module
12
+ */
13
+ import type { SpatialFilter } from "../core/spatial-filter.js";
14
+ import type { HonuaExtent } from "../core/types.js";
15
+ import type { AnalyticsSourceDescriptor } from "./analytics-sources.js";
16
+ import type { DegradedReason, SourceId } from "./types.js";
17
+ export declare const SPATIAL_AGGREGATION_SCHEMA_VERSION: "honua.spatial-aggregation.v1";
18
+ export declare const SPATIAL_AGGREGATION_METADATA_SCHEMA_VERSION: "honua.spatial-aggregation.metadata.v1";
19
+ export declare const SPATIAL_AGGREGATION_CAPABILITY: "spatialAggregate";
20
+ export declare const FEATURE_SERVER_H3_SPATIAL_AGGREGATION_INDEX_MODEL_ID: "h3";
21
+ export type SpatialAggregationSummaryKind = "category" | "histogram" | "range" | "count" | "sum" | "avg" | "min" | "max";
22
+ export type SpatialAggregationMetricKind = Extract<SpatialAggregationSummaryKind, "count" | "sum" | "avg" | "min" | "max">;
23
+ export type SpatialAggregationValueType = "number" | "string" | "boolean" | "date" | "unknown";
24
+ export type SpatialAggregationCellGeometry = "none" | "centroid" | "extent" | "boundary";
25
+ export type SpatialAggregationWidgetKind = "stat" | "category-list" | "histogram" | "range-list" | "grouped-table";
26
+ export type SpatialAggregationProgressStatus = "complete" | "partial" | "estimated" | "streaming";
27
+ export type SpatialAggregationProgressRefinement = "append" | "replace" | "refine";
28
+ export interface SpatialAggregationViewport {
29
+ readonly extent: HonuaExtent;
30
+ readonly zoom?: number;
31
+ readonly width?: number;
32
+ readonly height?: number;
33
+ readonly devicePixelRatio?: number;
34
+ }
35
+ export interface SpatialAggregationResolutionInput {
36
+ /** Map zoom that should drive backend resolution selection. */
37
+ readonly zoom?: number;
38
+ /** Backend-native index resolution. Its meaning is index-model specific. */
39
+ readonly indexResolution?: number;
40
+ /** Preferred number of cells for the returned page or viewport. */
41
+ readonly targetCellCount?: number;
42
+ /** Hard cap the backend should not exceed without paging/refinement. */
43
+ readonly maxCellCount?: number;
44
+ readonly strategy?: "backend-default" | "fit-viewport" | "fixed-index-resolution";
45
+ }
46
+ export interface SpatialAggregationIndexSelection {
47
+ /** Opaque backend-advertised id, for example "h3" or "quadbin". */
48
+ readonly modelId?: string;
49
+ readonly geometry?: SpatialAggregationCellGeometry;
50
+ readonly allowApproximate?: boolean;
51
+ }
52
+ export interface SpatialAggregationPageRequest {
53
+ readonly cursor?: string;
54
+ readonly limit?: number;
55
+ }
56
+ export interface SpatialAggregationInclude {
57
+ readonly cells?: boolean;
58
+ readonly totals?: boolean;
59
+ readonly emptyCells?: boolean;
60
+ readonly metadata?: boolean;
61
+ }
62
+ export interface SpatialAggregationRequest {
63
+ readonly schemaVersion?: typeof SPATIAL_AGGREGATION_SCHEMA_VERSION;
64
+ readonly requestId?: string;
65
+ readonly sourceId: SourceId;
66
+ readonly analyticsSource?: AnalyticsSourceDescriptor;
67
+ readonly where?: string;
68
+ readonly spatialFilter?: SpatialFilter;
69
+ readonly viewport?: SpatialAggregationViewport;
70
+ readonly resolution?: SpatialAggregationResolutionInput;
71
+ readonly index?: SpatialAggregationIndexSelection;
72
+ readonly summaries: readonly SpatialAggregationSummarySpec[];
73
+ readonly groupBy?: readonly SpatialAggregationGroupBySpec[];
74
+ readonly include?: SpatialAggregationInclude;
75
+ readonly page?: SpatialAggregationPageRequest;
76
+ readonly signal?: AbortSignal;
77
+ readonly metadata?: Readonly<Record<string, unknown>>;
78
+ }
79
+ export interface SpatialAggregationSummaryBase {
80
+ readonly id: string;
81
+ readonly title?: string;
82
+ readonly description?: string;
83
+ readonly field?: string;
84
+ readonly valueType?: SpatialAggregationValueType;
85
+ readonly unit?: string;
86
+ }
87
+ export interface SpatialAggregationCountSummarySpec extends SpatialAggregationSummaryBase {
88
+ readonly kind: "count";
89
+ readonly countDistinct?: boolean;
90
+ }
91
+ export interface SpatialAggregationCategorySummarySpec extends SpatialAggregationSummaryBase {
92
+ readonly kind: "category";
93
+ readonly field: string;
94
+ readonly limit?: number;
95
+ readonly includeOther?: boolean;
96
+ readonly orderBy?: "count-desc" | "count-asc" | "value-asc" | "value-desc";
97
+ }
98
+ export interface SpatialAggregationHistogramSummarySpec extends SpatialAggregationSummaryBase {
99
+ readonly kind: "histogram";
100
+ readonly field: string;
101
+ readonly bins?: number;
102
+ readonly min?: number;
103
+ readonly max?: number;
104
+ readonly method?: "equal-interval" | "quantile" | "custom";
105
+ }
106
+ export interface SpatialAggregationRangeSummarySpec extends SpatialAggregationSummaryBase {
107
+ readonly kind: "range";
108
+ readonly field: string;
109
+ readonly ranges: readonly SpatialAggregationRangeBucketSpec[];
110
+ }
111
+ export interface SpatialAggregationMetricSummarySpec extends SpatialAggregationSummaryBase {
112
+ readonly kind: Exclude<SpatialAggregationMetricKind, "count">;
113
+ readonly field: string;
114
+ }
115
+ export type SpatialAggregationSummarySpec = SpatialAggregationCountSummarySpec | SpatialAggregationCategorySummarySpec | SpatialAggregationHistogramSummarySpec | SpatialAggregationRangeSummarySpec | SpatialAggregationMetricSummarySpec;
116
+ export interface SpatialAggregationRangeBucketSpec {
117
+ readonly id: string;
118
+ readonly label?: string;
119
+ readonly min?: number;
120
+ readonly max?: number;
121
+ readonly includeMin?: boolean;
122
+ readonly includeMax?: boolean;
123
+ }
124
+ export interface SpatialAggregationGroupBySpec {
125
+ readonly field: string;
126
+ readonly alias?: string;
127
+ readonly label?: string;
128
+ readonly limit?: number;
129
+ readonly nullLabel?: string;
130
+ }
131
+ export interface SpatialAggregationIndexModelMetadata {
132
+ /** Opaque model id. Apps must not infer behavior from this string. */
133
+ readonly id: string;
134
+ readonly title?: string;
135
+ readonly description?: string;
136
+ readonly family?: string;
137
+ readonly cellIdEncoding?: "string" | "number" | "bigint" | "opaque";
138
+ readonly minResolution?: number;
139
+ readonly maxResolution?: number;
140
+ readonly supportedGeometry?: readonly SpatialAggregationCellGeometry[];
141
+ readonly hierarchy?: "parent-child" | "flat" | "unknown";
142
+ readonly coverage?: SpatialAggregationIndexCoverageMetadata;
143
+ readonly spatialReference?: HonuaExtent["spatialReference"];
144
+ }
145
+ export interface SpatialAggregationIndexCoverageMetadata {
146
+ readonly kind: "global" | "bounded" | "sparse" | "viewport";
147
+ readonly extent?: HonuaExtent;
148
+ readonly cellCount?: number;
149
+ readonly complete?: boolean;
150
+ }
151
+ export interface SpatialAggregationIndexState {
152
+ readonly model: SpatialAggregationIndexModelMetadata;
153
+ readonly resolution?: number;
154
+ readonly requestedResolution?: SpatialAggregationResolutionInput;
155
+ readonly hierarchy?: "parent-child" | "flat" | "unknown";
156
+ readonly coverage?: SpatialAggregationIndexCoverageMetadata;
157
+ readonly cellCount?: number;
158
+ readonly extent?: HonuaExtent;
159
+ }
160
+ export interface SpatialAggregationPageInfo {
161
+ readonly nextCursor?: string;
162
+ readonly loadedCellCount?: number;
163
+ readonly totalCellCount?: number;
164
+ }
165
+ export interface SpatialAggregationProgressiveState {
166
+ readonly status: SpatialAggregationProgressStatus;
167
+ readonly refinement?: SpatialAggregationProgressRefinement;
168
+ readonly nextCursor?: string;
169
+ readonly loadedCellCount?: number;
170
+ readonly totalCellCount?: number;
171
+ readonly loadedSummaryCount?: number;
172
+ readonly estimatedSummaryCount?: number;
173
+ }
174
+ export interface SpatialAggregationMetadata {
175
+ readonly schemaVersion?: typeof SPATIAL_AGGREGATION_METADATA_SCHEMA_VERSION;
176
+ readonly sourceId?: SourceId;
177
+ readonly indexModels?: readonly SpatialAggregationIndexModelMetadata[];
178
+ readonly summaries: readonly SpatialAggregationSummaryMetadata[];
179
+ readonly groupBy?: readonly SpatialAggregationGroupByMetadata[];
180
+ readonly widgets?: readonly SpatialAggregationWidgetMetadata[];
181
+ readonly progressive?: SpatialAggregationProgressiveState;
182
+ readonly cache?: SpatialAggregationCacheMetadata;
183
+ readonly analyticsSource?: AnalyticsSourceDescriptor;
184
+ }
185
+ export interface SpatialAggregationCacheMetadata {
186
+ readonly metadataCacheable: boolean;
187
+ readonly resultCacheable: boolean;
188
+ readonly cacheKeyParts?: readonly string[];
189
+ readonly ttlMs?: number;
190
+ }
191
+ export interface SpatialAggregationSummaryMetadata {
192
+ readonly id: string;
193
+ readonly kind: SpatialAggregationSummaryKind;
194
+ readonly title?: string;
195
+ readonly field?: string;
196
+ readonly valueType?: SpatialAggregationValueType;
197
+ readonly unit?: string;
198
+ readonly domain?: readonly SpatialAggregationDomainValue[];
199
+ readonly ranges?: readonly SpatialAggregationRangeBucketSpec[];
200
+ readonly histogram?: {
201
+ readonly bins?: number;
202
+ readonly min?: number;
203
+ readonly max?: number;
204
+ readonly method?: SpatialAggregationHistogramSummarySpec["method"];
205
+ };
206
+ }
207
+ export interface SpatialAggregationGroupByMetadata {
208
+ readonly field: string;
209
+ readonly alias?: string;
210
+ readonly title?: string;
211
+ readonly valueType?: SpatialAggregationValueType;
212
+ readonly domain?: readonly SpatialAggregationDomainValue[];
213
+ }
214
+ export interface SpatialAggregationDomainValue {
215
+ readonly value: string | number | boolean | null;
216
+ readonly label?: string;
217
+ readonly color?: string;
218
+ }
219
+ export interface SpatialAggregationWidgetMetadata {
220
+ readonly id: string;
221
+ readonly kind: SpatialAggregationWidgetKind;
222
+ readonly title?: string;
223
+ readonly summaryId?: string;
224
+ readonly summaryIds?: readonly string[];
225
+ readonly field?: string;
226
+ readonly groupBy?: readonly string[];
227
+ readonly valueType?: SpatialAggregationValueType;
228
+ readonly unit?: string;
229
+ readonly interactions?: readonly ("filter" | "drilldown" | "highlight")[];
230
+ readonly progressive?: {
231
+ readonly stableAcrossPages: boolean;
232
+ readonly partialValueSemantics: SpatialAggregationProgressRefinement;
233
+ };
234
+ }
235
+ export type SpatialAggregationWidgetSummarySource = "totals" | "cell";
236
+ export interface SpatialAggregationResolvedWidgetSummary {
237
+ readonly summaryId: string;
238
+ readonly summary: SpatialAggregationSummaryValue;
239
+ readonly source: SpatialAggregationWidgetSummarySource;
240
+ readonly cellId?: string;
241
+ }
242
+ export interface SpatialAggregationResult {
243
+ readonly schemaVersion: typeof SPATIAL_AGGREGATION_SCHEMA_VERSION;
244
+ readonly requestId?: string;
245
+ readonly sourceId: SourceId;
246
+ readonly generatedAt?: string;
247
+ readonly index: SpatialAggregationIndexState;
248
+ readonly metadata: SpatialAggregationMetadata;
249
+ readonly cells: readonly SpatialAggregationCell[];
250
+ readonly totals?: SpatialAggregationSummaryBag;
251
+ readonly groups?: readonly SpatialAggregationGroupedSummary[];
252
+ readonly page?: SpatialAggregationPageInfo;
253
+ readonly degraded?: readonly DegradedReason[];
254
+ }
255
+ export interface SpatialAggregationCell {
256
+ readonly id: string;
257
+ readonly parentId?: string;
258
+ readonly resolution?: number;
259
+ readonly extent?: HonuaExtent;
260
+ readonly centroid?: readonly [number, number];
261
+ readonly geometry?: Record<string, unknown> | null;
262
+ readonly summaries: SpatialAggregationSummaryBag;
263
+ readonly groups?: readonly SpatialAggregationGroupedSummary[];
264
+ readonly partial?: boolean;
265
+ }
266
+ export type SpatialAggregationSummaryBag = Readonly<Record<string, SpatialAggregationSummaryValue>>;
267
+ export interface SpatialAggregationGroupedSummary {
268
+ readonly key: Readonly<Record<string, string | number | boolean | null>>;
269
+ readonly label?: string;
270
+ readonly summaries: SpatialAggregationSummaryBag;
271
+ }
272
+ export type SpatialAggregationSummaryValue = SpatialAggregationCountValue | SpatialAggregationMetricValue | SpatialAggregationCategoryValue | SpatialAggregationHistogramValue | SpatialAggregationRangeValue;
273
+ export interface SpatialAggregationCountValue {
274
+ readonly kind: "count";
275
+ readonly value: number;
276
+ readonly approximate?: boolean;
277
+ }
278
+ export interface SpatialAggregationMetricValue {
279
+ readonly kind: Exclude<SpatialAggregationMetricKind, "count">;
280
+ readonly value: number | null;
281
+ readonly unit?: string;
282
+ readonly approximate?: boolean;
283
+ }
284
+ export interface SpatialAggregationCategoryValue {
285
+ readonly kind: "category";
286
+ readonly buckets: readonly SpatialAggregationCategoryBucket[];
287
+ readonly otherCount?: number;
288
+ readonly nullCount?: number;
289
+ readonly approximate?: boolean;
290
+ }
291
+ export interface SpatialAggregationCategoryBucket {
292
+ readonly value: string | number | boolean | null;
293
+ readonly label?: string;
294
+ readonly count: number;
295
+ readonly color?: string;
296
+ }
297
+ export interface SpatialAggregationHistogramValue {
298
+ readonly kind: "histogram";
299
+ readonly buckets: readonly SpatialAggregationHistogramBucket[];
300
+ readonly approximate?: boolean;
301
+ }
302
+ export interface SpatialAggregationHistogramBucket {
303
+ readonly min: number;
304
+ readonly max: number;
305
+ readonly count: number;
306
+ readonly includeMin?: boolean;
307
+ readonly includeMax?: boolean;
308
+ }
309
+ export interface SpatialAggregationRangeValue {
310
+ readonly kind: "range";
311
+ readonly buckets: readonly SpatialAggregationRangeBucketValue[];
312
+ readonly approximate?: boolean;
313
+ }
314
+ export interface SpatialAggregationRangeBucketValue extends SpatialAggregationRangeBucketSpec {
315
+ readonly count: number;
316
+ }
317
+ export interface SpatialAggregationValidationIssue {
318
+ readonly path: string;
319
+ readonly message: string;
320
+ }
321
+ export interface SpatialAggregationContractFixture {
322
+ readonly schemaVersion: 1;
323
+ readonly request: SpatialAggregationRequest;
324
+ readonly response: SpatialAggregationResult;
325
+ }
326
+ export declare function spatialAggregationSummaryKindRequiresField(kind: SpatialAggregationSummaryKind): boolean;
327
+ export declare function validateSpatialAggregationRequest(request: SpatialAggregationRequest): readonly SpatialAggregationValidationIssue[];
328
+ export declare function assertValidSpatialAggregationRequest(request: SpatialAggregationRequest): void;
329
+ export declare function spatialAggregationSummaryKindSupportedByFeatureServerH3(kind: SpatialAggregationSummaryKind): kind is SpatialAggregationMetricKind;
330
+ export declare function validateFeatureServerH3SpatialAggregationRequest(request: SpatialAggregationRequest): readonly SpatialAggregationValidationIssue[];
331
+ export declare function assertFeatureServerH3SpatialAggregationRequest(request: SpatialAggregationRequest): void;
332
+ export declare function spatialAggregationWidgets(input: SpatialAggregationResult | SpatialAggregationMetadata): readonly SpatialAggregationWidgetMetadata[];
333
+ export declare function resolveSpatialAggregationWidgetSummary(input: SpatialAggregationResult, widgetOrSummaryId: SpatialAggregationWidgetMetadata | string): SpatialAggregationResolvedWidgetSummary | undefined;
334
+ export declare function spatialAggregationProgress(input: SpatialAggregationResult | SpatialAggregationMetadata): SpatialAggregationProgressiveState;
335
+ export declare function isSpatialAggregationComplete(input: SpatialAggregationResult | SpatialAggregationMetadata): boolean;
336
+ //# sourceMappingURL=spatial-aggregation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spatial-aggregation.d.ts","sourceRoot":"","sources":["../../../src/contract/spatial-aggregation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,298 @@
1
+ /**
2
+ * Protocol-neutral request and response shapes for indexed spatial aggregation.
3
+ *
4
+ * This module is intentionally a contract surface only. It describes the
5
+ * request envelope SDKs send to a backend that can aggregate into indexed
6
+ * cells, and the response metadata apps need to build widgets and load
7
+ * progressively. The index model id is opaque so callers can work with H3,
8
+ * Quadbin, WebMercatorQuad, or a provider-specific grid without switching on
9
+ * one implementation.
10
+ *
11
+ * @module
12
+ */
13
+ export const SPATIAL_AGGREGATION_SCHEMA_VERSION = "honua.spatial-aggregation.v1";
14
+ export const SPATIAL_AGGREGATION_METADATA_SCHEMA_VERSION = "honua.spatial-aggregation.metadata.v1";
15
+ export const SPATIAL_AGGREGATION_CAPABILITY = "spatialAggregate";
16
+ export const FEATURE_SERVER_H3_SPATIAL_AGGREGATION_INDEX_MODEL_ID = "h3";
17
+ export function spatialAggregationSummaryKindRequiresField(kind) {
18
+ return kind !== "count";
19
+ }
20
+ export function validateSpatialAggregationRequest(request) {
21
+ const issues = [];
22
+ if (!isNonEmptyString(request.sourceId)) {
23
+ issues.push({ path: "sourceId", message: "sourceId is required" });
24
+ }
25
+ if (request.summaries.length === 0) {
26
+ issues.push({ path: "summaries", message: "at least one summary is required" });
27
+ }
28
+ const summaryIds = new Set();
29
+ request.summaries.forEach((summary, index) => {
30
+ const path = `summaries[${index}]`;
31
+ if (!isNonEmptyString(summary.id)) {
32
+ issues.push({ path: `${path}.id`, message: "summary id is required" });
33
+ }
34
+ else if (summaryIds.has(summary.id)) {
35
+ issues.push({ path: `${path}.id`, message: `duplicate summary id "${summary.id}"` });
36
+ }
37
+ else {
38
+ summaryIds.add(summary.id);
39
+ }
40
+ if (spatialAggregationSummaryKindRequiresField(summary.kind) && !isNonEmptyString(summary.field)) {
41
+ issues.push({ path: `${path}.field`, message: `${summary.kind} summaries require a field` });
42
+ }
43
+ if (summary.kind === "histogram") {
44
+ if (summary.bins !== undefined && !isPositiveInteger(summary.bins)) {
45
+ issues.push({ path: `${path}.bins`, message: "histogram bins must be a positive integer" });
46
+ }
47
+ if (summary.min !== undefined && summary.max !== undefined && summary.min >= summary.max) {
48
+ issues.push({ path: `${path}.max`, message: "histogram max must be greater than min" });
49
+ }
50
+ }
51
+ if (summary.kind === "range") {
52
+ if (summary.ranges.length === 0) {
53
+ issues.push({ path: `${path}.ranges`, message: "range summaries require at least one range" });
54
+ }
55
+ summary.ranges.forEach((range, rangeIndex) => {
56
+ if (!isNonEmptyString(range.id)) {
57
+ issues.push({ path: `${path}.ranges[${rangeIndex}].id`, message: "range id is required" });
58
+ }
59
+ if (range.min !== undefined && range.max !== undefined && range.min >= range.max) {
60
+ issues.push({ path: `${path}.ranges[${rangeIndex}].max`, message: "range max must be greater than min" });
61
+ }
62
+ });
63
+ }
64
+ });
65
+ request.groupBy?.forEach((group, index) => {
66
+ if (!isNonEmptyString(group.field)) {
67
+ issues.push({ path: `groupBy[${index}].field`, message: "group field is required" });
68
+ }
69
+ if (group.limit !== undefined && !isPositiveInteger(group.limit)) {
70
+ issues.push({ path: `groupBy[${index}].limit`, message: "group limit must be a positive integer" });
71
+ }
72
+ });
73
+ const viewport = request.viewport;
74
+ if (viewport) {
75
+ if (viewport.zoom !== undefined && !isNonNegativeFinite(viewport.zoom)) {
76
+ issues.push({ path: "viewport.zoom", message: "viewport zoom must be a non-negative number" });
77
+ }
78
+ if (viewport.width !== undefined && !isPositiveFinite(viewport.width)) {
79
+ issues.push({ path: "viewport.width", message: "viewport width must be greater than zero" });
80
+ }
81
+ if (viewport.height !== undefined && !isPositiveFinite(viewport.height)) {
82
+ issues.push({ path: "viewport.height", message: "viewport height must be greater than zero" });
83
+ }
84
+ }
85
+ const resolution = request.resolution;
86
+ if (resolution) {
87
+ if (resolution.zoom !== undefined && !isNonNegativeFinite(resolution.zoom)) {
88
+ issues.push({ path: "resolution.zoom", message: "resolution zoom must be a non-negative number" });
89
+ }
90
+ if (resolution.indexResolution !== undefined && !isNonNegativeFinite(resolution.indexResolution)) {
91
+ issues.push({
92
+ path: "resolution.indexResolution",
93
+ message: "index resolution must be a non-negative number",
94
+ });
95
+ }
96
+ if (resolution.targetCellCount !== undefined && !isPositiveInteger(resolution.targetCellCount)) {
97
+ issues.push({ path: "resolution.targetCellCount", message: "target cell count must be a positive integer" });
98
+ }
99
+ if (resolution.maxCellCount !== undefined && !isPositiveInteger(resolution.maxCellCount)) {
100
+ issues.push({ path: "resolution.maxCellCount", message: "max cell count must be a positive integer" });
101
+ }
102
+ }
103
+ if (request.page?.limit !== undefined && !isPositiveInteger(request.page.limit)) {
104
+ issues.push({ path: "page.limit", message: "page limit must be a positive integer" });
105
+ }
106
+ return issues;
107
+ }
108
+ export function assertValidSpatialAggregationRequest(request) {
109
+ const issues = validateSpatialAggregationRequest(request);
110
+ if (issues.length > 0) {
111
+ const details = issues.map((issue) => `${issue.path}: ${issue.message}`).join("; ");
112
+ throw new Error(`Invalid spatial aggregation request: ${details}`);
113
+ }
114
+ }
115
+ export function spatialAggregationSummaryKindSupportedByFeatureServerH3(kind) {
116
+ return kind === "count" || kind === "sum" || kind === "avg" || kind === "min" || kind === "max";
117
+ }
118
+ export function validateFeatureServerH3SpatialAggregationRequest(request) {
119
+ const issues = [...validateSpatialAggregationRequest(request)];
120
+ const indexResolution = request.resolution?.indexResolution;
121
+ if (indexResolution === undefined) {
122
+ issues.push({
123
+ path: "resolution.indexResolution",
124
+ message: "FeatureServer queryH3 requires an explicit indexResolution",
125
+ });
126
+ }
127
+ else if (!Number.isInteger(indexResolution) || indexResolution < 0 || indexResolution > 15) {
128
+ issues.push({
129
+ path: "resolution.indexResolution",
130
+ message: "FeatureServer queryH3 indexResolution must be an integer between 0 and 15",
131
+ });
132
+ }
133
+ if (request.index?.modelId !== undefined &&
134
+ request.index.modelId !== FEATURE_SERVER_H3_SPATIAL_AGGREGATION_INDEX_MODEL_ID) {
135
+ issues.push({
136
+ path: "index.modelId",
137
+ message: "FeatureServer queryH3 only supports the H3 index model",
138
+ });
139
+ }
140
+ if (request.index?.geometry === "centroid") {
141
+ issues.push({
142
+ path: "index.geometry",
143
+ message: "FeatureServer queryH3 does not currently return cell centroids",
144
+ });
145
+ }
146
+ if (request.spatialFilter !== undefined) {
147
+ issues.push({
148
+ path: "spatialFilter",
149
+ message: "FeatureServer queryH3 does not currently accept spatialFilter input",
150
+ });
151
+ }
152
+ if (request.viewport !== undefined) {
153
+ issues.push({
154
+ path: "viewport",
155
+ message: "FeatureServer queryH3 does not currently accept viewport input",
156
+ });
157
+ }
158
+ if (request.groupBy !== undefined && request.groupBy.length > 0) {
159
+ issues.push({
160
+ path: "groupBy",
161
+ message: "FeatureServer queryH3 does not currently support grouped summaries",
162
+ });
163
+ }
164
+ if (request.page !== undefined) {
165
+ issues.push({
166
+ path: "page",
167
+ message: "FeatureServer queryH3 does not currently support cursor paging",
168
+ });
169
+ }
170
+ const metricSummaries = request.summaries.filter((summary) => spatialAggregationSummaryKindSupportedByFeatureServerH3(summary.kind));
171
+ request.summaries.forEach((summary, index) => {
172
+ const path = `summaries[${index}]`;
173
+ if (!spatialAggregationSummaryKindSupportedByFeatureServerH3(summary.kind)) {
174
+ issues.push({
175
+ path: `${path}.kind`,
176
+ message: `${summary.kind} summaries are not supported by FeatureServer queryH3`,
177
+ });
178
+ return;
179
+ }
180
+ if (summary.kind === "count" && summary.countDistinct === true) {
181
+ issues.push({
182
+ path: `${path}.countDistinct`,
183
+ message: "FeatureServer queryH3 does not currently support countDistinct summaries",
184
+ });
185
+ }
186
+ if (summary.kind === "count" && summary.field === undefined && metricSummaries.length > 1) {
187
+ issues.push({
188
+ path: `${path}.field`,
189
+ message: "count summaries require a field when combined with other queryH3 metrics",
190
+ });
191
+ }
192
+ });
193
+ return issues;
194
+ }
195
+ export function assertFeatureServerH3SpatialAggregationRequest(request) {
196
+ const issues = validateFeatureServerH3SpatialAggregationRequest(request);
197
+ if (issues.length > 0) {
198
+ const details = issues.map((issue) => `${issue.path}: ${issue.message}`).join("; ");
199
+ throw new Error(`Invalid FeatureServer queryH3 spatial aggregation request: ${details}`);
200
+ }
201
+ }
202
+ export function spatialAggregationWidgets(input) {
203
+ const metadata = "metadata" in input ? input.metadata : input;
204
+ if (metadata.widgets && metadata.widgets.length > 0)
205
+ return metadata.widgets;
206
+ const widgets = metadata.summaries.map(summaryToWidget);
207
+ if (metadata.groupBy && metadata.groupBy.length > 0) {
208
+ widgets.push({
209
+ id: "grouped-summaries",
210
+ kind: "grouped-table",
211
+ title: "Grouped summaries",
212
+ summaryIds: metadata.summaries.map((summary) => summary.id),
213
+ groupBy: metadata.groupBy.map((group) => group.alias ?? group.field),
214
+ interactions: ["filter", "drilldown"],
215
+ progressive: {
216
+ stableAcrossPages: false,
217
+ partialValueSemantics: "refine",
218
+ },
219
+ });
220
+ }
221
+ return widgets;
222
+ }
223
+ export function resolveSpatialAggregationWidgetSummary(input, widgetOrSummaryId) {
224
+ const summaryId = typeof widgetOrSummaryId === "string" ? widgetOrSummaryId : widgetOrSummaryId.summaryId;
225
+ if (!summaryId)
226
+ return undefined;
227
+ const total = input.totals?.[summaryId];
228
+ if (total)
229
+ return { summaryId, summary: total, source: "totals" };
230
+ for (const cell of input.cells) {
231
+ const summary = cell.summaries[summaryId];
232
+ if (summary)
233
+ return { summaryId, summary, source: "cell", cellId: cell.id };
234
+ }
235
+ return undefined;
236
+ }
237
+ export function spatialAggregationProgress(input) {
238
+ const metadata = "metadata" in input ? input.metadata : input;
239
+ if (metadata.progressive)
240
+ return metadata.progressive;
241
+ if ("page" in input && input.page?.nextCursor) {
242
+ return {
243
+ status: "partial",
244
+ refinement: "append",
245
+ nextCursor: input.page.nextCursor,
246
+ loadedCellCount: input.page.loadedCellCount ?? input.cells.length,
247
+ totalCellCount: input.page.totalCellCount,
248
+ };
249
+ }
250
+ return {
251
+ status: "complete",
252
+ loadedCellCount: "cells" in input ? input.cells.length : undefined,
253
+ };
254
+ }
255
+ export function isSpatialAggregationComplete(input) {
256
+ const progress = spatialAggregationProgress(input);
257
+ return progress.status === "complete" && !progress.nextCursor;
258
+ }
259
+ function summaryToWidget(summary) {
260
+ return {
261
+ id: `${summary.id}-widget`,
262
+ kind: widgetKindForSummary(summary.kind),
263
+ title: summary.title,
264
+ summaryId: summary.id,
265
+ field: summary.field,
266
+ valueType: summary.valueType,
267
+ unit: summary.unit,
268
+ interactions: summary.kind === "count" ? ["highlight"] : ["filter", "highlight"],
269
+ progressive: {
270
+ stableAcrossPages: summary.kind !== "histogram" && summary.kind !== "range",
271
+ partialValueSemantics: "refine",
272
+ },
273
+ };
274
+ }
275
+ function widgetKindForSummary(kind) {
276
+ switch (kind) {
277
+ case "category":
278
+ return "category-list";
279
+ case "histogram":
280
+ return "histogram";
281
+ case "range":
282
+ return "range-list";
283
+ default:
284
+ return "stat";
285
+ }
286
+ }
287
+ function isNonEmptyString(value) {
288
+ return typeof value === "string" && value.trim().length > 0;
289
+ }
290
+ function isPositiveFinite(value) {
291
+ return Number.isFinite(value) && value > 0;
292
+ }
293
+ function isNonNegativeFinite(value) {
294
+ return Number.isFinite(value) && value >= 0;
295
+ }
296
+ function isPositiveInteger(value) {
297
+ return Number.isInteger(value) && value > 0;
298
+ }