@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.
- package/README.md +5 -0
- package/contract/edit-session.d.ts +203 -0
- package/contract/edit-session.d.ts.map +1 -0
- package/contract/edit-session.js +717 -0
- package/contract/index.d.ts +20 -0
- package/contract/index.d.ts.map +1 -0
- package/contract/index.js +15 -0
- package/contract/jobs.d.ts +115 -0
- package/contract/jobs.d.ts.map +1 -0
- package/contract/jobs.js +22 -0
- package/contract/source.d.ts +138 -0
- package/contract/source.d.ts.map +1 -0
- package/contract/source.js +3364 -0
- package/contract/spatial-aggregation.d.ts +312 -0
- package/contract/spatial-aggregation.d.ts.map +1 -0
- package/contract/spatial-aggregation.js +196 -0
- package/contract/types.d.ts +542 -0
- package/contract/types.d.ts.map +1 -0
- package/contract/types.js +171 -0
- package/core/batch.d.ts +37 -0
- package/core/batch.d.ts.map +1 -0
- package/core/batch.js +78 -0
- package/core/cache-state.d.ts +76 -0
- package/core/cache-state.d.ts.map +1 -0
- package/core/cache-state.js +84 -0
- package/core/client.d.ts +289 -0
- package/core/client.d.ts.map +1 -0
- package/core/client.js +2625 -0
- package/core/errors.d.ts +68 -0
- package/core/errors.d.ts.map +1 -0
- package/core/errors.js +116 -0
- package/core/grpc-adapter.d.ts +23 -0
- package/core/grpc-adapter.d.ts.map +1 -0
- package/core/grpc-adapter.js +704 -0
- package/core/odata.d.ts +347 -0
- package/core/odata.d.ts.map +1 -0
- package/core/odata.js +837 -0
- package/core/ogc-conformance.d.ts +35 -0
- package/core/ogc-conformance.d.ts.map +1 -0
- package/core/ogc-conformance.js +121 -0
- package/core/ogc-maps.d.ts +45 -0
- package/core/ogc-maps.d.ts.map +1 -0
- package/core/ogc-maps.js +53 -0
- package/core/ogc-processes.d.ts +92 -0
- package/core/ogc-processes.d.ts.map +1 -0
- package/core/ogc-processes.js +325 -0
- package/core/ogc-tiles.d.ts +55 -0
- package/core/ogc-tiles.d.ts.map +1 -0
- package/core/ogc-tiles.js +81 -0
- package/core/pbf-decoder.d.ts +28 -0
- package/core/pbf-decoder.d.ts.map +1 -0
- package/core/pbf-decoder.js +627 -0
- package/core/query-builder.d.ts +261 -0
- package/core/query-builder.d.ts.map +1 -0
- package/core/query-builder.js +538 -0
- package/core/spatial-filter.d.ts +93 -0
- package/core/spatial-filter.d.ts.map +1 -0
- package/core/spatial-filter.js +153 -0
- package/core/stac.d.ts +43 -0
- package/core/stac.d.ts.map +1 -0
- package/core/stac.js +116 -0
- package/core/surfaces.d.ts +464 -0
- package/core/surfaces.d.ts.map +1 -0
- package/core/surfaces.js +1322 -0
- package/core/types.d.ts +1238 -0
- package/core/types.d.ts.map +1 -0
- package/core/types.js +13 -0
- package/core/wfs-capabilities.d.ts +143 -0
- package/core/wfs-capabilities.d.ts.map +1 -0
- package/core/wfs-capabilities.js +478 -0
- package/core/wfs-filter.d.ts +118 -0
- package/core/wfs-filter.d.ts.map +1 -0
- package/core/wfs-filter.js +586 -0
- package/core/wfs.d.ts +219 -0
- package/core/wfs.d.ts.map +1 -0
- package/core/wfs.js +406 -0
- package/core/wms-capabilities.d.ts +110 -0
- package/core/wms-capabilities.d.ts.map +1 -0
- package/core/wms-capabilities.js +566 -0
- package/core/wms-types.d.ts +128 -0
- package/core/wms-types.d.ts.map +1 -0
- package/core/wms-types.js +32 -0
- package/core/wms.d.ts +108 -0
- package/core/wms.d.ts.map +1 -0
- package/core/wms.js +182 -0
- package/core/wmts-capabilities.d.ts +82 -0
- package/core/wmts-capabilities.d.ts.map +1 -0
- package/core/wmts-capabilities.js +409 -0
- package/core/wmts.d.ts +80 -0
- package/core/wmts.d.ts.map +1 -0
- package/core/wmts.js +173 -0
- package/esri-compat/basemap-gallery.d.ts +38 -0
- package/esri-compat/basemap-gallery.d.ts.map +1 -0
- package/esri-compat/basemap-gallery.js +159 -0
- package/esri-compat/basemap-layer-list.d.ts +35 -0
- package/esri-compat/basemap-layer-list.d.ts.map +1 -0
- package/esri-compat/basemap-layer-list.js +139 -0
- package/esri-compat/basemap.d.ts +32 -0
- package/esri-compat/basemap.d.ts.map +1 -0
- package/esri-compat/basemap.js +84 -0
- package/esri-compat/bookmarks.d.ts +36 -0
- package/esri-compat/bookmarks.d.ts.map +1 -0
- package/esri-compat/bookmarks.js +108 -0
- package/esri-compat/class-breaks-renderer.d.ts +50 -0
- package/esri-compat/class-breaks-renderer.d.ts.map +1 -0
- package/esri-compat/class-breaks-renderer.js +164 -0
- package/esri-compat/color.d.ts +22 -0
- package/esri-compat/color.d.ts.map +1 -0
- package/esri-compat/color.js +106 -0
- package/esri-compat/controls.d.ts +174 -0
- package/esri-compat/controls.d.ts.map +1 -0
- package/esri-compat/controls.js +479 -0
- package/esri-compat/coordinate-conversion.d.ts +41 -0
- package/esri-compat/coordinate-conversion.d.ts.map +1 -0
- package/esri-compat/coordinate-conversion.js +125 -0
- package/esri-compat/directions.d.ts +45 -0
- package/esri-compat/directions.d.ts.map +1 -0
- package/esri-compat/directions.js +123 -0
- package/esri-compat/editor.d.ts +47 -0
- package/esri-compat/editor.d.ts.map +1 -0
- package/esri-compat/editor.js +170 -0
- package/esri-compat/esri-config.d.ts +16 -0
- package/esri-compat/esri-config.d.ts.map +1 -0
- package/esri-compat/esri-config.js +23 -0
- package/esri-compat/esri-request.d.ts +17 -0
- package/esri-compat/esri-request.d.ts.map +1 -0
- package/esri-compat/esri-request.js +66 -0
- package/esri-compat/event-bus.d.ts +106 -0
- package/esri-compat/event-bus.d.ts.map +1 -0
- package/esri-compat/event-bus.js +90 -0
- package/esri-compat/expand.d.ts +36 -0
- package/esri-compat/expand.d.ts.map +1 -0
- package/esri-compat/expand.js +97 -0
- package/esri-compat/extent.d.ts +43 -0
- package/esri-compat/extent.d.ts.map +1 -0
- package/esri-compat/extent.js +140 -0
- package/esri-compat/feature-form.d.ts +64 -0
- package/esri-compat/feature-form.d.ts.map +1 -0
- package/esri-compat/feature-form.js +137 -0
- package/esri-compat/feature-layer.d.ts +173 -0
- package/esri-compat/feature-layer.d.ts.map +1 -0
- package/esri-compat/feature-layer.js +655 -0
- package/esri-compat/feature-set.d.ts +32 -0
- package/esri-compat/feature-set.d.ts.map +1 -0
- package/esri-compat/feature-set.js +80 -0
- package/esri-compat/feature-table.d.ts +141 -0
- package/esri-compat/feature-table.d.ts.map +1 -0
- package/esri-compat/feature-table.js +500 -0
- package/esri-compat/feature-templates.d.ts +41 -0
- package/esri-compat/feature-templates.d.ts.map +1 -0
- package/esri-compat/feature-templates.js +97 -0
- package/esri-compat/feature.d.ts +33 -0
- package/esri-compat/feature.d.ts.map +1 -0
- package/esri-compat/feature.js +83 -0
- package/esri-compat/graphic.d.ts +46 -0
- package/esri-compat/graphic.d.ts.map +1 -0
- package/esri-compat/graphic.js +103 -0
- package/esri-compat/graphics-layer.d.ts +49 -0
- package/esri-compat/graphics-layer.d.ts.map +1 -0
- package/esri-compat/graphics-layer.js +185 -0
- package/esri-compat/group-layer.d.ts +48 -0
- package/esri-compat/group-layer.d.ts.map +1 -0
- package/esri-compat/group-layer.js +212 -0
- package/esri-compat/identify.d.ts +71 -0
- package/esri-compat/identify.d.ts.map +1 -0
- package/esri-compat/identify.js +299 -0
- package/esri-compat/identity-manager.d.ts +31 -0
- package/esri-compat/identity-manager.d.ts.map +1 -0
- package/esri-compat/identity-manager.js +115 -0
- package/esri-compat/label-class.d.ts +31 -0
- package/esri-compat/label-class.d.ts.map +1 -0
- package/esri-compat/label-class.js +102 -0
- package/esri-compat/layer-list.d.ts +77 -0
- package/esri-compat/layer-list.d.ts.map +1 -0
- package/esri-compat/layer-list.js +342 -0
- package/esri-compat/legend.d.ts +53 -0
- package/esri-compat/legend.d.ts.map +1 -0
- package/esri-compat/legend.js +254 -0
- package/esri-compat/map-image-layer.d.ts +162 -0
- package/esri-compat/map-image-layer.d.ts.map +1 -0
- package/esri-compat/map-image-layer.js +704 -0
- package/esri-compat/map-view.d.ts +315 -0
- package/esri-compat/map-view.d.ts.map +1 -0
- package/esri-compat/map-view.js +1110 -0
- package/esri-compat/map.d.ts +47 -0
- package/esri-compat/map.d.ts.map +1 -0
- package/esri-compat/map.js +209 -0
- package/esri-compat/measurement-2d.d.ts +61 -0
- package/esri-compat/measurement-2d.d.ts.map +1 -0
- package/esri-compat/measurement-2d.js +184 -0
- package/esri-compat/measurement.d.ts +45 -0
- package/esri-compat/measurement.d.ts.map +1 -0
- package/esri-compat/measurement.js +193 -0
- package/esri-compat/oauth-info.d.ts +35 -0
- package/esri-compat/oauth-info.d.ts.map +1 -0
- package/esri-compat/oauth-info.js +115 -0
- package/esri-compat/picture-marker-symbol.d.ts +35 -0
- package/esri-compat/picture-marker-symbol.d.ts.map +1 -0
- package/esri-compat/picture-marker-symbol.js +126 -0
- package/esri-compat/point.d.ts +31 -0
- package/esri-compat/point.d.ts.map +1 -0
- package/esri-compat/point.js +102 -0
- package/esri-compat/polygon.d.ts +31 -0
- package/esri-compat/polygon.d.ts.map +1 -0
- package/esri-compat/polygon.js +107 -0
- package/esri-compat/polyline.d.ts +31 -0
- package/esri-compat/polyline.d.ts.map +1 -0
- package/esri-compat/polyline.js +107 -0
- package/esri-compat/popup-template.d.ts +55 -0
- package/esri-compat/popup-template.d.ts.map +1 -0
- package/esri-compat/popup-template.js +128 -0
- package/esri-compat/popup.d.ts +54 -0
- package/esri-compat/popup.d.ts.map +1 -0
- package/esri-compat/popup.js +312 -0
- package/esri-compat/print.d.ts +47 -0
- package/esri-compat/print.d.ts.map +1 -0
- package/esri-compat/print.js +105 -0
- package/esri-compat/query.d.ts +46 -0
- package/esri-compat/query.d.ts.map +1 -0
- package/esri-compat/query.js +119 -0
- package/esri-compat/reactive-utils.d.ts +23 -0
- package/esri-compat/reactive-utils.d.ts.map +1 -0
- package/esri-compat/reactive-utils.js +178 -0
- package/esri-compat/request.d.ts +41 -0
- package/esri-compat/request.d.ts.map +1 -0
- package/esri-compat/request.js +253 -0
- package/esri-compat/route-layer.d.ts +59 -0
- package/esri-compat/route-layer.d.ts.map +1 -0
- package/esri-compat/route-layer.js +223 -0
- package/esri-compat/route-task.d.ts +88 -0
- package/esri-compat/route-task.d.ts.map +1 -0
- package/esri-compat/route-task.js +225 -0
- package/esri-compat/scene-view.d.ts +41 -0
- package/esri-compat/scene-view.d.ts.map +1 -0
- package/esri-compat/scene-view.js +68 -0
- package/esri-compat/search.d.ts +112 -0
- package/esri-compat/search.d.ts.map +1 -0
- package/esri-compat/search.js +820 -0
- package/esri-compat/simple-fill-symbol.d.ts +27 -0
- package/esri-compat/simple-fill-symbol.d.ts.map +1 -0
- package/esri-compat/simple-fill-symbol.js +85 -0
- package/esri-compat/simple-line-symbol.d.ts +27 -0
- package/esri-compat/simple-line-symbol.d.ts.map +1 -0
- package/esri-compat/simple-line-symbol.js +85 -0
- package/esri-compat/simple-marker-symbol.d.ts +29 -0
- package/esri-compat/simple-marker-symbol.d.ts.map +1 -0
- package/esri-compat/simple-marker-symbol.js +92 -0
- package/esri-compat/simple-renderer.d.ts +29 -0
- package/esri-compat/simple-renderer.d.ts.map +1 -0
- package/esri-compat/simple-renderer.js +92 -0
- package/esri-compat/sketch.d.ts +64 -0
- package/esri-compat/sketch.d.ts.map +1 -0
- package/esri-compat/sketch.js +227 -0
- package/esri-compat/spatial-reference.d.ts +31 -0
- package/esri-compat/spatial-reference.d.ts.map +1 -0
- package/esri-compat/spatial-reference.js +102 -0
- package/esri-compat/swipe.d.ts +34 -0
- package/esri-compat/swipe.d.ts.map +1 -0
- package/esri-compat/swipe.js +93 -0
- package/esri-compat/table-list.d.ts +36 -0
- package/esri-compat/table-list.d.ts.map +1 -0
- package/esri-compat/table-list.js +126 -0
- package/esri-compat/text-symbol.d.ts +37 -0
- package/esri-compat/text-symbol.d.ts.map +1 -0
- package/esri-compat/text-symbol.js +123 -0
- package/esri-compat/tile-layer.d.ts +52 -0
- package/esri-compat/tile-layer.d.ts.map +1 -0
- package/esri-compat/tile-layer.js +167 -0
- package/esri-compat/time-slider.d.ts +70 -0
- package/esri-compat/time-slider.d.ts.map +1 -0
- package/esri-compat/time-slider.js +208 -0
- package/esri-compat/track.d.ts +51 -0
- package/esri-compat/track.d.ts.map +1 -0
- package/esri-compat/track.js +174 -0
- package/esri-compat/unique-value-renderer.d.ts +41 -0
- package/esri-compat/unique-value-renderer.d.ts.map +1 -0
- package/esri-compat/unique-value-renderer.js +127 -0
- package/esri-compat/url.d.ts +12 -0
- package/esri-compat/url.d.ts.map +1 -0
- package/esri-compat/url.js +54 -0
- package/esri-compat/web-map.d.ts +14 -0
- package/esri-compat/web-map.d.ts.map +1 -0
- package/esri-compat/web-map.js +24 -0
- package/gen/honua/v1/feature_service_pb.d.ts +918 -0
- package/gen/honua/v1/feature_service_pb.d.ts.map +1 -0
- package/gen/honua/v1/feature_service_pb.js +375 -0
- package/index.d.ts +130 -0
- package/index.js +65 -0
- 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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"}
|