@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,255 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Family-agnostic validation for Studio packages produced outside Console —
|
|
3
|
+
* by an MCP client, the QGIS plugin, or the SDK itself. It returns the same
|
|
4
|
+
* unified {@link StudioPackageValidationResponse} envelope as the per-family
|
|
5
|
+
* validators, so a package generated through any surface is validated against
|
|
6
|
+
* one contract.
|
|
7
|
+
*
|
|
8
|
+
* For the `map` family this delegates to the established
|
|
9
|
+
* {@link validateMapPackage} (no duplication). For every other family it runs
|
|
10
|
+
* the shared base checks (`packageId`/`format`, lifecycle) and, when present,
|
|
11
|
+
* the shared {@link HonuaPackageProvenance} checks. Provenance is optional, but
|
|
12
|
+
* when a package carries it, MCP- and QGIS-origin packages must satisfy the
|
|
13
|
+
* same provenance shape as Console.
|
|
14
|
+
*
|
|
15
|
+
* @experimental Not yet covered by the SDK's semver contract — these shapes
|
|
16
|
+
* may change in any minor release prior to `1.0.0`.
|
|
17
|
+
* @module
|
|
18
|
+
*/
|
|
19
|
+
import { validateMapPackage } from "../runtime/map-package-validation.js";
|
|
20
|
+
import { HONUA_MAP_PACKAGE_FORMAT_V1 } from "../runtime/map-package.js";
|
|
21
|
+
import { HONUA_PACKAGE_PROVENANCE_FORMAT_V1, getPackageProvenance } from "./provenance.js";
|
|
22
|
+
import { STUDIO_PACKAGE_FAMILIES, isStudioPackageFamily } from "./types.js";
|
|
23
|
+
import { fromMapPackageValidation } from "./validation.js";
|
|
24
|
+
/**
|
|
25
|
+
* Expected `format` string for each family whose projection carries a single
|
|
26
|
+
* `format` discriminant. `map` and `dashboard` reuse their established
|
|
27
|
+
* constants; the `app` family is identified by `version` rather than `format`
|
|
28
|
+
* and is therefore not in this table.
|
|
29
|
+
*/
|
|
30
|
+
const FAMILY_FORMAT = {
|
|
31
|
+
query: "honua_query_package.v1",
|
|
32
|
+
analysis: "honua_analysis_package.v1",
|
|
33
|
+
map: HONUA_MAP_PACKAGE_FORMAT_V1,
|
|
34
|
+
dashboard: "honua_generated_app_manifest.v1",
|
|
35
|
+
report: "honua_report_package.v1",
|
|
36
|
+
form: "honua_form_package.v1",
|
|
37
|
+
workflow: "honua_workflow_package.v1",
|
|
38
|
+
gp: "honua_gp_package.v1",
|
|
39
|
+
etl: "honua_etl_package.v1",
|
|
40
|
+
};
|
|
41
|
+
/** The package-identity field each family uses. */
|
|
42
|
+
function packageIdOf(family, value) {
|
|
43
|
+
if (family === "map")
|
|
44
|
+
return typeof value.mapPackageId === "string" ? value.mapPackageId : undefined;
|
|
45
|
+
if (family === "dashboard")
|
|
46
|
+
return typeof value.appId === "string" ? value.appId : undefined;
|
|
47
|
+
if (family === "app")
|
|
48
|
+
return typeof value.id === "string" ? value.id : undefined;
|
|
49
|
+
return typeof value.packageId === "string" ? value.packageId : undefined;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Validate a package of any Studio family produced outside Console. Dispatches
|
|
53
|
+
* to the map validator for the `map` family and applies shared base +
|
|
54
|
+
* provenance checks for every family.
|
|
55
|
+
*
|
|
56
|
+
* @experimental
|
|
57
|
+
*/
|
|
58
|
+
export function validateStudioPackage(family, value, options = {}) {
|
|
59
|
+
const diagnostics = [];
|
|
60
|
+
if (!isStudioPackageFamily(family)) {
|
|
61
|
+
diagnostics.push({
|
|
62
|
+
code: "unknown-family",
|
|
63
|
+
severity: "error",
|
|
64
|
+
message: `Unknown Studio package family "${family}". Expected one of: ${STUDIO_PACKAGE_FAMILIES.join(", ")}.`,
|
|
65
|
+
path: "packageFamily",
|
|
66
|
+
});
|
|
67
|
+
return { valid: false, diagnostics };
|
|
68
|
+
}
|
|
69
|
+
if (!isRecord(value)) {
|
|
70
|
+
diagnostics.push({
|
|
71
|
+
code: "invalid-package",
|
|
72
|
+
severity: "error",
|
|
73
|
+
message: `${family} package must be a JSON object.`,
|
|
74
|
+
});
|
|
75
|
+
return { valid: false, diagnostics };
|
|
76
|
+
}
|
|
77
|
+
// The map family has a full structural validator already — reuse it so MCP
|
|
78
|
+
// and QGIS map packages validate identically to Console's.
|
|
79
|
+
if (family === "map") {
|
|
80
|
+
const mapResponse = fromMapPackageValidation(validateMapPackage(value, { now: options.now }));
|
|
81
|
+
const merged = [...mapResponse.diagnostics];
|
|
82
|
+
appendProvenanceDiagnostics(merged, value, options);
|
|
83
|
+
return {
|
|
84
|
+
valid: mapResponse.valid && !hasErrors(merged),
|
|
85
|
+
diagnostics: merged,
|
|
86
|
+
...(mapResponse.pkg === undefined ? {} : { pkg: mapResponse.pkg }),
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
const packageId = packageIdOf(family, value);
|
|
90
|
+
if (!packageId) {
|
|
91
|
+
diagnostics.push({
|
|
92
|
+
code: "missing-package-id",
|
|
93
|
+
severity: "error",
|
|
94
|
+
message: `${family} package must carry a non-empty identity field.`,
|
|
95
|
+
path: family === "dashboard" ? "appId" : family === "app" ? "id" : "packageId",
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
const expectedFormat = FAMILY_FORMAT[family];
|
|
99
|
+
if (expectedFormat !== undefined && family !== "app" && value.format !== expectedFormat) {
|
|
100
|
+
diagnostics.push({
|
|
101
|
+
code: "unsupported-format",
|
|
102
|
+
severity: "error",
|
|
103
|
+
message: `${family} package format must be "${expectedFormat}".`,
|
|
104
|
+
path: "format",
|
|
105
|
+
detail: { expected: expectedFormat, received: value.format },
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
appendLifecycleDiagnostics(diagnostics, value, options);
|
|
109
|
+
appendProvenanceDiagnostics(diagnostics, value, options);
|
|
110
|
+
return {
|
|
111
|
+
valid: !hasErrors(diagnostics),
|
|
112
|
+
diagnostics,
|
|
113
|
+
pkg: value,
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Validate just the {@link HonuaPackageProvenance} envelope on a package value.
|
|
118
|
+
* Useful when a host (MCP/QGIS) wants to confirm attribution without running
|
|
119
|
+
* the full family validation.
|
|
120
|
+
*
|
|
121
|
+
* @experimental
|
|
122
|
+
*/
|
|
123
|
+
export function validatePackageProvenance(value, options = {}) {
|
|
124
|
+
const diagnostics = [];
|
|
125
|
+
appendProvenanceDiagnostics(diagnostics, value, { requireProvenance: options.required });
|
|
126
|
+
const provenance = getPackageProvenance(value);
|
|
127
|
+
return {
|
|
128
|
+
valid: !hasErrors(diagnostics),
|
|
129
|
+
diagnostics,
|
|
130
|
+
...(provenance === undefined ? {} : { pkg: provenance }),
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
const KNOWN_ORIGINS = new Set(["console", "studio", "mcp", "qgis", "sdk"]);
|
|
134
|
+
function appendProvenanceDiagnostics(diagnostics, value, options) {
|
|
135
|
+
const raw = isRecord(value) ? value.provenance : undefined;
|
|
136
|
+
if (raw === undefined) {
|
|
137
|
+
if (options.requireProvenance) {
|
|
138
|
+
diagnostics.push({
|
|
139
|
+
code: "missing-provenance",
|
|
140
|
+
severity: "error",
|
|
141
|
+
message: "Package provenance is required but absent.",
|
|
142
|
+
path: "provenance",
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
if (!isRecord(raw)) {
|
|
148
|
+
diagnostics.push({
|
|
149
|
+
code: "invalid-provenance",
|
|
150
|
+
severity: "error",
|
|
151
|
+
message: "Package provenance must be a JSON object.",
|
|
152
|
+
path: "provenance",
|
|
153
|
+
});
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
if (raw.format !== HONUA_PACKAGE_PROVENANCE_FORMAT_V1) {
|
|
157
|
+
diagnostics.push({
|
|
158
|
+
code: "unsupported-provenance-format",
|
|
159
|
+
severity: "error",
|
|
160
|
+
message: `Package provenance.format must be "${HONUA_PACKAGE_PROVENANCE_FORMAT_V1}".`,
|
|
161
|
+
path: "provenance.format",
|
|
162
|
+
detail: { expected: HONUA_PACKAGE_PROVENANCE_FORMAT_V1, received: raw.format },
|
|
163
|
+
});
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
if (typeof raw.origin !== "string" || raw.origin.length === 0) {
|
|
167
|
+
diagnostics.push({
|
|
168
|
+
code: "missing-provenance-origin",
|
|
169
|
+
severity: "error",
|
|
170
|
+
message: "Package provenance.origin must be a non-empty string.",
|
|
171
|
+
path: "provenance.origin",
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
else if (!KNOWN_ORIGINS.has(raw.origin)) {
|
|
175
|
+
diagnostics.push({
|
|
176
|
+
code: "unknown-provenance-origin",
|
|
177
|
+
severity: "warning",
|
|
178
|
+
message: `Package provenance.origin "${raw.origin}" is not a known surface.`,
|
|
179
|
+
path: "provenance.origin",
|
|
180
|
+
detail: { origin: raw.origin, known: [...KNOWN_ORIGINS] },
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
if (raw.dataBindings !== undefined && !Array.isArray(raw.dataBindings)) {
|
|
184
|
+
diagnostics.push({
|
|
185
|
+
code: "invalid-provenance-data-bindings",
|
|
186
|
+
severity: "error",
|
|
187
|
+
message: "Package provenance.dataBindings must be an array when present.",
|
|
188
|
+
path: "provenance.dataBindings",
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
else if (Array.isArray(raw.dataBindings)) {
|
|
192
|
+
raw.dataBindings.forEach((binding, i) => {
|
|
193
|
+
if (!isRecord(binding) || typeof binding.sourceId !== "string" || binding.sourceId.length === 0) {
|
|
194
|
+
diagnostics.push({
|
|
195
|
+
code: "invalid-provenance-data-binding",
|
|
196
|
+
severity: "error",
|
|
197
|
+
message: "Each provenance dataBinding must carry a non-empty sourceId.",
|
|
198
|
+
path: `provenance.dataBindings[${i}].sourceId`,
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
if (raw.permissions !== undefined && !Array.isArray(raw.permissions)) {
|
|
204
|
+
diagnostics.push({
|
|
205
|
+
code: "invalid-provenance-permissions",
|
|
206
|
+
severity: "error",
|
|
207
|
+
message: "Package provenance.permissions must be an array when present.",
|
|
208
|
+
path: "provenance.permissions",
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
else if (Array.isArray(raw.permissions)) {
|
|
212
|
+
raw.permissions.forEach((permission, i) => {
|
|
213
|
+
if (!isRecord(permission) || typeof permission.scope !== "string" || permission.scope.length === 0) {
|
|
214
|
+
diagnostics.push({
|
|
215
|
+
code: "invalid-provenance-permission",
|
|
216
|
+
severity: "error",
|
|
217
|
+
message: "Each provenance permission must carry a non-empty scope.",
|
|
218
|
+
path: `provenance.permissions[${i}].scope`,
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
function appendLifecycleDiagnostics(diagnostics, value, options) {
|
|
225
|
+
const nowMs = options.now instanceof Date ? options.now.getTime() : (options.now ?? Date.now());
|
|
226
|
+
if (value.status === "Expired") {
|
|
227
|
+
diagnostics.push({
|
|
228
|
+
code: "expired-package",
|
|
229
|
+
severity: "error",
|
|
230
|
+
message: "Package status is Expired.",
|
|
231
|
+
path: "status",
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
const expiresAt = parseTimestamp(value.expiresAt);
|
|
235
|
+
if (expiresAt !== undefined && expiresAt <= nowMs) {
|
|
236
|
+
diagnostics.push({
|
|
237
|
+
code: "expired-package",
|
|
238
|
+
severity: "error",
|
|
239
|
+
message: "Package expiresAt is in the past.",
|
|
240
|
+
path: "expiresAt",
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
function parseTimestamp(value) {
|
|
245
|
+
if (typeof value !== "string" && typeof value !== "number")
|
|
246
|
+
return undefined;
|
|
247
|
+
const parsed = typeof value === "number" ? value : Date.parse(value);
|
|
248
|
+
return Number.isFinite(parsed) ? parsed : undefined;
|
|
249
|
+
}
|
|
250
|
+
function hasErrors(diagnostics) {
|
|
251
|
+
return diagnostics.some((d) => d.severity === "error");
|
|
252
|
+
}
|
|
253
|
+
function isRecord(value) {
|
|
254
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
255
|
+
}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified validation and preview response envelopes shared across every
|
|
3
|
+
* Studio package family and across the SDK, Console, MCP, and QGIS clients.
|
|
4
|
+
*
|
|
5
|
+
* The existing {@link ValidateMapPackageResult} (map family) stays unchanged;
|
|
6
|
+
* {@link toStudioValidationResponse} and {@link fromMapPackageValidation}
|
|
7
|
+
* adapt it into the generic {@link StudioPackageValidationResponse} envelope
|
|
8
|
+
* without renaming or restructuring it. {@link HonuaMapPackageDiagnostic} is
|
|
9
|
+
* already a structural subtype of {@link StudioPackageDiagnostic}.
|
|
10
|
+
*
|
|
11
|
+
* @experimental Not yet covered by the SDK's semver contract — these shapes
|
|
12
|
+
* may change in any minor release prior to `1.0.0`.
|
|
13
|
+
* @module
|
|
14
|
+
*/
|
|
15
|
+
import type { ValidateMapPackageResult } from "../runtime/map-package-validation.js";
|
|
16
|
+
import type { HonuaMapPackage } from "../runtime/map-package.js";
|
|
17
|
+
import type { HonuaStudioPackageFamily } from "./types.js";
|
|
18
|
+
/**
|
|
19
|
+
* Severity of a single {@link StudioPackageDiagnostic}. Matches the frozen
|
|
20
|
+
* server / honua-sdk-dotnet `StudioPackageDiagnosticSeverity` enum members
|
|
21
|
+
* (`info`, `warning`, `error`, `blocker`); the map-package validator emits only
|
|
22
|
+
* `error`/`warning`, which remain assignable.
|
|
23
|
+
*/
|
|
24
|
+
export type StudioPackageDiagnosticSeverity = "info" | "warning" | "error" | "blocker";
|
|
25
|
+
/**
|
|
26
|
+
* One diagnostic emitted while validating a Studio package. The shape is a
|
|
27
|
+
* superset-compatible mirror of `HonuaMapPackageDiagnostic` so the map
|
|
28
|
+
* validator's output adapts without conversion.
|
|
29
|
+
*
|
|
30
|
+
* @experimental
|
|
31
|
+
*/
|
|
32
|
+
export interface StudioPackageDiagnostic {
|
|
33
|
+
readonly code: string;
|
|
34
|
+
readonly severity: StudioPackageDiagnosticSeverity;
|
|
35
|
+
readonly message: string;
|
|
36
|
+
readonly path?: string;
|
|
37
|
+
readonly detail?: unknown;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Generic validation response envelope. Every package family returns the
|
|
41
|
+
* same `{ valid, diagnostics, pkg? }` shape, so SDK, Console, MCP, and QGIS
|
|
42
|
+
* clients consume one contract.
|
|
43
|
+
*
|
|
44
|
+
* @experimental
|
|
45
|
+
*/
|
|
46
|
+
export interface StudioPackageValidationResponse<T> {
|
|
47
|
+
readonly valid: boolean;
|
|
48
|
+
readonly diagnostics: readonly StudioPackageDiagnostic[];
|
|
49
|
+
readonly pkg?: T;
|
|
50
|
+
}
|
|
51
|
+
/** Reference to a server-rendered preview artifact for a package. */
|
|
52
|
+
export interface StudioPreviewArtifactRef {
|
|
53
|
+
readonly id?: string;
|
|
54
|
+
readonly kind?: string;
|
|
55
|
+
readonly url?: string;
|
|
56
|
+
readonly mediaType?: string;
|
|
57
|
+
readonly [extra: string]: unknown;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Generic preview response envelope returned when a package is previewed
|
|
61
|
+
* (composed without publishing). Diagnostics reuse the validation shape.
|
|
62
|
+
*
|
|
63
|
+
* @experimental
|
|
64
|
+
*/
|
|
65
|
+
export interface StudioPackagePreviewResponse<T> {
|
|
66
|
+
readonly packageId?: string;
|
|
67
|
+
readonly packageFamily?: HonuaStudioPackageFamily | (string & {});
|
|
68
|
+
readonly pkg?: T;
|
|
69
|
+
readonly diagnostics?: readonly StudioPackageDiagnostic[];
|
|
70
|
+
readonly artifacts?: readonly StudioPreviewArtifactRef[];
|
|
71
|
+
readonly expiresAt?: string;
|
|
72
|
+
readonly [extra: string]: unknown;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Loose shape a family-specific validation result must satisfy to be adapted
|
|
76
|
+
* by {@link toStudioValidationResponse}. Diagnostics carry no index signature
|
|
77
|
+
* so that results with extra diagnostic fields (e.g. `packageId` on
|
|
78
|
+
* {@link HonuaMapPackageDiagnostic}) — and results that carry a named package
|
|
79
|
+
* field alongside `valid`/`diagnostics` — assign without a structural index
|
|
80
|
+
* signature on the caller's type.
|
|
81
|
+
*/
|
|
82
|
+
interface StudioValidationResultLike {
|
|
83
|
+
readonly valid: boolean;
|
|
84
|
+
readonly diagnostics: readonly {
|
|
85
|
+
readonly code: string;
|
|
86
|
+
readonly severity: StudioPackageDiagnosticSeverity;
|
|
87
|
+
readonly message: string;
|
|
88
|
+
readonly path?: string;
|
|
89
|
+
readonly detail?: unknown;
|
|
90
|
+
}[];
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Adapt any family validation result — an object with `valid`, `diagnostics`,
|
|
94
|
+
* and a named package field — into the unified
|
|
95
|
+
* {@link StudioPackageValidationResponse}. `pkgKey` names the field holding
|
|
96
|
+
* the package (e.g. `"mapPackage"`). The package field is loosely typed; for
|
|
97
|
+
* the map family prefer the fully-typed {@link fromMapPackageValidation}.
|
|
98
|
+
*
|
|
99
|
+
* @experimental
|
|
100
|
+
*/
|
|
101
|
+
export declare function toStudioValidationResponse<T>(result: StudioValidationResultLike, pkgKey: string): StudioPackageValidationResponse<T>;
|
|
102
|
+
/**
|
|
103
|
+
* Fully-typed convenience adapter from the map family's
|
|
104
|
+
* {@link ValidateMapPackageResult} to a
|
|
105
|
+
* {@link StudioPackageValidationResponse}. Equivalent to
|
|
106
|
+
* `toStudioValidationResponse<HonuaMapPackage>(result, "mapPackage")`.
|
|
107
|
+
*
|
|
108
|
+
* @experimental
|
|
109
|
+
*/
|
|
110
|
+
export declare function fromMapPackageValidation(result: ValidateMapPackageResult): StudioPackageValidationResponse<HonuaMapPackage>;
|
|
111
|
+
export {};
|
|
112
|
+
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/studio/validation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AACrF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAE3D;;;;;GAKG;AACH,MAAM,MAAM,+BAA+B,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;AAEvF;;;;;;GAMG;AACH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,+BAA+B,CAAC;IACnD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,+BAA+B,CAAC,CAAC;IAChD,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,SAAS,uBAAuB,EAAE,CAAC;IACzD,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;CAClB;AAED,qEAAqE;AACrE,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CACnC;AAED;;;;;GAKG;AACH,MAAM,WAAW,4BAA4B,CAAC,CAAC;IAC7C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,CAAC,EAAE,wBAAwB,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;IAClE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACjB,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,uBAAuB,EAAE,CAAC;IAC1D,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,wBAAwB,EAAE,CAAC;IACzD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CACnC;AAED;;;;;;;GAOG;AACH,UAAU,0BAA0B;IAClC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,SAAS;QAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,QAAQ,EAAE,+BAA+B,CAAC;QACnD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;KAC3B,EAAE,CAAC;CACL;AAED;;;;;;;;GAQG;AACH,wBAAgB,0BAA0B,CAAC,CAAC,EAC1C,MAAM,EAAE,0BAA0B,EAClC,MAAM,EAAE,MAAM,GACb,+BAA+B,CAAC,CAAC,CAAC,CAOpC;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,wBAAwB,GAC/B,+BAA+B,CAAC,eAAe,CAAC,CAElD"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified validation and preview response envelopes shared across every
|
|
3
|
+
* Studio package family and across the SDK, Console, MCP, and QGIS clients.
|
|
4
|
+
*
|
|
5
|
+
* The existing {@link ValidateMapPackageResult} (map family) stays unchanged;
|
|
6
|
+
* {@link toStudioValidationResponse} and {@link fromMapPackageValidation}
|
|
7
|
+
* adapt it into the generic {@link StudioPackageValidationResponse} envelope
|
|
8
|
+
* without renaming or restructuring it. {@link HonuaMapPackageDiagnostic} is
|
|
9
|
+
* already a structural subtype of {@link StudioPackageDiagnostic}.
|
|
10
|
+
*
|
|
11
|
+
* @experimental Not yet covered by the SDK's semver contract — these shapes
|
|
12
|
+
* may change in any minor release prior to `1.0.0`.
|
|
13
|
+
* @module
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* Adapt any family validation result — an object with `valid`, `diagnostics`,
|
|
17
|
+
* and a named package field — into the unified
|
|
18
|
+
* {@link StudioPackageValidationResponse}. `pkgKey` names the field holding
|
|
19
|
+
* the package (e.g. `"mapPackage"`). The package field is loosely typed; for
|
|
20
|
+
* the map family prefer the fully-typed {@link fromMapPackageValidation}.
|
|
21
|
+
*
|
|
22
|
+
* @experimental
|
|
23
|
+
*/
|
|
24
|
+
export function toStudioValidationResponse(result, pkgKey) {
|
|
25
|
+
const pkg = result[pkgKey];
|
|
26
|
+
return {
|
|
27
|
+
valid: result.valid,
|
|
28
|
+
diagnostics: [...result.diagnostics],
|
|
29
|
+
...(pkg === undefined ? {} : { pkg: pkg }),
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Fully-typed convenience adapter from the map family's
|
|
34
|
+
* {@link ValidateMapPackageResult} to a
|
|
35
|
+
* {@link StudioPackageValidationResponse}. Equivalent to
|
|
36
|
+
* `toStudioValidationResponse<HonuaMapPackage>(result, "mapPackage")`.
|
|
37
|
+
*
|
|
38
|
+
* @experimental
|
|
39
|
+
*/
|
|
40
|
+
export function fromMapPackageValidation(result) {
|
|
41
|
+
return toStudioValidationResponse(result, "mapPackage");
|
|
42
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Style-to-source factory: creates Honua SDK surface instances from a
|
|
3
|
+
* HonuaStyleSpecification's source definitions.
|
|
4
|
+
*
|
|
5
|
+
* @module
|
|
6
|
+
*/
|
|
7
|
+
import type { HonuaClient } from "../core/client.js";
|
|
8
|
+
import { HonuaFeatureLayer, HonuaMapService, type HonuaOgcFeatureCollection } from "../core/surfaces.js";
|
|
9
|
+
import type { HonuaWms, HonuaWmsLayer } from "../core/wms.js";
|
|
10
|
+
import type { HonuaWmts, HonuaWmtsTileset } from "../core/wmts.js";
|
|
11
|
+
import type { HonuaStyleSpecification } from "./specification.js";
|
|
12
|
+
/** A resolved Honua source: either a surface instance or `null` for non-Honua (MapLibre-native) sources. */
|
|
13
|
+
export type ResolvedSource = HonuaFeatureLayer | HonuaMapService | HonuaOgcFeatureCollection | HonuaWms | HonuaWmsLayer | HonuaWmts | HonuaWmtsTileset | null;
|
|
14
|
+
/**
|
|
15
|
+
* Create Honua SDK surface instances for each source in a style.
|
|
16
|
+
*
|
|
17
|
+
* Non-Honua sources (e.g. `vector`, `raster`, `geojson`) are mapped to `null` —
|
|
18
|
+
* these should be handled directly by MapLibre's built-in source types.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```ts
|
|
22
|
+
* const sources = createSources(client, style);
|
|
23
|
+
* const parcels = sources.get("parcels"); // HonuaFeatureLayer
|
|
24
|
+
* if (parcels instanceof HonuaFeatureLayer) {
|
|
25
|
+
* const features = await parcels.queryFeatures({ where: "status = 'active'" });
|
|
26
|
+
* }
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export declare function createSources(client: HonuaClient, style: HonuaStyleSpecification): Map<string, ResolvedSource>;
|
|
30
|
+
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/style/factory.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,KAAK,yBAAyB,EAE/B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAWlE,4GAA4G;AAC5G,MAAM,MAAM,cAAc,GACtB,iBAAiB,GACjB,eAAe,GACf,yBAAyB,GACzB,QAAQ,GACR,aAAa,GACb,SAAS,GACT,gBAAgB,GAChB,IAAI,CAAC;AAET;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,uBAAuB,GAAG,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAsC9G"}
|
package/style/factory.js
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Style-to-source factory: creates Honua SDK surface instances from a
|
|
3
|
+
* HonuaStyleSpecification's source definitions.
|
|
4
|
+
*
|
|
5
|
+
* @module
|
|
6
|
+
*/
|
|
7
|
+
import { HonuaFeatureLayer, HonuaMapService, HonuaOgcFeatures, } from "../core/surfaces.js";
|
|
8
|
+
import { parseFeatureLayerUrl, parseMapServiceUrl } from "../esri-compat/url.js";
|
|
9
|
+
import { isFeatureServiceSource, isMapServiceSource, isOgcFeaturesSource, isWmsSource, isWmtsSource, parseOgcFeaturesUrl, } from "./specification.js";
|
|
10
|
+
import { resolveWmsSpec, resolveWmtsSpec } from "./wms-wmts-resolvers.js";
|
|
11
|
+
/**
|
|
12
|
+
* Create Honua SDK surface instances for each source in a style.
|
|
13
|
+
*
|
|
14
|
+
* Non-Honua sources (e.g. `vector`, `raster`, `geojson`) are mapped to `null` —
|
|
15
|
+
* these should be handled directly by MapLibre's built-in source types.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```ts
|
|
19
|
+
* const sources = createSources(client, style);
|
|
20
|
+
* const parcels = sources.get("parcels"); // HonuaFeatureLayer
|
|
21
|
+
* if (parcels instanceof HonuaFeatureLayer) {
|
|
22
|
+
* const features = await parcels.queryFeatures({ where: "status = 'active'" });
|
|
23
|
+
* }
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export function createSources(client, style) {
|
|
27
|
+
const result = new Map();
|
|
28
|
+
for (const [name, spec] of Object.entries(style.sources)) {
|
|
29
|
+
if (isFeatureServiceSource(spec)) {
|
|
30
|
+
const parsed = parseFeatureLayerUrl(spec.url);
|
|
31
|
+
result.set(name, new HonuaFeatureLayer({
|
|
32
|
+
client,
|
|
33
|
+
serviceId: parsed.serviceId,
|
|
34
|
+
layerId: parsed.layerId,
|
|
35
|
+
}));
|
|
36
|
+
}
|
|
37
|
+
else if (isMapServiceSource(spec)) {
|
|
38
|
+
const parsed = parseMapServiceUrl(spec.url);
|
|
39
|
+
result.set(name, new HonuaMapService({
|
|
40
|
+
client,
|
|
41
|
+
serviceId: parsed.serviceId,
|
|
42
|
+
}));
|
|
43
|
+
}
|
|
44
|
+
else if (isOgcFeaturesSource(spec)) {
|
|
45
|
+
const parsed = parseOgcFeaturesUrl(spec.url);
|
|
46
|
+
const ogcRoot = new HonuaOgcFeatures({ client });
|
|
47
|
+
const collectionId = spec.collectionId ?? parsed.collectionId ?? "";
|
|
48
|
+
result.set(name, ogcRoot.collection(collectionId));
|
|
49
|
+
}
|
|
50
|
+
else if (isWmsSource(spec)) {
|
|
51
|
+
result.set(name, resolveWmsSpec(client, spec));
|
|
52
|
+
}
|
|
53
|
+
else if (isWmtsSource(spec)) {
|
|
54
|
+
result.set(name, resolveWmtsSpec(client, spec));
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
result.set(name, null);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return result;
|
|
61
|
+
}
|
package/style/index.d.ts
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@honua/sdk-js/style` — Honua style spec source parsers and validators.
|
|
3
|
+
*
|
|
4
|
+
* Translate `Source`/`SourceDescriptor` shapes to and from MapLibre-style
|
|
5
|
+
* source specifications, and validate Honua style documents.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* import { createSources, validateHonuaStyle, parseOgcFeaturesUrl } from "@honua/sdk-js/style";
|
|
10
|
+
*
|
|
11
|
+
* const sources = createSources(dataset.sourceDescriptors);
|
|
12
|
+
* const errors = validateHonuaStyle(myStyle);
|
|
13
|
+
* if (errors.length) throw new Error(errors.map(e => e.message).join("\n"));
|
|
14
|
+
*
|
|
15
|
+
* const parsed = parseOgcFeaturesUrl("https://example.com/ogc/collections/parcels/items");
|
|
16
|
+
* console.log(parsed.collectionId); // "parcels"
|
|
17
|
+
* ```
|
|
18
|
+
*
|
|
19
|
+
* @packageDocumentation
|
|
20
|
+
*/
|
|
21
|
+
export { isHonuaSource, isFeatureServiceSource, isMapServiceSource, isOgcFeaturesSource, isWmsSource, isWmtsSource, parseOgcFeaturesUrl, validateHonuaStyle, } from "./specification.js";
|
|
22
|
+
export type { HonuaSourceBase, HonuaFeatureServiceSourceSpecification, HonuaMapServiceSourceSpecification, HonuaOgcFeaturesSourceSpecification, HonuaWmsSourceSpecification, HonuaWmtsSourceSpecification, HonuaSourceSpecification, HonuaLayerSpecification, HonuaStyleSpecification, ParsedOgcFeaturesUrl, StyleValidationError, } from "./specification.js";
|
|
23
|
+
export { createSources } from "./factory.js";
|
|
24
|
+
export type { ResolvedSource } from "./factory.js";
|
|
25
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/style/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EACL,aAAa,EACb,sBAAsB,EACtB,kBAAkB,EAClB,mBAAmB,EACnB,WAAW,EACX,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,eAAe,EACf,sCAAsC,EACtC,kCAAkC,EAClC,mCAAmC,EACnC,2BAA2B,EAC3B,4BAA4B,EAC5B,wBAAwB,EACxB,uBAAuB,EACvB,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC"}
|
package/style/index.js
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@honua/sdk-js/style` — Honua style spec source parsers and validators.
|
|
3
|
+
*
|
|
4
|
+
* Translate `Source`/`SourceDescriptor` shapes to and from MapLibre-style
|
|
5
|
+
* source specifications, and validate Honua style documents.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* import { createSources, validateHonuaStyle, parseOgcFeaturesUrl } from "@honua/sdk-js/style";
|
|
10
|
+
*
|
|
11
|
+
* const sources = createSources(dataset.sourceDescriptors);
|
|
12
|
+
* const errors = validateHonuaStyle(myStyle);
|
|
13
|
+
* if (errors.length) throw new Error(errors.map(e => e.message).join("\n"));
|
|
14
|
+
*
|
|
15
|
+
* const parsed = parseOgcFeaturesUrl("https://example.com/ogc/collections/parcels/items");
|
|
16
|
+
* console.log(parsed.collectionId); // "parcels"
|
|
17
|
+
* ```
|
|
18
|
+
*
|
|
19
|
+
* @packageDocumentation
|
|
20
|
+
*/
|
|
21
|
+
export { isHonuaSource, isFeatureServiceSource, isMapServiceSource, isOgcFeaturesSource, isWmsSource, isWmtsSource, parseOgcFeaturesUrl, validateHonuaStyle, } from "./specification.js";
|
|
22
|
+
export { createSources } from "./factory.js";
|
|
23
|
+
// Feature Service and Map Service URL parsers are exported from
|
|
24
|
+
// esri-compat/url.ts via the main index.ts barrel — no re-export needed here.
|