@honua/sdk-esri-compat 0.0.6-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 (289) hide show
  1. package/README.md +5 -0
  2. package/contract/edit-session.d.ts +203 -0
  3. package/contract/edit-session.d.ts.map +1 -0
  4. package/contract/edit-session.js +717 -0
  5. package/contract/index.d.ts +20 -0
  6. package/contract/index.d.ts.map +1 -0
  7. package/contract/index.js +15 -0
  8. package/contract/jobs.d.ts +115 -0
  9. package/contract/jobs.d.ts.map +1 -0
  10. package/contract/jobs.js +22 -0
  11. package/contract/source.d.ts +138 -0
  12. package/contract/source.d.ts.map +1 -0
  13. package/contract/source.js +3364 -0
  14. package/contract/spatial-aggregation.d.ts +312 -0
  15. package/contract/spatial-aggregation.d.ts.map +1 -0
  16. package/contract/spatial-aggregation.js +196 -0
  17. package/contract/types.d.ts +542 -0
  18. package/contract/types.d.ts.map +1 -0
  19. package/contract/types.js +171 -0
  20. package/core/batch.d.ts +37 -0
  21. package/core/batch.d.ts.map +1 -0
  22. package/core/batch.js +78 -0
  23. package/core/cache-state.d.ts +76 -0
  24. package/core/cache-state.d.ts.map +1 -0
  25. package/core/cache-state.js +84 -0
  26. package/core/client.d.ts +289 -0
  27. package/core/client.d.ts.map +1 -0
  28. package/core/client.js +2625 -0
  29. package/core/errors.d.ts +68 -0
  30. package/core/errors.d.ts.map +1 -0
  31. package/core/errors.js +116 -0
  32. package/core/grpc-adapter.d.ts +23 -0
  33. package/core/grpc-adapter.d.ts.map +1 -0
  34. package/core/grpc-adapter.js +704 -0
  35. package/core/odata.d.ts +347 -0
  36. package/core/odata.d.ts.map +1 -0
  37. package/core/odata.js +837 -0
  38. package/core/ogc-conformance.d.ts +35 -0
  39. package/core/ogc-conformance.d.ts.map +1 -0
  40. package/core/ogc-conformance.js +121 -0
  41. package/core/ogc-maps.d.ts +45 -0
  42. package/core/ogc-maps.d.ts.map +1 -0
  43. package/core/ogc-maps.js +53 -0
  44. package/core/ogc-processes.d.ts +92 -0
  45. package/core/ogc-processes.d.ts.map +1 -0
  46. package/core/ogc-processes.js +325 -0
  47. package/core/ogc-tiles.d.ts +55 -0
  48. package/core/ogc-tiles.d.ts.map +1 -0
  49. package/core/ogc-tiles.js +81 -0
  50. package/core/pbf-decoder.d.ts +28 -0
  51. package/core/pbf-decoder.d.ts.map +1 -0
  52. package/core/pbf-decoder.js +627 -0
  53. package/core/query-builder.d.ts +261 -0
  54. package/core/query-builder.d.ts.map +1 -0
  55. package/core/query-builder.js +538 -0
  56. package/core/spatial-filter.d.ts +93 -0
  57. package/core/spatial-filter.d.ts.map +1 -0
  58. package/core/spatial-filter.js +153 -0
  59. package/core/stac.d.ts +43 -0
  60. package/core/stac.d.ts.map +1 -0
  61. package/core/stac.js +116 -0
  62. package/core/surfaces.d.ts +464 -0
  63. package/core/surfaces.d.ts.map +1 -0
  64. package/core/surfaces.js +1322 -0
  65. package/core/types.d.ts +1238 -0
  66. package/core/types.d.ts.map +1 -0
  67. package/core/types.js +13 -0
  68. package/core/wfs-capabilities.d.ts +143 -0
  69. package/core/wfs-capabilities.d.ts.map +1 -0
  70. package/core/wfs-capabilities.js +478 -0
  71. package/core/wfs-filter.d.ts +118 -0
  72. package/core/wfs-filter.d.ts.map +1 -0
  73. package/core/wfs-filter.js +586 -0
  74. package/core/wfs.d.ts +219 -0
  75. package/core/wfs.d.ts.map +1 -0
  76. package/core/wfs.js +406 -0
  77. package/core/wms-capabilities.d.ts +110 -0
  78. package/core/wms-capabilities.d.ts.map +1 -0
  79. package/core/wms-capabilities.js +566 -0
  80. package/core/wms-types.d.ts +128 -0
  81. package/core/wms-types.d.ts.map +1 -0
  82. package/core/wms-types.js +32 -0
  83. package/core/wms.d.ts +108 -0
  84. package/core/wms.d.ts.map +1 -0
  85. package/core/wms.js +182 -0
  86. package/core/wmts-capabilities.d.ts +82 -0
  87. package/core/wmts-capabilities.d.ts.map +1 -0
  88. package/core/wmts-capabilities.js +409 -0
  89. package/core/wmts.d.ts +80 -0
  90. package/core/wmts.d.ts.map +1 -0
  91. package/core/wmts.js +173 -0
  92. package/esri-compat/basemap-gallery.d.ts +38 -0
  93. package/esri-compat/basemap-gallery.d.ts.map +1 -0
  94. package/esri-compat/basemap-gallery.js +159 -0
  95. package/esri-compat/basemap-layer-list.d.ts +35 -0
  96. package/esri-compat/basemap-layer-list.d.ts.map +1 -0
  97. package/esri-compat/basemap-layer-list.js +139 -0
  98. package/esri-compat/basemap.d.ts +32 -0
  99. package/esri-compat/basemap.d.ts.map +1 -0
  100. package/esri-compat/basemap.js +84 -0
  101. package/esri-compat/bookmarks.d.ts +36 -0
  102. package/esri-compat/bookmarks.d.ts.map +1 -0
  103. package/esri-compat/bookmarks.js +108 -0
  104. package/esri-compat/class-breaks-renderer.d.ts +50 -0
  105. package/esri-compat/class-breaks-renderer.d.ts.map +1 -0
  106. package/esri-compat/class-breaks-renderer.js +164 -0
  107. package/esri-compat/color.d.ts +22 -0
  108. package/esri-compat/color.d.ts.map +1 -0
  109. package/esri-compat/color.js +106 -0
  110. package/esri-compat/controls.d.ts +174 -0
  111. package/esri-compat/controls.d.ts.map +1 -0
  112. package/esri-compat/controls.js +479 -0
  113. package/esri-compat/coordinate-conversion.d.ts +41 -0
  114. package/esri-compat/coordinate-conversion.d.ts.map +1 -0
  115. package/esri-compat/coordinate-conversion.js +125 -0
  116. package/esri-compat/directions.d.ts +45 -0
  117. package/esri-compat/directions.d.ts.map +1 -0
  118. package/esri-compat/directions.js +123 -0
  119. package/esri-compat/editor.d.ts +47 -0
  120. package/esri-compat/editor.d.ts.map +1 -0
  121. package/esri-compat/editor.js +170 -0
  122. package/esri-compat/esri-config.d.ts +16 -0
  123. package/esri-compat/esri-config.d.ts.map +1 -0
  124. package/esri-compat/esri-config.js +23 -0
  125. package/esri-compat/esri-request.d.ts +17 -0
  126. package/esri-compat/esri-request.d.ts.map +1 -0
  127. package/esri-compat/esri-request.js +66 -0
  128. package/esri-compat/event-bus.d.ts +106 -0
  129. package/esri-compat/event-bus.d.ts.map +1 -0
  130. package/esri-compat/event-bus.js +90 -0
  131. package/esri-compat/expand.d.ts +36 -0
  132. package/esri-compat/expand.d.ts.map +1 -0
  133. package/esri-compat/expand.js +97 -0
  134. package/esri-compat/extent.d.ts +43 -0
  135. package/esri-compat/extent.d.ts.map +1 -0
  136. package/esri-compat/extent.js +140 -0
  137. package/esri-compat/feature-form.d.ts +64 -0
  138. package/esri-compat/feature-form.d.ts.map +1 -0
  139. package/esri-compat/feature-form.js +137 -0
  140. package/esri-compat/feature-layer.d.ts +173 -0
  141. package/esri-compat/feature-layer.d.ts.map +1 -0
  142. package/esri-compat/feature-layer.js +655 -0
  143. package/esri-compat/feature-set.d.ts +32 -0
  144. package/esri-compat/feature-set.d.ts.map +1 -0
  145. package/esri-compat/feature-set.js +80 -0
  146. package/esri-compat/feature-table.d.ts +141 -0
  147. package/esri-compat/feature-table.d.ts.map +1 -0
  148. package/esri-compat/feature-table.js +500 -0
  149. package/esri-compat/feature-templates.d.ts +41 -0
  150. package/esri-compat/feature-templates.d.ts.map +1 -0
  151. package/esri-compat/feature-templates.js +97 -0
  152. package/esri-compat/feature.d.ts +33 -0
  153. package/esri-compat/feature.d.ts.map +1 -0
  154. package/esri-compat/feature.js +83 -0
  155. package/esri-compat/graphic.d.ts +46 -0
  156. package/esri-compat/graphic.d.ts.map +1 -0
  157. package/esri-compat/graphic.js +103 -0
  158. package/esri-compat/graphics-layer.d.ts +49 -0
  159. package/esri-compat/graphics-layer.d.ts.map +1 -0
  160. package/esri-compat/graphics-layer.js +185 -0
  161. package/esri-compat/group-layer.d.ts +48 -0
  162. package/esri-compat/group-layer.d.ts.map +1 -0
  163. package/esri-compat/group-layer.js +212 -0
  164. package/esri-compat/identify.d.ts +71 -0
  165. package/esri-compat/identify.d.ts.map +1 -0
  166. package/esri-compat/identify.js +299 -0
  167. package/esri-compat/identity-manager.d.ts +31 -0
  168. package/esri-compat/identity-manager.d.ts.map +1 -0
  169. package/esri-compat/identity-manager.js +115 -0
  170. package/esri-compat/label-class.d.ts +31 -0
  171. package/esri-compat/label-class.d.ts.map +1 -0
  172. package/esri-compat/label-class.js +102 -0
  173. package/esri-compat/layer-list.d.ts +77 -0
  174. package/esri-compat/layer-list.d.ts.map +1 -0
  175. package/esri-compat/layer-list.js +342 -0
  176. package/esri-compat/legend.d.ts +53 -0
  177. package/esri-compat/legend.d.ts.map +1 -0
  178. package/esri-compat/legend.js +254 -0
  179. package/esri-compat/map-image-layer.d.ts +162 -0
  180. package/esri-compat/map-image-layer.d.ts.map +1 -0
  181. package/esri-compat/map-image-layer.js +704 -0
  182. package/esri-compat/map-view.d.ts +315 -0
  183. package/esri-compat/map-view.d.ts.map +1 -0
  184. package/esri-compat/map-view.js +1110 -0
  185. package/esri-compat/map.d.ts +47 -0
  186. package/esri-compat/map.d.ts.map +1 -0
  187. package/esri-compat/map.js +209 -0
  188. package/esri-compat/measurement-2d.d.ts +61 -0
  189. package/esri-compat/measurement-2d.d.ts.map +1 -0
  190. package/esri-compat/measurement-2d.js +184 -0
  191. package/esri-compat/measurement.d.ts +45 -0
  192. package/esri-compat/measurement.d.ts.map +1 -0
  193. package/esri-compat/measurement.js +193 -0
  194. package/esri-compat/oauth-info.d.ts +35 -0
  195. package/esri-compat/oauth-info.d.ts.map +1 -0
  196. package/esri-compat/oauth-info.js +115 -0
  197. package/esri-compat/picture-marker-symbol.d.ts +35 -0
  198. package/esri-compat/picture-marker-symbol.d.ts.map +1 -0
  199. package/esri-compat/picture-marker-symbol.js +126 -0
  200. package/esri-compat/point.d.ts +31 -0
  201. package/esri-compat/point.d.ts.map +1 -0
  202. package/esri-compat/point.js +102 -0
  203. package/esri-compat/polygon.d.ts +31 -0
  204. package/esri-compat/polygon.d.ts.map +1 -0
  205. package/esri-compat/polygon.js +107 -0
  206. package/esri-compat/polyline.d.ts +31 -0
  207. package/esri-compat/polyline.d.ts.map +1 -0
  208. package/esri-compat/polyline.js +107 -0
  209. package/esri-compat/popup-template.d.ts +55 -0
  210. package/esri-compat/popup-template.d.ts.map +1 -0
  211. package/esri-compat/popup-template.js +128 -0
  212. package/esri-compat/popup.d.ts +54 -0
  213. package/esri-compat/popup.d.ts.map +1 -0
  214. package/esri-compat/popup.js +312 -0
  215. package/esri-compat/print.d.ts +47 -0
  216. package/esri-compat/print.d.ts.map +1 -0
  217. package/esri-compat/print.js +105 -0
  218. package/esri-compat/query.d.ts +46 -0
  219. package/esri-compat/query.d.ts.map +1 -0
  220. package/esri-compat/query.js +119 -0
  221. package/esri-compat/reactive-utils.d.ts +23 -0
  222. package/esri-compat/reactive-utils.d.ts.map +1 -0
  223. package/esri-compat/reactive-utils.js +178 -0
  224. package/esri-compat/request.d.ts +41 -0
  225. package/esri-compat/request.d.ts.map +1 -0
  226. package/esri-compat/request.js +253 -0
  227. package/esri-compat/route-layer.d.ts +59 -0
  228. package/esri-compat/route-layer.d.ts.map +1 -0
  229. package/esri-compat/route-layer.js +223 -0
  230. package/esri-compat/route-task.d.ts +88 -0
  231. package/esri-compat/route-task.d.ts.map +1 -0
  232. package/esri-compat/route-task.js +225 -0
  233. package/esri-compat/scene-view.d.ts +41 -0
  234. package/esri-compat/scene-view.d.ts.map +1 -0
  235. package/esri-compat/scene-view.js +68 -0
  236. package/esri-compat/search.d.ts +112 -0
  237. package/esri-compat/search.d.ts.map +1 -0
  238. package/esri-compat/search.js +820 -0
  239. package/esri-compat/simple-fill-symbol.d.ts +27 -0
  240. package/esri-compat/simple-fill-symbol.d.ts.map +1 -0
  241. package/esri-compat/simple-fill-symbol.js +85 -0
  242. package/esri-compat/simple-line-symbol.d.ts +27 -0
  243. package/esri-compat/simple-line-symbol.d.ts.map +1 -0
  244. package/esri-compat/simple-line-symbol.js +85 -0
  245. package/esri-compat/simple-marker-symbol.d.ts +29 -0
  246. package/esri-compat/simple-marker-symbol.d.ts.map +1 -0
  247. package/esri-compat/simple-marker-symbol.js +92 -0
  248. package/esri-compat/simple-renderer.d.ts +29 -0
  249. package/esri-compat/simple-renderer.d.ts.map +1 -0
  250. package/esri-compat/simple-renderer.js +92 -0
  251. package/esri-compat/sketch.d.ts +64 -0
  252. package/esri-compat/sketch.d.ts.map +1 -0
  253. package/esri-compat/sketch.js +227 -0
  254. package/esri-compat/spatial-reference.d.ts +31 -0
  255. package/esri-compat/spatial-reference.d.ts.map +1 -0
  256. package/esri-compat/spatial-reference.js +102 -0
  257. package/esri-compat/swipe.d.ts +34 -0
  258. package/esri-compat/swipe.d.ts.map +1 -0
  259. package/esri-compat/swipe.js +93 -0
  260. package/esri-compat/table-list.d.ts +36 -0
  261. package/esri-compat/table-list.d.ts.map +1 -0
  262. package/esri-compat/table-list.js +126 -0
  263. package/esri-compat/text-symbol.d.ts +37 -0
  264. package/esri-compat/text-symbol.d.ts.map +1 -0
  265. package/esri-compat/text-symbol.js +123 -0
  266. package/esri-compat/tile-layer.d.ts +52 -0
  267. package/esri-compat/tile-layer.d.ts.map +1 -0
  268. package/esri-compat/tile-layer.js +167 -0
  269. package/esri-compat/time-slider.d.ts +70 -0
  270. package/esri-compat/time-slider.d.ts.map +1 -0
  271. package/esri-compat/time-slider.js +208 -0
  272. package/esri-compat/track.d.ts +51 -0
  273. package/esri-compat/track.d.ts.map +1 -0
  274. package/esri-compat/track.js +174 -0
  275. package/esri-compat/unique-value-renderer.d.ts +41 -0
  276. package/esri-compat/unique-value-renderer.d.ts.map +1 -0
  277. package/esri-compat/unique-value-renderer.js +127 -0
  278. package/esri-compat/url.d.ts +12 -0
  279. package/esri-compat/url.d.ts.map +1 -0
  280. package/esri-compat/url.js +54 -0
  281. package/esri-compat/web-map.d.ts +14 -0
  282. package/esri-compat/web-map.d.ts.map +1 -0
  283. package/esri-compat/web-map.js +24 -0
  284. package/gen/honua/v1/feature_service_pb.d.ts +918 -0
  285. package/gen/honua/v1/feature_service_pb.d.ts.map +1 -0
  286. package/gen/honua/v1/feature_service_pb.js +375 -0
  287. package/index.d.ts +130 -0
  288. package/index.js +65 -0
  289. package/package.json +22 -0
@@ -0,0 +1,35 @@
1
+ /**
2
+ * OGC API conformance-class → canonical capability mapping. The
3
+ * conformance class identifiers are intentionally kept *internal* to
4
+ * this module — `negotiateOgcCapabilities` is the only public surface
5
+ * that maps from the server-advertised list onto canonical capability
6
+ * names. Top-level SDK types must not expose conformance-class names
7
+ * (acceptance criterion).
8
+ *
9
+ * @module
10
+ */
11
+ import type { Capabilities, Protocol } from "../contract/types.js";
12
+ import type { HonuaOgcConformanceResponse } from "./types.js";
13
+ /** Subset of `Protocol` for which OGC-style conformance applies. */
14
+ export type OgcConformanceProtocol = Extract<Protocol, "ogc-features" | "ogc-tiles" | "ogc-maps" | "stac"> | "ogc-processes";
15
+ /**
16
+ * Translate the server-advertised `conformsTo[]` list into a canonical
17
+ * `Capabilities` set for the given protocol. Conformance class
18
+ * identifiers are matched against substring keys so version drift
19
+ * (`features-1` → `features-3`) does not silently drop capabilities.
20
+ *
21
+ * Callers can intersect the result with their own narrower set when
22
+ * they want to gate optional features even if the server claims them.
23
+ */
24
+ export declare function negotiateOgcCapabilities(protocol: OgcConformanceProtocol, conformance: HonuaOgcConformanceResponse | {
25
+ conformsTo?: readonly string[];
26
+ } | undefined): Capabilities;
27
+ /**
28
+ * `true` when the conformance response advertises a class containing
29
+ * the given substring. Lets callers gate features on a specific
30
+ * extension without exposing the URI as a primary SDK type.
31
+ */
32
+ export declare function hasOgcConformanceClass(conformance: HonuaOgcConformanceResponse | {
33
+ conformsTo?: readonly string[];
34
+ } | undefined, classSubstring: string): boolean;
35
+ //# sourceMappingURL=ogc-conformance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ogc-conformance.d.ts","sourceRoot":"","sources":["../../../src/core/ogc-conformance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAc,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAE/E,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAgF9D,oEAAoE;AACpE,MAAM,MAAM,sBAAsB,GAC9B,OAAO,CAAC,QAAQ,EAAE,cAAc,GAAG,WAAW,GAAG,UAAU,GAAG,MAAM,CAAC,GACrE,eAAe,CAAC;AAEpB;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,sBAAsB,EAChC,WAAW,EAAE,2BAA2B,GAAG;IAAE,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GAAG,SAAS,GACxF,YAAY,CAad;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,2BAA2B,GAAG;IAAE,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GAAG,SAAS,EACzF,cAAc,EAAE,MAAM,GACrB,OAAO,CAMT"}
@@ -0,0 +1,121 @@
1
+ /**
2
+ * OGC API conformance-class → canonical capability mapping. The
3
+ * conformance class identifiers are intentionally kept *internal* to
4
+ * this module — `negotiateOgcCapabilities` is the only public surface
5
+ * that maps from the server-advertised list onto canonical capability
6
+ * names. Top-level SDK types must not expose conformance-class names
7
+ * (acceptance criterion).
8
+ *
9
+ * @module
10
+ */
11
+ import { capabilities } from "../contract/types.js";
12
+ /**
13
+ * Mapping from OGC conformance-class URI segments to one or more
14
+ * canonical capabilities. Stored as substring keys because the server
15
+ * may version the path differently (`features-1`, `features-2`,
16
+ * `features-3`, `features-4` — and OGC has been re-issuing the URIs
17
+ * over time). A substring match against `conformsTo[]` covers both
18
+ * versions.
19
+ */
20
+ const FEATURE_CONFORMANCE_MAP = [
21
+ ["features-1/1.0/conf/core", ["query", "queryObjectIds"]],
22
+ ["features-1/1.0/conf/oas3", []],
23
+ ["features-1/1.0/conf/oas30", []],
24
+ ["features-1/1.0/conf/geojson", []],
25
+ ["features-1/1.0/conf/html", []],
26
+ ["features-1/1.0/conf/crs", []],
27
+ ["features-3/1.0/conf/filter", ["queryAggregate"]],
28
+ ["features-3/1.0/conf/features-filter", ["queryAggregate"]],
29
+ ["features-3/1.0/conf/queryables", []],
30
+ ["features-3/1.0/conf/cql2-text", []],
31
+ ["features-3/1.0/conf/cql2-json", []],
32
+ ["features-4/1.0/conf/create-replace-delete", ["applyEdits"]],
33
+ ["features-4/1.0/conf/transactions", ["applyEdits"]],
34
+ ["features-2/1.0/conf/sql", ["sql"]],
35
+ ];
36
+ const TILE_CONFORMANCE_MAP = [
37
+ ["tiles-1/1.0/conf/core", ["tiles"]],
38
+ ["tiles-1/1.0/conf/tileset", ["tiles"]],
39
+ ["tiles-1/1.0/conf/tilesets-list", ["tiles"]],
40
+ ["tiles-1/1.0/conf/dataset-tilesets", ["tiles"]],
41
+ ["tiles-1/1.0/conf/geodata-tilesets", ["tiles"]],
42
+ ["tiles-1/1.0/conf/geodata-selection", ["tiles"]],
43
+ ["tiles-1/1.0/conf/multi-tile", ["tiles"]],
44
+ ["tiles-1/1.0/conf/oas30", []],
45
+ ["tiles-1/1.0/conf/mvt", ["tiles", "render"]],
46
+ ["tiles-1/1.0/conf/png", ["tiles", "render"]],
47
+ ["tiles-1/1.0/conf/jpeg", ["tiles", "render"]],
48
+ ];
49
+ const MAP_CONFORMANCE_MAP = [
50
+ ["maps-1/1.0/conf/core", ["render"]],
51
+ ["maps-1/1.0/conf/dataset-map", ["render"]],
52
+ ["maps-1/1.0/conf/collection-map", ["render"]],
53
+ ["maps-1/1.0/conf/scaling", ["render"]],
54
+ ["maps-1/1.0/conf/spatial-subsetting", ["render"]],
55
+ ["maps-1/1.0/conf/png", ["render"]],
56
+ ["maps-1/1.0/conf/jpeg", ["render"]],
57
+ ["styles-1/1.0/conf/core", ["render"]],
58
+ ];
59
+ const PROCESS_CONFORMANCE_MAP = [
60
+ ["processes-1/1.0/conf/core", ["processes"]],
61
+ ["processes-1/1.0/conf/ogc-process-description", ["processes"]],
62
+ ["processes-1/1.0/conf/job-list", ["processes"]],
63
+ ["processes-1/1.0/conf/dismiss", ["processes"]],
64
+ ["processes-1/1.0/conf/callback", ["processes"]],
65
+ ];
66
+ const STAC_CONFORMANCE_MAP = [
67
+ ["stac-spec.org", ["query", "queryObjectIds"]],
68
+ ["api.stacspec.org/v1.0.0/core", ["query"]],
69
+ ["api.stacspec.org/v1.0.0/item-search", ["query", "queryObjectIds"]],
70
+ ["api.stacspec.org/v1.0.0/ogcapi-features", ["query", "queryObjectIds"]],
71
+ ["api.stacspec.org/v1.0.0/collections", []],
72
+ // STAC's `filter` extension is CQL2 query-side filtering, not server-side
73
+ // aggregation. The STAC source adapter has no aggregation implementation,
74
+ // so this conformance class must not advertise `queryAggregate`.
75
+ ["api.stacspec.org/v1.0.0/filter", []],
76
+ ];
77
+ const CONFORMANCE_TABLES = {
78
+ "ogc-features": FEATURE_CONFORMANCE_MAP,
79
+ "ogc-tiles": TILE_CONFORMANCE_MAP,
80
+ "ogc-maps": MAP_CONFORMANCE_MAP,
81
+ "ogc-processes": PROCESS_CONFORMANCE_MAP,
82
+ stac: STAC_CONFORMANCE_MAP,
83
+ };
84
+ /**
85
+ * Translate the server-advertised `conformsTo[]` list into a canonical
86
+ * `Capabilities` set for the given protocol. Conformance class
87
+ * identifiers are matched against substring keys so version drift
88
+ * (`features-1` → `features-3`) does not silently drop capabilities.
89
+ *
90
+ * Callers can intersect the result with their own narrower set when
91
+ * they want to gate optional features even if the server claims them.
92
+ */
93
+ export function negotiateOgcCapabilities(protocol, conformance) {
94
+ const table = CONFORMANCE_TABLES[protocol];
95
+ const advertised = conformance?.conformsTo ?? [];
96
+ const out = new Set();
97
+ for (const uri of advertised) {
98
+ if (typeof uri !== "string")
99
+ continue;
100
+ for (const [needle, caps] of table) {
101
+ if (uri.includes(needle)) {
102
+ for (const cap of caps)
103
+ out.add(cap);
104
+ }
105
+ }
106
+ }
107
+ return capabilities(Array.from(out));
108
+ }
109
+ /**
110
+ * `true` when the conformance response advertises a class containing
111
+ * the given substring. Lets callers gate features on a specific
112
+ * extension without exposing the URI as a primary SDK type.
113
+ */
114
+ export function hasOgcConformanceClass(conformance, classSubstring) {
115
+ const advertised = conformance?.conformsTo ?? [];
116
+ for (const uri of advertised) {
117
+ if (typeof uri === "string" && uri.includes(classSubstring))
118
+ return true;
119
+ }
120
+ return false;
121
+ }
@@ -0,0 +1,45 @@
1
+ /**
2
+ * OGC API Maps surface. Server-rendered map images at the dataset or
3
+ * collection level, with optional styled-output access. The runtime
4
+ * deliberately exposes a thin envelope (`width`, `height`, `bbox`,
5
+ * `crs`, `format`, optional `filter` / `collections`) — extension
6
+ * parameters live on `extraParams`.
7
+ *
8
+ * @module
9
+ */
10
+ import type { HonuaClient } from "./client.js";
11
+ import type { HonuaOgcConformanceResponse, HonuaOgcLandingResponse, HonuaOgcMapImageResponse, OgcMapImageRequest, OgcMetadataRequest } from "./types.js";
12
+ export interface HonuaOgcMapsOptions {
13
+ client: HonuaClient;
14
+ }
15
+ export interface HonuaOgcCollectionMapOptions {
16
+ client: HonuaClient;
17
+ collectionId: string | number;
18
+ styleId?: string;
19
+ }
20
+ export type HonuaOgcCollectionMapImageRequest = Omit<OgcMapImageRequest, "collectionId" | "styleId"> & {
21
+ styleId?: string;
22
+ };
23
+ /** Top-level OGC API Maps handle. */
24
+ export declare class HonuaOgcMaps {
25
+ readonly client: HonuaClient;
26
+ constructor(options: HonuaOgcMapsOptions);
27
+ collection(collectionId: string | number, styleId?: string): HonuaOgcCollectionMap;
28
+ landing(request?: OgcMetadataRequest): Promise<HonuaOgcLandingResponse>;
29
+ conformance(request?: OgcMetadataRequest): Promise<HonuaOgcConformanceResponse>;
30
+ /** Render a dataset-level map (across one or more collections). */
31
+ map(request?: OgcMapImageRequest): Promise<HonuaOgcMapImageResponse>;
32
+ }
33
+ /**
34
+ * Bound handle for a collection-level (and optionally styled) map. Drops
35
+ * the routing-discriminator fields from per-call requests.
36
+ */
37
+ export declare class HonuaOgcCollectionMap {
38
+ readonly client: HonuaClient;
39
+ readonly collectionId: string | number;
40
+ readonly styleId: string | undefined;
41
+ constructor(options: HonuaOgcCollectionMapOptions);
42
+ map(request?: HonuaOgcCollectionMapImageRequest): Promise<HonuaOgcMapImageResponse>;
43
+ }
44
+ export declare function createHonuaOgcMaps(client: HonuaClient): HonuaOgcMaps;
45
+ //# sourceMappingURL=ogc-maps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ogc-maps.d.ts","sourceRoot":"","sources":["../../../src/core/ogc-maps.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EACV,2BAA2B,EAC3B,uBAAuB,EACvB,wBAAwB,EACxB,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,WAAW,CAAC;CACrB;AAED,MAAM,WAAW,4BAA4B;IAC3C,MAAM,EAAE,WAAW,CAAC;IACpB,YAAY,EAAE,MAAM,GAAG,MAAM,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,iCAAiC,GAAG,IAAI,CAAC,kBAAkB,EAAE,cAAc,GAAG,SAAS,CAAC,GAAG;IACrG,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,qCAAqC;AACrC,qBAAa,YAAY;IACvB,SAAgB,MAAM,EAAE,WAAW,CAAC;gBAEjB,OAAO,EAAE,mBAAmB;IAIxC,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,qBAAqB;IAI5E,OAAO,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAI3E,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,2BAA2B,CAAC;IAIhG,mEAAmE;IACtD,GAAG,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,wBAAwB,CAAC;CAGtF;AAED;;;GAGG;AACH,qBAAa,qBAAqB;IAChC,SAAgB,MAAM,EAAE,WAAW,CAAC;IACpC,SAAgB,YAAY,EAAE,MAAM,GAAG,MAAM,CAAC;IAC9C,SAAgB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;gBAEzB,OAAO,EAAE,4BAA4B;IAM3C,GAAG,CAAC,OAAO,GAAE,iCAAsC,GAAG,OAAO,CAAC,wBAAwB,CAAC;CAOrG;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,WAAW,GAAG,YAAY,CAEpE"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * OGC API Maps surface. Server-rendered map images at the dataset or
3
+ * collection level, with optional styled-output access. The runtime
4
+ * deliberately exposes a thin envelope (`width`, `height`, `bbox`,
5
+ * `crs`, `format`, optional `filter` / `collections`) — extension
6
+ * parameters live on `extraParams`.
7
+ *
8
+ * @module
9
+ */
10
+ /** Top-level OGC API Maps handle. */
11
+ export class HonuaOgcMaps {
12
+ client;
13
+ constructor(options) {
14
+ this.client = options.client;
15
+ }
16
+ collection(collectionId, styleId) {
17
+ return new HonuaOgcCollectionMap({ client: this.client, collectionId, styleId });
18
+ }
19
+ async landing(request = {}) {
20
+ return this.client.getOgcMapsLanding(request);
21
+ }
22
+ async conformance(request = {}) {
23
+ return this.client.getOgcMapsConformance(request);
24
+ }
25
+ /** Render a dataset-level map (across one or more collections). */
26
+ async map(request = {}) {
27
+ return this.client.getOgcMapImage(request);
28
+ }
29
+ }
30
+ /**
31
+ * Bound handle for a collection-level (and optionally styled) map. Drops
32
+ * the routing-discriminator fields from per-call requests.
33
+ */
34
+ export class HonuaOgcCollectionMap {
35
+ client;
36
+ collectionId;
37
+ styleId;
38
+ constructor(options) {
39
+ this.client = options.client;
40
+ this.collectionId = options.collectionId;
41
+ this.styleId = options.styleId;
42
+ }
43
+ async map(request = {}) {
44
+ return this.client.getOgcMapImage({
45
+ ...request,
46
+ collectionId: this.collectionId,
47
+ styleId: request.styleId ?? this.styleId,
48
+ });
49
+ }
50
+ }
51
+ export function createHonuaOgcMaps(client) {
52
+ return new HonuaOgcMaps({ client });
53
+ }
@@ -0,0 +1,92 @@
1
+ /**
2
+ * OGC API Processes surface. Process discovery, execution, and async
3
+ * job tracking. Per the ticket constraint, async executions return an
4
+ * `IJobRun` (the canonical async-operation surface) rather than an
5
+ * OGC-specific job type.
6
+ *
7
+ * @module
8
+ */
9
+ import type { IJobRun, JobProgress, JobResult, JobSnapshot, JobSnapshotListener, JobStatus } from "../contract/jobs.js";
10
+ import type { HonuaClient } from "./client.js";
11
+ import type { HonuaOgcConformanceResponse, HonuaOgcLandingResponse, HonuaOgcProcessDescription, HonuaOgcProcessJobStatus, HonuaOgcProcessesResponse, OgcMetadataRequest, OgcProcessExecuteRequest, OgcProcessStatus } from "./types.js";
12
+ export interface HonuaOgcProcessesOptions {
13
+ client: HonuaClient;
14
+ }
15
+ export interface HonuaOgcProcessJobOptions {
16
+ client: HonuaClient;
17
+ jobId: string;
18
+ /** Process identifier the job was created from, when known. */
19
+ processId?: string;
20
+ /** Initial server snapshot, as returned from `executeOgcProcess`. */
21
+ initialStatus?: HonuaOgcProcessJobStatus;
22
+ /** Default `pollIntervalMs` for `results()`. */
23
+ pollIntervalMs?: number;
24
+ /** Override of the default polling behavior; useful in tests. */
25
+ pollFn?: (jobId: string, signal?: AbortSignal) => Promise<HonuaOgcProcessJobStatus>;
26
+ }
27
+ /** Top-level OGC API Processes handle. */
28
+ export declare class HonuaOgcProcesses {
29
+ readonly client: HonuaClient;
30
+ constructor(options: HonuaOgcProcessesOptions);
31
+ landing(request?: OgcMetadataRequest): Promise<HonuaOgcLandingResponse>;
32
+ conformance(request?: OgcMetadataRequest): Promise<HonuaOgcConformanceResponse>;
33
+ list(request?: OgcMetadataRequest): Promise<HonuaOgcProcessesResponse>;
34
+ describe(processId: string, request?: OgcMetadataRequest): Promise<HonuaOgcProcessDescription>;
35
+ /**
36
+ * Submit a process for execution. Always returns an `IJobRun`: honua-server
37
+ * is async-only (advertises `jobControlOptions: ['async-execute', 'dismiss']`),
38
+ * so the runner polls for the terminal snapshot regardless of whether
39
+ * `mode` is `"async"` or `"auto"`.
40
+ */
41
+ execute<T = unknown>(request: OgcProcessExecuteRequest): Promise<IJobRun<T>>;
42
+ /** Adopt an existing job by id (useful when reconnecting after navigation). */
43
+ job<T = unknown>(jobId: string, options?: {
44
+ processId?: string;
45
+ }): IJobRun<T>;
46
+ }
47
+ /**
48
+ * `IJobRun` implementation backed by OGC API Processes 1.0 status / result
49
+ * endpoints. Watchers receive the latest `JobSnapshot` when status,
50
+ * progress, or terminal result changes; cancel is idempotent and races
51
+ * the server's `dismissed` response against any concurrent terminal
52
+ * transition.
53
+ */
54
+ export declare class HonuaOgcProcessJobRun<T = unknown> implements IJobRun<T> {
55
+ readonly id: string;
56
+ readonly type: string;
57
+ private readonly client;
58
+ private readonly pollIntervalMs;
59
+ private readonly pollFn;
60
+ private currentStatus;
61
+ private currentProgress;
62
+ private terminalSnapshot;
63
+ private terminalPromise;
64
+ private readonly listeners;
65
+ constructor(options: HonuaOgcProcessJobOptions);
66
+ get status(): JobStatus;
67
+ get progress(): JobProgress | undefined;
68
+ poll(): Promise<JobSnapshot<T>>;
69
+ watch(listener: JobSnapshotListener<T>): () => void;
70
+ results(): Promise<JobResult<T>>;
71
+ cancel(): Promise<JobStatus>;
72
+ private runUntilTerminal;
73
+ /**
74
+ * Translate an OGC `statusInfo` payload onto the canonical snapshot
75
+ * surface, fire watchers, and (for `successful` terminals) fetch the
76
+ * result document inline so the snapshot's `result.outputs` is
77
+ * populated by the time `runUntilTerminal` / `poll` resolves.
78
+ */
79
+ private handleOgcStatus;
80
+ private notify;
81
+ }
82
+ /** Error thrown when `IJobRun.results()` resolves a non-success terminal. */
83
+ export declare class HonuaJobFailedError extends Error {
84
+ readonly status: JobStatus;
85
+ readonly errorCode: string | undefined;
86
+ readonly details: unknown;
87
+ constructor(message: string, status: JobStatus, errorCode?: string, details?: unknown);
88
+ }
89
+ export declare function createHonuaOgcProcesses(client: HonuaClient): HonuaOgcProcesses;
90
+ export type HonuaOgcProcessesAdapter = HonuaOgcProcesses;
91
+ export type { OgcProcessStatus };
92
+ //# sourceMappingURL=ogc-processes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ogc-processes.d.ts","sourceRoot":"","sources":["../../../src/core/ogc-processes.ts"],"names":[],"mappings":"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"}