@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,273 @@
|
|
|
1
|
+
import { HonuaAbortError, HonuaHttpError, HonuaNetworkError, HonuaTimeoutError } from "./errors.js";
|
|
2
|
+
export const DEFAULT_RETRY_STATUSES = new Set([429, 502, 503, 504]);
|
|
3
|
+
export const DEFAULT_RETRY_METHODS = new Set(["GET", "PUT", "DELETE"]);
|
|
4
|
+
export function normalizeTimeoutMs(timeoutMs) {
|
|
5
|
+
if (typeof timeoutMs !== "number" || !Number.isFinite(timeoutMs)) {
|
|
6
|
+
return undefined;
|
|
7
|
+
}
|
|
8
|
+
return Math.max(1, Math.trunc(timeoutMs));
|
|
9
|
+
}
|
|
10
|
+
export function normalizeRetryOptions(options) {
|
|
11
|
+
if (!options) {
|
|
12
|
+
return undefined;
|
|
13
|
+
}
|
|
14
|
+
const maxRetries = typeof options.maxRetries === "number" && Number.isFinite(options.maxRetries)
|
|
15
|
+
? Math.max(0, Math.trunc(options.maxRetries))
|
|
16
|
+
: 0;
|
|
17
|
+
if (maxRetries < 1) {
|
|
18
|
+
return undefined;
|
|
19
|
+
}
|
|
20
|
+
const baseDelayMs = typeof options.baseDelayMs === "number" && Number.isFinite(options.baseDelayMs)
|
|
21
|
+
? Math.max(1, Math.trunc(options.baseDelayMs))
|
|
22
|
+
: 100;
|
|
23
|
+
const maxDelayMs = typeof options.maxDelayMs === "number" && Number.isFinite(options.maxDelayMs)
|
|
24
|
+
? Math.max(baseDelayMs, Math.trunc(options.maxDelayMs))
|
|
25
|
+
: 2_000;
|
|
26
|
+
const retryStatuses = new Set((options.retryStatuses ?? Array.from(DEFAULT_RETRY_STATUSES))
|
|
27
|
+
.map((status) => Math.trunc(status))
|
|
28
|
+
.filter((status) => Number.isFinite(status) && status >= 100 && status <= 599));
|
|
29
|
+
if (retryStatuses.size === 0) {
|
|
30
|
+
for (const status of DEFAULT_RETRY_STATUSES) {
|
|
31
|
+
retryStatuses.add(status);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return {
|
|
35
|
+
maxRetries,
|
|
36
|
+
baseDelayMs,
|
|
37
|
+
maxDelayMs,
|
|
38
|
+
retryStatuses,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Parse a `Retry-After` header value (delta-seconds or HTTP-date) into a delay
|
|
43
|
+
* in milliseconds. Shared by the REST {@link parseRetryAfterMs} response helper
|
|
44
|
+
* and the gRPC-web path, which reads the same header off the Connect error
|
|
45
|
+
* metadata (a `Headers`-shaped object) rather than a `Response`.
|
|
46
|
+
*/
|
|
47
|
+
export function parseRetryAfterHeaderMs(headers) {
|
|
48
|
+
const value = headers.get("retry-after");
|
|
49
|
+
if (!value) {
|
|
50
|
+
return undefined;
|
|
51
|
+
}
|
|
52
|
+
const seconds = Number.parseInt(value, 10);
|
|
53
|
+
if (Number.isFinite(seconds) && seconds >= 0) {
|
|
54
|
+
return seconds * 1_000;
|
|
55
|
+
}
|
|
56
|
+
const targetTime = Date.parse(value);
|
|
57
|
+
if (!Number.isFinite(targetTime)) {
|
|
58
|
+
return undefined;
|
|
59
|
+
}
|
|
60
|
+
return Math.max(0, targetTime - Date.now());
|
|
61
|
+
}
|
|
62
|
+
export function parseRetryAfterMs(response) {
|
|
63
|
+
return parseRetryAfterHeaderMs(response.headers);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Decide whether a failed attempt should be retried. Idempotent/replay-safe
|
|
67
|
+
* methods (GET/PUT/DELETE) are retried on the configured retry statuses or on
|
|
68
|
+
* transient network/timeout errors; aborts are never retried.
|
|
69
|
+
*/
|
|
70
|
+
export function shouldRetryRequest(retryOptions, method, attempt, statusCode, error) {
|
|
71
|
+
if (!retryOptions || attempt >= retryOptions.maxRetries) {
|
|
72
|
+
return false;
|
|
73
|
+
}
|
|
74
|
+
if (!DEFAULT_RETRY_METHODS.has(method)) {
|
|
75
|
+
return false;
|
|
76
|
+
}
|
|
77
|
+
if (error instanceof HonuaAbortError) {
|
|
78
|
+
return false;
|
|
79
|
+
}
|
|
80
|
+
if (statusCode !== undefined) {
|
|
81
|
+
return retryOptions.retryStatuses.has(statusCode);
|
|
82
|
+
}
|
|
83
|
+
return error instanceof HonuaNetworkError || error instanceof HonuaTimeoutError;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Resolve the backoff delay before the next attempt. A server `Retry-After`
|
|
87
|
+
* header (capped by `maxDelayMs`) wins; otherwise an exponential backoff with
|
|
88
|
+
* full jitter in the [0.5x, 1x] band is used.
|
|
89
|
+
*/
|
|
90
|
+
export function resolveRetryDelayMs(retryOptions, attempt, response) {
|
|
91
|
+
const retryAfterMs = response ? parseRetryAfterMs(response) : undefined;
|
|
92
|
+
if (retryAfterMs !== undefined) {
|
|
93
|
+
return Math.min(retryOptions?.maxDelayMs ?? retryAfterMs, retryAfterMs);
|
|
94
|
+
}
|
|
95
|
+
if (!retryOptions) {
|
|
96
|
+
return 0;
|
|
97
|
+
}
|
|
98
|
+
const exponentialDelay = retryOptions.baseDelayMs * 2 ** attempt;
|
|
99
|
+
const cappedDelay = Math.min(retryOptions.maxDelayMs, exponentialDelay);
|
|
100
|
+
return cappedDelay * (0.5 + Math.random() * 0.5);
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* gRPC/Connect numeric status codes that map to the transient REST retry
|
|
104
|
+
* statuses in {@link DEFAULT_RETRY_STATUSES}, so the grpc-web transport retries
|
|
105
|
+
* the same class of transient failures as REST. Mirrors the gRPC retry
|
|
106
|
+
* conventions: `resource_exhausted` (~429), `unavailable` (~502/503),
|
|
107
|
+
* `deadline_exceeded` (~504), and the transient `aborted` concurrency code.
|
|
108
|
+
*/
|
|
109
|
+
export const DEFAULT_RETRYABLE_GRPC_CODES = new Set([
|
|
110
|
+
4, // deadline_exceeded
|
|
111
|
+
8, // resource_exhausted
|
|
112
|
+
10, // aborted
|
|
113
|
+
14, // unavailable
|
|
114
|
+
]);
|
|
115
|
+
/** Connect/gRPC `canceled` code — caller/abort-driven, never retried. */
|
|
116
|
+
const GRPC_CODE_CANCELED = 1;
|
|
117
|
+
/**
|
|
118
|
+
* Extract the numeric gRPC/Connect status code off a thrown error (a
|
|
119
|
+
* `ConnectError` carries a numeric `code`). Returns `undefined` for non-Connect
|
|
120
|
+
* errors so callers can treat them as non-retryable.
|
|
121
|
+
*/
|
|
122
|
+
export function connectErrorCode(error) {
|
|
123
|
+
if (typeof error === "object" &&
|
|
124
|
+
error !== null &&
|
|
125
|
+
"code" in error &&
|
|
126
|
+
typeof error.code === "number") {
|
|
127
|
+
return error.code;
|
|
128
|
+
}
|
|
129
|
+
return undefined;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Decide whether a failed gRPC-web call should be retried. Mirrors
|
|
133
|
+
* {@link shouldRetryRequest} for the Connect transport: retries only the
|
|
134
|
+
* transient {@link DEFAULT_RETRYABLE_GRPC_CODES} while honoring `maxRetries`,
|
|
135
|
+
* and never retries once the call's abort signal has fired (caller abort or the
|
|
136
|
+
* `timeoutMs` deadline) or for the `canceled` code.
|
|
137
|
+
*
|
|
138
|
+
* Replay-safety (unary-only, since server-streaming responses cannot be safely
|
|
139
|
+
* replayed mid-iteration) is enforced by the caller, mirroring the REST
|
|
140
|
+
* {@link DEFAULT_RETRY_METHODS} idempotency gate.
|
|
141
|
+
*/
|
|
142
|
+
export function shouldRetryGrpcCall(retryOptions, attempt, error, aborted) {
|
|
143
|
+
if (!retryOptions || attempt >= retryOptions.maxRetries) {
|
|
144
|
+
return false;
|
|
145
|
+
}
|
|
146
|
+
if (aborted) {
|
|
147
|
+
return false;
|
|
148
|
+
}
|
|
149
|
+
const code = connectErrorCode(error);
|
|
150
|
+
if (code === undefined || code === GRPC_CODE_CANCELED) {
|
|
151
|
+
return false;
|
|
152
|
+
}
|
|
153
|
+
return DEFAULT_RETRYABLE_GRPC_CODES.has(code);
|
|
154
|
+
}
|
|
155
|
+
function connectErrorMetadata(error) {
|
|
156
|
+
if (typeof error === "object" && error !== null && "metadata" in error) {
|
|
157
|
+
const metadata = error.metadata;
|
|
158
|
+
if (metadata && typeof metadata.get === "function") {
|
|
159
|
+
return metadata;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
return undefined;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Resolve the backoff delay before the next gRPC-web attempt. Reuses the shared
|
|
166
|
+
* {@link resolveRetryDelayMs} exponential-with-jitter math; a `retry-after`
|
|
167
|
+
* value carried on the Connect error metadata (capped by `maxDelayMs`) wins,
|
|
168
|
+
* mirroring the REST `Retry-After` handling.
|
|
169
|
+
*/
|
|
170
|
+
export function resolveGrpcRetryDelayMs(retryOptions, attempt, error) {
|
|
171
|
+
const metadata = connectErrorMetadata(error);
|
|
172
|
+
const retryAfterMs = metadata ? parseRetryAfterHeaderMs(metadata) : undefined;
|
|
173
|
+
if (retryAfterMs !== undefined) {
|
|
174
|
+
return Math.min(retryOptions?.maxDelayMs ?? retryAfterMs, retryAfterMs);
|
|
175
|
+
}
|
|
176
|
+
return resolveRetryDelayMs(retryOptions, attempt);
|
|
177
|
+
}
|
|
178
|
+
export async function sleep(ms, signal) {
|
|
179
|
+
if (ms <= 0) {
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
if (signal?.aborted) {
|
|
183
|
+
throw new HonuaAbortError();
|
|
184
|
+
}
|
|
185
|
+
await new Promise((resolve, reject) => {
|
|
186
|
+
const timer = setTimeout(() => {
|
|
187
|
+
signal?.removeEventListener("abort", abort);
|
|
188
|
+
resolve();
|
|
189
|
+
}, ms);
|
|
190
|
+
const abort = () => {
|
|
191
|
+
clearTimeout(timer);
|
|
192
|
+
reject(new HonuaAbortError());
|
|
193
|
+
};
|
|
194
|
+
signal?.addEventListener("abort", abort, { once: true });
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
export function normalizeNetworkError(error) {
|
|
198
|
+
if (error instanceof Error && error.name === "AbortError") {
|
|
199
|
+
return new HonuaAbortError();
|
|
200
|
+
}
|
|
201
|
+
if (error instanceof Error) {
|
|
202
|
+
return new HonuaNetworkError(error.message, error);
|
|
203
|
+
}
|
|
204
|
+
return new HonuaNetworkError(String(error), error);
|
|
205
|
+
}
|
|
206
|
+
export function createTimeoutSignal(existingSignal, timeoutMs) {
|
|
207
|
+
if (timeoutMs === undefined) {
|
|
208
|
+
return {
|
|
209
|
+
signal: existingSignal ?? undefined,
|
|
210
|
+
didTimeout: false,
|
|
211
|
+
dispose: () => undefined,
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
const controller = new AbortController();
|
|
215
|
+
let didTimeout = false;
|
|
216
|
+
let timer;
|
|
217
|
+
let onAbort;
|
|
218
|
+
timer = setTimeout(() => {
|
|
219
|
+
didTimeout = true;
|
|
220
|
+
controller.abort();
|
|
221
|
+
}, timeoutMs);
|
|
222
|
+
if (existingSignal) {
|
|
223
|
+
if (existingSignal.aborted) {
|
|
224
|
+
controller.abort();
|
|
225
|
+
}
|
|
226
|
+
else {
|
|
227
|
+
onAbort = () => {
|
|
228
|
+
controller.abort();
|
|
229
|
+
};
|
|
230
|
+
existingSignal.addEventListener("abort", onAbort, { once: true });
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
return {
|
|
234
|
+
signal: controller.signal,
|
|
235
|
+
get didTimeout() {
|
|
236
|
+
return didTimeout;
|
|
237
|
+
},
|
|
238
|
+
dispose: () => {
|
|
239
|
+
if (timer) {
|
|
240
|
+
clearTimeout(timer);
|
|
241
|
+
timer = undefined;
|
|
242
|
+
}
|
|
243
|
+
if (existingSignal && onAbort) {
|
|
244
|
+
existingSignal.removeEventListener("abort", onAbort);
|
|
245
|
+
onAbort = undefined;
|
|
246
|
+
}
|
|
247
|
+
},
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Map a non-OK HTTP response body into a {@link HonuaHttpError}, preferring the
|
|
252
|
+
* server's structured error message (`error.message`, `message`, or `detail`)
|
|
253
|
+
* and falling back to a generic message while preserving the raw body.
|
|
254
|
+
*/
|
|
255
|
+
export function toHttpError(statusCode, body) {
|
|
256
|
+
const fallback = "Request failed";
|
|
257
|
+
if (isObject(body)) {
|
|
258
|
+
const error = body.error;
|
|
259
|
+
if (isObject(error) && typeof error.message === "string") {
|
|
260
|
+
return new HonuaHttpError(statusCode, error.message, body);
|
|
261
|
+
}
|
|
262
|
+
if (typeof body.message === "string") {
|
|
263
|
+
return new HonuaHttpError(statusCode, body.message, body);
|
|
264
|
+
}
|
|
265
|
+
if (typeof body.detail === "string") {
|
|
266
|
+
return new HonuaHttpError(statusCode, body.detail, body);
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
return new HonuaHttpError(statusCode, fallback, body);
|
|
270
|
+
}
|
|
271
|
+
function isObject(value) {
|
|
272
|
+
return typeof value === "object" && value !== null;
|
|
273
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import type { EsriGeometryType, EsriSpatialRel, HonuaSpatialReference } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* A spatial filter fragment that can be spread into a `QueryFeaturesRequest`
|
|
4
|
+
* or applied via `QueryBuilder.geometry()` / `.geometryType()` / `.spatialRel()`.
|
|
5
|
+
*/
|
|
6
|
+
export interface SpatialFilter {
|
|
7
|
+
geometry: Record<string, unknown>;
|
|
8
|
+
geometryType: EsriGeometryType;
|
|
9
|
+
spatialRel?: EsriSpatialRel;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Create an envelope (bounding box) spatial filter.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```ts
|
|
16
|
+
* const req: QueryFeaturesRequest = {
|
|
17
|
+
* serviceId: "svc", layerId: 0,
|
|
18
|
+
* ...envelope(-118.5, 33.7, -117.5, 34.2),
|
|
19
|
+
* };
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export declare function envelope(xmin: number, ymin: number, xmax: number, ymax: number, spatialReference?: HonuaSpatialReference): SpatialFilter;
|
|
23
|
+
/**
|
|
24
|
+
* Create a point spatial filter.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```ts
|
|
28
|
+
* const req: QueryFeaturesRequest = {
|
|
29
|
+
* serviceId: "svc", layerId: 0,
|
|
30
|
+
* ...point(-118.24, 34.05),
|
|
31
|
+
* };
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
export declare function point(x: number, y: number, spatialReference?: HonuaSpatialReference): SpatialFilter;
|
|
35
|
+
/**
|
|
36
|
+
* Create a polygon spatial filter from an array of rings.
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* ```ts
|
|
40
|
+
* const req: QueryFeaturesRequest = {
|
|
41
|
+
* serviceId: "svc", layerId: 0,
|
|
42
|
+
* ...polygon([[[-118, 34], [-117, 34], [-117, 35], [-118, 35], [-118, 34]]]),
|
|
43
|
+
* };
|
|
44
|
+
* ```
|
|
45
|
+
*/
|
|
46
|
+
export declare function polygon(rings: number[][][], spatialReference?: HonuaSpatialReference): SpatialFilter;
|
|
47
|
+
/**
|
|
48
|
+
* Create an envelope spatial filter centered on a point, approximating a
|
|
49
|
+
* circular buffer as a bounding box.
|
|
50
|
+
*
|
|
51
|
+
* @param x - Center x coordinate
|
|
52
|
+
* @param y - Center y coordinate
|
|
53
|
+
* @param distance - Half-width of the envelope in coordinate units
|
|
54
|
+
* @param spatialReference - Optional spatial reference
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
* ```ts
|
|
58
|
+
* // 0.5-degree bounding box around a point
|
|
59
|
+
* const req: QueryFeaturesRequest = {
|
|
60
|
+
* serviceId: "svc", layerId: 0,
|
|
61
|
+
* ...buffer(-118.24, 34.05, 0.5),
|
|
62
|
+
* };
|
|
63
|
+
* ```
|
|
64
|
+
*/
|
|
65
|
+
export declare function buffer(x: number, y: number, distance: number, spatialReference?: HonuaSpatialReference): SpatialFilter;
|
|
66
|
+
/**
|
|
67
|
+
* Wrap an existing geometry with `esriSpatialRelIntersects`.
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* ```ts
|
|
71
|
+
* const filter = spatialIntersects({ xmin: -180, ymin: -90, xmax: 180, ymax: 90 });
|
|
72
|
+
* ```
|
|
73
|
+
*/
|
|
74
|
+
export declare function spatialIntersects(geometry: Record<string, unknown>): SpatialFilter;
|
|
75
|
+
/**
|
|
76
|
+
* Wrap an existing geometry with `esriSpatialRelContains`.
|
|
77
|
+
*
|
|
78
|
+
* @example
|
|
79
|
+
* ```ts
|
|
80
|
+
* const filter = spatialContains({ rings: [[[-118, 34], [-117, 34], [-117, 35], [-118, 35], [-118, 34]]] });
|
|
81
|
+
* ```
|
|
82
|
+
*/
|
|
83
|
+
export declare function spatialContains(geometry: Record<string, unknown>): SpatialFilter;
|
|
84
|
+
/**
|
|
85
|
+
* Wrap an existing geometry with `esriSpatialRelWithin`.
|
|
86
|
+
*
|
|
87
|
+
* @example
|
|
88
|
+
* ```ts
|
|
89
|
+
* const filter = spatialWithin({ rings: [[[-118, 34], [-117, 34], [-117, 35], [-118, 35], [-118, 34]]] });
|
|
90
|
+
* ```
|
|
91
|
+
*/
|
|
92
|
+
export declare function spatialWithin(geometry: Record<string, unknown>): SpatialFilter;
|
|
93
|
+
//# sourceMappingURL=spatial-filter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spatial-filter.d.ts","sourceRoot":"","sources":["../../../src/core/spatial-filter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAE1F;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,YAAY,EAAE,gBAAgB,CAAC;IAC/B,UAAU,CAAC,EAAE,cAAc,CAAC;CAC7B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,QAAQ,CACtB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,gBAAgB,CAAC,EAAE,qBAAqB,GACvC,aAAa,CAQf;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,qBAAqB,GAAG,aAAa,CAQnG;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,gBAAgB,CAAC,EAAE,qBAAqB,GAAG,aAAa,CAQpG;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,MAAM,CACpB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,QAAQ,EAAE,MAAM,EAChB,gBAAgB,CAAC,EAAE,qBAAqB,GACvC,aAAa,CAEf;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,aAAa,CAMlF;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,aAAa,CAMhF;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,aAAa,CAM9E"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Create an envelope (bounding box) spatial filter.
|
|
3
|
+
*
|
|
4
|
+
* @example
|
|
5
|
+
* ```ts
|
|
6
|
+
* const req: QueryFeaturesRequest = {
|
|
7
|
+
* serviceId: "svc", layerId: 0,
|
|
8
|
+
* ...envelope(-118.5, 33.7, -117.5, 34.2),
|
|
9
|
+
* };
|
|
10
|
+
* ```
|
|
11
|
+
*/
|
|
12
|
+
export function envelope(xmin, ymin, xmax, ymax, spatialReference) {
|
|
13
|
+
const geometry = { xmin, ymin, xmax, ymax };
|
|
14
|
+
if (spatialReference)
|
|
15
|
+
geometry.spatialReference = spatialReference;
|
|
16
|
+
return {
|
|
17
|
+
geometry,
|
|
18
|
+
geometryType: "esriGeometryEnvelope",
|
|
19
|
+
spatialRel: "esriSpatialRelIntersects",
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Create a point spatial filter.
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```ts
|
|
27
|
+
* const req: QueryFeaturesRequest = {
|
|
28
|
+
* serviceId: "svc", layerId: 0,
|
|
29
|
+
* ...point(-118.24, 34.05),
|
|
30
|
+
* };
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export function point(x, y, spatialReference) {
|
|
34
|
+
const geometry = { x, y };
|
|
35
|
+
if (spatialReference)
|
|
36
|
+
geometry.spatialReference = spatialReference;
|
|
37
|
+
return {
|
|
38
|
+
geometry,
|
|
39
|
+
geometryType: "esriGeometryPoint",
|
|
40
|
+
spatialRel: "esriSpatialRelIntersects",
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Create a polygon spatial filter from an array of rings.
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* ```ts
|
|
48
|
+
* const req: QueryFeaturesRequest = {
|
|
49
|
+
* serviceId: "svc", layerId: 0,
|
|
50
|
+
* ...polygon([[[-118, 34], [-117, 34], [-117, 35], [-118, 35], [-118, 34]]]),
|
|
51
|
+
* };
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
export function polygon(rings, spatialReference) {
|
|
55
|
+
const geometry = { rings };
|
|
56
|
+
if (spatialReference)
|
|
57
|
+
geometry.spatialReference = spatialReference;
|
|
58
|
+
return {
|
|
59
|
+
geometry,
|
|
60
|
+
geometryType: "esriGeometryPolygon",
|
|
61
|
+
spatialRel: "esriSpatialRelIntersects",
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Create an envelope spatial filter centered on a point, approximating a
|
|
66
|
+
* circular buffer as a bounding box.
|
|
67
|
+
*
|
|
68
|
+
* @param x - Center x coordinate
|
|
69
|
+
* @param y - Center y coordinate
|
|
70
|
+
* @param distance - Half-width of the envelope in coordinate units
|
|
71
|
+
* @param spatialReference - Optional spatial reference
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* ```ts
|
|
75
|
+
* // 0.5-degree bounding box around a point
|
|
76
|
+
* const req: QueryFeaturesRequest = {
|
|
77
|
+
* serviceId: "svc", layerId: 0,
|
|
78
|
+
* ...buffer(-118.24, 34.05, 0.5),
|
|
79
|
+
* };
|
|
80
|
+
* ```
|
|
81
|
+
*/
|
|
82
|
+
export function buffer(x, y, distance, spatialReference) {
|
|
83
|
+
return envelope(x - distance, y - distance, x + distance, y + distance, spatialReference);
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Wrap an existing geometry with `esriSpatialRelIntersects`.
|
|
87
|
+
*
|
|
88
|
+
* @example
|
|
89
|
+
* ```ts
|
|
90
|
+
* const filter = spatialIntersects({ xmin: -180, ymin: -90, xmax: 180, ymax: 90 });
|
|
91
|
+
* ```
|
|
92
|
+
*/
|
|
93
|
+
export function spatialIntersects(geometry) {
|
|
94
|
+
return {
|
|
95
|
+
geometry,
|
|
96
|
+
geometryType: detectGeometryType(geometry),
|
|
97
|
+
spatialRel: "esriSpatialRelIntersects",
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Wrap an existing geometry with `esriSpatialRelContains`.
|
|
102
|
+
*
|
|
103
|
+
* @example
|
|
104
|
+
* ```ts
|
|
105
|
+
* const filter = spatialContains({ rings: [[[-118, 34], [-117, 34], [-117, 35], [-118, 35], [-118, 34]]] });
|
|
106
|
+
* ```
|
|
107
|
+
*/
|
|
108
|
+
export function spatialContains(geometry) {
|
|
109
|
+
return {
|
|
110
|
+
geometry,
|
|
111
|
+
geometryType: detectGeometryType(geometry),
|
|
112
|
+
spatialRel: "esriSpatialRelContains",
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Wrap an existing geometry with `esriSpatialRelWithin`.
|
|
117
|
+
*
|
|
118
|
+
* @example
|
|
119
|
+
* ```ts
|
|
120
|
+
* const filter = spatialWithin({ rings: [[[-118, 34], [-117, 34], [-117, 35], [-118, 35], [-118, 34]]] });
|
|
121
|
+
* ```
|
|
122
|
+
*/
|
|
123
|
+
export function spatialWithin(geometry) {
|
|
124
|
+
return {
|
|
125
|
+
geometry,
|
|
126
|
+
geometryType: detectGeometryType(geometry),
|
|
127
|
+
spatialRel: "esriSpatialRelWithin",
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Detect the Esri geometry type from a plain geometry object by inspecting
|
|
132
|
+
* its shape (duck-typing).
|
|
133
|
+
*
|
|
134
|
+
* @internal
|
|
135
|
+
*/
|
|
136
|
+
function detectGeometryType(geometry) {
|
|
137
|
+
if ("xmin" in geometry && "ymin" in geometry && "xmax" in geometry && "ymax" in geometry) {
|
|
138
|
+
return "esriGeometryEnvelope";
|
|
139
|
+
}
|
|
140
|
+
if ("rings" in geometry) {
|
|
141
|
+
return "esriGeometryPolygon";
|
|
142
|
+
}
|
|
143
|
+
if ("paths" in geometry) {
|
|
144
|
+
return "esriGeometryPolyline";
|
|
145
|
+
}
|
|
146
|
+
if ("points" in geometry) {
|
|
147
|
+
return "esriGeometryMultipoint";
|
|
148
|
+
}
|
|
149
|
+
if ("x" in geometry && "y" in geometry) {
|
|
150
|
+
return "esriGeometryPoint";
|
|
151
|
+
}
|
|
152
|
+
return "esriGeometryPoint";
|
|
153
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Static STAC catalog reader.
|
|
3
|
+
*
|
|
4
|
+
* A large share of public STAC catalogs are not API servers — they are
|
|
5
|
+
* static `catalog.json` / `collection.json` / item trees served from object
|
|
6
|
+
* storage, with no `/search` endpoint. This reader walks such a tree the
|
|
7
|
+
* spec-driven way: it follows `rel="child"` links to descend catalogs /
|
|
8
|
+
* collections and `rel="item"` links to reach STAC Items, resolving every
|
|
9
|
+
* href against the document it was found in (STAC best-practice relative
|
|
10
|
+
* links). Filtering (`collections` / `bbox` / `datetime` / `limit`) is
|
|
11
|
+
* applied client-side and the result is projected onto the same
|
|
12
|
+
* {@link HonuaStacItemCollectionResponse} envelope the STAC API search path
|
|
13
|
+
* returns, so the canonical `Source` surface is identical across both
|
|
14
|
+
* layouts.
|
|
15
|
+
*
|
|
16
|
+
* @module
|
|
17
|
+
*/
|
|
18
|
+
import type { HonuaClient } from "./client.js";
|
|
19
|
+
import type { HonuaStacItemCollectionResponse } from "./types.js";
|
|
20
|
+
/** Bounded search parameters for a static catalog traversal. */
|
|
21
|
+
export interface StacStaticSearchParams {
|
|
22
|
+
collections?: readonly string[];
|
|
23
|
+
bbox?: readonly [number, number, number, number];
|
|
24
|
+
datetime?: string;
|
|
25
|
+
limit?: number;
|
|
26
|
+
signal?: AbortSignal;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Reader bound to the URL of a static STAC catalog / collection root. The
|
|
30
|
+
* URL is the client baseUrl (the transport resolves same-origin absolute
|
|
31
|
+
* child/item hrefs directly), so `rootUrl` is normally `""` (the baseUrl
|
|
32
|
+
* itself) but may be an absolute `catalog.json` URL.
|
|
33
|
+
*/
|
|
34
|
+
export declare class HonuaStacStaticCatalog {
|
|
35
|
+
readonly client: HonuaClient;
|
|
36
|
+
private readonly rootUrl;
|
|
37
|
+
constructor(client: HonuaClient, rootUrl?: string);
|
|
38
|
+
/**
|
|
39
|
+
* Traverse the catalog tree, collect matching items, and return them in
|
|
40
|
+
* the STAC search envelope shape.
|
|
41
|
+
*/
|
|
42
|
+
search(params?: StacStaticSearchParams): Promise<HonuaStacItemCollectionResponse>;
|
|
43
|
+
private fetchDoc;
|
|
44
|
+
/**
|
|
45
|
+
* Breadth-first walk collecting item documents. Descends `rel="child"`
|
|
46
|
+
* links; a `collections` filter prunes Collection subtrees whose `id`
|
|
47
|
+
* is not requested. Bounded by {@link MAX_DOCUMENTS} and the item cap.
|
|
48
|
+
*/
|
|
49
|
+
private collectItems;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=stac-static.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stac-static.d.ts","sourceRoot":"","sources":["../../../src/core/stac-static.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,KAAK,EAAE,+BAA+B,EAAyB,MAAM,YAAY,CAAC;AAEzF,gEAAgE;AAChE,MAAM,WAAW,sBAAsB;IACrC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,IAAI,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAeD;;;;;GAKG;AACH,qBAAa,sBAAsB;IACjC,SAAgB,MAAM,EAAE,WAAW,CAAC;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAEd,MAAM,EAAE,WAAW,EAAE,OAAO,SAAK;IAKpD;;;OAGG;IACU,MAAM,CAAC,MAAM,GAAE,sBAA2B,GAAG,OAAO,CAAC,+BAA+B,CAAC;YAcpF,QAAQ;IAMtB;;;;OAIG;YACW,YAAY;CA6D3B"}
|