@honua/react 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 +9 -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 +61 -0
- package/contract/index.d.ts.map +1 -0
- package/contract/index.js +51 -0
- package/contract/jobs.d.ts +149 -0
- package/contract/jobs.d.ts.map +1 -0
- package/contract/jobs.js +40 -0
- package/contract/source.d.ts +423 -0
- package/contract/source.d.ts.map +1 -0
- package/contract/source.js +3802 -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 +665 -0
- package/contract/types.d.ts.map +1 -0
- package/contract/types.js +175 -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/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 +577 -0
- package/core/client.d.ts.map +1 -0
- package/core/client.js +1664 -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 +107 -0
- package/core/errors.d.ts.map +1 -0
- package/core/errors.js +156 -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/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-features.d.ts +23 -0
- package/core/ogc-features.d.ts.map +1 -0
- package/core/ogc-features.js +114 -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.d.ts +55 -0
- package/core/stac.d.ts.map +1 -0
- package/core/stac.js +229 -0
- package/core/surfaces.d.ts +527 -0
- package/core/surfaces.d.ts.map +1 -0
- package/core/surfaces.js +1917 -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 +1355 -0
- package/core/types.d.ts.map +1 -0
- package/core/types.js +13 -0
- package/core/wfs-capabilities.d.ts +143 -0
- package/core/wfs-capabilities.d.ts.map +1 -0
- package/core/wfs-capabilities.js +478 -0
- package/core/wfs-filter.d.ts +118 -0
- package/core/wfs-filter.d.ts.map +1 -0
- package/core/wfs-filter.js +634 -0
- package/core/wfs.d.ts +219 -0
- package/core/wfs.d.ts.map +1 -0
- package/core/wfs.js +406 -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 +31 -0
- package/esri-compat/identity-manager.d.ts.map +1 -0
- package/esri-compat/identity-manager.js +115 -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 +35 -0
- package/esri-compat/oauth-info.d.ts.map +1 -0
- package/esri-compat/oauth-info.js +115 -0
- package/esri-compat/picture-marker-symbol.d.ts +35 -0
- package/esri-compat/picture-marker-symbol.d.ts.map +1 -0
- package/esri-compat/picture-marker-symbol.js +126 -0
- package/esri-compat/point.d.ts +31 -0
- package/esri-compat/point.d.ts.map +1 -0
- package/esri-compat/point.js +102 -0
- package/esri-compat/polygon.d.ts +31 -0
- package/esri-compat/polygon.d.ts.map +1 -0
- package/esri-compat/polygon.js +107 -0
- package/esri-compat/polyline.d.ts +31 -0
- package/esri-compat/polyline.d.ts.map +1 -0
- package/esri-compat/polyline.js +107 -0
- package/esri-compat/popup-template.d.ts +55 -0
- package/esri-compat/popup-template.d.ts.map +1 -0
- package/esri-compat/popup-template.js +128 -0
- package/esri-compat/popup.d.ts +54 -0
- package/esri-compat/popup.d.ts.map +1 -0
- package/esri-compat/popup.js +312 -0
- package/esri-compat/print.d.ts +47 -0
- package/esri-compat/print.d.ts.map +1 -0
- package/esri-compat/print.js +105 -0
- package/esri-compat/query.d.ts +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/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/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/package.json +37 -0
- package/react/context.d.ts +32 -0
- package/react/context.d.ts.map +1 -0
- package/react/context.js +19 -0
- package/react/honua-layer.d.ts +35 -0
- package/react/honua-layer.d.ts.map +1 -0
- package/react/honua-layer.js +47 -0
- package/react/honua-map.d.ts +83 -0
- package/react/honua-map.d.ts.map +1 -0
- package/react/honua-map.js +109 -0
- package/react/honua-popup.d.ts +26 -0
- package/react/honua-popup.d.ts.map +1 -0
- package/react/honua-popup.js +34 -0
- package/react/hooks.d.ts +127 -0
- package/react/hooks.d.ts.map +1 -0
- package/react/hooks.js +206 -0
- package/react/index.d.ts +42 -0
- package/react/index.d.ts.map +1 -0
- package/react/index.js +34 -0
- package/react/provider.d.ts +36 -0
- package/react/provider.d.ts.map +1 -0
- package/react/provider.js +35 -0
- package/react/query-cache.d.ts +76 -0
- package/react/query-cache.d.ts.map +1 -0
- package/react/query-cache.js +188 -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 +43 -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 +264 -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 +43 -0
- package/runtime/map-package-validation.d.ts.map +1 -0
- package/runtime/map-package-validation.js +269 -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/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 +401 -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/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/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,178 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HonuaMapSpec — Honua-specific source type definitions extending MapLibre Style Spec v8.
|
|
3
|
+
*
|
|
4
|
+
* Defines three custom source types (`honua-feature-service`, `honua-map-service`,
|
|
5
|
+
* `honua-ogc-features`) and a `HonuaStyleSpecification` that widens the MapLibre
|
|
6
|
+
* style's `sources` map to accept them. Standard MapLibre layer types, paint/layout
|
|
7
|
+
* properties, and expressions are used unchanged.
|
|
8
|
+
*
|
|
9
|
+
* These types are standalone (zero dependency on `maplibre-gl` or
|
|
10
|
+
* `@maplibre/maplibre-gl-style-spec`), but structurally compatible — a
|
|
11
|
+
* `HonuaStyleSpecification` can be narrowed to `StyleSpecification` by filtering
|
|
12
|
+
* out Honua sources.
|
|
13
|
+
*
|
|
14
|
+
* @module
|
|
15
|
+
*/
|
|
16
|
+
// ── Type guards ──────────────────────────────────────────────
|
|
17
|
+
/** Test whether a source specification is any Honua custom type. */
|
|
18
|
+
export function isHonuaSource(source) {
|
|
19
|
+
return source.type.startsWith("honua-");
|
|
20
|
+
}
|
|
21
|
+
/** Test whether a source is a `honua-feature-service`. */
|
|
22
|
+
export function isFeatureServiceSource(source) {
|
|
23
|
+
return source.type === "honua-feature-service";
|
|
24
|
+
}
|
|
25
|
+
/** Test whether a source is a `honua-map-service`. */
|
|
26
|
+
export function isMapServiceSource(source) {
|
|
27
|
+
return source.type === "honua-map-service";
|
|
28
|
+
}
|
|
29
|
+
/** Test whether a source is a `honua-ogc-features`. */
|
|
30
|
+
export function isOgcFeaturesSource(source) {
|
|
31
|
+
return source.type === "honua-ogc-features";
|
|
32
|
+
}
|
|
33
|
+
/** Test whether a source is a `honua-wms`. */
|
|
34
|
+
export function isWmsSource(source) {
|
|
35
|
+
return source.type === "honua-wms";
|
|
36
|
+
}
|
|
37
|
+
/** Test whether a source is a `honua-wmts`. */
|
|
38
|
+
export function isWmtsSource(source) {
|
|
39
|
+
return source.type === "honua-wmts";
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Parse an OGC Features URL into baseUrl and optional collectionId.
|
|
43
|
+
*
|
|
44
|
+
* Accepts URLs like:
|
|
45
|
+
* - `https://gis.example.com/ogc/collections/admin-boundaries`
|
|
46
|
+
* - `https://gis.example.com/ogc` (collectionId provided separately)
|
|
47
|
+
*/
|
|
48
|
+
export function parseOgcFeaturesUrl(url) {
|
|
49
|
+
const absoluteUrl = parseAbsoluteHttpUrl(url);
|
|
50
|
+
const path = absoluteUrl ? absoluteUrl.pathname : stripQueryAndHash(url);
|
|
51
|
+
const normalizedPath = trimTrailingSlashes(path);
|
|
52
|
+
// Locate the first `/collections/` segment (case-insensitive) and split the
|
|
53
|
+
// path into basePath + collectionId. Linear `indexOf` scanning replaces the
|
|
54
|
+
// prior `/^(.*?)\/collections\/([^/?#]+)(?:\/.*)?$/i` regex, whose lazy
|
|
55
|
+
// leading `.*?` plus trailing alternation could backtrack super-linearly.
|
|
56
|
+
const collectionsToken = "/collections/";
|
|
57
|
+
const markerIndex = normalizedPath.toLowerCase().indexOf(collectionsToken);
|
|
58
|
+
if (markerIndex >= 0) {
|
|
59
|
+
const afterMarker = normalizedPath.slice(markerIndex + collectionsToken.length);
|
|
60
|
+
const nextSlash = afterMarker.indexOf("/");
|
|
61
|
+
const collectionId = nextSlash >= 0 ? afterMarker.slice(0, nextSlash) : afterMarker;
|
|
62
|
+
if (collectionId !== "") {
|
|
63
|
+
const basePath = normalizeCollectionBasePath(normalizedPath.slice(0, markerIndex), normalizedPath);
|
|
64
|
+
return {
|
|
65
|
+
baseUrl: joinUrlParts(absoluteUrl?.origin, basePath),
|
|
66
|
+
collectionId,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return {
|
|
71
|
+
baseUrl: joinUrlParts(absoluteUrl?.origin, normalizedPath),
|
|
72
|
+
collectionId: undefined,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
function parseAbsoluteHttpUrl(url) {
|
|
76
|
+
try {
|
|
77
|
+
const parsed = new URL(url);
|
|
78
|
+
if (parsed.protocol === "http:" || parsed.protocol === "https:") {
|
|
79
|
+
return parsed;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
// Relative URLs are handled by string parsing below.
|
|
84
|
+
}
|
|
85
|
+
return undefined;
|
|
86
|
+
}
|
|
87
|
+
function stripQueryAndHash(url) {
|
|
88
|
+
const hashIndex = url.indexOf("#");
|
|
89
|
+
const withoutHash = hashIndex >= 0 ? url.slice(0, hashIndex) : url;
|
|
90
|
+
const queryIndex = withoutHash.indexOf("?");
|
|
91
|
+
return queryIndex >= 0 ? withoutHash.slice(0, queryIndex) : withoutHash;
|
|
92
|
+
}
|
|
93
|
+
function trimTrailingSlashes(path) {
|
|
94
|
+
if (path === "/") {
|
|
95
|
+
return "/";
|
|
96
|
+
}
|
|
97
|
+
// Linear-time trailing-slash trim. Avoids the `/\/+$/` regex, whose
|
|
98
|
+
// anchored quantifier can backtrack super-linearly on long slash runs.
|
|
99
|
+
let end = path.length;
|
|
100
|
+
while (end > 0 && path.charCodeAt(end - 1) === 47 /* '/' */) {
|
|
101
|
+
end -= 1;
|
|
102
|
+
}
|
|
103
|
+
return end === path.length ? path : path.slice(0, end);
|
|
104
|
+
}
|
|
105
|
+
function normalizeCollectionBasePath(basePath, fullPath) {
|
|
106
|
+
const normalized = trimTrailingSlashes(basePath);
|
|
107
|
+
if (normalized.length > 0) {
|
|
108
|
+
return normalized;
|
|
109
|
+
}
|
|
110
|
+
return fullPath.startsWith("/") ? "/" : "";
|
|
111
|
+
}
|
|
112
|
+
function joinUrlParts(origin, path) {
|
|
113
|
+
if (!origin) {
|
|
114
|
+
return path;
|
|
115
|
+
}
|
|
116
|
+
if (path.length === 0 || path === "/") {
|
|
117
|
+
return origin;
|
|
118
|
+
}
|
|
119
|
+
return `${origin}${path.startsWith("/") ? path : `/${path}`}`;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Validate a HonuaStyleSpecification for structural correctness.
|
|
123
|
+
*
|
|
124
|
+
* Returns an empty array if the style is valid. Does not validate MapLibre
|
|
125
|
+
* layer/expression semantics — use `@maplibre/maplibre-gl-style-spec` for that.
|
|
126
|
+
*/
|
|
127
|
+
export function validateHonuaStyle(style) {
|
|
128
|
+
const errors = [];
|
|
129
|
+
if (typeof style !== "object" || style === null) {
|
|
130
|
+
errors.push({ path: "", message: "Style must be a non-null object" });
|
|
131
|
+
return errors;
|
|
132
|
+
}
|
|
133
|
+
const s = style;
|
|
134
|
+
if (s.version !== 8) {
|
|
135
|
+
errors.push({ path: "version", message: "Version must be 8" });
|
|
136
|
+
}
|
|
137
|
+
if (typeof s.sources !== "object" || s.sources === null || Array.isArray(s.sources)) {
|
|
138
|
+
errors.push({ path: "sources", message: "Sources must be a non-null object" });
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
for (const [name, source] of Object.entries(s.sources)) {
|
|
142
|
+
if (typeof source !== "object" || source === null) {
|
|
143
|
+
errors.push({ path: `sources.${name}`, message: "Source must be a non-null object" });
|
|
144
|
+
continue;
|
|
145
|
+
}
|
|
146
|
+
const src = source;
|
|
147
|
+
if (typeof src.type !== "string") {
|
|
148
|
+
errors.push({ path: `sources.${name}.type`, message: "Source type must be a string" });
|
|
149
|
+
continue;
|
|
150
|
+
}
|
|
151
|
+
if (isHonuaSource(src)) {
|
|
152
|
+
if (typeof src.url !== "string") {
|
|
153
|
+
errors.push({ path: `sources.${name}.url`, message: "Honua source must have a string url" });
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
if (!Array.isArray(s.layers)) {
|
|
159
|
+
errors.push({ path: "layers", message: "Layers must be an array" });
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
for (let i = 0; i < s.layers.length; i++) {
|
|
163
|
+
const layer = s.layers[i];
|
|
164
|
+
if (typeof layer !== "object" || layer === null) {
|
|
165
|
+
errors.push({ path: `layers[${i}]`, message: "Layer must be a non-null object" });
|
|
166
|
+
continue;
|
|
167
|
+
}
|
|
168
|
+
const l = layer;
|
|
169
|
+
if (typeof l.id !== "string") {
|
|
170
|
+
errors.push({ path: `layers[${i}].id`, message: "Layer must have a string id" });
|
|
171
|
+
}
|
|
172
|
+
if (typeof l.type !== "string") {
|
|
173
|
+
errors.push({ path: `layers[${i}].type`, message: "Layer must have a string type" });
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
return errors;
|
|
178
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared resolvers that turn a `HonuaWmsSourceSpecification` /
|
|
3
|
+
* `HonuaWmtsSourceSpecification` into a runtime SDK handle. Used by both
|
|
4
|
+
* `src/style/factory.ts` (`createSources`) and `src/map/honua-map.ts`
|
|
5
|
+
* (`HonuaMap.getSource`) so the URL-parsing and handle-selection rules
|
|
6
|
+
* stay identical between the two surfaces.
|
|
7
|
+
*
|
|
8
|
+
* @module
|
|
9
|
+
*/
|
|
10
|
+
import type { HonuaClient } from "../core/client.js";
|
|
11
|
+
import { HonuaWms, HonuaWmsLayer } from "../core/wms.js";
|
|
12
|
+
import { HonuaWmts, HonuaWmtsTileset } from "../core/wmts.js";
|
|
13
|
+
import type { HonuaWmsSourceSpecification, HonuaWmtsSourceSpecification } from "./specification.js";
|
|
14
|
+
/**
|
|
15
|
+
* Extract the service id from a WMS/WMTS endpoint URL. Returns
|
|
16
|
+
* `undefined` if the URL does not match a known service shape so the
|
|
17
|
+
* caller can fall back to the spec's explicit `serviceId` (or surface a
|
|
18
|
+
* typed error).
|
|
19
|
+
*/
|
|
20
|
+
export declare function parseWmsServiceIdFromUrl(url: string): string | undefined;
|
|
21
|
+
/**
|
|
22
|
+
* Resolve a `honua-wms` source spec to a runtime handle. Returns the
|
|
23
|
+
* layer-bound `HonuaWmsLayer` only when `spec.layers` parses to exactly
|
|
24
|
+
* one non-empty layer token, because `HonuaWmsLayer` is a single-layer
|
|
25
|
+
* handle (its `describe()` resolves one `<Layer>` from the parsed
|
|
26
|
+
* Capabilities). Multi-layer composites (`LAYERS=a,b`) and
|
|
27
|
+
* empty / missing values stay on the service-level `HonuaWms` handle so
|
|
28
|
+
* `map()` / `featureInfo()` can still target the composite.
|
|
29
|
+
*/
|
|
30
|
+
export declare function resolveWmsSpec(client: HonuaClient, spec: HonuaWmsSourceSpecification): HonuaWms | HonuaWmsLayer;
|
|
31
|
+
/**
|
|
32
|
+
* Resolve a `honua-wmts` source spec to a runtime handle. Returns the
|
|
33
|
+
* (layer × style × TileMatrixSet) `HonuaWmtsTileset` when the spec
|
|
34
|
+
* pins a single layer; otherwise returns the service-level `HonuaWmts`
|
|
35
|
+
* handle.
|
|
36
|
+
*/
|
|
37
|
+
export declare function resolveWmtsSpec(client: HonuaClient, spec: HonuaWmtsSourceSpecification): HonuaWmts | HonuaWmtsTileset;
|
|
38
|
+
//# sourceMappingURL=wms-wmts-resolvers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wms-wmts-resolvers.d.ts","sourceRoot":"","sources":["../../../src/style/wms-wmts-resolvers.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAsB,MAAM,gBAAgB,CAAC;AAC7E,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,KAAK,EAAE,2BAA2B,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAC;AAWpG;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAUxE;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,2BAA2B,GAAG,QAAQ,GAAG,aAAa,CAmB/G;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,4BAA4B,GAAG,SAAS,GAAG,gBAAgB,CAkBrH"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared resolvers that turn a `HonuaWmsSourceSpecification` /
|
|
3
|
+
* `HonuaWmtsSourceSpecification` into a runtime SDK handle. Used by both
|
|
4
|
+
* `src/style/factory.ts` (`createSources`) and `src/map/honua-map.ts`
|
|
5
|
+
* (`HonuaMap.getSource`) so the URL-parsing and handle-selection rules
|
|
6
|
+
* stay identical between the two surfaces.
|
|
7
|
+
*
|
|
8
|
+
* @module
|
|
9
|
+
*/
|
|
10
|
+
import { HonuaWms, HonuaWmsLayer, parseWmsLayerNames } from "../core/wms.js";
|
|
11
|
+
import { HonuaWmts, HonuaWmtsTileset } from "../core/wmts.js";
|
|
12
|
+
/**
|
|
13
|
+
* Match the canonical Esri MapServer WMS/WMTS endpoint shape
|
|
14
|
+
* (`/rest/services/<name>/MapServer/{WMS|WMTS}`) and the OGC web-map
|
|
15
|
+
* shape (`/ogc/services/<name>/{wms|wmts}`) so we can lift the service
|
|
16
|
+
* id out of the URL when the spec did not carry it explicitly.
|
|
17
|
+
*/
|
|
18
|
+
const HONUA_WMS_WMTS_URL_RE = /\/(?:rest\/services\/([^/?#]+)\/MapServer\/(?:WMS|WMTS)|ogc\/services\/([^/?#]+)\/(?:wms|wmts))/i;
|
|
19
|
+
/**
|
|
20
|
+
* Extract the service id from a WMS/WMTS endpoint URL. Returns
|
|
21
|
+
* `undefined` if the URL does not match a known service shape so the
|
|
22
|
+
* caller can fall back to the spec's explicit `serviceId` (or surface a
|
|
23
|
+
* typed error).
|
|
24
|
+
*/
|
|
25
|
+
export function parseWmsServiceIdFromUrl(url) {
|
|
26
|
+
const match = HONUA_WMS_WMTS_URL_RE.exec(url);
|
|
27
|
+
if (!match)
|
|
28
|
+
return undefined;
|
|
29
|
+
const id = match[1] ?? match[2];
|
|
30
|
+
if (!id)
|
|
31
|
+
return undefined;
|
|
32
|
+
try {
|
|
33
|
+
return decodeURIComponent(id);
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
return id;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Resolve a `honua-wms` source spec to a runtime handle. Returns the
|
|
41
|
+
* layer-bound `HonuaWmsLayer` only when `spec.layers` parses to exactly
|
|
42
|
+
* one non-empty layer token, because `HonuaWmsLayer` is a single-layer
|
|
43
|
+
* handle (its `describe()` resolves one `<Layer>` from the parsed
|
|
44
|
+
* Capabilities). Multi-layer composites (`LAYERS=a,b`) and
|
|
45
|
+
* empty / missing values stay on the service-level `HonuaWms` handle so
|
|
46
|
+
* `map()` / `featureInfo()` can still target the composite.
|
|
47
|
+
*/
|
|
48
|
+
export function resolveWmsSpec(client, spec) {
|
|
49
|
+
const serviceId = spec.serviceId ?? parseWmsServiceIdFromUrl(spec.url);
|
|
50
|
+
if (!serviceId) {
|
|
51
|
+
throw new Error("honua-wms source requires either serviceId or a URL containing the service id");
|
|
52
|
+
}
|
|
53
|
+
const root = new HonuaWms({ client, serviceId });
|
|
54
|
+
const parsedLayers = parseWmsLayerNames(spec.layers);
|
|
55
|
+
if (parsedLayers.length === 1) {
|
|
56
|
+
const opts = {
|
|
57
|
+
client,
|
|
58
|
+
serviceId,
|
|
59
|
+
layerName: parsedLayers[0],
|
|
60
|
+
};
|
|
61
|
+
if (typeof spec.styles === "string" && spec.styles.length > 0) {
|
|
62
|
+
opts.defaultStyleId = spec.styles;
|
|
63
|
+
}
|
|
64
|
+
return new HonuaWmsLayer(opts);
|
|
65
|
+
}
|
|
66
|
+
return root;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Resolve a `honua-wmts` source spec to a runtime handle. Returns the
|
|
70
|
+
* (layer × style × TileMatrixSet) `HonuaWmtsTileset` when the spec
|
|
71
|
+
* pins a single layer; otherwise returns the service-level `HonuaWmts`
|
|
72
|
+
* handle.
|
|
73
|
+
*/
|
|
74
|
+
export function resolveWmtsSpec(client, spec) {
|
|
75
|
+
const serviceId = spec.serviceId ?? parseWmsServiceIdFromUrl(spec.url);
|
|
76
|
+
if (!serviceId) {
|
|
77
|
+
throw new Error("honua-wmts source requires either serviceId or a URL containing the service id");
|
|
78
|
+
}
|
|
79
|
+
const root = new HonuaWmts({ client, serviceId });
|
|
80
|
+
if (typeof spec.layer === "string" && spec.layer.length > 0) {
|
|
81
|
+
const style = spec.style ?? "default";
|
|
82
|
+
const tms = spec.tileMatrixSet ?? "WebMercatorQuad";
|
|
83
|
+
return new HonuaWmtsTileset({
|
|
84
|
+
client,
|
|
85
|
+
serviceId,
|
|
86
|
+
layerName: spec.layer,
|
|
87
|
+
styleId: style,
|
|
88
|
+
tileMatrixSetId: tms,
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
return root;
|
|
92
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compatibility contract for WebMap JSON → HonuaStyleSpecification conversion.
|
|
3
|
+
*
|
|
4
|
+
* Documents every WebMap JSON property path and its support level,
|
|
5
|
+
* enabling consumers to programmatically audit which features are
|
|
6
|
+
* handled (or not) by the parser.
|
|
7
|
+
*
|
|
8
|
+
* @module
|
|
9
|
+
*/
|
|
10
|
+
export type ContractSupport = "full" | "partial" | "ignored" | "unsupported";
|
|
11
|
+
export interface ContractEntry {
|
|
12
|
+
/** JSON path pattern (e.g. `"operationalLayers[].layerDefinition.drawingInfo.renderer"`). */
|
|
13
|
+
path: string;
|
|
14
|
+
/** Support level. */
|
|
15
|
+
support: ContractSupport;
|
|
16
|
+
/** Additional notes about limitations or behavior. */
|
|
17
|
+
notes?: string;
|
|
18
|
+
}
|
|
19
|
+
export declare const CONTRACT: ContractEntry[];
|
|
20
|
+
export interface ContractSummary {
|
|
21
|
+
total: number;
|
|
22
|
+
full: number;
|
|
23
|
+
partial: number;
|
|
24
|
+
ignored: number;
|
|
25
|
+
unsupported: number;
|
|
26
|
+
}
|
|
27
|
+
export declare function getContractSummary(): ContractSummary;
|
|
28
|
+
//# sourceMappingURL=contract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../../../src/webmap/contract.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,aAAa,CAAC;AAE7E,MAAM,WAAW,aAAa;IAC5B,6FAA6F;IAC7F,IAAI,EAAE,MAAM,CAAC;IACb,qBAAqB;IACrB,OAAO,EAAE,eAAe,CAAC;IACzB,sDAAsD;IACtD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,QAAQ,EAAE,aAAa,EA2HnC,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,kBAAkB,IAAI,eAAe,CAOpD"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compatibility contract for WebMap JSON → HonuaStyleSpecification conversion.
|
|
3
|
+
*
|
|
4
|
+
* Documents every WebMap JSON property path and its support level,
|
|
5
|
+
* enabling consumers to programmatically audit which features are
|
|
6
|
+
* handled (or not) by the parser.
|
|
7
|
+
*
|
|
8
|
+
* @module
|
|
9
|
+
*/
|
|
10
|
+
export const CONTRACT = [
|
|
11
|
+
// ── Top-level ──
|
|
12
|
+
{ path: "version", support: "ignored", notes: "Informational only" },
|
|
13
|
+
{ path: "authoringApp", support: "ignored" },
|
|
14
|
+
{ path: "authoringAppVersion", support: "ignored" },
|
|
15
|
+
{ path: "spatialReference", support: "partial", notes: "Web Mercator (3857/102100) supported; others warn" },
|
|
16
|
+
{ path: "unknown top-level properties", support: "ignored", notes: "Ignored with warning" },
|
|
17
|
+
// ── Initial viewpoint / extent ──
|
|
18
|
+
{
|
|
19
|
+
path: "initialViewpoint",
|
|
20
|
+
support: "partial",
|
|
21
|
+
notes: "targetGeometry point/extent supported; camera/3D unsupported",
|
|
22
|
+
},
|
|
23
|
+
{ path: "initialViewpoint.targetGeometry", support: "partial", notes: "Point or extent in 3857/102100/4326" },
|
|
24
|
+
{ path: "initialViewpoint.scale", support: "full", notes: "Converted to approximate zoom" },
|
|
25
|
+
{ path: "initialExtent", support: "full", notes: "Converted to center/zoom for Web Mercator" },
|
|
26
|
+
{ path: "initialExtent.spatialReference", support: "partial", notes: "Web Mercator only" },
|
|
27
|
+
// ── Bookmarks ──
|
|
28
|
+
{ path: "bookmarks", support: "full", notes: "Passed through as-is in result" },
|
|
29
|
+
{ path: "bookmarks[].name", support: "full" },
|
|
30
|
+
{ path: "bookmarks[].extent", support: "full" },
|
|
31
|
+
// ── Basemap ──
|
|
32
|
+
{ path: "baseMap", support: "partial" },
|
|
33
|
+
{ path: "baseMap.title", support: "full" },
|
|
34
|
+
{ path: "baseMap.baseMapLayers[]", support: "partial" },
|
|
35
|
+
{ path: "baseMap.baseMapLayers[].url", support: "full" },
|
|
36
|
+
{
|
|
37
|
+
path: "baseMap.baseMapLayers[].layerType",
|
|
38
|
+
support: "partial",
|
|
39
|
+
notes: "ArcGISTiledMapServiceLayer supported; VectorTileLayer partial",
|
|
40
|
+
},
|
|
41
|
+
{ path: "baseMap.baseMapLayers[].visibility", support: "full" },
|
|
42
|
+
{ path: "baseMap.baseMapLayers[].opacity", support: "full" },
|
|
43
|
+
{
|
|
44
|
+
path: "baseMap.baseMapLayers[].styleUrl",
|
|
45
|
+
support: "partial",
|
|
46
|
+
notes: "Noted in metadata; sprite/glyph resolution not performed",
|
|
47
|
+
},
|
|
48
|
+
// ── Operational layers ──
|
|
49
|
+
{ path: "operationalLayers[]", support: "partial" },
|
|
50
|
+
{ path: "operationalLayers[].id", support: "full" },
|
|
51
|
+
{ path: "operationalLayers[].title", support: "full", notes: "Used as layer metadata" },
|
|
52
|
+
{ path: "operationalLayers[].url", support: "full" },
|
|
53
|
+
{
|
|
54
|
+
path: "operationalLayers[].layerType",
|
|
55
|
+
support: "partial",
|
|
56
|
+
notes: "ArcGISFeatureLayer, ArcGISMapServiceLayer supported",
|
|
57
|
+
},
|
|
58
|
+
{ path: "operationalLayers[].visibility", support: "full" },
|
|
59
|
+
{ path: "operationalLayers[].opacity", support: "full" },
|
|
60
|
+
{ path: "operationalLayers[].minScale", support: "full" },
|
|
61
|
+
{ path: "operationalLayers[].maxScale", support: "full" },
|
|
62
|
+
// ── Layer definition ──
|
|
63
|
+
{ path: "operationalLayers[].layerDefinition", support: "partial" },
|
|
64
|
+
{ path: "operationalLayers[].layerDefinition.definitionExpression", support: "full" },
|
|
65
|
+
{ path: "operationalLayers[].layerDefinition.drawingInfo", support: "partial" },
|
|
66
|
+
{ path: "operationalLayers[].layerDefinition.drawingInfo.transparency", support: "full" },
|
|
67
|
+
// ── Renderers ──
|
|
68
|
+
{ path: "operationalLayers[].layerDefinition.drawingInfo.renderer", support: "partial" },
|
|
69
|
+
{ path: "operationalLayers[].layerDefinition.drawingInfo.renderer (simple)", support: "full" },
|
|
70
|
+
{ path: "operationalLayers[].layerDefinition.drawingInfo.renderer (uniqueValue)", support: "full" },
|
|
71
|
+
{ path: "operationalLayers[].layerDefinition.drawingInfo.renderer (classBreaks)", support: "full" },
|
|
72
|
+
{
|
|
73
|
+
path: "operationalLayers[].layerDefinition.drawingInfo.renderer (heatmap)",
|
|
74
|
+
support: "unsupported",
|
|
75
|
+
notes: "Warning emitted",
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
path: "operationalLayers[].layerDefinition.drawingInfo.renderer (dotDensity)",
|
|
79
|
+
support: "unsupported",
|
|
80
|
+
notes: "Warning emitted",
|
|
81
|
+
},
|
|
82
|
+
// ── Symbols ──
|
|
83
|
+
{ path: "symbol (esriSFS)", support: "full", notes: "Simple fill symbol → fill layer" },
|
|
84
|
+
{ path: "symbol (esriSLS)", support: "full", notes: "Simple line symbol → line layer" },
|
|
85
|
+
{ path: "symbol (esriSMS)", support: "full", notes: "Simple marker symbol → circle layer" },
|
|
86
|
+
{ path: "symbol (esriPMS)", support: "partial", notes: "Picture marker → symbol layer; requires sprite setup" },
|
|
87
|
+
{ path: "symbol (esriTS)", support: "partial", notes: "Text symbol → symbol layer with text" },
|
|
88
|
+
// ── Labeling ──
|
|
89
|
+
{ path: "operationalLayers[].layerDefinition.drawingInfo.labelingInfo", support: "partial" },
|
|
90
|
+
{
|
|
91
|
+
path: "operationalLayers[].layerDefinition.drawingInfo.labelingInfo[].labelExpressionInfo.expression",
|
|
92
|
+
support: "partial",
|
|
93
|
+
notes: "Simple $feature.FIELD supported; complex Arcade skipped",
|
|
94
|
+
},
|
|
95
|
+
// ── Popups ──
|
|
96
|
+
{
|
|
97
|
+
path: "operationalLayers[].popupInfo",
|
|
98
|
+
support: "full",
|
|
99
|
+
notes: "Passed through as metadata (MapLibre has no popup spec)",
|
|
100
|
+
},
|
|
101
|
+
{ path: "operationalLayers[].popupInfo.title", support: "full" },
|
|
102
|
+
{ path: "operationalLayers[].popupInfo.description", support: "full" },
|
|
103
|
+
{ path: "operationalLayers[].popupInfo.fieldInfos", support: "full" },
|
|
104
|
+
{ path: "operationalLayers[].popupInfo.mediaInfos", support: "full" },
|
|
105
|
+
{
|
|
106
|
+
path: "operationalLayers[].popupInfo.expressionInfos",
|
|
107
|
+
support: "unsupported",
|
|
108
|
+
notes: "Warning emitted; manual intervention",
|
|
109
|
+
},
|
|
110
|
+
// ── Feature collection (inline) ──
|
|
111
|
+
{
|
|
112
|
+
path: "operationalLayers[].featureCollection",
|
|
113
|
+
support: "unsupported",
|
|
114
|
+
notes: "Inline feature collections not yet supported",
|
|
115
|
+
},
|
|
116
|
+
// ── 3D ──
|
|
117
|
+
{
|
|
118
|
+
path: "ground / viewingMode / camera / elevationInfo",
|
|
119
|
+
support: "unsupported",
|
|
120
|
+
notes: "Warning emitted; manual intervention",
|
|
121
|
+
},
|
|
122
|
+
];
|
|
123
|
+
export function getContractSummary() {
|
|
124
|
+
const summary = { total: 0, full: 0, partial: 0, ignored: 0, unsupported: 0 };
|
|
125
|
+
for (const entry of CONTRACT) {
|
|
126
|
+
summary.total++;
|
|
127
|
+
summary[entry.support]++;
|
|
128
|
+
}
|
|
129
|
+
return summary;
|
|
130
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Converts Esri WebMap baseMap to Honua sources and layers.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
import type { HonuaLayerSpecification, HonuaMapServiceSourceSpecification } from "../style/specification.js";
|
|
7
|
+
import type { WebMapBaseMap } from "./types.js";
|
|
8
|
+
import { type WarningCollector } from "./warnings.js";
|
|
9
|
+
export interface BasemapConversionResult {
|
|
10
|
+
sources: Record<string, HonuaMapServiceSourceSpecification | {
|
|
11
|
+
type: string;
|
|
12
|
+
[key: string]: unknown;
|
|
13
|
+
}>;
|
|
14
|
+
layers: HonuaLayerSpecification[];
|
|
15
|
+
}
|
|
16
|
+
export declare function convertBasemap(baseMap: WebMapBaseMap | undefined, warn: WarningCollector): BasemapConversionResult;
|
|
17
|
+
//# sourceMappingURL=convert-basemap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convert-basemap.d.ts","sourceRoot":"","sources":["../../../src/webmap/convert-basemap.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,kCAAkC,EAAE,MAAM,2BAA2B,CAAC;AAC7G,OAAO,KAAK,EAAE,aAAa,EAAsB,MAAM,YAAY,CAAC;AACpE,OAAO,EAAE,KAAK,gBAAgB,EAAyB,MAAM,eAAe,CAAC;AAE7E,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,kCAAkC,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC,CAAC;IACvG,MAAM,EAAE,uBAAuB,EAAE,CAAC;CACnC;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,aAAa,GAAG,SAAS,EAAE,IAAI,EAAE,gBAAgB,GAAG,uBAAuB,CA6ElH"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Converts Esri WebMap baseMap to Honua sources and layers.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
import { warnUnknownProperties } from "./warnings.js";
|
|
7
|
+
export function convertBasemap(baseMap, warn) {
|
|
8
|
+
const result = { sources: {}, layers: [] };
|
|
9
|
+
if (!baseMap?.baseMapLayers)
|
|
10
|
+
return result;
|
|
11
|
+
warnUnknownProperties(baseMap, BASEMAP_PROPERTIES, warn);
|
|
12
|
+
const bmLayers = baseMap.baseMapLayers;
|
|
13
|
+
for (let i = 0; i < bmLayers.length; i++) {
|
|
14
|
+
const bml = bmLayers[i];
|
|
15
|
+
const bmlWarn = warn.child(`baseMapLayers[${i}]`);
|
|
16
|
+
warnUnknownProperties(bml, BASEMAP_LAYER_PROPERTIES, bmlWarn);
|
|
17
|
+
const sourceId = bml.id ?? `basemap-${i}`;
|
|
18
|
+
const layerId = `${sourceId}-layer`;
|
|
19
|
+
const layerType = bml.layerType ?? "";
|
|
20
|
+
if (layerType === "ArcGISTiledMapServiceLayer" && bml.url) {
|
|
21
|
+
result.sources[sourceId] = {
|
|
22
|
+
type: "honua-map-service",
|
|
23
|
+
url: bml.url,
|
|
24
|
+
};
|
|
25
|
+
const layer = {
|
|
26
|
+
id: layerId,
|
|
27
|
+
type: "raster",
|
|
28
|
+
source: sourceId,
|
|
29
|
+
layout: {},
|
|
30
|
+
paint: {},
|
|
31
|
+
};
|
|
32
|
+
if (bml.visibility === false) {
|
|
33
|
+
layer.layout = { visibility: "none" };
|
|
34
|
+
}
|
|
35
|
+
if (bml.opacity != null && bml.opacity < 1) {
|
|
36
|
+
layer.paint["raster-opacity"] = bml.opacity;
|
|
37
|
+
}
|
|
38
|
+
result.layers.push(layer);
|
|
39
|
+
}
|
|
40
|
+
else if (layerType === "VectorTileLayer") {
|
|
41
|
+
// Partial support: note styleUrl in metadata
|
|
42
|
+
if (bml.url) {
|
|
43
|
+
result.sources[sourceId] = {
|
|
44
|
+
type: "vector",
|
|
45
|
+
url: bml.url,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
bmlWarn.warn("missing-url", "VectorTileLayer missing url");
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
const layer = {
|
|
53
|
+
id: layerId,
|
|
54
|
+
type: "background",
|
|
55
|
+
source: sourceId,
|
|
56
|
+
layout: {},
|
|
57
|
+
paint: {},
|
|
58
|
+
metadata: {
|
|
59
|
+
...(bml.styleUrl ? { esriStyleUrl: bml.styleUrl } : {}),
|
|
60
|
+
note: "VectorTileLayer requires style resolution; using placeholder background layer",
|
|
61
|
+
},
|
|
62
|
+
};
|
|
63
|
+
if (bml.visibility === false) {
|
|
64
|
+
layer.layout = { visibility: "none" };
|
|
65
|
+
}
|
|
66
|
+
bmlWarn.warn("vector-tile-partial", "VectorTileLayer support is partial; style must be resolved separately", {
|
|
67
|
+
styleUrl: bml.styleUrl,
|
|
68
|
+
});
|
|
69
|
+
result.layers.push(layer);
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
bmlWarn.warn("unsupported-basemap-type", `Unsupported basemap layer type: ${layerType}`, { layerType });
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return result;
|
|
76
|
+
}
|
|
77
|
+
const BASEMAP_PROPERTIES = ["title", "baseMapLayers"];
|
|
78
|
+
const BASEMAP_LAYER_PROPERTIES = ["id", "title", "url", "layerType", "visibility", "opacity", "styleUrl"];
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Converts Esri WebMap extents/viewpoints to MapLibre center/zoom.
|
|
3
|
+
*
|
|
4
|
+
* Supports Web Mercator (WKID 3857 / 102100) and geographic (4326).
|
|
5
|
+
* Unsupported spatial references emit warnings and are skipped.
|
|
6
|
+
*
|
|
7
|
+
* @module
|
|
8
|
+
*/
|
|
9
|
+
import type { WebMapExtent, WebMapViewpoint } from "./types.js";
|
|
10
|
+
import type { WarningCollector } from "./warnings.js";
|
|
11
|
+
export interface ExtentConversionResult {
|
|
12
|
+
center: [number, number];
|
|
13
|
+
zoom: number;
|
|
14
|
+
}
|
|
15
|
+
export declare function convertInitialViewpoint(viewpoint: WebMapViewpoint | undefined, warn: WarningCollector): ExtentConversionResult | undefined;
|
|
16
|
+
export declare function convertExtent(extent: WebMapExtent | undefined, warn: WarningCollector): ExtentConversionResult | undefined;
|
|
17
|
+
//# sourceMappingURL=convert-extent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convert-extent.d.ts","sourceRoot":"","sources":["../../../src/webmap/convert-extent.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAe,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEtD,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;CACd;AAMD,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,eAAe,GAAG,SAAS,EACtC,IAAI,EAAE,gBAAgB,GACrB,sBAAsB,GAAG,SAAS,CAsBpC;AAED,wBAAgB,aAAa,CAC3B,MAAM,EAAE,YAAY,GAAG,SAAS,EAChC,IAAI,EAAE,gBAAgB,GACrB,sBAAsB,GAAG,SAAS,CAyBpC"}
|