@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,357 @@
|
|
|
1
|
+
let loadAttempted = false;
|
|
2
|
+
let loadedModule;
|
|
3
|
+
let loadFailure;
|
|
4
|
+
let loadPromise;
|
|
5
|
+
export async function prepareRuntimeStyleSpecValidation(mode = "strict") {
|
|
6
|
+
if (mode === "renderer-deferred")
|
|
7
|
+
return [];
|
|
8
|
+
const mod = await loadMapLibreStyleSpecModule();
|
|
9
|
+
if (mod)
|
|
10
|
+
return [];
|
|
11
|
+
return [validatorUnavailableDiagnostic({ mode })];
|
|
12
|
+
}
|
|
13
|
+
export async function validateRuntimeStyleSpec(style, options = {}) {
|
|
14
|
+
const mode = options.mode ?? "strict";
|
|
15
|
+
if (mode === "renderer-deferred")
|
|
16
|
+
return [];
|
|
17
|
+
const mod = await loadMapLibreStyleSpecModule();
|
|
18
|
+
if (!mod)
|
|
19
|
+
return [validatorUnavailableDiagnostic({ ...options, mode })];
|
|
20
|
+
return mapStyleSpecErrors(mod.validateStyleMin(sanitizeStyle(style)), { ...options, mode }, {});
|
|
21
|
+
}
|
|
22
|
+
export async function validateRuntimeSourceStyleSpec(sourceId, source, options = {}) {
|
|
23
|
+
const mode = options.mode ?? "strict";
|
|
24
|
+
if (mode === "renderer-deferred" || isHonuaSourceLike(source))
|
|
25
|
+
return [];
|
|
26
|
+
const mod = await loadMapLibreStyleSpecModule();
|
|
27
|
+
if (!mod)
|
|
28
|
+
return [
|
|
29
|
+
validatorUnavailableDiagnostic({ ...options, mode, sourceId, path: options.path ?? `sources.${sourceId}` }),
|
|
30
|
+
];
|
|
31
|
+
return mapStyleSpecErrors(mod.validateStyleMin({
|
|
32
|
+
version: 8,
|
|
33
|
+
sources: { [sourceId]: source },
|
|
34
|
+
layers: [],
|
|
35
|
+
}), { ...options, mode, sourceId, path: options.path ?? `sources.${sourceId}` }, {});
|
|
36
|
+
}
|
|
37
|
+
export async function validateRuntimeLayerStyleSpec(layer, options = {}) {
|
|
38
|
+
const mode = options.mode ?? "strict";
|
|
39
|
+
if (mode === "renderer-deferred")
|
|
40
|
+
return [];
|
|
41
|
+
const mod = await loadMapLibreStyleSpecModule();
|
|
42
|
+
if (!mod) {
|
|
43
|
+
return [
|
|
44
|
+
validatorUnavailableDiagnostic({
|
|
45
|
+
...options,
|
|
46
|
+
mode,
|
|
47
|
+
layerId: options.layerId ?? layer.id,
|
|
48
|
+
sourceId: options.sourceId ?? layer.source,
|
|
49
|
+
path: options.path ?? layerPath(layer),
|
|
50
|
+
}),
|
|
51
|
+
];
|
|
52
|
+
}
|
|
53
|
+
return mapStyleSpecErrors(mod.validateStyleMin(styleForLayerValidation(layer, options)), {
|
|
54
|
+
...options,
|
|
55
|
+
mode,
|
|
56
|
+
layerId: options.layerId ?? layer.id,
|
|
57
|
+
sourceId: options.sourceId ?? layer.source,
|
|
58
|
+
path: options.path ?? layerPath(layer),
|
|
59
|
+
}, { layerId: layer.id });
|
|
60
|
+
}
|
|
61
|
+
export async function validateRuntimeStyleExpressionStyleSpec(value, options = {}) {
|
|
62
|
+
const mode = options.mode ?? "strict";
|
|
63
|
+
if (mode === "renderer-deferred")
|
|
64
|
+
return [];
|
|
65
|
+
const mod = await loadMapLibreStyleSpecModule();
|
|
66
|
+
if (!mod)
|
|
67
|
+
return [validatorUnavailableDiagnostic({ ...options, mode })];
|
|
68
|
+
return validateExpressionWithModule(mod, value, { ...options, mode });
|
|
69
|
+
}
|
|
70
|
+
export async function validateRuntimeFilterStyleSpec(filter, options = {}) {
|
|
71
|
+
const mode = options.mode ?? "strict";
|
|
72
|
+
if (mode === "renderer-deferred")
|
|
73
|
+
return [];
|
|
74
|
+
const mod = await loadMapLibreStyleSpecModule();
|
|
75
|
+
if (!mod)
|
|
76
|
+
return [validatorUnavailableDiagnostic({ ...options, mode })];
|
|
77
|
+
return mapStyleSpecErrors(mod.validateStyleMin(styleForFilterValidation(filter, options.layerId)), { ...options, mode, path: options.path ?? filterPath(options.layerId) }, { layerId: options.layerId ?? "__honua_filter_validation__" });
|
|
78
|
+
}
|
|
79
|
+
export function validateRuntimeSourceStyleSpecSync(sourceId, source, options = {}) {
|
|
80
|
+
if (!shouldRunSyncStyleSpecValidation(options.mode) || isHonuaSourceLike(source))
|
|
81
|
+
return [];
|
|
82
|
+
const mod = loadedStyleSpecModule();
|
|
83
|
+
if (!mod)
|
|
84
|
+
return [validatorUnavailableDiagnostic({ ...options, sourceId, path: options.path ?? `sources.${sourceId}` })];
|
|
85
|
+
return mapStyleSpecErrors(mod.validateStyleMin({
|
|
86
|
+
version: 8,
|
|
87
|
+
sources: { [sourceId]: source },
|
|
88
|
+
layers: [],
|
|
89
|
+
}), { ...options, sourceId, path: options.path ?? `sources.${sourceId}` }, {});
|
|
90
|
+
}
|
|
91
|
+
export function validateRuntimeLayerStyleSpecSync(layer, options = {}) {
|
|
92
|
+
if (!shouldRunSyncStyleSpecValidation(options.mode))
|
|
93
|
+
return [];
|
|
94
|
+
const mod = loadedStyleSpecModule();
|
|
95
|
+
if (!mod) {
|
|
96
|
+
return [
|
|
97
|
+
validatorUnavailableDiagnostic({
|
|
98
|
+
...options,
|
|
99
|
+
layerId: options.layerId ?? layer.id,
|
|
100
|
+
sourceId: options.sourceId ?? layer.source,
|
|
101
|
+
path: options.path ?? layerPath(layer),
|
|
102
|
+
}),
|
|
103
|
+
];
|
|
104
|
+
}
|
|
105
|
+
return mapStyleSpecErrors(mod.validateStyleMin(styleForLayerValidation(layer, options)), {
|
|
106
|
+
...options,
|
|
107
|
+
layerId: options.layerId ?? layer.id,
|
|
108
|
+
sourceId: options.sourceId ?? layer.source,
|
|
109
|
+
path: options.path ?? layerPath(layer),
|
|
110
|
+
}, { layerId: layer.id });
|
|
111
|
+
}
|
|
112
|
+
export function validateRuntimeStyleExpressionStyleSpecSync(value, options = {}) {
|
|
113
|
+
if (!shouldRunSyncStyleSpecValidation(options.mode))
|
|
114
|
+
return [];
|
|
115
|
+
const mod = loadedStyleSpecModule();
|
|
116
|
+
if (!mod)
|
|
117
|
+
return [validatorUnavailableDiagnostic(options)];
|
|
118
|
+
return validateExpressionWithModule(mod, value, options);
|
|
119
|
+
}
|
|
120
|
+
export function validateRuntimeFilterStyleSpecSync(filter, options = {}) {
|
|
121
|
+
if (!shouldRunSyncStyleSpecValidation(options.mode))
|
|
122
|
+
return [];
|
|
123
|
+
const mod = loadedStyleSpecModule();
|
|
124
|
+
if (!mod)
|
|
125
|
+
return [validatorUnavailableDiagnostic(options)];
|
|
126
|
+
return mapStyleSpecErrors(mod.validateStyleMin(styleForFilterValidation(filter, options.layerId)), { ...options, path: options.path ?? filterPath(options.layerId) }, { layerId: options.layerId ?? "__honua_filter_validation__" });
|
|
127
|
+
}
|
|
128
|
+
function validateExpressionWithModule(mod, value, options) {
|
|
129
|
+
const result = mod.createExpression(value);
|
|
130
|
+
if (result.result !== "error" || !Array.isArray(result.value))
|
|
131
|
+
return [];
|
|
132
|
+
return result.value.map((error) => {
|
|
133
|
+
const mapLibrePath = pathWithExpressionKey(options.path, stringProperty(error, "key"));
|
|
134
|
+
return mapLibreDiagnostic(error, stringProperty(error, "message") ?? "Invalid MapLibre style expression.", {
|
|
135
|
+
...options,
|
|
136
|
+
path: mapLibrePath,
|
|
137
|
+
mapLibrePath,
|
|
138
|
+
});
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
async function loadMapLibreStyleSpecModule() {
|
|
142
|
+
if (loadedModule)
|
|
143
|
+
return loadedModule;
|
|
144
|
+
loadAttempted = true;
|
|
145
|
+
loadPromise ??= import("@maplibre/maplibre-gl-style-spec")
|
|
146
|
+
.then((mod) => {
|
|
147
|
+
const candidate = mod;
|
|
148
|
+
if (typeof candidate.validateStyleMin !== "function" || typeof candidate.createExpression !== "function") {
|
|
149
|
+
throw new Error("@maplibre/maplibre-gl-style-spec does not expose the expected validator API.");
|
|
150
|
+
}
|
|
151
|
+
loadedModule = {
|
|
152
|
+
validateStyleMin: candidate.validateStyleMin,
|
|
153
|
+
createExpression: candidate.createExpression,
|
|
154
|
+
};
|
|
155
|
+
loadFailure = undefined;
|
|
156
|
+
return loadedModule;
|
|
157
|
+
})
|
|
158
|
+
.catch((error) => {
|
|
159
|
+
loadFailure = error;
|
|
160
|
+
loadedModule = undefined;
|
|
161
|
+
return undefined;
|
|
162
|
+
});
|
|
163
|
+
return loadPromise;
|
|
164
|
+
}
|
|
165
|
+
function loadedStyleSpecModule() {
|
|
166
|
+
return loadedModule;
|
|
167
|
+
}
|
|
168
|
+
function shouldRunSyncStyleSpecValidation(mode) {
|
|
169
|
+
return mode !== undefined && mode !== "renderer-deferred";
|
|
170
|
+
}
|
|
171
|
+
function mapStyleSpecErrors(errors, options, remap) {
|
|
172
|
+
return errors.map((error) => {
|
|
173
|
+
const parsed = parseMapLibreMessage(stringProperty(error, "message") ?? "Invalid MapLibre style specification.");
|
|
174
|
+
const path = parsed.path ? normalizeStylePath(parsed.path, remap) : options.path;
|
|
175
|
+
return mapLibreDiagnostic(error, parsed.message, {
|
|
176
|
+
...options,
|
|
177
|
+
path: path ?? options.path,
|
|
178
|
+
mapLibrePath: parsed.path,
|
|
179
|
+
});
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
function mapLibreDiagnostic(error, message, options) {
|
|
183
|
+
const mapLibreCode = stringProperty(error, "identifier") ?? "validation-error";
|
|
184
|
+
const line = numberProperty(error, "line");
|
|
185
|
+
return {
|
|
186
|
+
code: "style-spec-invalid",
|
|
187
|
+
severity: severityForMode(options.mode),
|
|
188
|
+
message,
|
|
189
|
+
...(options.path ? { path: options.path } : {}),
|
|
190
|
+
...(options.sourceId ? { sourceId: options.sourceId } : {}),
|
|
191
|
+
...(options.layerId ? { layerId: options.layerId } : {}),
|
|
192
|
+
...(options.protocol ? { protocol: options.protocol } : {}),
|
|
193
|
+
context: {
|
|
194
|
+
...(options.context ?? {}),
|
|
195
|
+
mapLibreCode,
|
|
196
|
+
...(options.mapLibrePath ? { mapLibrePath: options.mapLibrePath } : {}),
|
|
197
|
+
...(line !== undefined ? { mapLibreLine: line } : {}),
|
|
198
|
+
},
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
function validatorUnavailableDiagnostic(options) {
|
|
202
|
+
const cause = loadAttempted
|
|
203
|
+
? errorMessage(loadFailure) || "unknown import failure"
|
|
204
|
+
: "validator has not been prepared";
|
|
205
|
+
return {
|
|
206
|
+
code: "style-spec-validator-unavailable",
|
|
207
|
+
severity: severityForMode(options.mode),
|
|
208
|
+
message: "MapLibre style-spec validation is unavailable. Install @maplibre/maplibre-gl-style-spec or use renderer-deferred validation.",
|
|
209
|
+
...(options.path ? { path: options.path } : {}),
|
|
210
|
+
...(options.sourceId ? { sourceId: options.sourceId } : {}),
|
|
211
|
+
...(options.layerId ? { layerId: options.layerId } : {}),
|
|
212
|
+
...(options.protocol ? { protocol: options.protocol } : {}),
|
|
213
|
+
context: {
|
|
214
|
+
...(options.context ?? {}),
|
|
215
|
+
mapLibreCode: "validator-unavailable",
|
|
216
|
+
cause,
|
|
217
|
+
},
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
function sanitizeStyle(style) {
|
|
221
|
+
const sources = {};
|
|
222
|
+
for (const [sourceId, source] of Object.entries(style.sources)) {
|
|
223
|
+
sources[sourceId] = isHonuaSourceLike(source)
|
|
224
|
+
? placeholderSourceForLayer(firstLayerForSource(style.layers, sourceId), source)
|
|
225
|
+
: source;
|
|
226
|
+
}
|
|
227
|
+
return {
|
|
228
|
+
...style,
|
|
229
|
+
sources,
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
function styleForLayerValidation(layer, options) {
|
|
233
|
+
const sources = {};
|
|
234
|
+
const sourceId = typeof layer.source === "string" ? layer.source : undefined;
|
|
235
|
+
if (sourceId) {
|
|
236
|
+
const existing = options.style?.sources[sourceId];
|
|
237
|
+
if (existing) {
|
|
238
|
+
sources[sourceId] = isHonuaSourceLike(existing) ? placeholderSourceForLayer(layer, existing) : existing;
|
|
239
|
+
}
|
|
240
|
+
else if (!options.style) {
|
|
241
|
+
sources[sourceId] = placeholderSourceForLayer(layer);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
return {
|
|
245
|
+
version: 8,
|
|
246
|
+
sources,
|
|
247
|
+
layers: [layer],
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
function styleForFilterValidation(filter, layerId) {
|
|
251
|
+
const sourceId = "__honua_filter_source__";
|
|
252
|
+
return {
|
|
253
|
+
version: 8,
|
|
254
|
+
sources: {
|
|
255
|
+
[sourceId]: geoJsonPlaceholderSource(),
|
|
256
|
+
},
|
|
257
|
+
layers: [
|
|
258
|
+
{
|
|
259
|
+
id: layerId ?? "__honua_filter_validation__",
|
|
260
|
+
type: "circle",
|
|
261
|
+
source: sourceId,
|
|
262
|
+
filter,
|
|
263
|
+
},
|
|
264
|
+
],
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
function placeholderSourceForLayer(layer, source) {
|
|
268
|
+
const sourceType = isPlainObject(source) && typeof source.type === "string" ? source.type : undefined;
|
|
269
|
+
if (sourceType === "honua-wms" || sourceType === "honua-wmts" || sourceType === "honua-map-service") {
|
|
270
|
+
return rasterPlaceholderSource();
|
|
271
|
+
}
|
|
272
|
+
if (layer?.type === "raster")
|
|
273
|
+
return rasterPlaceholderSource();
|
|
274
|
+
if (layer?.type === "hillshade")
|
|
275
|
+
return rasterDemPlaceholderSource();
|
|
276
|
+
return geoJsonPlaceholderSource();
|
|
277
|
+
}
|
|
278
|
+
function geoJsonPlaceholderSource() {
|
|
279
|
+
return {
|
|
280
|
+
type: "geojson",
|
|
281
|
+
data: { type: "FeatureCollection", features: [] },
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
function rasterPlaceholderSource() {
|
|
285
|
+
return {
|
|
286
|
+
type: "raster",
|
|
287
|
+
tiles: ["https://example.invalid/{z}/{x}/{y}.png"],
|
|
288
|
+
tileSize: 256,
|
|
289
|
+
};
|
|
290
|
+
}
|
|
291
|
+
function rasterDemPlaceholderSource() {
|
|
292
|
+
return {
|
|
293
|
+
type: "raster-dem",
|
|
294
|
+
tiles: ["https://example.invalid/{z}/{x}/{y}.png"],
|
|
295
|
+
tileSize: 256,
|
|
296
|
+
};
|
|
297
|
+
}
|
|
298
|
+
function firstLayerForSource(layers, sourceId) {
|
|
299
|
+
return layers.find((layer) => layer.source === sourceId);
|
|
300
|
+
}
|
|
301
|
+
function isHonuaSourceLike(value) {
|
|
302
|
+
return isPlainObject(value) && typeof value.type === "string" && value.type.startsWith("honua-");
|
|
303
|
+
}
|
|
304
|
+
function parseMapLibreMessage(message) {
|
|
305
|
+
const separator = message.indexOf(": ");
|
|
306
|
+
if (separator <= 0)
|
|
307
|
+
return { path: undefined, message };
|
|
308
|
+
const path = message.slice(0, separator);
|
|
309
|
+
if (!looksLikeMapLibrePath(path))
|
|
310
|
+
return { path: undefined, message };
|
|
311
|
+
return { path, message: message.slice(separator + 2) };
|
|
312
|
+
}
|
|
313
|
+
function looksLikeMapLibrePath(path) {
|
|
314
|
+
return /^(version|name|metadata|center|zoom|bearing|pitch|sources|layers|sprite|glyphs|transition|light|terrain|projection|sky)(?:$|[.[\]])/.test(path);
|
|
315
|
+
}
|
|
316
|
+
function normalizeStylePath(path, remap) {
|
|
317
|
+
if (remap.layerId) {
|
|
318
|
+
return path.replace(/^layers\[\d+\]/, `layers.${remap.layerId}`);
|
|
319
|
+
}
|
|
320
|
+
return path;
|
|
321
|
+
}
|
|
322
|
+
function pathWithExpressionKey(path, key) {
|
|
323
|
+
if (!key)
|
|
324
|
+
return path;
|
|
325
|
+
if (!path)
|
|
326
|
+
return key.startsWith(".") ? key.slice(1) : key;
|
|
327
|
+
return key.startsWith("[") || key.startsWith(".") ? `${path}${key}` : `${path}.${key}`;
|
|
328
|
+
}
|
|
329
|
+
function filterPath(layerId) {
|
|
330
|
+
return layerId ? `layers.${layerId}.filter` : "filter";
|
|
331
|
+
}
|
|
332
|
+
function layerPath(layer) {
|
|
333
|
+
return layer.id ? `layers.${layer.id}` : "layers[]";
|
|
334
|
+
}
|
|
335
|
+
function severityForMode(mode) {
|
|
336
|
+
return mode === "warning-only" ? "warning" : "error";
|
|
337
|
+
}
|
|
338
|
+
function stringProperty(value, property) {
|
|
339
|
+
if (!isPlainObject(value))
|
|
340
|
+
return undefined;
|
|
341
|
+
const candidate = value[property];
|
|
342
|
+
return typeof candidate === "string" ? candidate : undefined;
|
|
343
|
+
}
|
|
344
|
+
function numberProperty(value, property) {
|
|
345
|
+
if (!isPlainObject(value))
|
|
346
|
+
return undefined;
|
|
347
|
+
const candidate = value[property];
|
|
348
|
+
return typeof candidate === "number" ? candidate : undefined;
|
|
349
|
+
}
|
|
350
|
+
function errorMessage(error) {
|
|
351
|
+
if (error instanceof Error)
|
|
352
|
+
return error.message;
|
|
353
|
+
return typeof error === "string" ? error : undefined;
|
|
354
|
+
}
|
|
355
|
+
function isPlainObject(value) {
|
|
356
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
357
|
+
}
|
|
@@ -0,0 +1,334 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interactive 3D analysis + measurement widgets for the scene workspace.
|
|
3
|
+
*
|
|
4
|
+
* These widgets consume the server's elevation/analysis endpoints (line-of-sight,
|
|
5
|
+
* viewshed, elevation profile) and render the results into a live Cesium
|
|
6
|
+
* `SceneView`, plus a fully client-side 3D distance/area measurement widget.
|
|
7
|
+
*
|
|
8
|
+
* Like {@link module:scene-workspace/cesium-adapter}, this module never imports
|
|
9
|
+
* CesiumJS statically: the rendering helpers pull the runtime in lazily via
|
|
10
|
+
* `await import("cesium")` so 2D-only consumers never pay the bundle cost. The
|
|
11
|
+
* pure request-shaping and client-side geometry math (haversine distance,
|
|
12
|
+
* spherical polygon area, WKT serialization) carry no Cesium dependency at all
|
|
13
|
+
* and are unit-testable without a WebGL `Viewer`.
|
|
14
|
+
*
|
|
15
|
+
* Server calls go through a caller-supplied {@link SceneAnalysisRequestExecutor}
|
|
16
|
+
* — typically `(...args) => client.pipelineRequestJson(...args)` against a
|
|
17
|
+
* `HonuaClient` — so the widgets reuse the SDK's auth / retry / timeout /
|
|
18
|
+
* interceptor pipeline instead of issuing ad-hoc `fetch` calls.
|
|
19
|
+
*
|
|
20
|
+
* @experimental Part of the experimental `scene-workspace` surface; not yet
|
|
21
|
+
* covered by the SDK's semver contract prior to `1.0.0`.
|
|
22
|
+
* @module
|
|
23
|
+
*/
|
|
24
|
+
import type { QueryMethod } from "../core/types.js";
|
|
25
|
+
/**
|
|
26
|
+
* The minimal request-executor the analysis widgets need. This is exactly the
|
|
27
|
+
* shape of `HonuaClient.pipelineRequestJson`, so a consumer wires the SDK's
|
|
28
|
+
* shared HTTP pipeline (auth, retries, timeouts, interceptors) in with:
|
|
29
|
+
*
|
|
30
|
+
* ```ts
|
|
31
|
+
* const executor: SceneAnalysisRequestExecutor =
|
|
32
|
+
* (method, path, init, signal) => client.pipelineRequestJson(method, path, init, signal);
|
|
33
|
+
* ```
|
|
34
|
+
*
|
|
35
|
+
* Modelling the transport as a function rather than depending on the concrete
|
|
36
|
+
* `HonuaClient` keeps this module free of a hard `core/client` import (and keeps
|
|
37
|
+
* it equally usable from a Node backend, a worker, or a test with a mock).
|
|
38
|
+
*/
|
|
39
|
+
export type SceneAnalysisRequestExecutor = <T = unknown>(method: QueryMethod, path: string, init?: {
|
|
40
|
+
headers?: Record<string, string>;
|
|
41
|
+
body?: string | null;
|
|
42
|
+
}, signal?: AbortSignal) => Promise<T>;
|
|
43
|
+
/**
|
|
44
|
+
* A lon/lat/height position in the workspace contract units (degrees + metres).
|
|
45
|
+
* Height is optional and defaults to ground (`0`) where the server / renderer
|
|
46
|
+
* needs an explicit value.
|
|
47
|
+
*/
|
|
48
|
+
export interface SceneAnalysisPosition {
|
|
49
|
+
readonly longitude: number;
|
|
50
|
+
readonly latitude: number;
|
|
51
|
+
readonly height?: number;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Great-circle (haversine) distance in metres between two lon/lat positions,
|
|
55
|
+
* ignoring height. Pure; the basis of the horizontal leg of a 3D measurement.
|
|
56
|
+
*/
|
|
57
|
+
export declare function haversineMeters(a: SceneAnalysisPosition, b: SceneAnalysisPosition): number;
|
|
58
|
+
/**
|
|
59
|
+
* Slant (3D) distance in metres between two positions: the horizontal
|
|
60
|
+
* great-circle distance combined with the height delta via Pythagoras. Heights
|
|
61
|
+
* default to `0`. Pure.
|
|
62
|
+
*/
|
|
63
|
+
export declare function slantDistanceMeters(a: SceneAnalysisPosition, b: SceneAnalysisPosition): number;
|
|
64
|
+
/**
|
|
65
|
+
* Total 3D path length in metres along an ordered polyline (sum of per-segment
|
|
66
|
+
* slant distances). Returns `0` for fewer than two positions. Pure.
|
|
67
|
+
*/
|
|
68
|
+
export declare function pathLengthMeters(positions: readonly SceneAnalysisPosition[]): number;
|
|
69
|
+
/**
|
|
70
|
+
* Spherical polygon area in square metres for a ring of lon/lat positions,
|
|
71
|
+
* using L'Huilier's spherical-excess formula projected onto the WGS84 mean
|
|
72
|
+
* sphere. The ring is auto-closed; returns `0` for fewer than three positions.
|
|
73
|
+
* The result is unsigned (absolute area). Pure; the basis of the measure
|
|
74
|
+
* widget's area readout.
|
|
75
|
+
*/
|
|
76
|
+
export declare function sphericalPolygonAreaSquareMeters(positions: readonly SceneAnalysisPosition[]): number;
|
|
77
|
+
/**
|
|
78
|
+
* Serialize an ordered list of positions as a 2D WKT `LINESTRING` (lon lat),
|
|
79
|
+
* the geometry shape the elevation profile endpoint expects on its `line`
|
|
80
|
+
* query parameter. Height is dropped (the profile endpoint samples the surface).
|
|
81
|
+
* Pure.
|
|
82
|
+
*/
|
|
83
|
+
export declare function positionsToWktLineString(positions: readonly SceneAnalysisPosition[]): string;
|
|
84
|
+
/** One ordered sample along an elevation profile, mirroring the server shape. */
|
|
85
|
+
export interface ElevationProfileSample {
|
|
86
|
+
readonly distanceMeters: number;
|
|
87
|
+
readonly elevation: number | null;
|
|
88
|
+
readonly noData: boolean;
|
|
89
|
+
}
|
|
90
|
+
/** The decoded `ElevationProfileResponse` the profile endpoint returns. */
|
|
91
|
+
export interface ElevationProfileResult {
|
|
92
|
+
readonly datasetId: string;
|
|
93
|
+
readonly layerId: number;
|
|
94
|
+
readonly sampleCount: number;
|
|
95
|
+
readonly lineLengthMeters: number;
|
|
96
|
+
readonly lineSrid: number;
|
|
97
|
+
readonly isAllNoData: boolean;
|
|
98
|
+
readonly samples: readonly ElevationProfileSample[];
|
|
99
|
+
}
|
|
100
|
+
/** Parameters for an elevation-profile request along a polyline. */
|
|
101
|
+
export interface ElevationProfileRequest {
|
|
102
|
+
readonly datasetId: string;
|
|
103
|
+
/** Ordered polyline (>= 2 positions) the profile is sampled along. */
|
|
104
|
+
readonly polyline: readonly SceneAnalysisPosition[];
|
|
105
|
+
/** Number of evenly-spaced samples (server clamps to its configured max). */
|
|
106
|
+
readonly sampleCount?: number;
|
|
107
|
+
/** Sample interval in metres (mutually exclusive with `sampleCount`). */
|
|
108
|
+
readonly intervalMeters?: number;
|
|
109
|
+
/** Spatial reference of the polyline coordinates; omitted ⇒ WGS84 lon/lat. */
|
|
110
|
+
readonly srid?: number;
|
|
111
|
+
readonly mosaicRule?: string;
|
|
112
|
+
readonly signal?: AbortSignal;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Build the relative request path (with query string) for an elevation-profile
|
|
116
|
+
* request, including the WKT-serialized `line`. Exported so the request shape is
|
|
117
|
+
* directly unit-testable without a transport. The profile endpoint is a `GET`.
|
|
118
|
+
*/
|
|
119
|
+
export declare function buildElevationProfilePath(request: ElevationProfileRequest): string;
|
|
120
|
+
/**
|
|
121
|
+
* Request an elevation profile along a polyline and return the decoded samples.
|
|
122
|
+
* Charting is left to the consumer; pair this with
|
|
123
|
+
* {@link renderElevationProfilePolyline} to draw the sampled line in the scene.
|
|
124
|
+
*/
|
|
125
|
+
export declare function requestElevationProfile(execute: SceneAnalysisRequestExecutor, request: ElevationProfileRequest): Promise<ElevationProfileResult>;
|
|
126
|
+
/** Parameters for a line-of-sight request between an observer and a target. */
|
|
127
|
+
export interface LineOfSightRequest {
|
|
128
|
+
readonly datasetId: string;
|
|
129
|
+
readonly observer: SceneAnalysisPosition;
|
|
130
|
+
readonly target: SceneAnalysisPosition;
|
|
131
|
+
/**
|
|
132
|
+
* Observer height OFFSET above the terrain surface, in metres (e.g. eye
|
|
133
|
+
* height). The server's `observerHeight` is exactly this terrain-relative
|
|
134
|
+
* offset, so this value wins over `observer.height` when supplied; otherwise
|
|
135
|
+
* `observer.height` is used as the offset and finally `0`.
|
|
136
|
+
*/
|
|
137
|
+
readonly observerOffsetMeters?: number;
|
|
138
|
+
/** Target height OFFSET above the terrain surface, in metres. Same precedence as the observer. */
|
|
139
|
+
readonly targetOffsetMeters?: number;
|
|
140
|
+
/** Number of range samples along the sightline (server requires >= 2 when supplied). */
|
|
141
|
+
readonly sampleCount?: number;
|
|
142
|
+
readonly mosaicRule?: string;
|
|
143
|
+
readonly signal?: AbortSignal;
|
|
144
|
+
}
|
|
145
|
+
/** The decoded line-of-sight result: visibility + first obstruction (if any). */
|
|
146
|
+
export interface LineOfSightResult {
|
|
147
|
+
readonly datasetId: string;
|
|
148
|
+
readonly layerId?: number;
|
|
149
|
+
readonly visible: boolean;
|
|
150
|
+
/** First terrain obstruction between observer and target, when not visible. */
|
|
151
|
+
readonly obstruction?: SceneAnalysisPosition;
|
|
152
|
+
/** Distance from the observer to the first obstruction, in metres, when obstructed. */
|
|
153
|
+
readonly obstructionDistanceMeters?: number;
|
|
154
|
+
/** Great-circle distance between observer and target, in metres. */
|
|
155
|
+
readonly distanceMeters?: number;
|
|
156
|
+
/** Observer elevation (ground elevation + observer height offset), in metres. */
|
|
157
|
+
readonly observerElevation?: number;
|
|
158
|
+
/** Target elevation (ground elevation + target height offset), in metres. */
|
|
159
|
+
readonly targetElevation?: number;
|
|
160
|
+
/** Number of range samples the server took along the sightline. */
|
|
161
|
+
readonly sampleCount?: number;
|
|
162
|
+
/** Whether any sampled point fell on terrain NoData. */
|
|
163
|
+
readonly hasNoDataSamples?: boolean;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Build the FLAT JSON request body sent to the line-of-sight endpoint. Pure.
|
|
167
|
+
*
|
|
168
|
+
* The server contract is flat (`observerLon/observerLat/observerHeight/...`)
|
|
169
|
+
* and treats `observerHeight`/`targetHeight` as the height OFFSET above the
|
|
170
|
+
* terrain surface. We therefore fold the ergonomic offset into that field with
|
|
171
|
+
* precedence `offsetMeters ?? position.height ?? 0`.
|
|
172
|
+
*/
|
|
173
|
+
export declare function buildLineOfSightBody(request: LineOfSightRequest): Record<string, unknown>;
|
|
174
|
+
/**
|
|
175
|
+
* Request a line-of-sight analysis between an observer and a target. Pair the
|
|
176
|
+
* result with {@link renderLineOfSight} to draw the sightline (green visible /
|
|
177
|
+
* red obstructed segments) and an obstruction marker into the scene.
|
|
178
|
+
*/
|
|
179
|
+
export declare function requestLineOfSight(execute: SceneAnalysisRequestExecutor, request: LineOfSightRequest): Promise<LineOfSightResult>;
|
|
180
|
+
/** Parameters for a viewshed request from an observer position. */
|
|
181
|
+
export interface ViewshedRequest {
|
|
182
|
+
readonly datasetId: string;
|
|
183
|
+
readonly observer: SceneAnalysisPosition;
|
|
184
|
+
/**
|
|
185
|
+
* Observer height OFFSET above the terrain surface, in metres (e.g. tower /
|
|
186
|
+
* mast height). Maps to the server's `observerHeight`. Precedence:
|
|
187
|
+
* `observerOffsetMeters ?? observer.height ?? 0`.
|
|
188
|
+
*/
|
|
189
|
+
readonly observerOffsetMeters?: number;
|
|
190
|
+
/** Height offset applied to each sampled target point, in metres. Maps to the server's `targetHeight`. */
|
|
191
|
+
readonly targetHeightMeters?: number;
|
|
192
|
+
/** Analysis radius in metres. Required, must be > 0. */
|
|
193
|
+
readonly radiusMeters: number;
|
|
194
|
+
/** Number of azimuth rays cast over the full 360°. Server requires >= 1 when supplied. */
|
|
195
|
+
readonly rayCount?: number;
|
|
196
|
+
/** Range samples taken along each ray. Server requires >= 2 when supplied. */
|
|
197
|
+
readonly samplesPerRay?: number;
|
|
198
|
+
readonly mosaicRule?: string;
|
|
199
|
+
readonly signal?: AbortSignal;
|
|
200
|
+
}
|
|
201
|
+
/** One radial visibility sample returned by the viewshed endpoint. */
|
|
202
|
+
export interface ViewshedSample {
|
|
203
|
+
/** The sampled ground point (height is the terrain elevation, or `0` for NoData). */
|
|
204
|
+
readonly position: SceneAnalysisPosition;
|
|
205
|
+
/** Azimuth of the ray this sample belongs to, in degrees. */
|
|
206
|
+
readonly azimuthDegrees: number;
|
|
207
|
+
/** Distance from the observer to this sample along the ray, in metres. */
|
|
208
|
+
readonly distanceMeters: number;
|
|
209
|
+
/** Whether the observer can see this sampled point. */
|
|
210
|
+
readonly visible: boolean;
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* The decoded viewshed result. The visible extent is returned as RADIAL POINT
|
|
214
|
+
* SAMPLES (per-ray range samples), not polygon rings.
|
|
215
|
+
*/
|
|
216
|
+
export interface ViewshedResult {
|
|
217
|
+
readonly datasetId: string;
|
|
218
|
+
readonly layerId?: number;
|
|
219
|
+
readonly observer: SceneAnalysisPosition;
|
|
220
|
+
readonly radiusMeters: number;
|
|
221
|
+
/** Number of azimuth rays cast. */
|
|
222
|
+
readonly rayCount?: number;
|
|
223
|
+
/** Range samples per ray. */
|
|
224
|
+
readonly samplesPerRay?: number;
|
|
225
|
+
/** Total number of samples returned. */
|
|
226
|
+
readonly sampleCount: number;
|
|
227
|
+
/** Number of samples flagged visible. */
|
|
228
|
+
readonly visibleSampleCount: number;
|
|
229
|
+
/** The radial visibility samples. */
|
|
230
|
+
readonly samples: readonly ViewshedSample[];
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Build the FLAT JSON request body sent to the viewshed endpoint. Pure.
|
|
234
|
+
*
|
|
235
|
+
* The server runs a full-360° radial cast controlled by `rayCount` /
|
|
236
|
+
* `samplesPerRay`; there is no azimuth sweep. `observerHeight`/`targetHeight`
|
|
237
|
+
* are terrain-relative offsets (precedence `offset ?? position.height ?? 0` for
|
|
238
|
+
* the observer).
|
|
239
|
+
*/
|
|
240
|
+
export declare function buildViewshedBody(request: ViewshedRequest): Record<string, unknown>;
|
|
241
|
+
/**
|
|
242
|
+
* Request a viewshed analysis from an observer position. Pair the result with
|
|
243
|
+
* {@link renderViewshed} to draw the visible / obstructed radial samples.
|
|
244
|
+
*/
|
|
245
|
+
export declare function requestViewshed(execute: SceneAnalysisRequestExecutor, request: ViewshedRequest): Promise<ViewshedResult>;
|
|
246
|
+
/** A 3D measurement computed from picked / supplied scene positions. */
|
|
247
|
+
export interface SceneMeasurement {
|
|
248
|
+
readonly positions: readonly SceneAnalysisPosition[];
|
|
249
|
+
/** Total 3D path length in metres (sum of slant segments). */
|
|
250
|
+
readonly lengthMeters: number;
|
|
251
|
+
/** Per-segment slant distances in metres (length === positions.length - 1). */
|
|
252
|
+
readonly segmentMeters: readonly number[];
|
|
253
|
+
/** Polygon area in m² when `mode` is `area` and there are >= 3 positions. */
|
|
254
|
+
readonly areaSquareMeters?: number;
|
|
255
|
+
readonly mode: "distance" | "area";
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Compute a 3D distance or area measurement from an ordered list of positions
|
|
259
|
+
* (typically picked off the scene). For `distance` the result carries the total
|
|
260
|
+
* 3D path length and per-segment slant distances; for `area` it additionally
|
|
261
|
+
* carries the spherical polygon area. Pure.
|
|
262
|
+
*/
|
|
263
|
+
export declare function measureScenePositions(positions: readonly SceneAnalysisPosition[], mode?: "distance" | "area"): SceneMeasurement;
|
|
264
|
+
/**
|
|
265
|
+
* The Cesium `EntityCollection` surface (off `viewer.entities`) the analysis
|
|
266
|
+
* renderers add/remove graphics through. Real Cesium `EntityCollection`
|
|
267
|
+
* instances satisfy this; tests pass a plain object.
|
|
268
|
+
*/
|
|
269
|
+
export interface CesiumEntityCollectionLike {
|
|
270
|
+
add(entity: unknown): unknown;
|
|
271
|
+
remove(entity: unknown): boolean;
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* The minimal slice of `typeof import("cesium")` the analysis renderers touch.
|
|
275
|
+
* Modelled so a `vi.mock("cesium")` stub can satisfy it without a WebGL context.
|
|
276
|
+
*/
|
|
277
|
+
export interface SceneAnalysisCesiumModule {
|
|
278
|
+
readonly Cartesian3: {
|
|
279
|
+
fromDegrees(longitude: number, latitude: number, height?: number): unknown;
|
|
280
|
+
fromDegreesArrayHeights(coordinates: number[]): unknown;
|
|
281
|
+
};
|
|
282
|
+
readonly Color: {
|
|
283
|
+
fromCssColorString(color: string): unknown;
|
|
284
|
+
readonly LIME: unknown;
|
|
285
|
+
readonly RED: unknown;
|
|
286
|
+
readonly YELLOW: unknown;
|
|
287
|
+
};
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* A handle over the entities one analysis render added, so a caller can clear
|
|
291
|
+
* the overlay (e.g. before re-running the analysis). Keyed by a stable kind.
|
|
292
|
+
*/
|
|
293
|
+
export interface SceneAnalysisOverlay {
|
|
294
|
+
readonly kind: "line-of-sight" | "viewshed" | "elevation-profile" | "measurement";
|
|
295
|
+
readonly entities: readonly unknown[];
|
|
296
|
+
remove(): void;
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Render a line-of-sight result into the scene's entity collection: the
|
|
300
|
+
* observer→target sightline (lime when visible, red when obstructed) plus a
|
|
301
|
+
* yellow point marking the first obstruction when present. Returns an overlay
|
|
302
|
+
* handle so the caller can clear it before re-running. Cesium is loaded lazily.
|
|
303
|
+
*/
|
|
304
|
+
export declare function renderLineOfSight(entities: CesiumEntityCollectionLike, request: Pick<LineOfSightRequest, "observer" | "target">, result: LineOfSightResult, cesium?: SceneAnalysisCesiumModule): Promise<SceneAnalysisOverlay>;
|
|
305
|
+
/**
|
|
306
|
+
* Render a viewshed result into the scene's entity collection: one point per
|
|
307
|
+
* radial sample — green (`Color.LIME`) where the observer can see the sample,
|
|
308
|
+
* red (`Color.RED`) where it is obstructed. Returns an overlay handle. Cesium
|
|
309
|
+
* is loaded lazily.
|
|
310
|
+
*/
|
|
311
|
+
export declare function renderViewshed(entities: CesiumEntityCollectionLike, result: ViewshedResult, cesium?: SceneAnalysisCesiumModule): Promise<SceneAnalysisOverlay>;
|
|
312
|
+
/**
|
|
313
|
+
* Render an elevation profile's sampled line into the scene's entity collection
|
|
314
|
+
* as a polyline draped at the sampled positions. Because the server returns
|
|
315
|
+
* distance/elevation samples (not lon/lat), the caller passes the original
|
|
316
|
+
* `polyline` so the rendered line aligns with the requested geometry; the
|
|
317
|
+
* sample elevations are not required for the line render and charting is left to
|
|
318
|
+
* the consumer. Returns an overlay handle. Cesium is loaded lazily.
|
|
319
|
+
*/
|
|
320
|
+
export declare function renderElevationProfilePolyline(entities: CesiumEntityCollectionLike, polyline: readonly SceneAnalysisPosition[], cesium?: SceneAnalysisCesiumModule): Promise<SceneAnalysisOverlay>;
|
|
321
|
+
/**
|
|
322
|
+
* Render a measurement into the scene's entity collection: the measured
|
|
323
|
+
* polyline (or closed polygon outline for `area`) plus a label at the last
|
|
324
|
+
* vertex with the formatted length / area. Returns an overlay handle. Cesium is
|
|
325
|
+
* loaded lazily.
|
|
326
|
+
*/
|
|
327
|
+
export declare function renderMeasurement(entities: CesiumEntityCollectionLike, measurement: SceneMeasurement, cesium?: SceneAnalysisCesiumModule): Promise<SceneAnalysisOverlay>;
|
|
328
|
+
/**
|
|
329
|
+
* Format a human-readable label for a measurement (km/m for distance, km²/m²
|
|
330
|
+
* for area). Pure; exported so consumers can reuse the same formatting in
|
|
331
|
+
* their own UI/labels.
|
|
332
|
+
*/
|
|
333
|
+
export declare function formatMeasurementLabel(measurement: SceneMeasurement): string;
|
|
334
|
+
//# sourceMappingURL=analysis-widgets.d.ts.map
|