@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,542 @@
1
+ /**
2
+ * Shared client contract — canonical nouns that all protocol adapters
3
+ * (`HonuaFeatureLayer`, `HonuaMapService`, `HonuaOgcFeatureCollection`, plus
4
+ * future WFS / WMS / OData adapters) must speak. The contract is documented
5
+ * in `docs/shared-client-contract.md`; capability coverage by protocol is
6
+ * documented in `docs/protocol-capability-matrix.md`.
7
+ *
8
+ * The runtime classes in `src/core/surfaces.ts` are not replaced — they
9
+ * remain the implementation. The contract here wraps their request /
10
+ * response shapes (`QueryFeaturesRequest`, `OgcItemsRequest`,
11
+ * `HonuaTypedQueryResponse`, `HonuaOgcFeatureCollectionResponse`) so that
12
+ * cross-protocol code can speak one vocabulary without re-litigating the
13
+ * surface in every downstream ticket.
14
+ *
15
+ * @module
16
+ */
17
+ import type { HonuaClient } from "../core/client.js";
18
+ import type { SpatialFilter } from "../core/spatial-filter.js";
19
+ import type { HonuaExtent, HonuaFieldInfo, HonuaServerCompatibilityFeature, HonuaTypedFeature } from "../core/types.js";
20
+ /**
21
+ * Canonical protocol identifiers. Spatial / tabular protocols served
22
+ * behind a `Source` come first, then the render-only OGC tile and map
23
+ * adapters (reachable through `Source.protocol()`), then the STAC API
24
+ * search adapter, the WFS / WMS / OData adapters, and finally the
25
+ * MapLibre-native sources composed alongside protocol sources by
26
+ * `HonuaMap` and `MapBinding`.
27
+ *
28
+ * The five GeoServices identifiers correspond to the five Esri service
29
+ * types Honua Server publishes: FeatureServer, MapServer, ImageServer,
30
+ * Geometry Service, and GP Service. Geometry and GP services do not host
31
+ * features, so their `Source` instances expose only the typed `protocol()`
32
+ * escape hatch — every cross-protocol request shape goes through one
33
+ * vocabulary even when the underlying protocol is utility-only.
34
+ */
35
+ export type Protocol = "geoservices-feature-service" | "geoservices-map-service" | "geoservices-image-service" | "geoservices-geometry-service" | "geoservices-gp-service" | "ogc-features" | "ogc-tiles" | "ogc-maps" | "stac" | "wfs" | "wms" | "wmts" | "odata" | "maplibre-vector" | "maplibre-raster" | "maplibre-geojson";
36
+ /** All protocol identifiers, in declaration order. */
37
+ export declare const PROTOCOLS: readonly Protocol[];
38
+ /**
39
+ * Coarse-grained protocol capabilities negotiated across the canonical
40
+ * `Source` methods and the typed `Source.adapter()` escape hatch. This
41
+ * ticket intentionally standardizes only the query-family subset on
42
+ * `Source`; capabilities such as `render`, `tiles`, `sql`, and
43
+ * `queryObjectIds` stay in the shared registry so downstream adapter
44
+ * tickets can reuse one vocabulary without widening the top-level API.
45
+ *
46
+ * Keep this list aligned with `docs/protocol-capability-matrix.md`.
47
+ */
48
+ export type Capability = "query" | "queryAggregate" | "spatialAggregate" | "queryExtent" | "queryObjectIds" | "queryRelated" | "applyEdits" | "attachments" | "render" | "tiles" | "sql" | "stream" | "pbf" | "connect" | "image" | "geometry" | "geoprocess" | "processes";
49
+ /** All capability identifiers, in declaration order. */
50
+ export declare const CAPABILITIES: readonly Capability[];
51
+ /**
52
+ * Per-source capability registry. Set membership = first-party support
53
+ * (the adapter can fulfill the capability without client-side fallback).
54
+ * Capabilities that require a client-side fallback should be omitted from
55
+ * the set; callers either swap to a different protocol or opt into a
56
+ * `degraded: true` policy at the `ExplorationContext` level.
57
+ */
58
+ export type Capabilities = ReadonlySet<Capability>;
59
+ /**
60
+ * Build a `Capabilities` set from a readonly array. Provided as a tiny
61
+ * helper so callers do not need to import `Set` literals at every adapter
62
+ * site.
63
+ */
64
+ export declare function capabilities(values: readonly Capability[]): Capabilities;
65
+ /**
66
+ * Compute the **weakest** (intersected) capability set across one or
67
+ * more participating sources / descriptors. This is the canonical helper
68
+ * for cross-protocol capability negotiation in a mixed-source
69
+ * composition (`#22`): a composition supports a capability only when
70
+ * **every** participating source supports it.
71
+ *
72
+ * Promising a capability the weakest source lacks is the worst possible
73
+ * mixed-source failure mode (silent wrong result), so consumers should
74
+ * always intersect before fanning a query out to a heterogeneous set.
75
+ *
76
+ * Accepts anything with a `capabilities` field (live `Source` instances
77
+ * or plain `SourceDescriptor`s). Empty input returns an empty set.
78
+ *
79
+ * For per-operation reasoning across a heterogeneous mix, partition
80
+ * sources first (e.g., feature sources only) and intersect on the
81
+ * partition; intersecting a render-only source with a feature source
82
+ * yields the empty set, which is honest but rarely actionable on its
83
+ * own.
84
+ */
85
+ export declare function intersectCapabilities(participants: ReadonlyArray<{
86
+ readonly capabilities: Capabilities;
87
+ }>): Capabilities;
88
+ /**
89
+ * Companion of {@link intersectCapabilities}: the union (best-case)
90
+ * capability set across participants. Useful for documenting what
91
+ * capability fan-out under `degraded` policy could reach if every
92
+ * source were queried independently — never use this to gate a single
93
+ * fan-out call (that needs the intersection).
94
+ */
95
+ export declare function unionCapabilities(participants: ReadonlyArray<{
96
+ readonly capabilities: Capabilities;
97
+ }>): Capabilities;
98
+ /**
99
+ * Default capability sets keyed by protocol. Callers that need a narrower
100
+ * surface for a specific source must intersect the default set themselves
101
+ * and pass the result on `SourceDescriptor.capabilities`; the built-in
102
+ * adapter constructors do not read service metadata today.
103
+ *
104
+ * The matrix here mirrors the one in `docs/protocol-capability-matrix.md`.
105
+ * Update both together.
106
+ */
107
+ export declare const PROTOCOL_DEFAULT_CAPABILITIES: Readonly<Record<Protocol, Capabilities>>;
108
+ export type SourceId = string;
109
+ export type DatasetId = string;
110
+ export type FeatureId = number | string;
111
+ /**
112
+ * Protocol-specific endpoint information. Field-compatible with the server
113
+ * `SourceBinding.locator` shape documented in
114
+ * `docs/source-binding-alignment.md` (a Honua SDK `SourceDescriptor` may be
115
+ * exported into a server `SourceBinding` without re-shaping the locator).
116
+ */
117
+ export interface SourceLocator {
118
+ /** Fully qualified URL to the protocol endpoint. */
119
+ url: string;
120
+ /** GeoServices service identifier (FeatureServer / MapServer / ImageServer / Geometry / GP). */
121
+ serviceId?: string;
122
+ /** GeoServices layer identifier within the service. */
123
+ layerId?: number;
124
+ /** OGC API Features / Tiles / Maps collection identifier. */
125
+ collectionId?: string | number;
126
+ /** OGC API Tiles tile-matrix-set identifier (e.g. `WebMercatorQuad`). */
127
+ tileMatrixSetId?: string;
128
+ /** OGC API Maps / Tiles style identifier for styled-output endpoints. */
129
+ styleId?: string;
130
+ /** WFS / WMS type-name identifier. */
131
+ typeName?: string;
132
+ /**
133
+ * WFS feature namespace URI bound to the prefix in `typeName`. Required for
134
+ * WFS-T `applyEdits` when `typeName` carries a namespace prefix
135
+ * (e.g. `parcels:lot`) — the prefix is declared on the
136
+ * `<wfs:Transaction>` root with this URI so the per-handle feature
137
+ * element resolves to the schema element the server expects. The
138
+ * namespace URI typically appears on the `<wfs:WFS_Capabilities>` root
139
+ * (`xmlns:<prefix>=…`); record it on the descriptor so applyEdits does
140
+ * not have to fetch capabilities synchronously.
141
+ */
142
+ featureNamespace?: string;
143
+ /** OData entity-set identifier. */
144
+ entitySet?: string;
145
+ /** GP Service task identifier (for `geoservices-gp-service`). */
146
+ taskName?: string;
147
+ }
148
+ /** Optional schema description; mirrors `HonuaLayerMetadata.fields`. */
149
+ export interface SourceSchema {
150
+ fields?: readonly HonuaFieldInfo[];
151
+ primaryKey?: string;
152
+ /** Hint that the source's records carry temporal validity. */
153
+ timeField?: string;
154
+ }
155
+ /**
156
+ * Canonical descriptor for one protocol-backed data source. Carries
157
+ * everything required to construct a `Source`, negotiate capabilities, and
158
+ * project the source onto a server `SourceBinding`.
159
+ */
160
+ export interface SourceDescriptor {
161
+ id: SourceId;
162
+ protocol: Protocol;
163
+ locator: SourceLocator;
164
+ capabilities: Capabilities;
165
+ schema?: SourceSchema;
166
+ attribution?: string;
167
+ }
168
+ export interface PaginationSpec {
169
+ /** Zero-based offset of the first record. */
170
+ offset?: number;
171
+ /** Maximum records per page. Implementation may clamp. */
172
+ limit?: number;
173
+ }
174
+ export interface SortSpec {
175
+ field: string;
176
+ direction?: "asc" | "desc";
177
+ }
178
+ export type AggregationFn = "count" | "sum" | "avg" | "min" | "max" | "stddev" | "var";
179
+ export interface AggregationSpec {
180
+ /** Optional grouping fields. Empty / omitted = single-row aggregate. */
181
+ groupBy?: readonly string[];
182
+ /** Aggregation expressions. */
183
+ metrics: readonly AggregationMetric[];
184
+ }
185
+ export interface AggregationMetric {
186
+ fn: AggregationFn;
187
+ field: string;
188
+ alias?: string;
189
+ }
190
+ /**
191
+ * Protocol-neutral query intent. `Source.query()` adapters translate this
192
+ * into a `QueryFeaturesRequest`, `MapLayerQueryRequest`, `OgcItemsRequest`,
193
+ * or the corresponding WFS / OData request.
194
+ */
195
+ export interface Query<_T = Record<string, unknown>> {
196
+ /** Logical filter expression. SQL-92 WHERE for GeoServices, CQL2 for OGC. */
197
+ where?: string;
198
+ /** Spatial constraint. Reuses `core/spatial-filter.ts`. */
199
+ spatialFilter?: SpatialFilter;
200
+ /** Subset of fields to return. Adapters default to all when omitted. */
201
+ outFields?: readonly string[];
202
+ /** Sort order. */
203
+ orderBy?: readonly SortSpec[];
204
+ /** Pagination. */
205
+ pagination?: PaginationSpec;
206
+ /** Aggregation request; if present the `Result` contains aggregate rows. */
207
+ aggregation?: AggregationSpec;
208
+ /** Whether the result envelope should include geometry. */
209
+ returnGeometry?: boolean;
210
+ /** Output spatial reference (WKID, "auto", or full reference object). */
211
+ outSr?: string | number;
212
+ /** Caller-supplied cancellation. */
213
+ signal?: AbortSignal;
214
+ }
215
+ /**
216
+ * Reasons that a `Source` may have fulfilled a `Query` with a degraded
217
+ * strategy. Surfaced in `Result.degraded`. Downstream views should check
218
+ * this field before reporting numbers as authoritative.
219
+ *
220
+ * `sourceId` is populated by mixed-source consumers (`#22`) so a fan-out
221
+ * across multiple sources can attribute each degradation back to the
222
+ * exact source that triggered it without parsing the human-readable
223
+ * `reason`.
224
+ */
225
+ export interface DegradedReason {
226
+ /** The capability that was missing or partially supported. */
227
+ capability: Capability;
228
+ /** Human-readable explanation. */
229
+ reason: string;
230
+ /** Which protocol the degradation was relative to. */
231
+ protocol?: Protocol;
232
+ /**
233
+ * Optional id of the source that emitted this degradation. Set by the
234
+ * adapter when the degradation can be attributed to a specific source
235
+ * (the common case once mixed-source compositions are in play).
236
+ */
237
+ sourceId?: SourceId;
238
+ }
239
+ /**
240
+ * Unified query result envelope. Wraps (does not replace)
241
+ * `HonuaTypedQueryResponse<T>` and `HonuaOgcFeatureCollectionResponse`;
242
+ * adapters fill the optional fields that their underlying response carries
243
+ * and leave the rest undefined.
244
+ */
245
+ export interface Result<T = Record<string, unknown>> {
246
+ /** Returned features. Empty array (not undefined) when nothing matched. */
247
+ features: readonly HonuaTypedFeature<T>[];
248
+ /** True if the server signalled that more records exist than were returned. */
249
+ exceededTransferLimit: boolean;
250
+ /** Total count when known (counts request, OGC `numberMatched`). */
251
+ totalCount?: number;
252
+ /** Aggregated rows when the query carried an `aggregation` spec. */
253
+ aggregateRows?: ReadonlyArray<Record<string, unknown>>;
254
+ /** Spatial extent of the returned features (extent-only query response). */
255
+ extent?: HonuaExtent;
256
+ /** Field schema as returned by the protocol, when the response carried one. */
257
+ fields?: readonly HonuaFieldInfo[];
258
+ /** Degradation flags emitted by the source while serving this query. */
259
+ degraded?: readonly DegradedReason[];
260
+ }
261
+ /**
262
+ * Canonical feature shape used by edit envelopes. Mirrors the canonical
263
+ * `HonuaTypedFeature<T>` (attributes + optional geometry) so the same value
264
+ * an adapter returns from `query()` may be fed back into `applyEdits()`.
265
+ */
266
+ export interface CanonicalFeature<T = Record<string, unknown>> {
267
+ /** Optional row identity. Required for updates and deletes. */
268
+ id?: FeatureId;
269
+ attributes: T;
270
+ geometry?: Record<string, unknown> | null;
271
+ }
272
+ /**
273
+ * Single-source edit envelope. Adapters that do not advertise `applyEdits`
274
+ * throw `HonuaCapabilityNotSupportedError` rather than dropping records.
275
+ */
276
+ export interface EditEnvelope<T = Record<string, unknown>> {
277
+ adds?: ReadonlyArray<CanonicalFeature<T>>;
278
+ updates?: ReadonlyArray<CanonicalFeature<T>>;
279
+ deletes?: ReadonlyArray<FeatureId>;
280
+ /** When true (and the protocol honors it) the edit batch is atomic. */
281
+ rollbackOnFailure?: boolean;
282
+ /** Caller-supplied cancellation. */
283
+ signal?: AbortSignal;
284
+ }
285
+ /** Per-feature edit outcome. */
286
+ export interface EditOutcome {
287
+ id?: FeatureId;
288
+ success: boolean;
289
+ error?: {
290
+ code: number;
291
+ description: string;
292
+ };
293
+ }
294
+ /** Canonical edit response. Buckets mirror `EditEnvelope`. */
295
+ export interface EditResult {
296
+ added: ReadonlyArray<EditOutcome>;
297
+ updated: ReadonlyArray<EditOutcome>;
298
+ deleted: ReadonlyArray<EditOutcome>;
299
+ /** Degradation flags for partial-success or fallback paths. */
300
+ degraded?: readonly DegradedReason[];
301
+ }
302
+ /**
303
+ * Canonical related-records request. The `relationshipId` is protocol-specific
304
+ * (GeoServices uses numeric ids; OData uses navigation property names) so
305
+ * adapters that lack relationships throw `HonuaCapabilityNotSupportedError`
306
+ * rather than silently dropping the request.
307
+ */
308
+ export interface RelatedQuery {
309
+ relationshipId: number;
310
+ /** Source feature ids whose related records to return. */
311
+ sourceIds: ReadonlyArray<FeatureId>;
312
+ where?: string;
313
+ outFields?: readonly string[];
314
+ returnGeometry?: boolean;
315
+ signal?: AbortSignal;
316
+ }
317
+ /** One source feature plus its related records. */
318
+ export interface RelatedGroup<T = Record<string, unknown>> {
319
+ sourceId: FeatureId;
320
+ features: ReadonlyArray<HonuaTypedFeature<T>>;
321
+ }
322
+ /** Canonical related-records response. */
323
+ export interface RelatedResult<T = Record<string, unknown>> {
324
+ groups: ReadonlyArray<RelatedGroup<T>>;
325
+ fields?: readonly HonuaFieldInfo[];
326
+ degraded?: readonly DegradedReason[];
327
+ }
328
+ /** Metadata for a single attachment on a feature. */
329
+ export interface AttachmentInfo {
330
+ id: FeatureId;
331
+ parentId: FeatureId;
332
+ name?: string;
333
+ contentType?: string;
334
+ size?: number;
335
+ }
336
+ /** Canonical attachment-query envelope. */
337
+ export interface AttachmentQuery {
338
+ /** Optional caller-supplied parent ids. Empty = all matching `where`. */
339
+ parentIds?: ReadonlyArray<FeatureId>;
340
+ where?: string;
341
+ signal?: AbortSignal;
342
+ }
343
+ /** Group of attachments for a single parent feature. */
344
+ export interface AttachmentGroup {
345
+ parentId: FeatureId;
346
+ attachments: ReadonlyArray<AttachmentInfo>;
347
+ }
348
+ /** Add-attachment request. `attachment` accepts `Blob`, `File`, or string. */
349
+ export interface AttachmentAdd {
350
+ parentId: FeatureId;
351
+ attachment: Blob | File | string;
352
+ name?: string;
353
+ contentType?: string;
354
+ signal?: AbortSignal;
355
+ }
356
+ /** Update an existing attachment in place. */
357
+ export interface AttachmentUpdate extends AttachmentAdd {
358
+ attachmentId: FeatureId;
359
+ }
360
+ /** Delete one or more attachments from a parent feature. */
361
+ export interface AttachmentDelete {
362
+ parentId: FeatureId;
363
+ attachmentIds: ReadonlyArray<FeatureId>;
364
+ signal?: AbortSignal;
365
+ }
366
+ /** Outcome envelope for add / update / delete operations. */
367
+ export interface AttachmentEditOutcome {
368
+ parentId?: FeatureId;
369
+ attachmentId?: FeatureId;
370
+ success: boolean;
371
+ error?: {
372
+ code: number;
373
+ description: string;
374
+ };
375
+ }
376
+ /**
377
+ * Namespace returned by `Source.attachments`. Adapters that do not advertise
378
+ * the `attachments` capability throw `HonuaCapabilityNotSupportedError`
379
+ * from each method rather than ship a `null`-ish placeholder.
380
+ */
381
+ export interface AttachmentApi {
382
+ query(request?: AttachmentQuery): Promise<ReadonlyArray<AttachmentGroup>>;
383
+ list(parentId: FeatureId, options?: {
384
+ signal?: AbortSignal;
385
+ }): Promise<ReadonlyArray<AttachmentInfo>>;
386
+ add(request: AttachmentAdd): Promise<AttachmentEditOutcome>;
387
+ update(request: AttachmentUpdate): Promise<AttachmentEditOutcome>;
388
+ delete(request: AttachmentDelete): Promise<ReadonlyArray<AttachmentEditOutcome>>;
389
+ }
390
+ /**
391
+ * Formalizes the `HonuaMap.addSource` / `addLayer` binding. A `MapBinding`
392
+ * names the source that backs one or more rendering layers and carries an
393
+ * optional partial style block. `MapBinding` arrays serialize to
394
+ * `MapPackage.sourceBindings` + `MapPackage.mapSpec` on the server side.
395
+ */
396
+ export interface MapBinding {
397
+ /** ID of the `Source` whose data backs the layers. */
398
+ sourceId: SourceId;
399
+ /** Layer ids consuming the source. */
400
+ layerIds: readonly string[];
401
+ /** Style overrides; merged with the source-driven defaults. */
402
+ style?: Record<string, unknown>;
403
+ /** Optional minimum zoom for visibility (forwarded to layer specs). */
404
+ minzoom?: number;
405
+ /** Optional maximum zoom for visibility (forwarded to layer specs). */
406
+ maxzoom?: number;
407
+ }
408
+ /**
409
+ * Discriminated union of the runtime adapter classes that implement
410
+ * `Source`. `Source.protocol()` (and the legacy `Source.adapter()` alias)
411
+ * narrows the typed escape hatch to one of these without forcing callers
412
+ * to cast through `unknown`.
413
+ */
414
+ export type AdapterKind = "geoservices-feature-service" | "geoservices-map-service" | "geoservices-map-layer" | "geoservices-image-service" | "geoservices-geometry-service" | "geoservices-gp-service" | "ogc-features" | "ogc-tiles" | "ogc-maps" | "ogc-processes" | "stac" | "wfs" | "wms" | "wms-layer" | "wmts" | "wmts-layer" | "wmts-tileset" | "odata";
415
+ /**
416
+ * Compile-time map from `AdapterKind` → underlying class instance. Adapter
417
+ * tickets extend this map by augmenting the `AdapterTypeMap` interface in
418
+ * their own module so `Source.protocol("wfs")` returns the right type
419
+ * without a cast. The interface ships empty by design — built-in adapters
420
+ * augment it from `src/contract/source.ts`.
421
+ */
422
+ export interface AdapterTypeMap {
423
+ }
424
+ export type AdapterFor<K extends AdapterKind> = K extends keyof AdapterTypeMap ? AdapterTypeMap[K] : unknown;
425
+ /**
426
+ * Protocol-neutral data-source handle. Adapters returned by
427
+ * `Dataset.source()` implement this interface directly; the existing
428
+ * `HonuaFeatureLayer`, `HonuaMapService`, and `HonuaOgcFeatureCollection`
429
+ * classes are reachable through the typed `protocol()` escape hatch
430
+ * (alias `adapter()`).
431
+ *
432
+ * The canonical surface covers the query family plus edit / related /
433
+ * attachment operations. Operations that are protocol-specific (raw
434
+ * `where`, raw `outFields`, GeoServices `calculate` / `validateSQL` /
435
+ * `replica` etc.) live behind `protocol()` so the top-level API stays
436
+ * free of ArcGIS-typed structures.
437
+ */
438
+ export interface Source<T = Record<string, unknown>> {
439
+ readonly descriptor: SourceDescriptor;
440
+ readonly capabilities: Capabilities;
441
+ /** Single-page query. */
442
+ query(request?: Query<T>): Promise<Result<T>>;
443
+ /** Drain all pages into a single result. Honors `Query.pagination.limit`. */
444
+ queryAll(request?: Query<T>): Promise<Result<T>>;
445
+ /** Server-side aggregation; falls back to client-side under `degraded` policy. */
446
+ queryAggregate(request: Query<T> & {
447
+ aggregation: AggregationSpec;
448
+ }): Promise<Result<T>>;
449
+ /** Extent of the records that match `request`. */
450
+ queryExtent(request?: Query<T>): Promise<{
451
+ extent: HonuaExtent | null;
452
+ count?: number;
453
+ }>;
454
+ /** Async-generator paging stream. */
455
+ stream(request?: Query<T>): AsyncGenerator<Result<T>, void, undefined>;
456
+ /** Object ids of the records matching `request`. */
457
+ queryObjectIds(request?: Query<T>): Promise<readonly FeatureId[]>;
458
+ /** Apply add / update / delete edits to the source. */
459
+ applyEdits(envelope: EditEnvelope<T>): Promise<EditResult>;
460
+ /** Pull related records for the addressed source ids. */
461
+ queryRelated<R = Record<string, unknown>>(request: RelatedQuery): Promise<RelatedResult<R>>;
462
+ /** Attachment operations namespace; methods throw if `attachments` is missing. */
463
+ readonly attachments: AttachmentApi;
464
+ /**
465
+ * Typed escape hatch to the underlying protocol-specific class. Use this
466
+ * when a caller needs raw protocol semantics (e.g. raw `where`, raw
467
+ * `outFields`, GeoServices `calculate` / `validateSQL` / replica /
468
+ * `queryBins` / `getEstimates`) that the canonical surface intentionally
469
+ * does not expose.
470
+ */
471
+ protocol<K extends AdapterKind>(kind: K): AdapterFor<K> | undefined;
472
+ /**
473
+ * Legacy alias of {@link Source.protocol}. Retained for callers written
474
+ * against the original ticket-23 surface; new code should prefer
475
+ * `protocol()` because the name reflects the design intent of
476
+ * protocol-namespaced escape hatches.
477
+ */
478
+ adapter<K extends AdapterKind>(kind: K): AdapterFor<K> | undefined;
479
+ }
480
+ /**
481
+ * Logical grouping of one or more sources sharing identity and (optionally)
482
+ * a field schema. `Dataset` is the canonical entry point: `createDataset`
483
+ * gates the compatibility check and caches it per `HonuaClient`.
484
+ */
485
+ export interface Dataset {
486
+ readonly id: DatasetId;
487
+ readonly client: HonuaClient;
488
+ readonly sourceDescriptors: ReadonlyArray<SourceDescriptor>;
489
+ /** Get a `Source` handle by id. Returns `undefined` if not registered. */
490
+ source<T = Record<string, unknown>>(id: SourceId): Source<T> | undefined;
491
+ /** Iterate registered source ids, in registration order. */
492
+ sourceIds(): readonly SourceId[];
493
+ /**
494
+ * Returns `true` when `client.checkCompatibility()` reported a supported
495
+ * server. The dataset caches the negotiation per `HonuaClient` instance.
496
+ */
497
+ isCompatible(): Promise<boolean>;
498
+ /** Server-feature gate that mirrors `HonuaClient.supportsFeature`. */
499
+ supportsFeature(feature: HonuaServerCompatibilityFeature): Promise<boolean>;
500
+ }
501
+ export type CapabilityPolicy = "strict" | "degraded";
502
+ /**
503
+ * Context passed to a `SourceResolver`. Carries the active `HonuaClient`
504
+ * and the dataset's capability policy so adapters can react to either.
505
+ */
506
+ export interface ResolveSourceContext {
507
+ readonly client: HonuaClient;
508
+ readonly capabilityPolicy: CapabilityPolicy;
509
+ }
510
+ /**
511
+ * Adapter factory invoked for descriptors the built-in resolvers cannot
512
+ * handle (today: `wfs`, `wms`, MapLibre-native sources). Downstream
513
+ * tickets register their adapters by passing one through
514
+ * `CreateDatasetOptions.resolveSource`.
515
+ */
516
+ export type SourceResolver = (descriptor: SourceDescriptor, ctx: ResolveSourceContext) => Source | undefined;
517
+ export interface CreateDatasetOptions {
518
+ id: DatasetId;
519
+ client: HonuaClient;
520
+ /** Source descriptors; `Source` instances are constructed lazily. */
521
+ sources: ReadonlyArray<SourceDescriptor>;
522
+ /**
523
+ * Capability policy. `"strict"` (default) refuses to construct a `Source`
524
+ * whose required capability is missing. `"degraded"` allows client-side
525
+ * fallback paths that report via `Result.degraded`.
526
+ */
527
+ capabilityPolicy?: CapabilityPolicy;
528
+ /**
529
+ * When `true`, skips the `client.checkCompatibility()` gate. Reserved for
530
+ * test fixtures and conformance suites; production code should leave this
531
+ * unset.
532
+ */
533
+ skipCompatibilityCheck?: boolean;
534
+ /**
535
+ * Resolver invoked for descriptors the built-in resolvers do not know how
536
+ * to handle. Built-in coverage today is `geoservices-feature-service`,
537
+ * `geoservices-map-service`, `ogc-features`. Downstream WFS / WMS / OData
538
+ * tickets supply their adapter here.
539
+ */
540
+ resolveSource?: SourceResolver;
541
+ }
542
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/contract/types.ts"],"names":[],"mappings":"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"}