@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,273 @@
1
+ import { HonuaAbortError, HonuaHttpError, HonuaNetworkError, HonuaTimeoutError } from "./errors.js";
2
+ export const DEFAULT_RETRY_STATUSES = new Set([429, 502, 503, 504]);
3
+ export const DEFAULT_RETRY_METHODS = new Set(["GET", "PUT", "DELETE"]);
4
+ export function normalizeTimeoutMs(timeoutMs) {
5
+ if (typeof timeoutMs !== "number" || !Number.isFinite(timeoutMs)) {
6
+ return undefined;
7
+ }
8
+ return Math.max(1, Math.trunc(timeoutMs));
9
+ }
10
+ export function normalizeRetryOptions(options) {
11
+ if (!options) {
12
+ return undefined;
13
+ }
14
+ const maxRetries = typeof options.maxRetries === "number" && Number.isFinite(options.maxRetries)
15
+ ? Math.max(0, Math.trunc(options.maxRetries))
16
+ : 0;
17
+ if (maxRetries < 1) {
18
+ return undefined;
19
+ }
20
+ const baseDelayMs = typeof options.baseDelayMs === "number" && Number.isFinite(options.baseDelayMs)
21
+ ? Math.max(1, Math.trunc(options.baseDelayMs))
22
+ : 100;
23
+ const maxDelayMs = typeof options.maxDelayMs === "number" && Number.isFinite(options.maxDelayMs)
24
+ ? Math.max(baseDelayMs, Math.trunc(options.maxDelayMs))
25
+ : 2_000;
26
+ const retryStatuses = new Set((options.retryStatuses ?? Array.from(DEFAULT_RETRY_STATUSES))
27
+ .map((status) => Math.trunc(status))
28
+ .filter((status) => Number.isFinite(status) && status >= 100 && status <= 599));
29
+ if (retryStatuses.size === 0) {
30
+ for (const status of DEFAULT_RETRY_STATUSES) {
31
+ retryStatuses.add(status);
32
+ }
33
+ }
34
+ return {
35
+ maxRetries,
36
+ baseDelayMs,
37
+ maxDelayMs,
38
+ retryStatuses,
39
+ };
40
+ }
41
+ /**
42
+ * Parse a `Retry-After` header value (delta-seconds or HTTP-date) into a delay
43
+ * in milliseconds. Shared by the REST {@link parseRetryAfterMs} response helper
44
+ * and the gRPC-web path, which reads the same header off the Connect error
45
+ * metadata (a `Headers`-shaped object) rather than a `Response`.
46
+ */
47
+ export function parseRetryAfterHeaderMs(headers) {
48
+ const value = headers.get("retry-after");
49
+ if (!value) {
50
+ return undefined;
51
+ }
52
+ const seconds = Number.parseInt(value, 10);
53
+ if (Number.isFinite(seconds) && seconds >= 0) {
54
+ return seconds * 1_000;
55
+ }
56
+ const targetTime = Date.parse(value);
57
+ if (!Number.isFinite(targetTime)) {
58
+ return undefined;
59
+ }
60
+ return Math.max(0, targetTime - Date.now());
61
+ }
62
+ export function parseRetryAfterMs(response) {
63
+ return parseRetryAfterHeaderMs(response.headers);
64
+ }
65
+ /**
66
+ * Decide whether a failed attempt should be retried. Idempotent/replay-safe
67
+ * methods (GET/PUT/DELETE) are retried on the configured retry statuses or on
68
+ * transient network/timeout errors; aborts are never retried.
69
+ */
70
+ export function shouldRetryRequest(retryOptions, method, attempt, statusCode, error) {
71
+ if (!retryOptions || attempt >= retryOptions.maxRetries) {
72
+ return false;
73
+ }
74
+ if (!DEFAULT_RETRY_METHODS.has(method)) {
75
+ return false;
76
+ }
77
+ if (error instanceof HonuaAbortError) {
78
+ return false;
79
+ }
80
+ if (statusCode !== undefined) {
81
+ return retryOptions.retryStatuses.has(statusCode);
82
+ }
83
+ return error instanceof HonuaNetworkError || error instanceof HonuaTimeoutError;
84
+ }
85
+ /**
86
+ * Resolve the backoff delay before the next attempt. A server `Retry-After`
87
+ * header (capped by `maxDelayMs`) wins; otherwise an exponential backoff with
88
+ * full jitter in the [0.5x, 1x] band is used.
89
+ */
90
+ export function resolveRetryDelayMs(retryOptions, attempt, response) {
91
+ const retryAfterMs = response ? parseRetryAfterMs(response) : undefined;
92
+ if (retryAfterMs !== undefined) {
93
+ return Math.min(retryOptions?.maxDelayMs ?? retryAfterMs, retryAfterMs);
94
+ }
95
+ if (!retryOptions) {
96
+ return 0;
97
+ }
98
+ const exponentialDelay = retryOptions.baseDelayMs * 2 ** attempt;
99
+ const cappedDelay = Math.min(retryOptions.maxDelayMs, exponentialDelay);
100
+ return cappedDelay * (0.5 + Math.random() * 0.5);
101
+ }
102
+ /**
103
+ * gRPC/Connect numeric status codes that map to the transient REST retry
104
+ * statuses in {@link DEFAULT_RETRY_STATUSES}, so the grpc-web transport retries
105
+ * the same class of transient failures as REST. Mirrors the gRPC retry
106
+ * conventions: `resource_exhausted` (~429), `unavailable` (~502/503),
107
+ * `deadline_exceeded` (~504), and the transient `aborted` concurrency code.
108
+ */
109
+ export const DEFAULT_RETRYABLE_GRPC_CODES = new Set([
110
+ 4, // deadline_exceeded
111
+ 8, // resource_exhausted
112
+ 10, // aborted
113
+ 14, // unavailable
114
+ ]);
115
+ /** Connect/gRPC `canceled` code — caller/abort-driven, never retried. */
116
+ const GRPC_CODE_CANCELED = 1;
117
+ /**
118
+ * Extract the numeric gRPC/Connect status code off a thrown error (a
119
+ * `ConnectError` carries a numeric `code`). Returns `undefined` for non-Connect
120
+ * errors so callers can treat them as non-retryable.
121
+ */
122
+ export function connectErrorCode(error) {
123
+ if (typeof error === "object" &&
124
+ error !== null &&
125
+ "code" in error &&
126
+ typeof error.code === "number") {
127
+ return error.code;
128
+ }
129
+ return undefined;
130
+ }
131
+ /**
132
+ * Decide whether a failed gRPC-web call should be retried. Mirrors
133
+ * {@link shouldRetryRequest} for the Connect transport: retries only the
134
+ * transient {@link DEFAULT_RETRYABLE_GRPC_CODES} while honoring `maxRetries`,
135
+ * and never retries once the call's abort signal has fired (caller abort or the
136
+ * `timeoutMs` deadline) or for the `canceled` code.
137
+ *
138
+ * Replay-safety (unary-only, since server-streaming responses cannot be safely
139
+ * replayed mid-iteration) is enforced by the caller, mirroring the REST
140
+ * {@link DEFAULT_RETRY_METHODS} idempotency gate.
141
+ */
142
+ export function shouldRetryGrpcCall(retryOptions, attempt, error, aborted) {
143
+ if (!retryOptions || attempt >= retryOptions.maxRetries) {
144
+ return false;
145
+ }
146
+ if (aborted) {
147
+ return false;
148
+ }
149
+ const code = connectErrorCode(error);
150
+ if (code === undefined || code === GRPC_CODE_CANCELED) {
151
+ return false;
152
+ }
153
+ return DEFAULT_RETRYABLE_GRPC_CODES.has(code);
154
+ }
155
+ function connectErrorMetadata(error) {
156
+ if (typeof error === "object" && error !== null && "metadata" in error) {
157
+ const metadata = error.metadata;
158
+ if (metadata && typeof metadata.get === "function") {
159
+ return metadata;
160
+ }
161
+ }
162
+ return undefined;
163
+ }
164
+ /**
165
+ * Resolve the backoff delay before the next gRPC-web attempt. Reuses the shared
166
+ * {@link resolveRetryDelayMs} exponential-with-jitter math; a `retry-after`
167
+ * value carried on the Connect error metadata (capped by `maxDelayMs`) wins,
168
+ * mirroring the REST `Retry-After` handling.
169
+ */
170
+ export function resolveGrpcRetryDelayMs(retryOptions, attempt, error) {
171
+ const metadata = connectErrorMetadata(error);
172
+ const retryAfterMs = metadata ? parseRetryAfterHeaderMs(metadata) : undefined;
173
+ if (retryAfterMs !== undefined) {
174
+ return Math.min(retryOptions?.maxDelayMs ?? retryAfterMs, retryAfterMs);
175
+ }
176
+ return resolveRetryDelayMs(retryOptions, attempt);
177
+ }
178
+ export async function sleep(ms, signal) {
179
+ if (ms <= 0) {
180
+ return;
181
+ }
182
+ if (signal?.aborted) {
183
+ throw new HonuaAbortError();
184
+ }
185
+ await new Promise((resolve, reject) => {
186
+ const timer = setTimeout(() => {
187
+ signal?.removeEventListener("abort", abort);
188
+ resolve();
189
+ }, ms);
190
+ const abort = () => {
191
+ clearTimeout(timer);
192
+ reject(new HonuaAbortError());
193
+ };
194
+ signal?.addEventListener("abort", abort, { once: true });
195
+ });
196
+ }
197
+ export function normalizeNetworkError(error) {
198
+ if (error instanceof Error && error.name === "AbortError") {
199
+ return new HonuaAbortError();
200
+ }
201
+ if (error instanceof Error) {
202
+ return new HonuaNetworkError(error.message, error);
203
+ }
204
+ return new HonuaNetworkError(String(error), error);
205
+ }
206
+ export function createTimeoutSignal(existingSignal, timeoutMs) {
207
+ if (timeoutMs === undefined) {
208
+ return {
209
+ signal: existingSignal ?? undefined,
210
+ didTimeout: false,
211
+ dispose: () => undefined,
212
+ };
213
+ }
214
+ const controller = new AbortController();
215
+ let didTimeout = false;
216
+ let timer;
217
+ let onAbort;
218
+ timer = setTimeout(() => {
219
+ didTimeout = true;
220
+ controller.abort();
221
+ }, timeoutMs);
222
+ if (existingSignal) {
223
+ if (existingSignal.aborted) {
224
+ controller.abort();
225
+ }
226
+ else {
227
+ onAbort = () => {
228
+ controller.abort();
229
+ };
230
+ existingSignal.addEventListener("abort", onAbort, { once: true });
231
+ }
232
+ }
233
+ return {
234
+ signal: controller.signal,
235
+ get didTimeout() {
236
+ return didTimeout;
237
+ },
238
+ dispose: () => {
239
+ if (timer) {
240
+ clearTimeout(timer);
241
+ timer = undefined;
242
+ }
243
+ if (existingSignal && onAbort) {
244
+ existingSignal.removeEventListener("abort", onAbort);
245
+ onAbort = undefined;
246
+ }
247
+ },
248
+ };
249
+ }
250
+ /**
251
+ * Map a non-OK HTTP response body into a {@link HonuaHttpError}, preferring the
252
+ * server's structured error message (`error.message`, `message`, or `detail`)
253
+ * and falling back to a generic message while preserving the raw body.
254
+ */
255
+ export function toHttpError(statusCode, body) {
256
+ const fallback = "Request failed";
257
+ if (isObject(body)) {
258
+ const error = body.error;
259
+ if (isObject(error) && typeof error.message === "string") {
260
+ return new HonuaHttpError(statusCode, error.message, body);
261
+ }
262
+ if (typeof body.message === "string") {
263
+ return new HonuaHttpError(statusCode, body.message, body);
264
+ }
265
+ if (typeof body.detail === "string") {
266
+ return new HonuaHttpError(statusCode, body.detail, body);
267
+ }
268
+ }
269
+ return new HonuaHttpError(statusCode, fallback, body);
270
+ }
271
+ function isObject(value) {
272
+ return typeof value === "object" && value !== null;
273
+ }
@@ -0,0 +1,93 @@
1
+ import type { EsriGeometryType, EsriSpatialRel, HonuaSpatialReference } from "./types.js";
2
+ /**
3
+ * A spatial filter fragment that can be spread into a `QueryFeaturesRequest`
4
+ * or applied via `QueryBuilder.geometry()` / `.geometryType()` / `.spatialRel()`.
5
+ */
6
+ export interface SpatialFilter {
7
+ geometry: Record<string, unknown>;
8
+ geometryType: EsriGeometryType;
9
+ spatialRel?: EsriSpatialRel;
10
+ }
11
+ /**
12
+ * Create an envelope (bounding box) spatial filter.
13
+ *
14
+ * @example
15
+ * ```ts
16
+ * const req: QueryFeaturesRequest = {
17
+ * serviceId: "svc", layerId: 0,
18
+ * ...envelope(-118.5, 33.7, -117.5, 34.2),
19
+ * };
20
+ * ```
21
+ */
22
+ export declare function envelope(xmin: number, ymin: number, xmax: number, ymax: number, spatialReference?: HonuaSpatialReference): SpatialFilter;
23
+ /**
24
+ * Create a point spatial filter.
25
+ *
26
+ * @example
27
+ * ```ts
28
+ * const req: QueryFeaturesRequest = {
29
+ * serviceId: "svc", layerId: 0,
30
+ * ...point(-118.24, 34.05),
31
+ * };
32
+ * ```
33
+ */
34
+ export declare function point(x: number, y: number, spatialReference?: HonuaSpatialReference): SpatialFilter;
35
+ /**
36
+ * Create a polygon spatial filter from an array of rings.
37
+ *
38
+ * @example
39
+ * ```ts
40
+ * const req: QueryFeaturesRequest = {
41
+ * serviceId: "svc", layerId: 0,
42
+ * ...polygon([[[-118, 34], [-117, 34], [-117, 35], [-118, 35], [-118, 34]]]),
43
+ * };
44
+ * ```
45
+ */
46
+ export declare function polygon(rings: number[][][], spatialReference?: HonuaSpatialReference): SpatialFilter;
47
+ /**
48
+ * Create an envelope spatial filter centered on a point, approximating a
49
+ * circular buffer as a bounding box.
50
+ *
51
+ * @param x - Center x coordinate
52
+ * @param y - Center y coordinate
53
+ * @param distance - Half-width of the envelope in coordinate units
54
+ * @param spatialReference - Optional spatial reference
55
+ *
56
+ * @example
57
+ * ```ts
58
+ * // 0.5-degree bounding box around a point
59
+ * const req: QueryFeaturesRequest = {
60
+ * serviceId: "svc", layerId: 0,
61
+ * ...buffer(-118.24, 34.05, 0.5),
62
+ * };
63
+ * ```
64
+ */
65
+ export declare function buffer(x: number, y: number, distance: number, spatialReference?: HonuaSpatialReference): SpatialFilter;
66
+ /**
67
+ * Wrap an existing geometry with `esriSpatialRelIntersects`.
68
+ *
69
+ * @example
70
+ * ```ts
71
+ * const filter = spatialIntersects({ xmin: -180, ymin: -90, xmax: 180, ymax: 90 });
72
+ * ```
73
+ */
74
+ export declare function spatialIntersects(geometry: Record<string, unknown>): SpatialFilter;
75
+ /**
76
+ * Wrap an existing geometry with `esriSpatialRelContains`.
77
+ *
78
+ * @example
79
+ * ```ts
80
+ * const filter = spatialContains({ rings: [[[-118, 34], [-117, 34], [-117, 35], [-118, 35], [-118, 34]]] });
81
+ * ```
82
+ */
83
+ export declare function spatialContains(geometry: Record<string, unknown>): SpatialFilter;
84
+ /**
85
+ * Wrap an existing geometry with `esriSpatialRelWithin`.
86
+ *
87
+ * @example
88
+ * ```ts
89
+ * const filter = spatialWithin({ rings: [[[-118, 34], [-117, 34], [-117, 35], [-118, 35], [-118, 34]]] });
90
+ * ```
91
+ */
92
+ export declare function spatialWithin(geometry: Record<string, unknown>): SpatialFilter;
93
+ //# sourceMappingURL=spatial-filter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spatial-filter.d.ts","sourceRoot":"","sources":["../../../src/core/spatial-filter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAE1F;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,YAAY,EAAE,gBAAgB,CAAC;IAC/B,UAAU,CAAC,EAAE,cAAc,CAAC;CAC7B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,QAAQ,CACtB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,gBAAgB,CAAC,EAAE,qBAAqB,GACvC,aAAa,CAQf;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,qBAAqB,GAAG,aAAa,CAQnG;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,gBAAgB,CAAC,EAAE,qBAAqB,GAAG,aAAa,CAQpG;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,MAAM,CACpB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,QAAQ,EAAE,MAAM,EAChB,gBAAgB,CAAC,EAAE,qBAAqB,GACvC,aAAa,CAEf;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,aAAa,CAMlF;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,aAAa,CAMhF;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,aAAa,CAM9E"}
@@ -0,0 +1,153 @@
1
+ /**
2
+ * Create an envelope (bounding box) spatial filter.
3
+ *
4
+ * @example
5
+ * ```ts
6
+ * const req: QueryFeaturesRequest = {
7
+ * serviceId: "svc", layerId: 0,
8
+ * ...envelope(-118.5, 33.7, -117.5, 34.2),
9
+ * };
10
+ * ```
11
+ */
12
+ export function envelope(xmin, ymin, xmax, ymax, spatialReference) {
13
+ const geometry = { xmin, ymin, xmax, ymax };
14
+ if (spatialReference)
15
+ geometry.spatialReference = spatialReference;
16
+ return {
17
+ geometry,
18
+ geometryType: "esriGeometryEnvelope",
19
+ spatialRel: "esriSpatialRelIntersects",
20
+ };
21
+ }
22
+ /**
23
+ * Create a point spatial filter.
24
+ *
25
+ * @example
26
+ * ```ts
27
+ * const req: QueryFeaturesRequest = {
28
+ * serviceId: "svc", layerId: 0,
29
+ * ...point(-118.24, 34.05),
30
+ * };
31
+ * ```
32
+ */
33
+ export function point(x, y, spatialReference) {
34
+ const geometry = { x, y };
35
+ if (spatialReference)
36
+ geometry.spatialReference = spatialReference;
37
+ return {
38
+ geometry,
39
+ geometryType: "esriGeometryPoint",
40
+ spatialRel: "esriSpatialRelIntersects",
41
+ };
42
+ }
43
+ /**
44
+ * Create a polygon spatial filter from an array of rings.
45
+ *
46
+ * @example
47
+ * ```ts
48
+ * const req: QueryFeaturesRequest = {
49
+ * serviceId: "svc", layerId: 0,
50
+ * ...polygon([[[-118, 34], [-117, 34], [-117, 35], [-118, 35], [-118, 34]]]),
51
+ * };
52
+ * ```
53
+ */
54
+ export function polygon(rings, spatialReference) {
55
+ const geometry = { rings };
56
+ if (spatialReference)
57
+ geometry.spatialReference = spatialReference;
58
+ return {
59
+ geometry,
60
+ geometryType: "esriGeometryPolygon",
61
+ spatialRel: "esriSpatialRelIntersects",
62
+ };
63
+ }
64
+ /**
65
+ * Create an envelope spatial filter centered on a point, approximating a
66
+ * circular buffer as a bounding box.
67
+ *
68
+ * @param x - Center x coordinate
69
+ * @param y - Center y coordinate
70
+ * @param distance - Half-width of the envelope in coordinate units
71
+ * @param spatialReference - Optional spatial reference
72
+ *
73
+ * @example
74
+ * ```ts
75
+ * // 0.5-degree bounding box around a point
76
+ * const req: QueryFeaturesRequest = {
77
+ * serviceId: "svc", layerId: 0,
78
+ * ...buffer(-118.24, 34.05, 0.5),
79
+ * };
80
+ * ```
81
+ */
82
+ export function buffer(x, y, distance, spatialReference) {
83
+ return envelope(x - distance, y - distance, x + distance, y + distance, spatialReference);
84
+ }
85
+ /**
86
+ * Wrap an existing geometry with `esriSpatialRelIntersects`.
87
+ *
88
+ * @example
89
+ * ```ts
90
+ * const filter = spatialIntersects({ xmin: -180, ymin: -90, xmax: 180, ymax: 90 });
91
+ * ```
92
+ */
93
+ export function spatialIntersects(geometry) {
94
+ return {
95
+ geometry,
96
+ geometryType: detectGeometryType(geometry),
97
+ spatialRel: "esriSpatialRelIntersects",
98
+ };
99
+ }
100
+ /**
101
+ * Wrap an existing geometry with `esriSpatialRelContains`.
102
+ *
103
+ * @example
104
+ * ```ts
105
+ * const filter = spatialContains({ rings: [[[-118, 34], [-117, 34], [-117, 35], [-118, 35], [-118, 34]]] });
106
+ * ```
107
+ */
108
+ export function spatialContains(geometry) {
109
+ return {
110
+ geometry,
111
+ geometryType: detectGeometryType(geometry),
112
+ spatialRel: "esriSpatialRelContains",
113
+ };
114
+ }
115
+ /**
116
+ * Wrap an existing geometry with `esriSpatialRelWithin`.
117
+ *
118
+ * @example
119
+ * ```ts
120
+ * const filter = spatialWithin({ rings: [[[-118, 34], [-117, 34], [-117, 35], [-118, 35], [-118, 34]]] });
121
+ * ```
122
+ */
123
+ export function spatialWithin(geometry) {
124
+ return {
125
+ geometry,
126
+ geometryType: detectGeometryType(geometry),
127
+ spatialRel: "esriSpatialRelWithin",
128
+ };
129
+ }
130
+ /**
131
+ * Detect the Esri geometry type from a plain geometry object by inspecting
132
+ * its shape (duck-typing).
133
+ *
134
+ * @internal
135
+ */
136
+ function detectGeometryType(geometry) {
137
+ if ("xmin" in geometry && "ymin" in geometry && "xmax" in geometry && "ymax" in geometry) {
138
+ return "esriGeometryEnvelope";
139
+ }
140
+ if ("rings" in geometry) {
141
+ return "esriGeometryPolygon";
142
+ }
143
+ if ("paths" in geometry) {
144
+ return "esriGeometryPolyline";
145
+ }
146
+ if ("points" in geometry) {
147
+ return "esriGeometryMultipoint";
148
+ }
149
+ if ("x" in geometry && "y" in geometry) {
150
+ return "esriGeometryPoint";
151
+ }
152
+ return "esriGeometryPoint";
153
+ }
package/core/stac.d.ts ADDED
@@ -0,0 +1,55 @@
1
+ /**
2
+ * STAC API search surface. STAC builds on OGC API Features, so this
3
+ * class wraps the STAC catalog landing, collections listing, items, and
4
+ * cross-collection search endpoints. The wire calls live on
5
+ * `HonuaClient`; this class is the request-shaping layer on top.
6
+ *
7
+ * @module
8
+ */
9
+ import type { HonuaClient } from "./client.js";
10
+ import type { HonuaProtocolTransport } from "./protocol-transport.js";
11
+ import type { HonuaOgcCollectionMetadata, HonuaOgcCollectionsResponse, HonuaStacItemCollectionResponse, HonuaStacItemResponse, HonuaStacLandingResponse, OgcCollectionRequest, OgcMetadataRequest, StacSearchRequest } from "./types.js";
12
+ export interface HonuaStacSearchOptions {
13
+ client: HonuaClient;
14
+ }
15
+ export interface HonuaStacSearchAllRequest extends StacSearchRequest {
16
+ /** Maximum number of items to materialize across pages. */
17
+ pageSize?: number;
18
+ /** Hard cap on the number of pages to fetch (defaults to 100). */
19
+ maxPages?: number;
20
+ }
21
+ /**
22
+ * STAC API entry point. Discovery (`landing`, `collections`,
23
+ * `collection`) plus search (`search`, `searchAll`, `searchStream`) and
24
+ * item fetch.
25
+ */
26
+ export declare class HonuaStacSearch {
27
+ readonly client: HonuaClient;
28
+ constructor(options: HonuaStacSearchOptions);
29
+ landing(request?: OgcMetadataRequest): Promise<HonuaStacLandingResponse>;
30
+ collections(request?: OgcMetadataRequest): Promise<HonuaOgcCollectionsResponse>;
31
+ collection(request: OgcCollectionRequest): Promise<HonuaOgcCollectionMetadata>;
32
+ item(request: {
33
+ collectionId: string | number;
34
+ itemId: string | number;
35
+ signal?: AbortSignal;
36
+ responseFormat?: string;
37
+ extraParams?: Record<string, string | number | boolean>;
38
+ }): Promise<HonuaStacItemResponse>;
39
+ search(request?: StacSearchRequest): Promise<HonuaStacItemCollectionResponse>;
40
+ searchAll(request?: HonuaStacSearchAllRequest): Promise<HonuaStacItemResponse[]>;
41
+ searchStream(request?: HonuaStacSearchAllRequest): AsyncGenerator<HonuaStacItemResponse[], void, undefined>;
42
+ }
43
+ export declare function createHonuaStacSearch(client: HonuaClient): HonuaStacSearch;
44
+ export declare function getStacLanding(transport: HonuaProtocolTransport, request?: OgcMetadataRequest): Promise<HonuaStacLandingResponse>;
45
+ export declare function listStacCollections(transport: HonuaProtocolTransport, request?: OgcMetadataRequest): Promise<HonuaOgcCollectionsResponse>;
46
+ export declare function getStacCollection(transport: HonuaProtocolTransport, request: OgcCollectionRequest): Promise<HonuaOgcCollectionMetadata>;
47
+ export declare function getStacItem(transport: HonuaProtocolTransport, request: {
48
+ collectionId: string | number;
49
+ itemId: string | number;
50
+ signal?: AbortSignal;
51
+ responseFormat?: string;
52
+ extraParams?: Record<string, string | number | boolean>;
53
+ }): Promise<HonuaStacItemResponse>;
54
+ export declare function searchStac(transport: HonuaProtocolTransport, request?: StacSearchRequest): Promise<HonuaStacItemCollectionResponse>;
55
+ //# sourceMappingURL=stac.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stac.d.ts","sourceRoot":"","sources":["../../../src/core/stac.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,KAAK,EACV,0BAA0B,EAC1B,2BAA2B,EAC3B,+BAA+B,EAC/B,qBAAqB,EACrB,wBAAwB,EACxB,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAGpB,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,WAAW,CAAC;CACrB;AAED,MAAM,WAAW,yBAA0B,SAAQ,iBAAiB;IAClE,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAKD;;;;GAIG;AACH,qBAAa,eAAe;IAC1B,SAAgB,MAAM,EAAE,WAAW,CAAC;gBAEjB,OAAO,EAAE,sBAAsB;IAIrC,OAAO,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAI5E,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,2BAA2B,CAAC;IAInF,UAAU,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAI9E,IAAI,CAAC,OAAO,EAAE;QACzB,YAAY,EAAE,MAAM,GAAG,MAAM,CAAC;QAC9B,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;QACxB,MAAM,CAAC,EAAE,WAAW,CAAC;QACrB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;KACzD,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAIrB,MAAM,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,+BAA+B,CAAC;IAIjF,SAAS,CAAC,OAAO,GAAE,yBAA8B,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAyBnF,YAAY,CACxB,OAAO,GAAE,yBAA8B,GACtC,cAAc,CAAC,qBAAqB,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC;CAoB5D;AAkCD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,WAAW,GAAG,eAAe,CAE1E;AAID,wBAAsB,cAAc,CAClC,SAAS,EAAE,sBAAsB,EACjC,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,wBAAwB,CAAC,CAOnC;AAED,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,sBAAsB,EACjC,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,2BAA2B,CAAC,CAOtC;AAED,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,sBAAsB,EACjC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,0BAA0B,CAAC,CAOrC;AAED,wBAAsB,WAAW,CAC/B,SAAS,EAAE,sBAAsB,EACjC,OAAO,EAAE;IACP,YAAY,EAAE,MAAM,GAAG,MAAM,CAAC;IAC9B,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;CACzD,GACA,OAAO,CAAC,qBAAqB,CAAC,CAMhC;AAED,wBAAsB,UAAU,CAC9B,SAAS,EAAE,sBAAsB,EACjC,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,+BAA+B,CAAC,CAmB1C"}