@honua/app-platform 0.0.20-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +11 -0
- package/app/index.d.ts +164 -0
- package/app/index.d.ts.map +1 -0
- package/app/index.js +424 -0
- package/app-controller/controller.d.ts +425 -0
- package/app-controller/controller.d.ts.map +1 -0
- package/app-controller/controller.js +1173 -0
- package/app-controller/index.d.ts +14 -0
- package/app-controller/index.d.ts.map +1 -0
- package/app-controller/index.js +12 -0
- package/app-workspace/index.d.ts +421 -0
- package/app-workspace/index.d.ts.map +1 -0
- package/app-workspace/index.js +722 -0
- package/collaboration/client.d.ts +40 -0
- package/collaboration/client.d.ts.map +1 -0
- package/collaboration/client.js +299 -0
- package/collaboration/errors.d.ts +15 -0
- package/collaboration/errors.d.ts.map +1 -0
- package/collaboration/errors.js +17 -0
- package/collaboration/fixture.d.ts +41 -0
- package/collaboration/fixture.d.ts.map +1 -0
- package/collaboration/fixture.js +362 -0
- package/collaboration/index.d.ts +18 -0
- package/collaboration/index.d.ts.map +1 -0
- package/collaboration/index.js +14 -0
- package/collaboration/types.d.ts +240 -0
- package/collaboration/types.d.ts.map +1 -0
- package/collaboration/types.js +1 -0
- package/contract/analytics-sources.d.ts +149 -0
- package/contract/analytics-sources.d.ts.map +1 -0
- package/contract/analytics-sources.js +235 -0
- package/contract/edit-session.d.ts +203 -0
- package/contract/edit-session.d.ts.map +1 -0
- package/contract/edit-session.js +760 -0
- package/contract/edit-sketch.d.ts +91 -0
- package/contract/edit-sketch.d.ts.map +1 -0
- package/contract/edit-sketch.js +281 -0
- package/contract/index.d.ts +63 -0
- package/contract/index.d.ts.map +1 -0
- package/contract/index.js +52 -0
- package/contract/jobs.d.ts +149 -0
- package/contract/jobs.d.ts.map +1 -0
- package/contract/jobs.js +40 -0
- package/contract/pmtiles.d.ts +162 -0
- package/contract/pmtiles.d.ts.map +1 -0
- package/contract/pmtiles.js +155 -0
- package/contract/source.d.ts +447 -0
- package/contract/source.d.ts.map +1 -0
- package/contract/source.js +3909 -0
- package/contract/spatial-aggregation.d.ts +336 -0
- package/contract/spatial-aggregation.d.ts.map +1 -0
- package/contract/spatial-aggregation.js +298 -0
- package/contract/temporal.d.ts +455 -0
- package/contract/temporal.d.ts.map +1 -0
- package/contract/temporal.js +146 -0
- package/contract/tiles.d.ts +370 -0
- package/contract/tiles.d.ts.map +1 -0
- package/contract/tiles.js +519 -0
- package/contract/types.d.ts +694 -0
- package/contract/types.d.ts.map +1 -0
- package/contract/types.js +183 -0
- package/contract/widget-source.d.ts +205 -0
- package/contract/widget-source.d.ts.map +1 -0
- package/contract/widget-source.js +1473 -0
- package/control-plane/client.d.ts +95 -0
- package/control-plane/client.d.ts.map +1 -0
- package/control-plane/client.js +374 -0
- package/control-plane/index.d.ts +18 -0
- package/control-plane/index.d.ts.map +1 -0
- package/control-plane/index.js +14 -0
- package/control-plane/types.d.ts +233 -0
- package/control-plane/types.d.ts.map +1 -0
- package/control-plane/types.js +7 -0
- package/controls/basemap-style-binding.d.ts +54 -0
- package/controls/basemap-style-binding.d.ts.map +1 -0
- package/controls/basemap-style-binding.js +199 -0
- package/controls/basemap-switcher.d.ts +95 -0
- package/controls/basemap-switcher.d.ts.map +1 -0
- package/controls/basemap-switcher.js +379 -0
- package/controls/element-utils.d.ts +48 -0
- package/controls/element-utils.d.ts.map +1 -0
- package/controls/element-utils.js +78 -0
- package/controls/index.d.ts +33 -0
- package/controls/index.d.ts.map +1 -0
- package/controls/index.js +30 -0
- package/controls/layer-list.d.ts +98 -0
- package/controls/layer-list.d.ts.map +1 -0
- package/controls/layer-list.js +375 -0
- package/controls/legend-derive.d.ts +53 -0
- package/controls/legend-derive.d.ts.map +1 -0
- package/controls/legend-derive.js +196 -0
- package/controls/legend.d.ts +104 -0
- package/controls/legend.d.ts.map +1 -0
- package/controls/legend.js +381 -0
- package/controls/swipe-control.d.ts +80 -0
- package/controls/swipe-control.d.ts.map +1 -0
- package/controls/swipe-control.js +368 -0
- package/controls/types.d.ts +227 -0
- package/controls/types.d.ts.map +1 -0
- package/controls/types.js +11 -0
- package/core/auth/client-credentials-provider.d.ts +51 -0
- package/core/auth/client-credentials-provider.d.ts.map +1 -0
- package/core/auth/client-credentials-provider.js +115 -0
- package/core/auth/credential-store.d.ts +52 -0
- package/core/auth/credential-store.d.ts.map +1 -0
- package/core/auth/credential-store.js +82 -0
- package/core/auth/index.d.ts +23 -0
- package/core/auth/index.d.ts.map +1 -0
- package/core/auth/index.js +20 -0
- package/core/auth/oauth2-provider.d.ts +114 -0
- package/core/auth/oauth2-provider.d.ts.map +1 -0
- package/core/auth/oauth2-provider.js +408 -0
- package/core/auth/pkce.d.ts +25 -0
- package/core/auth/pkce.d.ts.map +1 -0
- package/core/auth/pkce.js +46 -0
- package/core/auth/static-providers.d.ts +20 -0
- package/core/auth/static-providers.d.ts.map +1 -0
- package/core/auth/static-providers.js +26 -0
- package/core/auth/token-endpoint.d.ts +40 -0
- package/core/auth/token-endpoint.d.ts.map +1 -0
- package/core/auth/token-endpoint.js +133 -0
- package/core/auth/types.d.ts +144 -0
- package/core/auth/types.d.ts.map +1 -0
- package/core/auth/types.js +8 -0
- package/core/batch.d.ts +37 -0
- package/core/batch.d.ts.map +1 -0
- package/core/batch.js +79 -0
- package/core/cache-state.d.ts +79 -0
- package/core/cache-state.d.ts.map +1 -0
- package/core/cache-state.js +87 -0
- package/core/client.d.ts +607 -0
- package/core/client.d.ts.map +1 -0
- package/core/client.js +1716 -0
- package/core/compatibility.d.ts +18 -0
- package/core/compatibility.d.ts.map +1 -0
- package/core/compatibility.js +245 -0
- package/core/errors.d.ts +139 -0
- package/core/errors.d.ts.map +1 -0
- package/core/errors.js +176 -0
- package/core/esri-geojson.d.ts +66 -0
- package/core/esri-geojson.d.ts.map +1 -0
- package/core/esri-geojson.js +363 -0
- package/core/geoparquet-sql.d.ts +162 -0
- package/core/geoparquet-sql.d.ts.map +1 -0
- package/core/geoparquet-sql.js +333 -0
- package/core/geoservices.d.ts +34 -0
- package/core/geoservices.d.ts.map +1 -0
- package/core/geoservices.js +434 -0
- package/core/grpc-adapter.d.ts +23 -0
- package/core/grpc-adapter.d.ts.map +1 -0
- package/core/grpc-adapter.js +688 -0
- package/core/odata.d.ts +347 -0
- package/core/odata.d.ts.map +1 -0
- package/core/odata.js +913 -0
- package/core/ogc-conformance.d.ts +35 -0
- package/core/ogc-conformance.d.ts.map +1 -0
- package/core/ogc-conformance.js +134 -0
- package/core/ogc-endpoint-layout.d.ts +70 -0
- package/core/ogc-endpoint-layout.d.ts.map +1 -0
- package/core/ogc-endpoint-layout.js +173 -0
- package/core/ogc-features.d.ts +23 -0
- package/core/ogc-features.d.ts.map +1 -0
- package/core/ogc-features.js +129 -0
- package/core/ogc-maps.d.ts +49 -0
- package/core/ogc-maps.d.ts.map +1 -0
- package/core/ogc-maps.js +126 -0
- package/core/ogc-processes.d.ts +118 -0
- package/core/ogc-processes.d.ts.map +1 -0
- package/core/ogc-processes.js +423 -0
- package/core/ogc-records.d.ts +75 -0
- package/core/ogc-records.d.ts.map +1 -0
- package/core/ogc-records.js +251 -0
- package/core/ogc-tiles.d.ts +125 -0
- package/core/ogc-tiles.d.ts.map +1 -0
- package/core/ogc-tiles.js +183 -0
- package/core/path-utils.d.ts +69 -0
- package/core/path-utils.d.ts.map +1 -0
- package/core/path-utils.js +123 -0
- package/core/pbf-decoder.d.ts +39 -0
- package/core/pbf-decoder.d.ts.map +1 -0
- package/core/pbf-decoder.js +702 -0
- package/core/process-runner.d.ts +104 -0
- package/core/process-runner.d.ts.map +1 -0
- package/core/process-runner.js +315 -0
- package/core/protocol-transport.d.ts +76 -0
- package/core/protocol-transport.d.ts.map +1 -0
- package/core/protocol-transport.js +15 -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/request-pipeline.d.ts +88 -0
- package/core/request-pipeline.d.ts.map +1 -0
- package/core/request-pipeline.js +273 -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-static.d.ts +51 -0
- package/core/stac-static.d.ts.map +1 -0
- package/core/stac-static.js +195 -0
- package/core/stac.d.ts +67 -0
- package/core/stac.d.ts.map +1 -0
- package/core/stac.js +259 -0
- package/core/surfaces.d.ts +540 -0
- package/core/surfaces.d.ts.map +1 -0
- package/core/surfaces.js +1964 -0
- package/core/terrain-elevation.d.ts +114 -0
- package/core/terrain-elevation.d.ts.map +1 -0
- package/core/terrain-elevation.js +150 -0
- package/core/types.d.ts +1404 -0
- package/core/types.d.ts.map +1 -0
- package/core/types.js +13 -0
- package/core/wfs-capabilities.d.ts +153 -0
- package/core/wfs-capabilities.d.ts.map +1 -0
- package/core/wfs-capabilities.js +490 -0
- package/core/wfs-filter.d.ts +118 -0
- package/core/wfs-filter.d.ts.map +1 -0
- package/core/wfs-filter.js +634 -0
- package/core/wfs.d.ts +232 -0
- package/core/wfs.d.ts.map +1 -0
- package/core/wfs.js +426 -0
- package/core/wire-shared.d.ts +32 -0
- package/core/wire-shared.d.ts.map +1 -0
- package/core/wire-shared.js +76 -0
- package/core/wms-axis.d.ts +36 -0
- package/core/wms-axis.d.ts.map +1 -0
- package/core/wms-axis.js +73 -0
- package/core/wms-capabilities.d.ts +110 -0
- package/core/wms-capabilities.d.ts.map +1 -0
- package/core/wms-capabilities.js +559 -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 +144 -0
- package/core/wms.d.ts.map +1 -0
- package/core/wms.js +338 -0
- package/core/wmts-capabilities.d.ts +82 -0
- package/core/wmts-capabilities.d.ts.map +1 -0
- package/core/wmts-capabilities.js +402 -0
- package/core/wmts.d.ts +103 -0
- package/core/wmts.d.ts.map +1 -0
- package/core/wmts.js +332 -0
- package/core/xml-text.d.ts +20 -0
- package/core/xml-text.d.ts.map +1 -0
- package/core/xml-text.js +85 -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 +127 -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-filter.d.ts +55 -0
- package/esri-compat/feature-filter.d.ts.map +1 -0
- package/esri-compat/feature-filter.js +109 -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 +661 -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/geojson-layer.d.ts +86 -0
- package/esri-compat/geojson-layer.d.ts.map +1 -0
- package/esri-compat/geojson-layer.js +191 -0
- package/esri-compat/geometry-engine.d.ts +107 -0
- package/esri-compat/geometry-engine.d.ts.map +1 -0
- package/esri-compat/geometry-engine.js +266 -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 +74 -0
- package/esri-compat/identity-manager.d.ts.map +1 -0
- package/esri-compat/identity-manager.js +245 -0
- package/esri-compat/imagery-layer.d.ts +78 -0
- package/esri-compat/imagery-layer.d.ts.map +1 -0
- package/esri-compat/imagery-layer.js +167 -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 +709 -0
- package/esri-compat/map-view.d.ts +323 -0
- package/esri-compat/map-view.d.ts.map +1 -0
- package/esri-compat/map-view.js +1175 -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 +50 -0
- package/esri-compat/oauth-info.d.ts.map +1 -0
- package/esri-compat/oauth-info.js +142 -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 +58 -0
- package/esri-compat/query.d.ts.map +1 -0
- package/esri-compat/query.js +128 -0
- package/esri-compat/reactive-utils.d.ts +24 -0
- package/esri-compat/reactive-utils.d.ts.map +1 -0
- package/esri-compat/reactive-utils.js +193 -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 +168 -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 +13 -0
- package/esri-compat/url.d.ts.map +1 -0
- package/esri-compat/url.js +68 -0
- package/esri-compat/vector-tile-layer.d.ts +47 -0
- package/esri-compat/vector-tile-layer.d.ts.map +1 -0
- package/esri-compat/vector-tile-layer.js +130 -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/esri-compat/wfs-layer.d.ts +64 -0
- package/esri-compat/wfs-layer.d.ts.map +1 -0
- package/esri-compat/wfs-layer.js +145 -0
- package/esri-compat/wms-layer.d.ts +76 -0
- package/esri-compat/wms-layer.d.ts.map +1 -0
- package/esri-compat/wms-layer.js +157 -0
- package/exploration/context.d.ts +25 -0
- package/exploration/context.d.ts.map +1 -0
- package/exploration/context.js +396 -0
- package/exploration/index.d.ts +27 -0
- package/exploration/index.d.ts.map +1 -0
- package/exploration/index.js +24 -0
- package/exploration/presets.d.ts +27 -0
- package/exploration/presets.d.ts.map +1 -0
- package/exploration/presets.js +114 -0
- package/exploration/reducer.d.ts +23 -0
- package/exploration/reducer.d.ts.map +1 -0
- package/exploration/reducer.js +332 -0
- package/exploration/selection.d.ts +25 -0
- package/exploration/selection.d.ts.map +1 -0
- package/exploration/selection.js +34 -0
- package/exploration/selectors.d.ts +56 -0
- package/exploration/selectors.d.ts.map +1 -0
- package/exploration/selectors.js +110 -0
- package/exploration/types.d.ts +294 -0
- package/exploration/types.d.ts.map +1 -0
- package/exploration/types.js +33 -0
- package/expr/expression.d.ts +457 -0
- package/expr/expression.d.ts.map +1 -0
- package/expr/expression.js +663 -0
- package/expr/index.d.ts +32 -0
- package/expr/index.d.ts.map +1 -0
- package/expr/index.js +30 -0
- package/filter-registry/index.d.ts +145 -0
- package/filter-registry/index.d.ts.map +1 -0
- package/filter-registry/index.js +531 -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/generated-app/errors.d.ts +41 -0
- package/generated-app/errors.d.ts.map +1 -0
- package/generated-app/errors.js +41 -0
- package/generated-app/index.d.ts +17 -0
- package/generated-app/index.d.ts.map +1 -0
- package/generated-app/index.js +12 -0
- package/generated-app/manifest.d.ts +183 -0
- package/generated-app/manifest.d.ts.map +1 -0
- package/generated-app/manifest.js +14 -0
- package/generated-app/projection.d.ts +44 -0
- package/generated-app/projection.d.ts.map +1 -0
- package/generated-app/projection.js +234 -0
- package/generated-app/runtime.d.ts +215 -0
- package/generated-app/runtime.d.ts.map +1 -0
- package/generated-app/runtime.js +1196 -0
- package/geocoding/index.d.ts +106 -0
- package/geocoding/index.d.ts.map +1 -0
- package/geocoding/index.js +278 -0
- package/interactions/detail-model.d.ts +54 -0
- package/interactions/detail-model.d.ts.map +1 -0
- package/interactions/detail-model.js +105 -0
- package/interactions/exploration-bindings.d.ts +120 -0
- package/interactions/exploration-bindings.d.ts.map +1 -0
- package/interactions/exploration-bindings.js +218 -0
- package/interactions/feature-state.d.ts +144 -0
- package/interactions/feature-state.d.ts.map +1 -0
- package/interactions/feature-state.js +169 -0
- package/interactions/hit-test.d.ts +112 -0
- package/interactions/hit-test.d.ts.map +1 -0
- package/interactions/hit-test.js +291 -0
- package/interactions/index.d.ts +31 -0
- package/interactions/index.d.ts.map +1 -0
- package/interactions/index.js +24 -0
- package/interactions/share-state.d.ts +36 -0
- package/interactions/share-state.d.ts.map +1 -0
- package/interactions/share-state.js +123 -0
- package/map/feature-service-adapter.d.ts +138 -0
- package/map/feature-service-adapter.d.ts.map +1 -0
- package/map/feature-service-adapter.js +279 -0
- package/map/honua-map.d.ts +203 -0
- package/map/honua-map.d.ts.map +1 -0
- package/map/honua-map.js +347 -0
- package/map/index.d.ts +27 -0
- package/map/index.d.ts.map +1 -0
- package/map/index.js +22 -0
- package/map/maplibre-target.d.ts +103 -0
- package/map/maplibre-target.d.ts.map +1 -0
- package/map/maplibre-target.js +164 -0
- package/map/webmap-maplibre.d.ts +60 -0
- package/map/webmap-maplibre.d.ts.map +1 -0
- package/map/webmap-maplibre.js +212 -0
- package/operate/client.d.ts +94 -0
- package/operate/client.d.ts.map +1 -0
- package/operate/client.js +361 -0
- package/operate/index.d.ts +22 -0
- package/operate/index.d.ts.map +1 -0
- package/operate/index.js +19 -0
- package/operate/types.d.ts +397 -0
- package/operate/types.d.ts.map +1 -0
- package/operate/types.js +17 -0
- package/operator/client.d.ts +60 -0
- package/operator/client.d.ts.map +1 -0
- package/operator/client.js +20 -0
- package/operator/controllers/approval.d.ts +52 -0
- package/operator/controllers/approval.d.ts.map +1 -0
- package/operator/controllers/approval.js +123 -0
- package/operator/controllers/base.d.ts +27 -0
- package/operator/controllers/base.d.ts.map +1 -0
- package/operator/controllers/base.js +53 -0
- package/operator/controllers/builder-workspace.d.ts +55 -0
- package/operator/controllers/builder-workspace.d.ts.map +1 -0
- package/operator/controllers/builder-workspace.js +108 -0
- package/operator/controllers/chat.d.ts +61 -0
- package/operator/controllers/chat.d.ts.map +1 -0
- package/operator/controllers/chat.js +154 -0
- package/operator/controllers/clarification.d.ts +52 -0
- package/operator/controllers/clarification.d.ts.map +1 -0
- package/operator/controllers/clarification.js +121 -0
- package/operator/controllers/execution.d.ts +60 -0
- package/operator/controllers/execution.d.ts.map +1 -0
- package/operator/controllers/execution.js +286 -0
- package/operator/controllers/index.d.ts +23 -0
- package/operator/controllers/index.d.ts.map +1 -0
- package/operator/controllers/index.js +15 -0
- package/operator/controllers/map-workspace.d.ts +85 -0
- package/operator/controllers/map-workspace.d.ts.map +1 -0
- package/operator/controllers/map-workspace.js +296 -0
- package/operator/controllers/plan-review.d.ts +66 -0
- package/operator/controllers/plan-review.d.ts.map +1 -0
- package/operator/controllers/plan-review.js +124 -0
- package/operator/errors.d.ts +62 -0
- package/operator/errors.d.ts.map +1 -0
- package/operator/errors.js +75 -0
- package/operator/i18n/index.d.ts +10 -0
- package/operator/i18n/index.d.ts.map +1 -0
- package/operator/i18n/index.js +8 -0
- package/operator/i18n/messages.d.ts +19 -0
- package/operator/i18n/messages.d.ts.map +1 -0
- package/operator/i18n/messages.js +54 -0
- package/operator/index.d.ts +19 -0
- package/operator/index.d.ts.map +1 -0
- package/operator/index.js +15 -0
- package/operator/telemetry.d.ts +26 -0
- package/operator/telemetry.d.ts.map +1 -0
- package/operator/telemetry.js +9 -0
- package/operator/theming/index.d.ts +12 -0
- package/operator/theming/index.d.ts.map +1 -0
- package/operator/theming/index.js +9 -0
- package/operator/theming/provider.d.ts +27 -0
- package/operator/theming/provider.d.ts.map +1 -0
- package/operator/theming/provider.js +26 -0
- package/operator/theming/tokens.d.ts +28 -0
- package/operator/theming/tokens.d.ts.map +1 -0
- package/operator/theming/tokens.js +65 -0
- package/operator/workspace/events.d.ts +70 -0
- package/operator/workspace/events.d.ts.map +1 -0
- package/operator/workspace/events.js +9 -0
- package/operator/workspace/index.d.ts +12 -0
- package/operator/workspace/index.d.ts.map +1 -0
- package/operator/workspace/index.js +8 -0
- package/operator/workspace/types.d.ts +178 -0
- package/operator/workspace/types.d.ts.map +1 -0
- package/operator/workspace/types.js +47 -0
- package/operator/workspace/workspace.d.ts +58 -0
- package/operator/workspace/workspace.d.ts.map +1 -0
- package/operator/workspace/workspace.js +339 -0
- package/package.json +105 -0
- package/realtime/exploration.d.ts +16 -0
- package/realtime/exploration.d.ts.map +1 -0
- package/realtime/exploration.js +32 -0
- package/realtime/honua-server.d.ts +123 -0
- package/realtime/honua-server.d.ts.map +1 -0
- package/realtime/honua-server.js +188 -0
- package/realtime/index.d.ts +20 -0
- package/realtime/index.d.ts.map +1 -0
- package/realtime/index.js +14 -0
- package/realtime/projections.d.ts +30 -0
- package/realtime/projections.d.ts.map +1 -0
- package/realtime/projections.js +51 -0
- package/realtime/reducer.d.ts +14 -0
- package/realtime/reducer.d.ts.map +1 -0
- package/realtime/reducer.js +351 -0
- package/realtime/sse.d.ts +23 -0
- package/realtime/sse.d.ts.map +1 -0
- package/realtime/sse.js +143 -0
- package/realtime/store.d.ts +18 -0
- package/realtime/store.d.ts.map +1 -0
- package/realtime/store.js +63 -0
- package/realtime/types.d.ts +190 -0
- package/realtime/types.d.ts.map +1 -0
- package/realtime/types.js +10 -0
- package/replica-sync/client.d.ts +32 -0
- package/replica-sync/client.d.ts.map +1 -0
- package/replica-sync/client.js +52 -0
- package/replica-sync/errors.d.ts +22 -0
- package/replica-sync/errors.d.ts.map +1 -0
- package/replica-sync/errors.js +29 -0
- package/replica-sync/fixture.d.ts +40 -0
- package/replica-sync/fixture.d.ts.map +1 -0
- package/replica-sync/fixture.js +364 -0
- package/replica-sync/index.d.ts +22 -0
- package/replica-sync/index.d.ts.map +1 -0
- package/replica-sync/index.js +17 -0
- package/replica-sync/types.d.ts +270 -0
- package/replica-sync/types.d.ts.map +1 -0
- package/replica-sync/types.js +13 -0
- package/runtime/diff.d.ts +31 -0
- package/runtime/diff.d.ts.map +1 -0
- package/runtime/diff.js +143 -0
- package/runtime/errors.d.ts +40 -0
- package/runtime/errors.d.ts.map +1 -0
- package/runtime/errors.js +35 -0
- package/runtime/index.d.ts +59 -0
- package/runtime/index.d.ts.map +1 -0
- package/runtime/index.js +40 -0
- package/runtime/legend.d.ts +23 -0
- package/runtime/legend.d.ts.map +1 -0
- package/runtime/legend.js +38 -0
- package/runtime/load-package.d.ts +125 -0
- package/runtime/load-package.d.ts.map +1 -0
- package/runtime/load-package.js +272 -0
- package/runtime/map-package-fetch.d.ts +107 -0
- package/runtime/map-package-fetch.d.ts.map +1 -0
- package/runtime/map-package-fetch.js +336 -0
- package/runtime/map-package-realtime.d.ts +169 -0
- package/runtime/map-package-realtime.d.ts.map +1 -0
- package/runtime/map-package-realtime.js +350 -0
- package/runtime/map-package-validation.d.ts +30 -0
- package/runtime/map-package-validation.d.ts.map +1 -0
- package/runtime/map-package-validation.js +257 -0
- package/runtime/map-package-watch.d.ts +78 -0
- package/runtime/map-package-watch.d.ts.map +1 -0
- package/runtime/map-package-watch.js +695 -0
- package/runtime/map-package.d.ts +167 -0
- package/runtime/map-package.d.ts.map +1 -0
- package/runtime/map-package.js +15 -0
- package/runtime/ogc-styles.d.ts +110 -0
- package/runtime/ogc-styles.d.ts.map +1 -0
- package/runtime/ogc-styles.js +195 -0
- package/runtime/pmtiles-protocol.d.ts +77 -0
- package/runtime/pmtiles-protocol.d.ts.map +1 -0
- package/runtime/pmtiles-protocol.js +120 -0
- package/runtime/popups.d.ts +62 -0
- package/runtime/popups.d.ts.map +1 -0
- package/runtime/popups.js +95 -0
- package/runtime/query-tiles.d.ts +217 -0
- package/runtime/query-tiles.d.ts.map +1 -0
- package/runtime/query-tiles.js +801 -0
- package/runtime/runtime.d.ts +243 -0
- package/runtime/runtime.d.ts.map +1 -0
- package/runtime/runtime.js +1147 -0
- package/runtime/source-bridge.d.ts +99 -0
- package/runtime/source-bridge.d.ts.map +1 -0
- package/runtime/source-bridge.js +428 -0
- package/runtime/style-compose.d.ts +46 -0
- package/runtime/style-compose.d.ts.map +1 -0
- package/runtime/style-compose.js +144 -0
- package/runtime/style-interactions.d.ts +141 -0
- package/runtime/style-interactions.d.ts.map +1 -0
- package/runtime/style-interactions.js +574 -0
- package/runtime/style-spec-validation.d.ts +23 -0
- package/runtime/style-spec-validation.d.ts.map +1 -0
- package/runtime/style-spec-validation.js +357 -0
- package/scene-workspace/analysis-widgets.d.ts +334 -0
- package/scene-workspace/analysis-widgets.d.ts.map +1 -0
- package/scene-workspace/analysis-widgets.js +424 -0
- package/scene-workspace/cesium-adapter.d.ts +438 -0
- package/scene-workspace/cesium-adapter.d.ts.map +1 -0
- package/scene-workspace/cesium-adapter.js +493 -0
- package/scene-workspace/index.d.ts +21 -0
- package/scene-workspace/index.d.ts.map +1 -0
- package/scene-workspace/index.js +14 -0
- package/scene-workspace/primitives.d.ts +162 -0
- package/scene-workspace/primitives.d.ts.map +1 -0
- package/scene-workspace/primitives.js +255 -0
- package/scene-workspace/scene-discovery.d.ts +196 -0
- package/scene-workspace/scene-discovery.d.ts.map +1 -0
- package/scene-workspace/scene-discovery.js +228 -0
- package/scene-workspace/scene-view.d.ts +209 -0
- package/scene-workspace/scene-view.d.ts.map +1 -0
- package/scene-workspace/scene-view.js +267 -0
- package/scene-workspace/types.d.ts +229 -0
- package/scene-workspace/types.d.ts.map +1 -0
- package/scene-workspace/types.js +23 -0
- package/scene-workspace/workspace.d.ts +13 -0
- package/scene-workspace/workspace.d.ts.map +1 -0
- package/scene-workspace/workspace.js +391 -0
- package/share/denial.d.ts +78 -0
- package/share/denial.d.ts.map +1 -0
- package/share/denial.js +61 -0
- package/share/embed-token.d.ts +71 -0
- package/share/embed-token.d.ts.map +1 -0
- package/share/embed-token.js +99 -0
- package/share/index.d.ts +35 -0
- package/share/index.d.ts.map +1 -0
- package/share/index.js +30 -0
- package/share/open-data.d.ts +114 -0
- package/share/open-data.d.ts.map +1 -0
- package/share/open-data.js +81 -0
- package/share/types.d.ts +163 -0
- package/share/types.d.ts.map +1 -0
- package/share/types.js +17 -0
- package/studio/capability-manifest.d.ts +285 -0
- package/studio/capability-manifest.d.ts.map +1 -0
- package/studio/capability-manifest.js +59 -0
- package/studio/chart-spec.d.ts +85 -0
- package/studio/chart-spec.d.ts.map +1 -0
- package/studio/chart-spec.js +106 -0
- package/studio/index.d.ts +34 -0
- package/studio/index.d.ts.map +1 -0
- package/studio/index.js +27 -0
- package/studio/provenance.d.ts +131 -0
- package/studio/provenance.d.ts.map +1 -0
- package/studio/provenance.js +39 -0
- package/studio/publish.d.ts +64 -0
- package/studio/publish.d.ts.map +1 -0
- package/studio/publish.js +13 -0
- package/studio/types.d.ts +278 -0
- package/studio/types.d.ts.map +1 -0
- package/studio/types.js +71 -0
- package/studio/validate.d.ts +45 -0
- package/studio/validate.d.ts.map +1 -0
- package/studio/validate.js +255 -0
- package/studio/validation.d.ts +112 -0
- package/studio/validation.d.ts.map +1 -0
- package/studio/validation.js +42 -0
- package/style/factory.d.ts +30 -0
- package/style/factory.d.ts.map +1 -0
- package/style/factory.js +61 -0
- package/style/index.d.ts +25 -0
- package/style/index.d.ts.map +1 -0
- package/style/index.js +24 -0
- package/style/specification.d.ts +203 -0
- package/style/specification.d.ts.map +1 -0
- package/style/specification.js +178 -0
- package/style/wms-wmts-resolvers.d.ts +38 -0
- package/style/wms-wmts-resolvers.d.ts.map +1 -0
- package/style/wms-wmts-resolvers.js +92 -0
- package/web-components/controller.d.ts +39 -0
- package/web-components/controller.d.ts.map +1 -0
- package/web-components/controller.js +640 -0
- package/web-components/elements.d.ts +210 -0
- package/web-components/elements.d.ts.map +1 -0
- package/web-components/elements.js +1651 -0
- package/web-components/index.d.ts +24 -0
- package/web-components/index.d.ts.map +1 -0
- package/web-components/index.js +22 -0
- package/web-components/maplibre-renderer.d.ts +22 -0
- package/web-components/maplibre-renderer.d.ts.map +1 -0
- package/web-components/maplibre-renderer.js +474 -0
- package/web-components/types.d.ts +397 -0
- package/web-components/types.d.ts.map +1 -0
- package/web-components/types.js +1 -0
- package/webmap/contract.d.ts +28 -0
- package/webmap/contract.d.ts.map +1 -0
- package/webmap/contract.js +130 -0
- package/webmap/convert-basemap.d.ts +17 -0
- package/webmap/convert-basemap.d.ts.map +1 -0
- package/webmap/convert-basemap.js +78 -0
- package/webmap/convert-extent.d.ts +17 -0
- package/webmap/convert-extent.d.ts.map +1 -0
- package/webmap/convert-extent.js +114 -0
- package/webmap/convert-label.d.ts +13 -0
- package/webmap/convert-label.d.ts.map +1 -0
- package/webmap/convert-label.js +125 -0
- package/webmap/convert-layer.d.ts +22 -0
- package/webmap/convert-layer.d.ts.map +1 -0
- package/webmap/convert-layer.js +181 -0
- package/webmap/convert-popup.d.ts +34 -0
- package/webmap/convert-popup.d.ts.map +1 -0
- package/webmap/convert-popup.js +68 -0
- package/webmap/convert-renderer.d.ts +17 -0
- package/webmap/convert-renderer.d.ts.map +1 -0
- package/webmap/convert-renderer.js +161 -0
- package/webmap/convert-symbol.d.ts +17 -0
- package/webmap/convert-symbol.d.ts.map +1 -0
- package/webmap/convert-symbol.js +122 -0
- package/webmap/index.d.ts +44 -0
- package/webmap/index.d.ts.map +1 -0
- package/webmap/index.js +33 -0
- package/webmap/parse.d.ts +25 -0
- package/webmap/parse.d.ts.map +1 -0
- package/webmap/parse.js +83 -0
- package/webmap/types.d.ts +264 -0
- package/webmap/types.d.ts.map +1 -0
- package/webmap/types.js +13 -0
- package/webmap/warnings.d.ts +30 -0
- package/webmap/warnings.d.ts.map +1 -0
- package/webmap/warnings.js +37 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public request/response envelopes for the WMS / WMTS first-party
|
|
3
|
+
* adapter. Kept in their own module so the canonical SDK surface
|
|
4
|
+
* (`src/contract/index.ts`, `src/runtime/index.ts`, `src/index.ts`) can
|
|
5
|
+
* re-export them without dragging the runtime classes into trees that
|
|
6
|
+
* never reference WMS.
|
|
7
|
+
*
|
|
8
|
+
* @module
|
|
9
|
+
*/
|
|
10
|
+
// ── WMTS wire-format helpers ──────────────────────────────────
|
|
11
|
+
/**
|
|
12
|
+
* Canonical mapping from WMTS `Format` MIME types to RESTful path
|
|
13
|
+
* extensions. Shared between the wire client (`getWmtsTile` /
|
|
14
|
+
* `featureInfo` URL builders in `src/core/client.ts`) and the MapLibre
|
|
15
|
+
* raster source helper (`buildWmtsRasterSourceSpec` in
|
|
16
|
+
* `src/runtime/source-bridge.ts`) so a caller-supplied `format` lands on
|
|
17
|
+
* the same extension regardless of which surface composes the URL.
|
|
18
|
+
*
|
|
19
|
+
* The map is intentionally narrow — formats not listed here fall back
|
|
20
|
+
* to `png` per the conservative WMTS default. Add a new entry only when
|
|
21
|
+
* honua-server adds first-party support for the encoding.
|
|
22
|
+
*/
|
|
23
|
+
const WMTS_TILE_FORMAT_TO_EXTENSION = new Map([
|
|
24
|
+
["image/png", "png"],
|
|
25
|
+
["image/jpeg", "jpeg"],
|
|
26
|
+
["image/jpg", "jpeg"],
|
|
27
|
+
["image/webp", "webp"],
|
|
28
|
+
]);
|
|
29
|
+
/** Resolve the RESTful path extension for a WMTS tile `Format` MIME type. */
|
|
30
|
+
export function wmtsExtensionForFormat(format) {
|
|
31
|
+
return WMTS_TILE_FORMAT_TO_EXTENSION.get(format.toLowerCase()) ?? "png";
|
|
32
|
+
}
|
package/core/wms.d.ts
ADDED
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* First-party WMS 1.3.0 adapter. `HonuaWms` is the service-level handle
|
|
3
|
+
* returned by `client.wms(serviceId)`; `HonuaWmsLayer` is the bound
|
|
4
|
+
* handle returned by `HonuaWms.layer(name)` that pre-fills the LAYER and
|
|
5
|
+
* default STYLE so per-call envelopes can drop the routing fields.
|
|
6
|
+
*
|
|
7
|
+
* Wire transport lives on `HonuaClient` (`getWmsCapabilities`,
|
|
8
|
+
* `getWmsMap`, `getWmsFeatureInfo`, `getWmsLegend`); this class is the
|
|
9
|
+
* typed surface consumers reach through `Source.protocol("wms")`.
|
|
10
|
+
*
|
|
11
|
+
* @module
|
|
12
|
+
*/
|
|
13
|
+
import type { HonuaClient } from "./client.js";
|
|
14
|
+
import type { HonuaProtocolTransport } from "./protocol-transport.js";
|
|
15
|
+
import type { WmsCapabilities, WmsCapabilityLayer, WmsCapabilityStyle } from "./wms-capabilities.js";
|
|
16
|
+
import type { HonuaWmsFeatureInfoResponse, HonuaWmsImageResponse, WmsFeatureInfoRequest, WmsLegendRequest, WmsMapRequest } from "./wms-types.js";
|
|
17
|
+
export interface HonuaWmsOptions {
|
|
18
|
+
client: HonuaClient;
|
|
19
|
+
serviceId: string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Split a WMS `LAYERS=` value (or `locator.typeName` / `spec.layers` of
|
|
23
|
+
* the same shape) into the list of non-empty trimmed layer tokens. Used
|
|
24
|
+
* by the contract WMS adapter and shared style resolver so the
|
|
25
|
+
* single-layer handle rule stays in one place.
|
|
26
|
+
*/
|
|
27
|
+
export declare function parseWmsLayerNames(value: string | undefined): readonly string[];
|
|
28
|
+
export interface HonuaWmsLayerOptions extends HonuaWmsOptions {
|
|
29
|
+
/** WMS LAYER name (single layer; multi-layer renders use the parent handle). */
|
|
30
|
+
layerName: string;
|
|
31
|
+
/** Default STYLE for renders / feature-info on this layer. */
|
|
32
|
+
defaultStyleId?: string;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Service-level WMS handle. Use `layer(name)` to bind a single LAYER and
|
|
36
|
+
* style; for multi-layer composites (`LAYERS=a,b,c`) call `map()` /
|
|
37
|
+
* `featureInfo()` directly on this handle.
|
|
38
|
+
*/
|
|
39
|
+
export declare class HonuaWms {
|
|
40
|
+
readonly client: HonuaClient;
|
|
41
|
+
readonly serviceId: string;
|
|
42
|
+
private capabilitiesPromise;
|
|
43
|
+
constructor(options: HonuaWmsOptions);
|
|
44
|
+
/** Bind a single named layer for layer-scoped requests. */
|
|
45
|
+
layer(name: string, defaultStyleId?: string): HonuaWmsLayer;
|
|
46
|
+
/** Fetch and parse the service `GetCapabilities` document. */
|
|
47
|
+
capabilities(options?: {
|
|
48
|
+
signal?: AbortSignal;
|
|
49
|
+
}): Promise<WmsCapabilities>;
|
|
50
|
+
/** Render a `GetMap` request across one or more advertised layers. */
|
|
51
|
+
map(request: WmsMapRequest): Promise<HonuaWmsImageResponse>;
|
|
52
|
+
/** Issue a `GetFeatureInfo` against one or more advertised layers. */
|
|
53
|
+
featureInfo<T = Record<string, unknown>>(request: WmsFeatureInfoRequest): Promise<HonuaWmsFeatureInfoResponse<T>>;
|
|
54
|
+
/**
|
|
55
|
+
* Fetch a `GetLegendGraphic` image. Always gates on parsed Capabilities:
|
|
56
|
+
* when the caller does not pre-supply `options.capabilities`, the handle
|
|
57
|
+
* lazily loads them once via `getWmsCapabilities` and caches the
|
|
58
|
+
* promise on the instance so repeat calls reuse the same fetch. Throws
|
|
59
|
+
* `HonuaCapabilityNotSupportedError("legend", "wms", serviceId)` when
|
|
60
|
+
* the service does not advertise `<GetLegendGraphic>`.
|
|
61
|
+
*/
|
|
62
|
+
legend(request: WmsLegendRequest, options?: {
|
|
63
|
+
capabilities?: WmsCapabilities;
|
|
64
|
+
}): Promise<HonuaWmsImageResponse>;
|
|
65
|
+
private loadCachedCapabilities;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Bound layer handle. Drops `layers` / `styles` from per-call requests
|
|
69
|
+
* and pre-fills the LAYER name. `featureInfo()` carries the same `i`,
|
|
70
|
+
* `j`, and `bbox` envelope as the service-level handle.
|
|
71
|
+
*/
|
|
72
|
+
export declare class HonuaWmsLayer {
|
|
73
|
+
readonly client: HonuaClient;
|
|
74
|
+
readonly serviceId: string;
|
|
75
|
+
readonly layerName: string;
|
|
76
|
+
readonly defaultStyleId: string | undefined;
|
|
77
|
+
private capabilitiesPromise;
|
|
78
|
+
constructor(options: HonuaWmsLayerOptions);
|
|
79
|
+
/** Fetch the parent service's `GetCapabilities`. */
|
|
80
|
+
capabilities(options?: {
|
|
81
|
+
signal?: AbortSignal;
|
|
82
|
+
}): Promise<WmsCapabilities>;
|
|
83
|
+
/** Find this layer in a parsed Capabilities document. */
|
|
84
|
+
describe(capabilities: WmsCapabilities): WmsCapabilityLayer | undefined;
|
|
85
|
+
/** Enumerate the styles advertised on this layer. */
|
|
86
|
+
stylesIn(capabilities: WmsCapabilities): readonly WmsCapabilityStyle[];
|
|
87
|
+
map(request: Omit<WmsMapRequest, "layers" | "styles"> & {
|
|
88
|
+
style?: string;
|
|
89
|
+
}): Promise<HonuaWmsImageResponse>;
|
|
90
|
+
featureInfo<T = Record<string, unknown>>(request: Omit<WmsFeatureInfoRequest, "layers" | "queryLayers" | "styles"> & {
|
|
91
|
+
style?: string;
|
|
92
|
+
}): Promise<HonuaWmsFeatureInfoResponse<T>>;
|
|
93
|
+
/**
|
|
94
|
+
* Fetch a `GetLegendGraphic` image scoped to the bound layer + style.
|
|
95
|
+
* Mirrors `HonuaWms.legend`'s gating: when `options.capabilities` is
|
|
96
|
+
* not supplied, the handle lazily loads them once via
|
|
97
|
+
* `getWmsCapabilities` and caches the promise. Throws
|
|
98
|
+
* `HonuaCapabilityNotSupportedError("legend", "wms", serviceId)` when
|
|
99
|
+
* the service does not advertise `<GetLegendGraphic>`.
|
|
100
|
+
*/
|
|
101
|
+
legend(request?: Omit<WmsLegendRequest, "layer" | "style"> & {
|
|
102
|
+
style?: string;
|
|
103
|
+
}, options?: {
|
|
104
|
+
capabilities?: WmsCapabilities;
|
|
105
|
+
}): Promise<HonuaWmsImageResponse>;
|
|
106
|
+
private loadCachedCapabilities;
|
|
107
|
+
}
|
|
108
|
+
export declare function createHonuaWms(client: HonuaClient, serviceId: string): HonuaWms;
|
|
109
|
+
/**
|
|
110
|
+
* Fetch and parse a WMS `GetCapabilities` document for the addressed
|
|
111
|
+
* service. The XML body decodes through `requestText`; the parsed
|
|
112
|
+
* shape is the typed `WmsCapabilities` envelope (no XML node leaks
|
|
113
|
+
* through the public surface).
|
|
114
|
+
*/
|
|
115
|
+
export declare function getWmsCapabilities(transport: HonuaProtocolTransport, request: {
|
|
116
|
+
serviceId: string;
|
|
117
|
+
version?: string;
|
|
118
|
+
signal?: AbortSignal;
|
|
119
|
+
extraParams?: Record<string, string | number | boolean>;
|
|
120
|
+
}): Promise<WmsCapabilities>;
|
|
121
|
+
/** Render a WMS `GetMap`. Returns the raw image bytes. */
|
|
122
|
+
export declare function getWmsMap(transport: HonuaProtocolTransport, request: {
|
|
123
|
+
serviceId: string;
|
|
124
|
+
} & WmsMapRequest): Promise<HonuaWmsImageResponse>;
|
|
125
|
+
/**
|
|
126
|
+
* Issue a WMS `GetFeatureInfo`. When `INFO_FORMAT=application/json`
|
|
127
|
+
* the JSON body decodes into the canonical `HonuaTypedFeature[]`
|
|
128
|
+
* shape; non-JSON formats round-trip on `bytes` so callers retain the
|
|
129
|
+
* raw payload behind the protocol escape hatch.
|
|
130
|
+
*/
|
|
131
|
+
export declare function getWmsFeatureInfo<T = Record<string, unknown>>(transport: HonuaProtocolTransport, request: {
|
|
132
|
+
serviceId: string;
|
|
133
|
+
} & WmsFeatureInfoRequest): Promise<HonuaWmsFeatureInfoResponse<T>>;
|
|
134
|
+
/**
|
|
135
|
+
* Fetch a WMS `GetLegendGraphic`. honua-server does not implement
|
|
136
|
+
* GetLegendGraphic today; callers should branch on
|
|
137
|
+
* `WmsCapabilities.request.getLegendGraphic` before invoking. When
|
|
138
|
+
* the wire returns 5xx the underlying `HonuaHttpError` flows through.
|
|
139
|
+
*/
|
|
140
|
+
export declare function getWmsLegend(transport: HonuaProtocolTransport, request: {
|
|
141
|
+
serviceId: string;
|
|
142
|
+
} & WmsLegendRequest): Promise<HonuaWmsImageResponse>;
|
|
143
|
+
export declare function decodeWmsFeatureInfoResponse<T>(bytes: Uint8Array, contentType: string, requestedFormat: string): HonuaWmsFeatureInfoResponse<T>;
|
|
144
|
+
//# sourceMappingURL=wms.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wms.d.ts","sourceRoot":"","sources":["../../../src/core/wms.ts"],"names":[],"mappings":"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"}
|
package/core/wms.js
ADDED
|
@@ -0,0 +1,338 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* First-party WMS 1.3.0 adapter. `HonuaWms` is the service-level handle
|
|
3
|
+
* returned by `client.wms(serviceId)`; `HonuaWmsLayer` is the bound
|
|
4
|
+
* handle returned by `HonuaWms.layer(name)` that pre-fills the LAYER and
|
|
5
|
+
* default STYLE so per-call envelopes can drop the routing fields.
|
|
6
|
+
*
|
|
7
|
+
* Wire transport lives on `HonuaClient` (`getWmsCapabilities`,
|
|
8
|
+
* `getWmsMap`, `getWmsFeatureInfo`, `getWmsLegend`); this class is the
|
|
9
|
+
* typed surface consumers reach through `Source.protocol("wms")`.
|
|
10
|
+
*
|
|
11
|
+
* @module
|
|
12
|
+
*/
|
|
13
|
+
import { HonuaCapabilityNotSupportedError } from "./errors.js";
|
|
14
|
+
import { encodeServiceIdPath } from "./path-utils.js";
|
|
15
|
+
import { wmsBboxRequiresAxisSwap } from "./wms-axis.js";
|
|
16
|
+
import { findWmsLayer, parseWmsCapabilities } from "./wms-capabilities.js";
|
|
17
|
+
/**
|
|
18
|
+
* Split a WMS `LAYERS=` value (or `locator.typeName` / `spec.layers` of
|
|
19
|
+
* the same shape) into the list of non-empty trimmed layer tokens. Used
|
|
20
|
+
* by the contract WMS adapter and shared style resolver so the
|
|
21
|
+
* single-layer handle rule stays in one place.
|
|
22
|
+
*/
|
|
23
|
+
export function parseWmsLayerNames(value) {
|
|
24
|
+
if (typeof value !== "string" || value.length === 0)
|
|
25
|
+
return [];
|
|
26
|
+
return value
|
|
27
|
+
.split(",")
|
|
28
|
+
.map((s) => s.trim())
|
|
29
|
+
.filter((s) => s.length > 0);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Service-level WMS handle. Use `layer(name)` to bind a single LAYER and
|
|
33
|
+
* style; for multi-layer composites (`LAYERS=a,b,c`) call `map()` /
|
|
34
|
+
* `featureInfo()` directly on this handle.
|
|
35
|
+
*/
|
|
36
|
+
export class HonuaWms {
|
|
37
|
+
client;
|
|
38
|
+
serviceId;
|
|
39
|
+
capabilitiesPromise;
|
|
40
|
+
constructor(options) {
|
|
41
|
+
this.client = options.client;
|
|
42
|
+
this.serviceId = options.serviceId;
|
|
43
|
+
}
|
|
44
|
+
/** Bind a single named layer for layer-scoped requests. */
|
|
45
|
+
layer(name, defaultStyleId) {
|
|
46
|
+
const opts = {
|
|
47
|
+
client: this.client,
|
|
48
|
+
serviceId: this.serviceId,
|
|
49
|
+
layerName: name,
|
|
50
|
+
};
|
|
51
|
+
if (defaultStyleId !== undefined)
|
|
52
|
+
opts.defaultStyleId = defaultStyleId;
|
|
53
|
+
return new HonuaWmsLayer(opts);
|
|
54
|
+
}
|
|
55
|
+
/** Fetch and parse the service `GetCapabilities` document. */
|
|
56
|
+
async capabilities(options) {
|
|
57
|
+
return this.client.getWmsCapabilities({
|
|
58
|
+
serviceId: this.serviceId,
|
|
59
|
+
...(options?.signal ? { signal: options.signal } : {}),
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
/** Render a `GetMap` request across one or more advertised layers. */
|
|
63
|
+
async map(request) {
|
|
64
|
+
return this.client.getWmsMap({ serviceId: this.serviceId, ...request });
|
|
65
|
+
}
|
|
66
|
+
/** Issue a `GetFeatureInfo` against one or more advertised layers. */
|
|
67
|
+
async featureInfo(request) {
|
|
68
|
+
return this.client.getWmsFeatureInfo({ serviceId: this.serviceId, ...request });
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Fetch a `GetLegendGraphic` image. Always gates on parsed Capabilities:
|
|
72
|
+
* when the caller does not pre-supply `options.capabilities`, the handle
|
|
73
|
+
* lazily loads them once via `getWmsCapabilities` and caches the
|
|
74
|
+
* promise on the instance so repeat calls reuse the same fetch. Throws
|
|
75
|
+
* `HonuaCapabilityNotSupportedError("legend", "wms", serviceId)` when
|
|
76
|
+
* the service does not advertise `<GetLegendGraphic>`.
|
|
77
|
+
*/
|
|
78
|
+
async legend(request, options) {
|
|
79
|
+
const caps = options?.capabilities ?? (await this.loadCachedCapabilities());
|
|
80
|
+
if (!caps.request.getLegendGraphic) {
|
|
81
|
+
throw new HonuaCapabilityNotSupportedError("legend", "wms", this.serviceId);
|
|
82
|
+
}
|
|
83
|
+
return this.client.getWmsLegend({ serviceId: this.serviceId, ...request });
|
|
84
|
+
}
|
|
85
|
+
async loadCachedCapabilities() {
|
|
86
|
+
if (!this.capabilitiesPromise) {
|
|
87
|
+
this.capabilitiesPromise = this.capabilities().catch((error) => {
|
|
88
|
+
// Drop the cached promise on failure so the next call retries
|
|
89
|
+
// instead of permanently surfacing the same error.
|
|
90
|
+
this.capabilitiesPromise = undefined;
|
|
91
|
+
throw error;
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
return this.capabilitiesPromise;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Bound layer handle. Drops `layers` / `styles` from per-call requests
|
|
99
|
+
* and pre-fills the LAYER name. `featureInfo()` carries the same `i`,
|
|
100
|
+
* `j`, and `bbox` envelope as the service-level handle.
|
|
101
|
+
*/
|
|
102
|
+
export class HonuaWmsLayer {
|
|
103
|
+
client;
|
|
104
|
+
serviceId;
|
|
105
|
+
layerName;
|
|
106
|
+
defaultStyleId;
|
|
107
|
+
capabilitiesPromise;
|
|
108
|
+
constructor(options) {
|
|
109
|
+
this.client = options.client;
|
|
110
|
+
this.serviceId = options.serviceId;
|
|
111
|
+
this.layerName = options.layerName;
|
|
112
|
+
this.defaultStyleId = options.defaultStyleId;
|
|
113
|
+
}
|
|
114
|
+
/** Fetch the parent service's `GetCapabilities`. */
|
|
115
|
+
async capabilities(options) {
|
|
116
|
+
return this.client.getWmsCapabilities({
|
|
117
|
+
serviceId: this.serviceId,
|
|
118
|
+
...(options?.signal ? { signal: options.signal } : {}),
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
/** Find this layer in a parsed Capabilities document. */
|
|
122
|
+
describe(capabilities) {
|
|
123
|
+
return findWmsLayer(capabilities, this.layerName);
|
|
124
|
+
}
|
|
125
|
+
/** Enumerate the styles advertised on this layer. */
|
|
126
|
+
stylesIn(capabilities) {
|
|
127
|
+
return this.describe(capabilities)?.styles ?? [];
|
|
128
|
+
}
|
|
129
|
+
async map(request) {
|
|
130
|
+
const { style, ...rest } = request;
|
|
131
|
+
const styleId = style ?? this.defaultStyleId;
|
|
132
|
+
return this.client.getWmsMap({
|
|
133
|
+
serviceId: this.serviceId,
|
|
134
|
+
layers: [this.layerName],
|
|
135
|
+
...(styleId !== undefined ? { styles: [styleId] } : {}),
|
|
136
|
+
...rest,
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
async featureInfo(request) {
|
|
140
|
+
const { style, ...rest } = request;
|
|
141
|
+
const styleId = style ?? this.defaultStyleId;
|
|
142
|
+
return this.client.getWmsFeatureInfo({
|
|
143
|
+
serviceId: this.serviceId,
|
|
144
|
+
layers: [this.layerName],
|
|
145
|
+
queryLayers: [this.layerName],
|
|
146
|
+
...(styleId !== undefined ? { styles: [styleId] } : {}),
|
|
147
|
+
...rest,
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Fetch a `GetLegendGraphic` image scoped to the bound layer + style.
|
|
152
|
+
* Mirrors `HonuaWms.legend`'s gating: when `options.capabilities` is
|
|
153
|
+
* not supplied, the handle lazily loads them once via
|
|
154
|
+
* `getWmsCapabilities` and caches the promise. Throws
|
|
155
|
+
* `HonuaCapabilityNotSupportedError("legend", "wms", serviceId)` when
|
|
156
|
+
* the service does not advertise `<GetLegendGraphic>`.
|
|
157
|
+
*/
|
|
158
|
+
async legend(request = {}, options) {
|
|
159
|
+
const caps = options?.capabilities ?? (await this.loadCachedCapabilities());
|
|
160
|
+
if (!caps.request.getLegendGraphic) {
|
|
161
|
+
throw new HonuaCapabilityNotSupportedError("legend", "wms", this.serviceId);
|
|
162
|
+
}
|
|
163
|
+
const { style, ...rest } = request;
|
|
164
|
+
const styleId = style ?? this.defaultStyleId;
|
|
165
|
+
return this.client.getWmsLegend({
|
|
166
|
+
serviceId: this.serviceId,
|
|
167
|
+
layer: this.layerName,
|
|
168
|
+
...(styleId !== undefined ? { style: styleId } : {}),
|
|
169
|
+
...rest,
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
async loadCachedCapabilities() {
|
|
173
|
+
if (!this.capabilitiesPromise) {
|
|
174
|
+
this.capabilitiesPromise = this.capabilities().catch((error) => {
|
|
175
|
+
this.capabilitiesPromise = undefined;
|
|
176
|
+
throw error;
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
return this.capabilitiesPromise;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
export function createHonuaWms(client, serviceId) {
|
|
183
|
+
return new HonuaWms({ client, serviceId });
|
|
184
|
+
}
|
|
185
|
+
// ── WMS 1.3 wire methods ────────────────────────────────────────
|
|
186
|
+
/** Canonical WMS endpoint path. honua-server publishes both `/rest/services/{id}/MapServer/WMS` and `/ogc/services/{id}/wms`; the SDK targets the GeoServices-aliased path because every Honua deployment exposes it. */
|
|
187
|
+
function wmsBasePath(serviceId) {
|
|
188
|
+
return `/rest/services/${encodeServiceIdPath(serviceId)}/MapServer/WMS`;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Fetch and parse a WMS `GetCapabilities` document for the addressed
|
|
192
|
+
* service. The XML body decodes through `requestText`; the parsed
|
|
193
|
+
* shape is the typed `WmsCapabilities` envelope (no XML node leaks
|
|
194
|
+
* through the public surface).
|
|
195
|
+
*/
|
|
196
|
+
export async function getWmsCapabilities(transport, request) {
|
|
197
|
+
const params = new URLSearchParams();
|
|
198
|
+
params.set("SERVICE", "WMS");
|
|
199
|
+
params.set("REQUEST", "GetCapabilities");
|
|
200
|
+
params.set("VERSION", request.version ?? "1.3.0");
|
|
201
|
+
if (request.extraParams) {
|
|
202
|
+
for (const [key, value] of Object.entries(request.extraParams)) {
|
|
203
|
+
params.set(key, String(value));
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
const path = `${wmsBasePath(request.serviceId)}?${params.toString()}`;
|
|
207
|
+
const { text: xml } = await transport.requestText("GET", path, {
|
|
208
|
+
accept: "text/xml,application/xml",
|
|
209
|
+
signal: request.signal,
|
|
210
|
+
});
|
|
211
|
+
return parseWmsCapabilities(xml);
|
|
212
|
+
}
|
|
213
|
+
/** Render a WMS `GetMap`. Returns the raw image bytes. */
|
|
214
|
+
export async function getWmsMap(transport, request) {
|
|
215
|
+
const params = serializeWmsMapParams(request);
|
|
216
|
+
params.set("REQUEST", "GetMap");
|
|
217
|
+
const path = `${wmsBasePath(request.serviceId)}?${params.toString()}`;
|
|
218
|
+
const accept = request.format ?? "image/png";
|
|
219
|
+
const response = await transport.requestBytes("GET", path, accept, undefined, request.signal);
|
|
220
|
+
return { bytes: response.bytes, contentType: response.contentType };
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Issue a WMS `GetFeatureInfo`. When `INFO_FORMAT=application/json`
|
|
224
|
+
* the JSON body decodes into the canonical `HonuaTypedFeature[]`
|
|
225
|
+
* shape; non-JSON formats round-trip on `bytes` so callers retain the
|
|
226
|
+
* raw payload behind the protocol escape hatch.
|
|
227
|
+
*/
|
|
228
|
+
export async function getWmsFeatureInfo(transport, request) {
|
|
229
|
+
const params = serializeWmsMapParams(request);
|
|
230
|
+
params.set("REQUEST", "GetFeatureInfo");
|
|
231
|
+
params.set("QUERY_LAYERS", request.queryLayers.join(","));
|
|
232
|
+
params.set("I", String(Math.trunc(request.i)));
|
|
233
|
+
params.set("J", String(Math.trunc(request.j)));
|
|
234
|
+
const infoFormat = request.infoFormat ?? "application/json";
|
|
235
|
+
params.set("INFO_FORMAT", infoFormat);
|
|
236
|
+
if (request.featureCount !== undefined) {
|
|
237
|
+
params.set("FEATURE_COUNT", String(Math.trunc(request.featureCount)));
|
|
238
|
+
}
|
|
239
|
+
const path = `${wmsBasePath(request.serviceId)}?${params.toString()}`;
|
|
240
|
+
const response = await transport.requestBytes("GET", path, infoFormat, undefined, request.signal);
|
|
241
|
+
return decodeWmsFeatureInfoResponse(response.bytes, response.contentType, infoFormat);
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Fetch a WMS `GetLegendGraphic`. honua-server does not implement
|
|
245
|
+
* GetLegendGraphic today; callers should branch on
|
|
246
|
+
* `WmsCapabilities.request.getLegendGraphic` before invoking. When
|
|
247
|
+
* the wire returns 5xx the underlying `HonuaHttpError` flows through.
|
|
248
|
+
*/
|
|
249
|
+
export async function getWmsLegend(transport, request) {
|
|
250
|
+
const params = new URLSearchParams();
|
|
251
|
+
params.set("SERVICE", "WMS");
|
|
252
|
+
params.set("VERSION", "1.3.0");
|
|
253
|
+
params.set("REQUEST", "GetLegendGraphic");
|
|
254
|
+
params.set("LAYER", request.layer);
|
|
255
|
+
if (request.style)
|
|
256
|
+
params.set("STYLE", request.style);
|
|
257
|
+
const format = request.format ?? "image/png";
|
|
258
|
+
params.set("FORMAT", format);
|
|
259
|
+
if (request.width !== undefined)
|
|
260
|
+
params.set("WIDTH", String(Math.trunc(request.width)));
|
|
261
|
+
if (request.height !== undefined)
|
|
262
|
+
params.set("HEIGHT", String(Math.trunc(request.height)));
|
|
263
|
+
if (request.extraParams) {
|
|
264
|
+
for (const [key, value] of Object.entries(request.extraParams)) {
|
|
265
|
+
params.set(key, String(value));
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
const path = `${wmsBasePath(request.serviceId)}?${params.toString()}`;
|
|
269
|
+
const response = await transport.requestBytes("GET", path, format, undefined, request.signal);
|
|
270
|
+
return { bytes: response.bytes, contentType: response.contentType };
|
|
271
|
+
}
|
|
272
|
+
function serializeWmsMapParams(request) {
|
|
273
|
+
const params = new URLSearchParams();
|
|
274
|
+
params.set("SERVICE", "WMS");
|
|
275
|
+
params.set("VERSION", "1.3.0");
|
|
276
|
+
params.set("LAYERS", request.layers.join(","));
|
|
277
|
+
params.set("STYLES", request.styles ? request.styles.join(",") : "");
|
|
278
|
+
const crs = request.crs ?? "EPSG:3857";
|
|
279
|
+
params.set("CRS", crs);
|
|
280
|
+
const [minx, miny, maxx, maxy] = request.bbox;
|
|
281
|
+
const wireBbox = wmsBboxRequiresAxisSwap(crs) ? [miny, minx, maxy, maxx] : [minx, miny, maxx, maxy];
|
|
282
|
+
params.set("BBOX", wireBbox.join(","));
|
|
283
|
+
params.set("WIDTH", String(Math.trunc(request.width)));
|
|
284
|
+
params.set("HEIGHT", String(Math.trunc(request.height)));
|
|
285
|
+
params.set("FORMAT", request.format ?? "image/png");
|
|
286
|
+
params.set("TRANSPARENT", String(request.transparent ?? true).toUpperCase());
|
|
287
|
+
if (request.bgcolor !== undefined)
|
|
288
|
+
params.set("BGCOLOR", request.bgcolor);
|
|
289
|
+
if (request.time !== undefined)
|
|
290
|
+
params.set("TIME", request.time);
|
|
291
|
+
if (request.elevation !== undefined)
|
|
292
|
+
params.set("ELEVATION", request.elevation);
|
|
293
|
+
if (request.extraParams) {
|
|
294
|
+
for (const [key, value] of Object.entries(request.extraParams)) {
|
|
295
|
+
params.set(key, String(value));
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
return params;
|
|
299
|
+
}
|
|
300
|
+
export function decodeWmsFeatureInfoResponse(bytes, contentType, requestedFormat) {
|
|
301
|
+
const isJson = contentType.toLowerCase().includes("application/json") ||
|
|
302
|
+
requestedFormat.toLowerCase().includes("application/json");
|
|
303
|
+
if (!isJson) {
|
|
304
|
+
return { contentType, bytes };
|
|
305
|
+
}
|
|
306
|
+
const text = new TextDecoder("utf-8").decode(bytes);
|
|
307
|
+
if (text.length === 0) {
|
|
308
|
+
return { contentType, features: [] };
|
|
309
|
+
}
|
|
310
|
+
let parsed;
|
|
311
|
+
try {
|
|
312
|
+
parsed = JSON.parse(text);
|
|
313
|
+
}
|
|
314
|
+
catch {
|
|
315
|
+
// Server emitted a non-JSON body despite the JSON Accept; preserve as bytes.
|
|
316
|
+
return { contentType, bytes };
|
|
317
|
+
}
|
|
318
|
+
const features = extractFeatureInfoFeatures(parsed);
|
|
319
|
+
return { contentType, features };
|
|
320
|
+
}
|
|
321
|
+
function extractFeatureInfoFeatures(parsed) {
|
|
322
|
+
if (!parsed || typeof parsed !== "object")
|
|
323
|
+
return [];
|
|
324
|
+
// honua-server emits `{ type: "FeatureInfoResponse", features: [{ layer, attributes }, ...] }`
|
|
325
|
+
// and a fallback GeoJSON `{ type: "FeatureCollection", features: [...] }`; both decode here.
|
|
326
|
+
const obj = parsed;
|
|
327
|
+
const featuresRaw = Array.isArray(obj.features) ? obj.features : [];
|
|
328
|
+
const out = [];
|
|
329
|
+
for (const raw of featuresRaw) {
|
|
330
|
+
if (!raw || typeof raw !== "object")
|
|
331
|
+
continue;
|
|
332
|
+
const feat = raw;
|
|
333
|
+
const attributes = (feat.attributes ?? feat.properties ?? {});
|
|
334
|
+
const geometry = feat.geometry ?? null;
|
|
335
|
+
out.push({ attributes, geometry });
|
|
336
|
+
}
|
|
337
|
+
return out;
|
|
338
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WMTS 1.0.0 Capabilities parser. Hand-rolled, narrow-scope walker over
|
|
3
|
+
* the `Capabilities` document advertised by honua-server (single
|
|
4
|
+
* advertised TileMatrixSet today: `WebMercatorQuad`). Yields a typed
|
|
5
|
+
* `WmtsCapabilities` shape so the SDK can route through the canonical
|
|
6
|
+
* `Source` surface without leaking XML.
|
|
7
|
+
*
|
|
8
|
+
* @module
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Top-level WMTS Capabilities surface.
|
|
12
|
+
*/
|
|
13
|
+
export interface WmtsCapabilities {
|
|
14
|
+
/** Protocol version. honua-server advertises `1.0.0`. */
|
|
15
|
+
version: string;
|
|
16
|
+
service: WmtsCapabilitiesService;
|
|
17
|
+
layers: ReadonlyArray<WmtsCapabilityLayer>;
|
|
18
|
+
tileMatrixSets: ReadonlyArray<WmtsCapabilityTileMatrixSet>;
|
|
19
|
+
}
|
|
20
|
+
export interface WmtsCapabilitiesService {
|
|
21
|
+
title?: string;
|
|
22
|
+
abstract?: string;
|
|
23
|
+
}
|
|
24
|
+
export interface WmtsCapabilityLayer {
|
|
25
|
+
identifier: string;
|
|
26
|
+
title?: string;
|
|
27
|
+
abstract?: string;
|
|
28
|
+
formats: readonly string[];
|
|
29
|
+
styles: ReadonlyArray<WmtsCapabilityStyle>;
|
|
30
|
+
/** TileMatrixSet identifiers the layer supports. */
|
|
31
|
+
tileMatrixSetIds: readonly string[];
|
|
32
|
+
/** RESTful tile templates (xlink:href) advertised by `ResourceURL@resourceType="tile"`. */
|
|
33
|
+
resourceTemplates: ReadonlyArray<WmtsCapabilityResourceUrl>;
|
|
34
|
+
/** RESTful FeatureInfo templates advertised by `ResourceURL@resourceType="FeatureInfo"`. */
|
|
35
|
+
featureInfoTemplates: ReadonlyArray<WmtsCapabilityResourceUrl>;
|
|
36
|
+
/** Geographic bounding box (WGS84) when advertised. */
|
|
37
|
+
bbox?: {
|
|
38
|
+
west: number;
|
|
39
|
+
south: number;
|
|
40
|
+
east: number;
|
|
41
|
+
north: number;
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
export interface WmtsCapabilityStyle {
|
|
45
|
+
identifier: string;
|
|
46
|
+
title?: string;
|
|
47
|
+
isDefault: boolean;
|
|
48
|
+
legendUrl?: string;
|
|
49
|
+
}
|
|
50
|
+
export interface WmtsCapabilityResourceUrl {
|
|
51
|
+
format: string;
|
|
52
|
+
template: string;
|
|
53
|
+
}
|
|
54
|
+
export interface WmtsCapabilityTileMatrixSet {
|
|
55
|
+
identifier: string;
|
|
56
|
+
/** CRS supportedCRS or wellKnownScaleSet href when advertised. */
|
|
57
|
+
supportedCrs?: string;
|
|
58
|
+
wellKnownScaleSet?: string;
|
|
59
|
+
matrices: ReadonlyArray<WmtsCapabilityTileMatrix>;
|
|
60
|
+
}
|
|
61
|
+
export interface WmtsCapabilityTileMatrix {
|
|
62
|
+
identifier: string;
|
|
63
|
+
scaleDenominator: number;
|
|
64
|
+
matrixWidth: number;
|
|
65
|
+
matrixHeight: number;
|
|
66
|
+
tileWidth: number;
|
|
67
|
+
tileHeight: number;
|
|
68
|
+
topLeftCorner: readonly [number, number];
|
|
69
|
+
}
|
|
70
|
+
export declare class HonuaWmtsCapabilitiesParseError extends Error {
|
|
71
|
+
constructor(message: string);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Parse a `Capabilities` text body for WMTS 1.0 into the typed
|
|
75
|
+
* `WmtsCapabilities` shape.
|
|
76
|
+
*/
|
|
77
|
+
export declare function parseWmtsCapabilities(xml: string): WmtsCapabilities;
|
|
78
|
+
/** Find a layer by identifier in a parsed `WmtsCapabilities`. */
|
|
79
|
+
export declare function findWmtsLayer(capabilities: WmtsCapabilities, identifier: string): WmtsCapabilityLayer | undefined;
|
|
80
|
+
/** Find a tile-matrix-set by identifier. */
|
|
81
|
+
export declare function findWmtsTileMatrixSet(capabilities: WmtsCapabilities, identifier: string): WmtsCapabilityTileMatrixSet | undefined;
|
|
82
|
+
//# sourceMappingURL=wmts-capabilities.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wmts-capabilities.d.ts","sourceRoot":"","sources":["../../../src/core/wmts-capabilities.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,yDAAyD;IACzD,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,uBAAuB,CAAC;IACjC,MAAM,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAC;IAC3C,cAAc,EAAE,aAAa,CAAC,2BAA2B,CAAC,CAAC;CAC5D;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,MAAM,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAC;IAC3C,oDAAoD;IACpD,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,2FAA2F;IAC3F,iBAAiB,EAAE,aAAa,CAAC,yBAAyB,CAAC,CAAC;IAC5D,4FAA4F;IAC5F,oBAAoB,EAAE,aAAa,CAAC,yBAAyB,CAAC,CAAC;IAC/D,uDAAuD;IACvD,IAAI,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CACrE;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,2BAA2B;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB,kEAAkE;IAClE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,EAAE,aAAa,CAAC,wBAAwB,CAAC,CAAC;CACnD;AAED,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1C;AAED,qBAAa,+BAAgC,SAAQ,KAAK;gBACrC,OAAO,EAAE,MAAM;CAInC;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAcnE;AAgWD,iEAAiE;AACjE,wBAAgB,aAAa,CAAC,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAEjH;AAED,4CAA4C;AAC5C,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,gBAAgB,EAC9B,UAAU,EAAE,MAAM,GACjB,2BAA2B,GAAG,SAAS,CAEzC"}
|