@honua/react 0.0.20-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +9 -0
- package/contract/analytics-sources.d.ts +149 -0
- package/contract/analytics-sources.d.ts.map +1 -0
- package/contract/analytics-sources.js +235 -0
- package/contract/edit-session.d.ts +203 -0
- package/contract/edit-session.d.ts.map +1 -0
- package/contract/edit-session.js +760 -0
- package/contract/edit-sketch.d.ts +91 -0
- package/contract/edit-sketch.d.ts.map +1 -0
- package/contract/edit-sketch.js +281 -0
- package/contract/index.d.ts +61 -0
- package/contract/index.d.ts.map +1 -0
- package/contract/index.js +51 -0
- package/contract/jobs.d.ts +149 -0
- package/contract/jobs.d.ts.map +1 -0
- package/contract/jobs.js +40 -0
- package/contract/source.d.ts +423 -0
- package/contract/source.d.ts.map +1 -0
- package/contract/source.js +3802 -0
- package/contract/spatial-aggregation.d.ts +336 -0
- package/contract/spatial-aggregation.d.ts.map +1 -0
- package/contract/spatial-aggregation.js +298 -0
- package/contract/temporal.d.ts +455 -0
- package/contract/temporal.d.ts.map +1 -0
- package/contract/temporal.js +146 -0
- package/contract/tiles.d.ts +370 -0
- package/contract/tiles.d.ts.map +1 -0
- package/contract/tiles.js +519 -0
- package/contract/types.d.ts +665 -0
- package/contract/types.d.ts.map +1 -0
- package/contract/types.js +175 -0
- package/contract/widget-source.d.ts +205 -0
- package/contract/widget-source.d.ts.map +1 -0
- package/contract/widget-source.js +1473 -0
- package/control-plane/client.d.ts +95 -0
- package/control-plane/client.d.ts.map +1 -0
- package/control-plane/client.js +374 -0
- package/control-plane/index.d.ts +18 -0
- package/control-plane/index.d.ts.map +1 -0
- package/control-plane/index.js +14 -0
- package/control-plane/types.d.ts +233 -0
- package/control-plane/types.d.ts.map +1 -0
- package/control-plane/types.js +7 -0
- package/core/batch.d.ts +37 -0
- package/core/batch.d.ts.map +1 -0
- package/core/batch.js +79 -0
- package/core/cache-state.d.ts +79 -0
- package/core/cache-state.d.ts.map +1 -0
- package/core/cache-state.js +87 -0
- package/core/client.d.ts +577 -0
- package/core/client.d.ts.map +1 -0
- package/core/client.js +1664 -0
- package/core/compatibility.d.ts +18 -0
- package/core/compatibility.d.ts.map +1 -0
- package/core/compatibility.js +245 -0
- package/core/errors.d.ts +107 -0
- package/core/errors.d.ts.map +1 -0
- package/core/errors.js +156 -0
- package/core/esri-geojson.d.ts +66 -0
- package/core/esri-geojson.d.ts.map +1 -0
- package/core/esri-geojson.js +363 -0
- package/core/geoservices.d.ts +34 -0
- package/core/geoservices.d.ts.map +1 -0
- package/core/geoservices.js +434 -0
- package/core/grpc-adapter.d.ts +23 -0
- package/core/grpc-adapter.d.ts.map +1 -0
- package/core/grpc-adapter.js +688 -0
- package/core/odata.d.ts +347 -0
- package/core/odata.d.ts.map +1 -0
- package/core/odata.js +913 -0
- package/core/ogc-conformance.d.ts +35 -0
- package/core/ogc-conformance.d.ts.map +1 -0
- package/core/ogc-conformance.js +134 -0
- package/core/ogc-features.d.ts +23 -0
- package/core/ogc-features.d.ts.map +1 -0
- package/core/ogc-features.js +114 -0
- package/core/ogc-maps.d.ts +49 -0
- package/core/ogc-maps.d.ts.map +1 -0
- package/core/ogc-maps.js +126 -0
- package/core/ogc-processes.d.ts +118 -0
- package/core/ogc-processes.d.ts.map +1 -0
- package/core/ogc-processes.js +423 -0
- package/core/ogc-records.d.ts +75 -0
- package/core/ogc-records.d.ts.map +1 -0
- package/core/ogc-records.js +251 -0
- package/core/ogc-tiles.d.ts +125 -0
- package/core/ogc-tiles.d.ts.map +1 -0
- package/core/ogc-tiles.js +183 -0
- package/core/path-utils.d.ts +69 -0
- package/core/path-utils.d.ts.map +1 -0
- package/core/path-utils.js +123 -0
- package/core/pbf-decoder.d.ts +39 -0
- package/core/pbf-decoder.d.ts.map +1 -0
- package/core/pbf-decoder.js +702 -0
- package/core/process-runner.d.ts +104 -0
- package/core/process-runner.d.ts.map +1 -0
- package/core/process-runner.js +315 -0
- package/core/protocol-transport.d.ts +76 -0
- package/core/protocol-transport.d.ts.map +1 -0
- package/core/protocol-transport.js +15 -0
- package/core/query-builder.d.ts +261 -0
- package/core/query-builder.d.ts.map +1 -0
- package/core/query-builder.js +538 -0
- package/core/request-pipeline.d.ts +88 -0
- package/core/request-pipeline.d.ts.map +1 -0
- package/core/request-pipeline.js +273 -0
- package/core/spatial-filter.d.ts +93 -0
- package/core/spatial-filter.d.ts.map +1 -0
- package/core/spatial-filter.js +153 -0
- package/core/stac.d.ts +55 -0
- package/core/stac.d.ts.map +1 -0
- package/core/stac.js +229 -0
- package/core/surfaces.d.ts +527 -0
- package/core/surfaces.d.ts.map +1 -0
- package/core/surfaces.js +1917 -0
- package/core/terrain-elevation.d.ts +114 -0
- package/core/terrain-elevation.d.ts.map +1 -0
- package/core/terrain-elevation.js +150 -0
- package/core/types.d.ts +1355 -0
- package/core/types.d.ts.map +1 -0
- package/core/types.js +13 -0
- package/core/wfs-capabilities.d.ts +143 -0
- package/core/wfs-capabilities.d.ts.map +1 -0
- package/core/wfs-capabilities.js +478 -0
- package/core/wfs-filter.d.ts +118 -0
- package/core/wfs-filter.d.ts.map +1 -0
- package/core/wfs-filter.js +634 -0
- package/core/wfs.d.ts +219 -0
- package/core/wfs.d.ts.map +1 -0
- package/core/wfs.js +406 -0
- package/core/wire-shared.d.ts +32 -0
- package/core/wire-shared.d.ts.map +1 -0
- package/core/wire-shared.js +76 -0
- package/core/wms-axis.d.ts +36 -0
- package/core/wms-axis.d.ts.map +1 -0
- package/core/wms-axis.js +73 -0
- package/core/wms-capabilities.d.ts +110 -0
- package/core/wms-capabilities.d.ts.map +1 -0
- package/core/wms-capabilities.js +559 -0
- package/core/wms-types.d.ts +128 -0
- package/core/wms-types.d.ts.map +1 -0
- package/core/wms-types.js +32 -0
- package/core/wms.d.ts +144 -0
- package/core/wms.d.ts.map +1 -0
- package/core/wms.js +338 -0
- package/core/wmts-capabilities.d.ts +82 -0
- package/core/wmts-capabilities.d.ts.map +1 -0
- package/core/wmts-capabilities.js +402 -0
- package/core/wmts.d.ts +103 -0
- package/core/wmts.d.ts.map +1 -0
- package/core/wmts.js +332 -0
- package/core/xml-text.d.ts +20 -0
- package/core/xml-text.d.ts.map +1 -0
- package/core/xml-text.js +85 -0
- package/esri-compat/basemap-gallery.d.ts +38 -0
- package/esri-compat/basemap-gallery.d.ts.map +1 -0
- package/esri-compat/basemap-gallery.js +159 -0
- package/esri-compat/basemap-layer-list.d.ts +35 -0
- package/esri-compat/basemap-layer-list.d.ts.map +1 -0
- package/esri-compat/basemap-layer-list.js +139 -0
- package/esri-compat/basemap.d.ts +32 -0
- package/esri-compat/basemap.d.ts.map +1 -0
- package/esri-compat/basemap.js +84 -0
- package/esri-compat/bookmarks.d.ts +36 -0
- package/esri-compat/bookmarks.d.ts.map +1 -0
- package/esri-compat/bookmarks.js +108 -0
- package/esri-compat/class-breaks-renderer.d.ts +50 -0
- package/esri-compat/class-breaks-renderer.d.ts.map +1 -0
- package/esri-compat/class-breaks-renderer.js +164 -0
- package/esri-compat/color.d.ts +22 -0
- package/esri-compat/color.d.ts.map +1 -0
- package/esri-compat/color.js +106 -0
- package/esri-compat/controls.d.ts +174 -0
- package/esri-compat/controls.d.ts.map +1 -0
- package/esri-compat/controls.js +479 -0
- package/esri-compat/coordinate-conversion.d.ts +41 -0
- package/esri-compat/coordinate-conversion.d.ts.map +1 -0
- package/esri-compat/coordinate-conversion.js +125 -0
- package/esri-compat/directions.d.ts +45 -0
- package/esri-compat/directions.d.ts.map +1 -0
- package/esri-compat/directions.js +123 -0
- package/esri-compat/editor.d.ts +47 -0
- package/esri-compat/editor.d.ts.map +1 -0
- package/esri-compat/editor.js +170 -0
- package/esri-compat/esri-config.d.ts +16 -0
- package/esri-compat/esri-config.d.ts.map +1 -0
- package/esri-compat/esri-config.js +23 -0
- package/esri-compat/esri-request.d.ts +17 -0
- package/esri-compat/esri-request.d.ts.map +1 -0
- package/esri-compat/esri-request.js +127 -0
- package/esri-compat/event-bus.d.ts +106 -0
- package/esri-compat/event-bus.d.ts.map +1 -0
- package/esri-compat/event-bus.js +90 -0
- package/esri-compat/expand.d.ts +36 -0
- package/esri-compat/expand.d.ts.map +1 -0
- package/esri-compat/expand.js +97 -0
- package/esri-compat/extent.d.ts +43 -0
- package/esri-compat/extent.d.ts.map +1 -0
- package/esri-compat/extent.js +140 -0
- package/esri-compat/feature-filter.d.ts +55 -0
- package/esri-compat/feature-filter.d.ts.map +1 -0
- package/esri-compat/feature-filter.js +109 -0
- package/esri-compat/feature-form.d.ts +64 -0
- package/esri-compat/feature-form.d.ts.map +1 -0
- package/esri-compat/feature-form.js +137 -0
- package/esri-compat/feature-layer.d.ts +173 -0
- package/esri-compat/feature-layer.d.ts.map +1 -0
- package/esri-compat/feature-layer.js +661 -0
- package/esri-compat/feature-set.d.ts +32 -0
- package/esri-compat/feature-set.d.ts.map +1 -0
- package/esri-compat/feature-set.js +80 -0
- package/esri-compat/feature-table.d.ts +141 -0
- package/esri-compat/feature-table.d.ts.map +1 -0
- package/esri-compat/feature-table.js +500 -0
- package/esri-compat/feature-templates.d.ts +41 -0
- package/esri-compat/feature-templates.d.ts.map +1 -0
- package/esri-compat/feature-templates.js +97 -0
- package/esri-compat/feature.d.ts +33 -0
- package/esri-compat/feature.d.ts.map +1 -0
- package/esri-compat/feature.js +83 -0
- package/esri-compat/geojson-layer.d.ts +86 -0
- package/esri-compat/geojson-layer.d.ts.map +1 -0
- package/esri-compat/geojson-layer.js +191 -0
- package/esri-compat/geometry-engine.d.ts +107 -0
- package/esri-compat/geometry-engine.d.ts.map +1 -0
- package/esri-compat/geometry-engine.js +266 -0
- package/esri-compat/graphic.d.ts +46 -0
- package/esri-compat/graphic.d.ts.map +1 -0
- package/esri-compat/graphic.js +103 -0
- package/esri-compat/graphics-layer.d.ts +49 -0
- package/esri-compat/graphics-layer.d.ts.map +1 -0
- package/esri-compat/graphics-layer.js +185 -0
- package/esri-compat/group-layer.d.ts +48 -0
- package/esri-compat/group-layer.d.ts.map +1 -0
- package/esri-compat/group-layer.js +212 -0
- package/esri-compat/identify.d.ts +71 -0
- package/esri-compat/identify.d.ts.map +1 -0
- package/esri-compat/identify.js +299 -0
- package/esri-compat/identity-manager.d.ts +31 -0
- package/esri-compat/identity-manager.d.ts.map +1 -0
- package/esri-compat/identity-manager.js +115 -0
- package/esri-compat/imagery-layer.d.ts +78 -0
- package/esri-compat/imagery-layer.d.ts.map +1 -0
- package/esri-compat/imagery-layer.js +167 -0
- package/esri-compat/label-class.d.ts +31 -0
- package/esri-compat/label-class.d.ts.map +1 -0
- package/esri-compat/label-class.js +102 -0
- package/esri-compat/layer-list.d.ts +77 -0
- package/esri-compat/layer-list.d.ts.map +1 -0
- package/esri-compat/layer-list.js +342 -0
- package/esri-compat/legend.d.ts +53 -0
- package/esri-compat/legend.d.ts.map +1 -0
- package/esri-compat/legend.js +254 -0
- package/esri-compat/map-image-layer.d.ts +162 -0
- package/esri-compat/map-image-layer.d.ts.map +1 -0
- package/esri-compat/map-image-layer.js +709 -0
- package/esri-compat/map-view.d.ts +323 -0
- package/esri-compat/map-view.d.ts.map +1 -0
- package/esri-compat/map-view.js +1175 -0
- package/esri-compat/map.d.ts +47 -0
- package/esri-compat/map.d.ts.map +1 -0
- package/esri-compat/map.js +209 -0
- package/esri-compat/measurement-2d.d.ts +61 -0
- package/esri-compat/measurement-2d.d.ts.map +1 -0
- package/esri-compat/measurement-2d.js +184 -0
- package/esri-compat/measurement.d.ts +45 -0
- package/esri-compat/measurement.d.ts.map +1 -0
- package/esri-compat/measurement.js +193 -0
- package/esri-compat/oauth-info.d.ts +35 -0
- package/esri-compat/oauth-info.d.ts.map +1 -0
- package/esri-compat/oauth-info.js +115 -0
- package/esri-compat/picture-marker-symbol.d.ts +35 -0
- package/esri-compat/picture-marker-symbol.d.ts.map +1 -0
- package/esri-compat/picture-marker-symbol.js +126 -0
- package/esri-compat/point.d.ts +31 -0
- package/esri-compat/point.d.ts.map +1 -0
- package/esri-compat/point.js +102 -0
- package/esri-compat/polygon.d.ts +31 -0
- package/esri-compat/polygon.d.ts.map +1 -0
- package/esri-compat/polygon.js +107 -0
- package/esri-compat/polyline.d.ts +31 -0
- package/esri-compat/polyline.d.ts.map +1 -0
- package/esri-compat/polyline.js +107 -0
- package/esri-compat/popup-template.d.ts +55 -0
- package/esri-compat/popup-template.d.ts.map +1 -0
- package/esri-compat/popup-template.js +128 -0
- package/esri-compat/popup.d.ts +54 -0
- package/esri-compat/popup.d.ts.map +1 -0
- package/esri-compat/popup.js +312 -0
- package/esri-compat/print.d.ts +47 -0
- package/esri-compat/print.d.ts.map +1 -0
- package/esri-compat/print.js +105 -0
- package/esri-compat/query.d.ts +58 -0
- package/esri-compat/query.d.ts.map +1 -0
- package/esri-compat/query.js +128 -0
- package/esri-compat/reactive-utils.d.ts +24 -0
- package/esri-compat/reactive-utils.d.ts.map +1 -0
- package/esri-compat/reactive-utils.js +193 -0
- package/esri-compat/request.d.ts +41 -0
- package/esri-compat/request.d.ts.map +1 -0
- package/esri-compat/request.js +253 -0
- package/esri-compat/route-layer.d.ts +59 -0
- package/esri-compat/route-layer.d.ts.map +1 -0
- package/esri-compat/route-layer.js +223 -0
- package/esri-compat/route-task.d.ts +88 -0
- package/esri-compat/route-task.d.ts.map +1 -0
- package/esri-compat/route-task.js +225 -0
- package/esri-compat/scene-view.d.ts +41 -0
- package/esri-compat/scene-view.d.ts.map +1 -0
- package/esri-compat/scene-view.js +68 -0
- package/esri-compat/search.d.ts +112 -0
- package/esri-compat/search.d.ts.map +1 -0
- package/esri-compat/search.js +820 -0
- package/esri-compat/simple-fill-symbol.d.ts +27 -0
- package/esri-compat/simple-fill-symbol.d.ts.map +1 -0
- package/esri-compat/simple-fill-symbol.js +85 -0
- package/esri-compat/simple-line-symbol.d.ts +27 -0
- package/esri-compat/simple-line-symbol.d.ts.map +1 -0
- package/esri-compat/simple-line-symbol.js +85 -0
- package/esri-compat/simple-marker-symbol.d.ts +29 -0
- package/esri-compat/simple-marker-symbol.d.ts.map +1 -0
- package/esri-compat/simple-marker-symbol.js +92 -0
- package/esri-compat/simple-renderer.d.ts +29 -0
- package/esri-compat/simple-renderer.d.ts.map +1 -0
- package/esri-compat/simple-renderer.js +92 -0
- package/esri-compat/sketch.d.ts +64 -0
- package/esri-compat/sketch.d.ts.map +1 -0
- package/esri-compat/sketch.js +227 -0
- package/esri-compat/spatial-reference.d.ts +31 -0
- package/esri-compat/spatial-reference.d.ts.map +1 -0
- package/esri-compat/spatial-reference.js +102 -0
- package/esri-compat/swipe.d.ts +34 -0
- package/esri-compat/swipe.d.ts.map +1 -0
- package/esri-compat/swipe.js +93 -0
- package/esri-compat/table-list.d.ts +36 -0
- package/esri-compat/table-list.d.ts.map +1 -0
- package/esri-compat/table-list.js +126 -0
- package/esri-compat/text-symbol.d.ts +37 -0
- package/esri-compat/text-symbol.d.ts.map +1 -0
- package/esri-compat/text-symbol.js +123 -0
- package/esri-compat/tile-layer.d.ts +52 -0
- package/esri-compat/tile-layer.d.ts.map +1 -0
- package/esri-compat/tile-layer.js +168 -0
- package/esri-compat/time-slider.d.ts +70 -0
- package/esri-compat/time-slider.d.ts.map +1 -0
- package/esri-compat/time-slider.js +208 -0
- package/esri-compat/track.d.ts +51 -0
- package/esri-compat/track.d.ts.map +1 -0
- package/esri-compat/track.js +174 -0
- package/esri-compat/unique-value-renderer.d.ts +41 -0
- package/esri-compat/unique-value-renderer.d.ts.map +1 -0
- package/esri-compat/unique-value-renderer.js +127 -0
- package/esri-compat/url.d.ts +13 -0
- package/esri-compat/url.d.ts.map +1 -0
- package/esri-compat/url.js +68 -0
- package/esri-compat/vector-tile-layer.d.ts +47 -0
- package/esri-compat/vector-tile-layer.d.ts.map +1 -0
- package/esri-compat/vector-tile-layer.js +130 -0
- package/esri-compat/web-map.d.ts +14 -0
- package/esri-compat/web-map.d.ts.map +1 -0
- package/esri-compat/web-map.js +24 -0
- package/esri-compat/wfs-layer.d.ts +64 -0
- package/esri-compat/wfs-layer.d.ts.map +1 -0
- package/esri-compat/wfs-layer.js +145 -0
- package/esri-compat/wms-layer.d.ts +76 -0
- package/esri-compat/wms-layer.d.ts.map +1 -0
- package/esri-compat/wms-layer.js +157 -0
- package/exploration/context.d.ts +25 -0
- package/exploration/context.d.ts.map +1 -0
- package/exploration/context.js +396 -0
- package/exploration/index.d.ts +27 -0
- package/exploration/index.d.ts.map +1 -0
- package/exploration/index.js +24 -0
- package/exploration/presets.d.ts +27 -0
- package/exploration/presets.d.ts.map +1 -0
- package/exploration/presets.js +114 -0
- package/exploration/reducer.d.ts +23 -0
- package/exploration/reducer.d.ts.map +1 -0
- package/exploration/reducer.js +332 -0
- package/exploration/selection.d.ts +25 -0
- package/exploration/selection.d.ts.map +1 -0
- package/exploration/selection.js +34 -0
- package/exploration/selectors.d.ts +56 -0
- package/exploration/selectors.d.ts.map +1 -0
- package/exploration/selectors.js +110 -0
- package/exploration/types.d.ts +294 -0
- package/exploration/types.d.ts.map +1 -0
- package/exploration/types.js +33 -0
- package/expr/expression.d.ts +457 -0
- package/expr/expression.d.ts.map +1 -0
- package/expr/expression.js +663 -0
- package/expr/index.d.ts +32 -0
- package/expr/index.d.ts.map +1 -0
- package/expr/index.js +30 -0
- package/gen/honua/v1/feature_service_pb.d.ts +918 -0
- package/gen/honua/v1/feature_service_pb.d.ts.map +1 -0
- package/gen/honua/v1/feature_service_pb.js +375 -0
- package/generated-app/errors.d.ts +41 -0
- package/generated-app/errors.d.ts.map +1 -0
- package/generated-app/errors.js +41 -0
- package/generated-app/index.d.ts +17 -0
- package/generated-app/index.d.ts.map +1 -0
- package/generated-app/index.js +12 -0
- package/generated-app/manifest.d.ts +183 -0
- package/generated-app/manifest.d.ts.map +1 -0
- package/generated-app/manifest.js +14 -0
- package/generated-app/projection.d.ts +44 -0
- package/generated-app/projection.d.ts.map +1 -0
- package/generated-app/projection.js +234 -0
- package/generated-app/runtime.d.ts +215 -0
- package/generated-app/runtime.d.ts.map +1 -0
- package/generated-app/runtime.js +1196 -0
- package/interactions/detail-model.d.ts +54 -0
- package/interactions/detail-model.d.ts.map +1 -0
- package/interactions/detail-model.js +105 -0
- package/interactions/exploration-bindings.d.ts +120 -0
- package/interactions/exploration-bindings.d.ts.map +1 -0
- package/interactions/exploration-bindings.js +218 -0
- package/interactions/feature-state.d.ts +144 -0
- package/interactions/feature-state.d.ts.map +1 -0
- package/interactions/feature-state.js +169 -0
- package/interactions/hit-test.d.ts +112 -0
- package/interactions/hit-test.d.ts.map +1 -0
- package/interactions/hit-test.js +291 -0
- package/interactions/index.d.ts +31 -0
- package/interactions/index.d.ts.map +1 -0
- package/interactions/index.js +24 -0
- package/interactions/share-state.d.ts +36 -0
- package/interactions/share-state.d.ts.map +1 -0
- package/interactions/share-state.js +123 -0
- package/map/feature-service-adapter.d.ts +138 -0
- package/map/feature-service-adapter.d.ts.map +1 -0
- package/map/feature-service-adapter.js +279 -0
- package/map/honua-map.d.ts +203 -0
- package/map/honua-map.d.ts.map +1 -0
- package/map/honua-map.js +347 -0
- package/map/index.d.ts +27 -0
- package/map/index.d.ts.map +1 -0
- package/map/index.js +22 -0
- package/map/maplibre-target.d.ts +103 -0
- package/map/maplibre-target.d.ts.map +1 -0
- package/map/maplibre-target.js +164 -0
- package/map/webmap-maplibre.d.ts +60 -0
- package/map/webmap-maplibre.d.ts.map +1 -0
- package/map/webmap-maplibre.js +212 -0
- package/package.json +37 -0
- package/react/context.d.ts +32 -0
- package/react/context.d.ts.map +1 -0
- package/react/context.js +19 -0
- package/react/honua-layer.d.ts +35 -0
- package/react/honua-layer.d.ts.map +1 -0
- package/react/honua-layer.js +47 -0
- package/react/honua-map.d.ts +83 -0
- package/react/honua-map.d.ts.map +1 -0
- package/react/honua-map.js +109 -0
- package/react/honua-popup.d.ts +26 -0
- package/react/honua-popup.d.ts.map +1 -0
- package/react/honua-popup.js +34 -0
- package/react/hooks.d.ts +127 -0
- package/react/hooks.d.ts.map +1 -0
- package/react/hooks.js +206 -0
- package/react/index.d.ts +42 -0
- package/react/index.d.ts.map +1 -0
- package/react/index.js +34 -0
- package/react/provider.d.ts +36 -0
- package/react/provider.d.ts.map +1 -0
- package/react/provider.js +35 -0
- package/react/query-cache.d.ts +76 -0
- package/react/query-cache.d.ts.map +1 -0
- package/react/query-cache.js +188 -0
- package/runtime/diff.d.ts +31 -0
- package/runtime/diff.d.ts.map +1 -0
- package/runtime/diff.js +143 -0
- package/runtime/errors.d.ts +40 -0
- package/runtime/errors.d.ts.map +1 -0
- package/runtime/errors.js +35 -0
- package/runtime/index.d.ts +59 -0
- package/runtime/index.d.ts.map +1 -0
- package/runtime/index.js +43 -0
- package/runtime/legend.d.ts +23 -0
- package/runtime/legend.d.ts.map +1 -0
- package/runtime/legend.js +38 -0
- package/runtime/load-package.d.ts +125 -0
- package/runtime/load-package.d.ts.map +1 -0
- package/runtime/load-package.js +264 -0
- package/runtime/map-package-fetch.d.ts +107 -0
- package/runtime/map-package-fetch.d.ts.map +1 -0
- package/runtime/map-package-fetch.js +336 -0
- package/runtime/map-package-realtime.d.ts +169 -0
- package/runtime/map-package-realtime.d.ts.map +1 -0
- package/runtime/map-package-realtime.js +350 -0
- package/runtime/map-package-validation.d.ts +43 -0
- package/runtime/map-package-validation.d.ts.map +1 -0
- package/runtime/map-package-validation.js +269 -0
- package/runtime/map-package-watch.d.ts +78 -0
- package/runtime/map-package-watch.d.ts.map +1 -0
- package/runtime/map-package-watch.js +695 -0
- package/runtime/map-package.d.ts +167 -0
- package/runtime/map-package.d.ts.map +1 -0
- package/runtime/map-package.js +15 -0
- package/runtime/ogc-styles.d.ts +110 -0
- package/runtime/ogc-styles.d.ts.map +1 -0
- package/runtime/ogc-styles.js +195 -0
- package/runtime/popups.d.ts +62 -0
- package/runtime/popups.d.ts.map +1 -0
- package/runtime/popups.js +95 -0
- package/runtime/query-tiles.d.ts +217 -0
- package/runtime/query-tiles.d.ts.map +1 -0
- package/runtime/query-tiles.js +801 -0
- package/runtime/runtime.d.ts +243 -0
- package/runtime/runtime.d.ts.map +1 -0
- package/runtime/runtime.js +1147 -0
- package/runtime/source-bridge.d.ts +99 -0
- package/runtime/source-bridge.d.ts.map +1 -0
- package/runtime/source-bridge.js +401 -0
- package/runtime/style-compose.d.ts +46 -0
- package/runtime/style-compose.d.ts.map +1 -0
- package/runtime/style-compose.js +144 -0
- package/runtime/style-interactions.d.ts +141 -0
- package/runtime/style-interactions.d.ts.map +1 -0
- package/runtime/style-interactions.js +574 -0
- package/runtime/style-spec-validation.d.ts +23 -0
- package/runtime/style-spec-validation.d.ts.map +1 -0
- package/runtime/style-spec-validation.js +357 -0
- package/studio/capability-manifest.d.ts +285 -0
- package/studio/capability-manifest.d.ts.map +1 -0
- package/studio/capability-manifest.js +59 -0
- package/studio/chart-spec.d.ts +85 -0
- package/studio/chart-spec.d.ts.map +1 -0
- package/studio/chart-spec.js +106 -0
- package/studio/index.d.ts +34 -0
- package/studio/index.d.ts.map +1 -0
- package/studio/index.js +27 -0
- package/studio/provenance.d.ts +131 -0
- package/studio/provenance.d.ts.map +1 -0
- package/studio/provenance.js +39 -0
- package/studio/publish.d.ts +64 -0
- package/studio/publish.d.ts.map +1 -0
- package/studio/publish.js +13 -0
- package/studio/types.d.ts +278 -0
- package/studio/types.d.ts.map +1 -0
- package/studio/types.js +71 -0
- package/studio/validate.d.ts +45 -0
- package/studio/validate.d.ts.map +1 -0
- package/studio/validate.js +255 -0
- package/studio/validation.d.ts +112 -0
- package/studio/validation.d.ts.map +1 -0
- package/studio/validation.js +42 -0
- package/style/factory.d.ts +30 -0
- package/style/factory.d.ts.map +1 -0
- package/style/factory.js +61 -0
- package/style/index.d.ts +25 -0
- package/style/index.d.ts.map +1 -0
- package/style/index.js +24 -0
- package/style/specification.d.ts +203 -0
- package/style/specification.d.ts.map +1 -0
- package/style/specification.js +178 -0
- package/style/wms-wmts-resolvers.d.ts +38 -0
- package/style/wms-wmts-resolvers.d.ts.map +1 -0
- package/style/wms-wmts-resolvers.js +92 -0
- package/webmap/contract.d.ts +28 -0
- package/webmap/contract.d.ts.map +1 -0
- package/webmap/contract.js +130 -0
- package/webmap/convert-basemap.d.ts +17 -0
- package/webmap/convert-basemap.d.ts.map +1 -0
- package/webmap/convert-basemap.js +78 -0
- package/webmap/convert-extent.d.ts +17 -0
- package/webmap/convert-extent.d.ts.map +1 -0
- package/webmap/convert-extent.js +114 -0
- package/webmap/convert-label.d.ts +13 -0
- package/webmap/convert-label.d.ts.map +1 -0
- package/webmap/convert-label.js +125 -0
- package/webmap/convert-layer.d.ts +22 -0
- package/webmap/convert-layer.d.ts.map +1 -0
- package/webmap/convert-layer.js +181 -0
- package/webmap/convert-popup.d.ts +34 -0
- package/webmap/convert-popup.d.ts.map +1 -0
- package/webmap/convert-popup.js +68 -0
- package/webmap/convert-renderer.d.ts +17 -0
- package/webmap/convert-renderer.d.ts.map +1 -0
- package/webmap/convert-renderer.js +161 -0
- package/webmap/convert-symbol.d.ts +17 -0
- package/webmap/convert-symbol.d.ts.map +1 -0
- package/webmap/convert-symbol.js +122 -0
- package/webmap/index.d.ts +44 -0
- package/webmap/index.d.ts.map +1 -0
- package/webmap/index.js +33 -0
- package/webmap/parse.d.ts +25 -0
- package/webmap/parse.d.ts.map +1 -0
- package/webmap/parse.js +83 -0
- package/webmap/types.d.ts +264 -0
- package/webmap/types.d.ts.map +1 -0
- package/webmap/types.js +13 -0
- package/webmap/warnings.d.ts +30 -0
- package/webmap/warnings.d.ts.map +1 -0
- package/webmap/warnings.js +37 -0
|
@@ -0,0 +1,688 @@
|
|
|
1
|
+
import { create } from "@bufbuild/protobuf";
|
|
2
|
+
import { CoordinateSchema, CoordinateSequenceSchema, DistanceUnit, FieldType, GeometrySchema, GeometryType, MultiPointGeometrySchema, PointGeometrySchema, PolygonGeometrySchema, PolylineGeometrySchema, QueryFeaturesRequestSchema, SpatialFilterSchema, SpatialReferenceSchema, SpatialRelationship, StatisticDefinitionSchema, StatisticType, } from "../gen/honua/v1/feature_service_pb.js";
|
|
3
|
+
import { HonuaGrpcError } from "./errors.js";
|
|
4
|
+
/**
|
|
5
|
+
* Maps proto FieldType enum values to Esri-style field type strings
|
|
6
|
+
* used in the JSON response shape.
|
|
7
|
+
*/
|
|
8
|
+
const FIELD_TYPE_MAP = {
|
|
9
|
+
[FieldType.STRING]: "esriFieldTypeString",
|
|
10
|
+
[FieldType.INTEGER]: "esriFieldTypeInteger",
|
|
11
|
+
// BIG_INTEGER must map to esriFieldTypeBigInteger so a 64-bit column reports
|
|
12
|
+
// the same field type as the PBF fast path (mapPbfFieldTypeToGeoServices maps
|
|
13
|
+
// PBF type 13 -> esriFieldTypeBigInteger). Mapping it to esriFieldTypeInteger
|
|
14
|
+
// made a 64-bit column's reported type diverge between the gRPC and PBF
|
|
15
|
+
// transports for the same dataset.
|
|
16
|
+
[FieldType.BIG_INTEGER]: "esriFieldTypeBigInteger",
|
|
17
|
+
[FieldType.DOUBLE]: "esriFieldTypeDouble",
|
|
18
|
+
[FieldType.FLOAT]: "esriFieldTypeSingle",
|
|
19
|
+
// Esri/GeoServices has no boolean field type; ArcGIS surfaces booleans as a
|
|
20
|
+
// small integer, and the PBF schema likewise carries booleans as small
|
|
21
|
+
// integers, so esriFieldTypeSmallInteger keeps the two transports in parity.
|
|
22
|
+
[FieldType.BOOLEAN]: "esriFieldTypeSmallInteger",
|
|
23
|
+
[FieldType.DATE_TIME]: "esriFieldTypeDate",
|
|
24
|
+
[FieldType.DATE]: "esriFieldTypeDate",
|
|
25
|
+
[FieldType.TIME]: "esriFieldTypeDate",
|
|
26
|
+
[FieldType.GEOMETRY]: "esriFieldTypeGeometry",
|
|
27
|
+
[FieldType.JSON]: "esriFieldTypeString",
|
|
28
|
+
[FieldType.BINARY]: "esriFieldTypeBlob",
|
|
29
|
+
[FieldType.UUID]: "esriFieldTypeGUID",
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Maps proto GeometryType enum values to Esri-style geometry type strings.
|
|
33
|
+
*/
|
|
34
|
+
const GEOMETRY_TYPE_MAP = {
|
|
35
|
+
[GeometryType.POINT]: "esriGeometryPoint",
|
|
36
|
+
[GeometryType.MULTI_POINT]: "esriGeometryMultipoint",
|
|
37
|
+
[GeometryType.LINE_STRING]: "esriGeometryPolyline",
|
|
38
|
+
[GeometryType.MULTI_LINE_STRING]: "esriGeometryPolyline",
|
|
39
|
+
[GeometryType.POLYGON]: "esriGeometryPolygon",
|
|
40
|
+
[GeometryType.MULTI_POLYGON]: "esriGeometryPolygon",
|
|
41
|
+
[GeometryType.NONE]: "esriGeometryNull",
|
|
42
|
+
};
|
|
43
|
+
const ESRI_TO_PROTO_SPATIAL_REL_MAP = {
|
|
44
|
+
esriSpatialRelIntersects: SpatialRelationship.INTERSECTS,
|
|
45
|
+
esriSpatialRelContains: SpatialRelationship.CONTAINS,
|
|
46
|
+
esriSpatialRelWithin: SpatialRelationship.WITHIN,
|
|
47
|
+
esriSpatialRelEnvelopeIntersects: SpatialRelationship.ENVELOPE_INTERSECTS,
|
|
48
|
+
esriSpatialRelIndexIntersects: SpatialRelationship.ENVELOPE_INTERSECTS,
|
|
49
|
+
esriSpatialRelCrosses: SpatialRelationship.CROSSES,
|
|
50
|
+
esriSpatialRelTouches: SpatialRelationship.TOUCHES,
|
|
51
|
+
esriSpatialRelOverlaps: SpatialRelationship.OVERLAPS,
|
|
52
|
+
esriSpatialRelDisjoint: SpatialRelationship.DISJOINT,
|
|
53
|
+
};
|
|
54
|
+
const ESRI_TO_PROTO_DISTANCE_UNIT_MAP = {
|
|
55
|
+
esrisrunit_meter: DistanceUnit.METERS,
|
|
56
|
+
meter: DistanceUnit.METERS,
|
|
57
|
+
meters: DistanceUnit.METERS,
|
|
58
|
+
m: DistanceUnit.METERS,
|
|
59
|
+
esrisrunit_foot: DistanceUnit.FEET,
|
|
60
|
+
esrisrunit_usfoot: DistanceUnit.FEET,
|
|
61
|
+
foot: DistanceUnit.FEET,
|
|
62
|
+
feet: DistanceUnit.FEET,
|
|
63
|
+
ft: DistanceUnit.FEET,
|
|
64
|
+
esrisrunit_kilometer: DistanceUnit.KILOMETERS,
|
|
65
|
+
kilometer: DistanceUnit.KILOMETERS,
|
|
66
|
+
kilometers: DistanceUnit.KILOMETERS,
|
|
67
|
+
km: DistanceUnit.KILOMETERS,
|
|
68
|
+
esrisrunit_statutemile: DistanceUnit.MILES,
|
|
69
|
+
mile: DistanceUnit.MILES,
|
|
70
|
+
miles: DistanceUnit.MILES,
|
|
71
|
+
mi: DistanceUnit.MILES,
|
|
72
|
+
};
|
|
73
|
+
const STATISTIC_TYPE_MAP = {
|
|
74
|
+
count: StatisticType.COUNT,
|
|
75
|
+
sum: StatisticType.SUM,
|
|
76
|
+
min: StatisticType.MIN,
|
|
77
|
+
max: StatisticType.MAX,
|
|
78
|
+
avg: StatisticType.AVG,
|
|
79
|
+
stddev: StatisticType.STDDEV,
|
|
80
|
+
var: StatisticType.VAR,
|
|
81
|
+
};
|
|
82
|
+
const MAX_SAFE_INTEGER_BIGINT = BigInt(Number.MAX_SAFE_INTEGER);
|
|
83
|
+
const MIN_SAFE_INTEGER_BIGINT = BigInt(Number.MIN_SAFE_INTEGER);
|
|
84
|
+
/**
|
|
85
|
+
* Converts a SDK QueryFeaturesRequest into a proto QueryFeaturesRequest message.
|
|
86
|
+
*/
|
|
87
|
+
export function toProtoQueryRequest(request) {
|
|
88
|
+
const msg = create(QueryFeaturesRequestSchema);
|
|
89
|
+
msg.serviceId = request.serviceId;
|
|
90
|
+
msg.layerId = request.layerId;
|
|
91
|
+
msg.where = request.where ?? "1=1";
|
|
92
|
+
msg.returnGeometry = request.returnGeometry ?? true;
|
|
93
|
+
const outSpatialReference = toProtoSpatialReference(request.outSr) ??
|
|
94
|
+
toProtoSpatialReference(request.extraParams?.outSR) ??
|
|
95
|
+
toProtoSpatialReference(request.extraParams?.outSr);
|
|
96
|
+
if (outSpatialReference) {
|
|
97
|
+
msg.outSr = outSpatialReference;
|
|
98
|
+
}
|
|
99
|
+
if (request.outFields !== undefined) {
|
|
100
|
+
const fields = typeof request.outFields === "string"
|
|
101
|
+
? request.outFields
|
|
102
|
+
.split(",")
|
|
103
|
+
.map((f) => f.trim())
|
|
104
|
+
.filter(Boolean)
|
|
105
|
+
: request.outFields;
|
|
106
|
+
msg.outFields = fields;
|
|
107
|
+
}
|
|
108
|
+
if (request.objectIds !== undefined) {
|
|
109
|
+
const ids = typeof request.objectIds === "string"
|
|
110
|
+
? request.objectIds.split(",").map((id) => BigInt(id.trim()))
|
|
111
|
+
: request.objectIds.map((id) => BigInt(id));
|
|
112
|
+
msg.objectIds = ids;
|
|
113
|
+
}
|
|
114
|
+
if (request.resultOffset !== undefined) {
|
|
115
|
+
msg.resultOffset = request.resultOffset;
|
|
116
|
+
}
|
|
117
|
+
if (request.resultRecordCount !== undefined) {
|
|
118
|
+
msg.resultRecordCount = request.resultRecordCount;
|
|
119
|
+
}
|
|
120
|
+
if (request.orderByFields !== undefined) {
|
|
121
|
+
msg.orderBy = request.orderByFields;
|
|
122
|
+
}
|
|
123
|
+
if (request.returnDistinctValues !== undefined) {
|
|
124
|
+
msg.returnDistinct = request.returnDistinctValues;
|
|
125
|
+
}
|
|
126
|
+
if (request.groupByFieldsForStatistics !== undefined) {
|
|
127
|
+
msg.groupBy = request.groupByFieldsForStatistics
|
|
128
|
+
.split(",")
|
|
129
|
+
.map((field) => field.trim())
|
|
130
|
+
.filter(Boolean);
|
|
131
|
+
}
|
|
132
|
+
if (request.outStatistics !== undefined) {
|
|
133
|
+
msg.outStatistics = toProtoStatistics(request.outStatistics);
|
|
134
|
+
}
|
|
135
|
+
if (request.geometry !== undefined) {
|
|
136
|
+
const filter = create(SpatialFilterSchema);
|
|
137
|
+
const { geometry, spatialReference } = toProtoGeometry(request.geometry);
|
|
138
|
+
filter.geometry = geometry;
|
|
139
|
+
if (request.spatialRel) {
|
|
140
|
+
const mapped = ESRI_TO_PROTO_SPATIAL_REL_MAP[request.spatialRel];
|
|
141
|
+
if (!mapped) {
|
|
142
|
+
throw new Error(`Unsupported spatial relationship for gRPC transport: ${request.spatialRel}`);
|
|
143
|
+
}
|
|
144
|
+
filter.spatialRelationship = mapped;
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
filter.spatialRelationship = SpatialRelationship.INTERSECTS;
|
|
148
|
+
}
|
|
149
|
+
if (spatialReference) {
|
|
150
|
+
filter.spatialReference = spatialReference;
|
|
151
|
+
}
|
|
152
|
+
const distance = request.distance ?? parseExtraNumber(request.extraParams ?? {}, "distance");
|
|
153
|
+
if (distance !== undefined) {
|
|
154
|
+
filter.distance = distance;
|
|
155
|
+
}
|
|
156
|
+
const nearestCountRaw = request.nearestCount ?? parseExtraNumber(request.extraParams ?? {}, "nearestCount");
|
|
157
|
+
if (nearestCountRaw !== undefined) {
|
|
158
|
+
filter.nearestCount = Math.trunc(nearestCountRaw);
|
|
159
|
+
}
|
|
160
|
+
const returnDistance = request.returnDistance ?? parseExtraBoolean(request.extraParams ?? {}, "returnDistance");
|
|
161
|
+
if (returnDistance !== undefined) {
|
|
162
|
+
filter.returnDistance = returnDistance;
|
|
163
|
+
}
|
|
164
|
+
const unit = request.units ?? parseExtraString(request.extraParams ?? {}, "units");
|
|
165
|
+
if (unit !== undefined) {
|
|
166
|
+
const mappedUnit = ESRI_TO_PROTO_DISTANCE_UNIT_MAP[unit.trim().toLowerCase()];
|
|
167
|
+
if (!mappedUnit) {
|
|
168
|
+
throw new Error(`Unsupported distance unit for gRPC transport: ${unit}`);
|
|
169
|
+
}
|
|
170
|
+
filter.distanceUnit = mappedUnit;
|
|
171
|
+
}
|
|
172
|
+
msg.spatialFilter = filter;
|
|
173
|
+
}
|
|
174
|
+
if (request.extraParams) {
|
|
175
|
+
const returnCountOnly = parseExtraBoolean(request.extraParams, "returnCountOnly");
|
|
176
|
+
if (returnCountOnly !== undefined) {
|
|
177
|
+
msg.returnCountOnly = returnCountOnly;
|
|
178
|
+
}
|
|
179
|
+
const returnIdsOnly = parseExtraBoolean(request.extraParams, "returnIdsOnly");
|
|
180
|
+
if (returnIdsOnly !== undefined) {
|
|
181
|
+
msg.returnIdsOnly = returnIdsOnly;
|
|
182
|
+
}
|
|
183
|
+
const returnExtentOnly = parseExtraBoolean(request.extraParams, "returnExtentOnly");
|
|
184
|
+
if (returnExtentOnly !== undefined) {
|
|
185
|
+
msg.returnExtentOnly = returnExtentOnly;
|
|
186
|
+
}
|
|
187
|
+
const geometryPrecision = parseExtraNumber(request.extraParams, "geometryPrecision");
|
|
188
|
+
if (geometryPrecision !== undefined) {
|
|
189
|
+
msg.geometryPrecision = geometryPrecision;
|
|
190
|
+
}
|
|
191
|
+
const maxAllowableOffset = parseExtraNumber(request.extraParams, "maxAllowableOffset");
|
|
192
|
+
if (maxAllowableOffset !== undefined) {
|
|
193
|
+
msg.maxAllowableOffset = maxAllowableOffset;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
return msg;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Converts a proto QueryFeaturesResponse into the JSON-compatible shape
|
|
200
|
+
* matching the `f=json` response format.
|
|
201
|
+
*/
|
|
202
|
+
export function fromProtoQueryResponse(response) {
|
|
203
|
+
const hasFeatureMetadata = response.fields.length > 0 ||
|
|
204
|
+
response.objectIdFieldName.length > 0 ||
|
|
205
|
+
response.geometryType !== GeometryType.UNSPECIFIED ||
|
|
206
|
+
response.spatialReference !== undefined ||
|
|
207
|
+
response.exceededTransferLimit;
|
|
208
|
+
// Count-only response. Handle zero-count results as well.
|
|
209
|
+
if (response.features.length === 0 &&
|
|
210
|
+
response.objectIds.length === 0 &&
|
|
211
|
+
response.extent === undefined &&
|
|
212
|
+
(response.count !== 0n || !hasFeatureMetadata)) {
|
|
213
|
+
return { count: toSafeNumberOrString(response.count) };
|
|
214
|
+
}
|
|
215
|
+
// IDs-only response
|
|
216
|
+
if (isIdsOnlyResponse(response)) {
|
|
217
|
+
return {
|
|
218
|
+
objectIdFieldName: response.objectIdFieldName,
|
|
219
|
+
objectIds: response.objectIds.map(toSafeNumberOrString),
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
// Extent-only response
|
|
223
|
+
if (response.extent && response.features.length === 0) {
|
|
224
|
+
const ext = response.extent;
|
|
225
|
+
return {
|
|
226
|
+
extent: {
|
|
227
|
+
xmin: ext.xmin,
|
|
228
|
+
ymin: ext.ymin,
|
|
229
|
+
xmax: ext.xmax,
|
|
230
|
+
ymax: ext.ymax,
|
|
231
|
+
spatialReference: ext.spatialReference ? convertSpatialReference(ext.spatialReference) : undefined,
|
|
232
|
+
},
|
|
233
|
+
...(response.count !== 0n ? { count: toSafeNumberOrString(response.count) } : {}),
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
// Standard feature response
|
|
237
|
+
return {
|
|
238
|
+
objectIdFieldName: response.objectIdFieldName,
|
|
239
|
+
geometryType: GEOMETRY_TYPE_MAP[response.geometryType] ?? "esriGeometryPoint",
|
|
240
|
+
spatialReference: response.spatialReference ? convertSpatialReference(response.spatialReference) : undefined,
|
|
241
|
+
fields: response.fields.map(convertField),
|
|
242
|
+
features: response.features.map(convertFeature),
|
|
243
|
+
exceededTransferLimit: response.exceededTransferLimit || undefined,
|
|
244
|
+
};
|
|
245
|
+
}
|
|
246
|
+
function isIdsOnlyResponse(response) {
|
|
247
|
+
if (response.features.length > 0 || response.extent !== undefined) {
|
|
248
|
+
return false;
|
|
249
|
+
}
|
|
250
|
+
if (response.objectIds.length > 0) {
|
|
251
|
+
return true;
|
|
252
|
+
}
|
|
253
|
+
return (response.objectIdFieldName.length > 0 &&
|
|
254
|
+
response.fields.length === 0 &&
|
|
255
|
+
response.geometryType === GeometryType.UNSPECIFIED &&
|
|
256
|
+
response.spatialReference === undefined &&
|
|
257
|
+
response.count === 0n &&
|
|
258
|
+
!response.exceededTransferLimit);
|
|
259
|
+
}
|
|
260
|
+
function parseExtraBoolean(params, key) {
|
|
261
|
+
const value = params[key];
|
|
262
|
+
if (value === undefined) {
|
|
263
|
+
return undefined;
|
|
264
|
+
}
|
|
265
|
+
if (typeof value === "boolean") {
|
|
266
|
+
return value;
|
|
267
|
+
}
|
|
268
|
+
if (typeof value === "number") {
|
|
269
|
+
return value !== 0;
|
|
270
|
+
}
|
|
271
|
+
const normalized = value.trim().toLowerCase();
|
|
272
|
+
if (normalized === "true" || normalized === "1" || normalized === "yes") {
|
|
273
|
+
return true;
|
|
274
|
+
}
|
|
275
|
+
if (normalized === "false" || normalized === "0" || normalized === "no") {
|
|
276
|
+
return false;
|
|
277
|
+
}
|
|
278
|
+
return undefined;
|
|
279
|
+
}
|
|
280
|
+
function parseExtraNumber(params, key) {
|
|
281
|
+
const value = params[key];
|
|
282
|
+
if (value === undefined || typeof value === "boolean") {
|
|
283
|
+
return undefined;
|
|
284
|
+
}
|
|
285
|
+
const n = typeof value === "number" ? value : Number(value);
|
|
286
|
+
return Number.isFinite(n) ? n : undefined;
|
|
287
|
+
}
|
|
288
|
+
function parseExtraString(params, key) {
|
|
289
|
+
const value = params[key];
|
|
290
|
+
if (value === undefined || typeof value === "boolean") {
|
|
291
|
+
return undefined;
|
|
292
|
+
}
|
|
293
|
+
return String(value);
|
|
294
|
+
}
|
|
295
|
+
function toProtoStatistics(value) {
|
|
296
|
+
const raw = typeof value === "string" ? parseStatisticsString(value) : value;
|
|
297
|
+
return raw.map((item, index) => {
|
|
298
|
+
const statisticTypeValue = item.statisticType;
|
|
299
|
+
if (typeof statisticTypeValue !== "string") {
|
|
300
|
+
throw new Error(`Invalid outStatistics[${index}].statisticType`);
|
|
301
|
+
}
|
|
302
|
+
const statisticType = STATISTIC_TYPE_MAP[statisticTypeValue.toLowerCase()];
|
|
303
|
+
if (!statisticType) {
|
|
304
|
+
throw new Error(`Unsupported statisticType for gRPC transport: ${statisticTypeValue}`);
|
|
305
|
+
}
|
|
306
|
+
const onStatisticFieldValue = item.onStatisticField;
|
|
307
|
+
if (typeof onStatisticFieldValue !== "string" || onStatisticFieldValue.trim().length === 0) {
|
|
308
|
+
throw new Error(`Invalid outStatistics[${index}].onStatisticField`);
|
|
309
|
+
}
|
|
310
|
+
const outStatisticFieldNameValue = item.outStatisticFieldName;
|
|
311
|
+
const outStatisticFieldName = typeof outStatisticFieldNameValue === "string" && outStatisticFieldNameValue.trim().length > 0
|
|
312
|
+
? outStatisticFieldNameValue.trim()
|
|
313
|
+
: `${statisticTypeValue}_${onStatisticFieldValue}`;
|
|
314
|
+
const definition = create(StatisticDefinitionSchema);
|
|
315
|
+
definition.onStatisticField = onStatisticFieldValue;
|
|
316
|
+
definition.statisticType = statisticType;
|
|
317
|
+
definition.outStatisticFieldName = outStatisticFieldName;
|
|
318
|
+
return definition;
|
|
319
|
+
});
|
|
320
|
+
}
|
|
321
|
+
function parseStatisticsString(value) {
|
|
322
|
+
let parsed;
|
|
323
|
+
try {
|
|
324
|
+
parsed = JSON.parse(value);
|
|
325
|
+
}
|
|
326
|
+
catch {
|
|
327
|
+
throw new Error("Invalid outStatistics JSON for gRPC transport.");
|
|
328
|
+
}
|
|
329
|
+
if (!Array.isArray(parsed)) {
|
|
330
|
+
throw new Error("outStatistics JSON must be an array for gRPC transport.");
|
|
331
|
+
}
|
|
332
|
+
return parsed;
|
|
333
|
+
}
|
|
334
|
+
function toProtoGeometry(geometryValue) {
|
|
335
|
+
const source = parseGeometryValue(geometryValue);
|
|
336
|
+
const geometry = create(GeometrySchema);
|
|
337
|
+
if (isPoint(source)) {
|
|
338
|
+
const point = create(PointGeometrySchema);
|
|
339
|
+
point.x = source.x;
|
|
340
|
+
point.y = source.y;
|
|
341
|
+
if (typeof source.z === "number" && Number.isFinite(source.z)) {
|
|
342
|
+
point.z = source.z;
|
|
343
|
+
}
|
|
344
|
+
if (typeof source.m === "number" && Number.isFinite(source.m)) {
|
|
345
|
+
point.m = source.m;
|
|
346
|
+
}
|
|
347
|
+
geometry.shape = { case: "point", value: point };
|
|
348
|
+
}
|
|
349
|
+
else if (isEnvelope(source)) {
|
|
350
|
+
const polygon = create(PolygonGeometrySchema);
|
|
351
|
+
polygon.rings = [
|
|
352
|
+
toCoordinateSequence([
|
|
353
|
+
[source.xmin, source.ymin],
|
|
354
|
+
[source.xmax, source.ymin],
|
|
355
|
+
[source.xmax, source.ymax],
|
|
356
|
+
[source.xmin, source.ymax],
|
|
357
|
+
[source.xmin, source.ymin],
|
|
358
|
+
]),
|
|
359
|
+
];
|
|
360
|
+
geometry.shape = { case: "polygon", value: polygon };
|
|
361
|
+
}
|
|
362
|
+
else if (isMultipoint(source)) {
|
|
363
|
+
const multipoint = create(MultiPointGeometrySchema);
|
|
364
|
+
multipoint.points = source.points.map((point, index) => toPointGeometryFromArray(point, `points[${index}]`));
|
|
365
|
+
geometry.shape = { case: "multiPoint", value: multipoint };
|
|
366
|
+
}
|
|
367
|
+
else if (isPolyline(source)) {
|
|
368
|
+
const polyline = create(PolylineGeometrySchema);
|
|
369
|
+
polyline.paths = source.paths.map((path, index) => toCoordinateSequence(path, `paths[${index}]`));
|
|
370
|
+
geometry.shape = { case: "polyline", value: polyline };
|
|
371
|
+
}
|
|
372
|
+
else if (isPolygon(source)) {
|
|
373
|
+
const polygon = create(PolygonGeometrySchema);
|
|
374
|
+
polygon.rings = source.rings.map((ring, index) => toCoordinateSequence(ring, `rings[${index}]`));
|
|
375
|
+
geometry.shape = { case: "polygon", value: polygon };
|
|
376
|
+
}
|
|
377
|
+
else {
|
|
378
|
+
throw new Error("Unsupported geometry shape for gRPC transport.");
|
|
379
|
+
}
|
|
380
|
+
return {
|
|
381
|
+
geometry,
|
|
382
|
+
spatialReference: toProtoSpatialReference(source.spatialReference),
|
|
383
|
+
};
|
|
384
|
+
}
|
|
385
|
+
function parseGeometryValue(value) {
|
|
386
|
+
if (typeof value === "string") {
|
|
387
|
+
let parsed;
|
|
388
|
+
try {
|
|
389
|
+
parsed = JSON.parse(value);
|
|
390
|
+
}
|
|
391
|
+
catch {
|
|
392
|
+
throw new Error("Geometry must be a JSON object for gRPC transport.");
|
|
393
|
+
}
|
|
394
|
+
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
395
|
+
throw new Error("Geometry JSON must parse to an object for gRPC transport.");
|
|
396
|
+
}
|
|
397
|
+
return parsed;
|
|
398
|
+
}
|
|
399
|
+
return value;
|
|
400
|
+
}
|
|
401
|
+
function toProtoSpatialReference(value) {
|
|
402
|
+
if (value === undefined || value === null) {
|
|
403
|
+
return undefined;
|
|
404
|
+
}
|
|
405
|
+
if (typeof value === "number" && Number.isFinite(value)) {
|
|
406
|
+
const spatialReference = create(SpatialReferenceSchema);
|
|
407
|
+
spatialReference.wkid = value;
|
|
408
|
+
return spatialReference;
|
|
409
|
+
}
|
|
410
|
+
if (typeof value === "string") {
|
|
411
|
+
const trimmed = value.trim();
|
|
412
|
+
if (!trimmed) {
|
|
413
|
+
return undefined;
|
|
414
|
+
}
|
|
415
|
+
const asNumber = Number(trimmed);
|
|
416
|
+
if (Number.isFinite(asNumber)) {
|
|
417
|
+
const spatialReference = create(SpatialReferenceSchema);
|
|
418
|
+
spatialReference.wkid = asNumber;
|
|
419
|
+
return spatialReference;
|
|
420
|
+
}
|
|
421
|
+
if (trimmed.startsWith("{")) {
|
|
422
|
+
try {
|
|
423
|
+
const parsed = JSON.parse(trimmed);
|
|
424
|
+
return toProtoSpatialReference(parsed);
|
|
425
|
+
}
|
|
426
|
+
catch {
|
|
427
|
+
throw new Error("Invalid outSr JSON for gRPC transport.");
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
const spatialReference = create(SpatialReferenceSchema);
|
|
431
|
+
spatialReference.wkt = trimmed;
|
|
432
|
+
return spatialReference;
|
|
433
|
+
}
|
|
434
|
+
if (typeof value !== "object" || Array.isArray(value)) {
|
|
435
|
+
return undefined;
|
|
436
|
+
}
|
|
437
|
+
const spatialReference = create(SpatialReferenceSchema);
|
|
438
|
+
const source = value;
|
|
439
|
+
const wkid = source.wkid;
|
|
440
|
+
if (typeof wkid === "number" && Number.isFinite(wkid)) {
|
|
441
|
+
spatialReference.wkid = wkid;
|
|
442
|
+
}
|
|
443
|
+
const latestWkid = source.latestWkid;
|
|
444
|
+
if (typeof latestWkid === "number" && Number.isFinite(latestWkid)) {
|
|
445
|
+
spatialReference.latestWkid = latestWkid;
|
|
446
|
+
}
|
|
447
|
+
const wkt = source.wkt;
|
|
448
|
+
if (typeof wkt === "string" && wkt.length > 0) {
|
|
449
|
+
spatialReference.wkt = wkt;
|
|
450
|
+
}
|
|
451
|
+
if (spatialReference.wkid === 0 && spatialReference.latestWkid === 0 && !spatialReference.wkt) {
|
|
452
|
+
return undefined;
|
|
453
|
+
}
|
|
454
|
+
return spatialReference;
|
|
455
|
+
}
|
|
456
|
+
function toPointGeometryFromArray(value, context) {
|
|
457
|
+
if (!Array.isArray(value) || value.length < 2) {
|
|
458
|
+
throw new Error(`Invalid coordinate array at ${context}`);
|
|
459
|
+
}
|
|
460
|
+
const x = Number(value[0]);
|
|
461
|
+
const y = Number(value[1]);
|
|
462
|
+
if (!Number.isFinite(x) || !Number.isFinite(y)) {
|
|
463
|
+
throw new Error(`Invalid coordinate values at ${context}`);
|
|
464
|
+
}
|
|
465
|
+
const point = create(PointGeometrySchema);
|
|
466
|
+
point.x = x;
|
|
467
|
+
point.y = y;
|
|
468
|
+
const z = value[2];
|
|
469
|
+
if (typeof z === "number" && Number.isFinite(z)) {
|
|
470
|
+
point.z = z;
|
|
471
|
+
}
|
|
472
|
+
const m = value[3];
|
|
473
|
+
if (typeof m === "number" && Number.isFinite(m)) {
|
|
474
|
+
point.m = m;
|
|
475
|
+
}
|
|
476
|
+
return point;
|
|
477
|
+
}
|
|
478
|
+
function toCoordinateSequence(value, context = "coords") {
|
|
479
|
+
if (!Array.isArray(value)) {
|
|
480
|
+
throw new Error(`Invalid coordinate sequence at ${context}`);
|
|
481
|
+
}
|
|
482
|
+
const sequence = create(CoordinateSequenceSchema);
|
|
483
|
+
sequence.coords = value.map((coord, index) => toCoordinate(coord, `${context}[${index}]`));
|
|
484
|
+
return sequence;
|
|
485
|
+
}
|
|
486
|
+
function toCoordinate(value, context) {
|
|
487
|
+
if (!Array.isArray(value) || value.length < 2) {
|
|
488
|
+
throw new Error(`Invalid coordinate at ${context}`);
|
|
489
|
+
}
|
|
490
|
+
const x = Number(value[0]);
|
|
491
|
+
const y = Number(value[1]);
|
|
492
|
+
if (!Number.isFinite(x) || !Number.isFinite(y)) {
|
|
493
|
+
throw new Error(`Invalid coordinate values at ${context}`);
|
|
494
|
+
}
|
|
495
|
+
const coordinate = create(CoordinateSchema);
|
|
496
|
+
coordinate.x = x;
|
|
497
|
+
coordinate.y = y;
|
|
498
|
+
const z = value[2];
|
|
499
|
+
if (typeof z === "number" && Number.isFinite(z)) {
|
|
500
|
+
coordinate.z = z;
|
|
501
|
+
}
|
|
502
|
+
const m = value[3];
|
|
503
|
+
if (typeof m === "number" && Number.isFinite(m)) {
|
|
504
|
+
coordinate.m = m;
|
|
505
|
+
}
|
|
506
|
+
return coordinate;
|
|
507
|
+
}
|
|
508
|
+
function isPoint(value) {
|
|
509
|
+
return typeof value.x === "number" && typeof value.y === "number";
|
|
510
|
+
}
|
|
511
|
+
function isEnvelope(value) {
|
|
512
|
+
return (typeof value.xmin === "number" &&
|
|
513
|
+
typeof value.ymin === "number" &&
|
|
514
|
+
typeof value.xmax === "number" &&
|
|
515
|
+
typeof value.ymax === "number");
|
|
516
|
+
}
|
|
517
|
+
function isMultipoint(value) {
|
|
518
|
+
return Array.isArray(value.points);
|
|
519
|
+
}
|
|
520
|
+
function isPolyline(value) {
|
|
521
|
+
return Array.isArray(value.paths);
|
|
522
|
+
}
|
|
523
|
+
function isPolygon(value) {
|
|
524
|
+
return Array.isArray(value.rings);
|
|
525
|
+
}
|
|
526
|
+
/**
|
|
527
|
+
* Converts a stream of proto FeaturePages into an async generator
|
|
528
|
+
* that yields arrays of JSON-compatible features, matching the
|
|
529
|
+
* existing queryFeaturesStream yield type.
|
|
530
|
+
*/
|
|
531
|
+
export async function* streamProtoPages(stream) {
|
|
532
|
+
try {
|
|
533
|
+
for await (const page of stream) {
|
|
534
|
+
if (page.features.length === 0 && page.isLastPage) {
|
|
535
|
+
break;
|
|
536
|
+
}
|
|
537
|
+
const features = page.features.map(convertFeature);
|
|
538
|
+
if (features.length > 0) {
|
|
539
|
+
yield features;
|
|
540
|
+
}
|
|
541
|
+
if (page.isLastPage) {
|
|
542
|
+
break;
|
|
543
|
+
}
|
|
544
|
+
}
|
|
545
|
+
}
|
|
546
|
+
catch (error) {
|
|
547
|
+
throw wrapConnectError(error);
|
|
548
|
+
}
|
|
549
|
+
}
|
|
550
|
+
/**
|
|
551
|
+
* Wraps a ConnectError (or any error from the gRPC transport) in a
|
|
552
|
+
* HonuaGrpcError for consistent `instanceof` discrimination.
|
|
553
|
+
*/
|
|
554
|
+
export function wrapConnectError(error) {
|
|
555
|
+
if (error instanceof Error && "code" in error && typeof error.code === "number") {
|
|
556
|
+
return new HonuaGrpcError(error.code, error.message, "rawMessage" in error ? error.rawMessage : undefined);
|
|
557
|
+
}
|
|
558
|
+
if (error instanceof Error) {
|
|
559
|
+
return error;
|
|
560
|
+
}
|
|
561
|
+
return new Error(String(error));
|
|
562
|
+
}
|
|
563
|
+
function convertSpatialReference(sr) {
|
|
564
|
+
const result = {};
|
|
565
|
+
if (sr.wkid !== 0) {
|
|
566
|
+
result.wkid = sr.wkid;
|
|
567
|
+
}
|
|
568
|
+
if (sr.latestWkid !== 0) {
|
|
569
|
+
result.latestWkid = sr.latestWkid;
|
|
570
|
+
}
|
|
571
|
+
if (sr.wkt) {
|
|
572
|
+
result.wkt = sr.wkt;
|
|
573
|
+
}
|
|
574
|
+
return result;
|
|
575
|
+
}
|
|
576
|
+
function convertField(field) {
|
|
577
|
+
return {
|
|
578
|
+
name: field.name,
|
|
579
|
+
type: FIELD_TYPE_MAP[field.fieldType] ?? "esriFieldTypeString",
|
|
580
|
+
alias: field.name,
|
|
581
|
+
length: field.length || undefined,
|
|
582
|
+
nullable: field.nullable,
|
|
583
|
+
};
|
|
584
|
+
}
|
|
585
|
+
function convertFeature(feature) {
|
|
586
|
+
const attributes = {};
|
|
587
|
+
for (const [key, attrValue] of Object.entries(feature.attributes)) {
|
|
588
|
+
attributes[key] = convertAttributeValue(attrValue);
|
|
589
|
+
}
|
|
590
|
+
const result = { attributes };
|
|
591
|
+
if (feature.geometry) {
|
|
592
|
+
result.geometry = convertGeometry(feature.geometry);
|
|
593
|
+
}
|
|
594
|
+
return result;
|
|
595
|
+
}
|
|
596
|
+
function convertAttributeValue(attr) {
|
|
597
|
+
switch (attr.value.case) {
|
|
598
|
+
case "stringValue":
|
|
599
|
+
return attr.value.value;
|
|
600
|
+
case "int32Value":
|
|
601
|
+
return attr.value.value;
|
|
602
|
+
case "int64Value":
|
|
603
|
+
return toSafeNumberOrString(attr.value.value);
|
|
604
|
+
case "doubleValue":
|
|
605
|
+
return attr.value.value;
|
|
606
|
+
case "floatValue":
|
|
607
|
+
return attr.value.value;
|
|
608
|
+
case "boolValue":
|
|
609
|
+
return attr.value.value;
|
|
610
|
+
case "datetimeValue":
|
|
611
|
+
return toSafeNumberOrString(attr.value.value);
|
|
612
|
+
case "bytesValue":
|
|
613
|
+
return attr.value.value;
|
|
614
|
+
case "nullValue":
|
|
615
|
+
return null;
|
|
616
|
+
default:
|
|
617
|
+
return null;
|
|
618
|
+
}
|
|
619
|
+
}
|
|
620
|
+
function toSafeNumberOrString(value) {
|
|
621
|
+
if (value <= MAX_SAFE_INTEGER_BIGINT && value >= MIN_SAFE_INTEGER_BIGINT) {
|
|
622
|
+
return Number(value);
|
|
623
|
+
}
|
|
624
|
+
return value.toString();
|
|
625
|
+
}
|
|
626
|
+
/**
|
|
627
|
+
* Builds an Esri-JSON coordinate array from a proto coordinate. Z and M are
|
|
628
|
+
* appended only when present, matching `f=json` / PBF output:
|
|
629
|
+
* - `[x, y]` (2D)
|
|
630
|
+
* - `[x, y, z]` (Z only)
|
|
631
|
+
* - `[x, y, m]` (M only — Esri's M-without-Z convention)
|
|
632
|
+
* - `[x, y, z, m]` (Z and M)
|
|
633
|
+
*
|
|
634
|
+
* A `NaN` placeholder is never emitted: `JSON.stringify` would serialize it to
|
|
635
|
+
* `null`, which is invalid Esri-JSON/GeoJSON and diverges from the other
|
|
636
|
+
* transports.
|
|
637
|
+
*/
|
|
638
|
+
function coordToArray(x, y, z, m) {
|
|
639
|
+
const coords = [x, y];
|
|
640
|
+
if (z !== undefined)
|
|
641
|
+
coords.push(z);
|
|
642
|
+
if (m !== undefined)
|
|
643
|
+
coords.push(m);
|
|
644
|
+
return coords;
|
|
645
|
+
}
|
|
646
|
+
function convertGeometry(geometry) {
|
|
647
|
+
switch (geometry.shape.case) {
|
|
648
|
+
case "point": {
|
|
649
|
+
const p = geometry.shape.value;
|
|
650
|
+
const result = { x: p.x, y: p.y };
|
|
651
|
+
if (p.z !== undefined)
|
|
652
|
+
result.z = p.z;
|
|
653
|
+
if (p.m !== undefined)
|
|
654
|
+
result.m = p.m;
|
|
655
|
+
return result;
|
|
656
|
+
}
|
|
657
|
+
case "multiPoint": {
|
|
658
|
+
const mp = geometry.shape.value;
|
|
659
|
+
return {
|
|
660
|
+
points: mp.points.map((p) => coordToArray(p.x, p.y, p.z, p.m)),
|
|
661
|
+
};
|
|
662
|
+
}
|
|
663
|
+
case "polyline": {
|
|
664
|
+
const pl = geometry.shape.value;
|
|
665
|
+
return {
|
|
666
|
+
paths: pl.paths.map((path) => path.coords.map((c) => coordToArray(c.x, c.y, c.z, c.m))),
|
|
667
|
+
};
|
|
668
|
+
}
|
|
669
|
+
case "polygon": {
|
|
670
|
+
const pg = geometry.shape.value;
|
|
671
|
+
return {
|
|
672
|
+
rings: pg.rings.map((ring) => ring.coords.map((c) => coordToArray(c.x, c.y, c.z, c.m))),
|
|
673
|
+
};
|
|
674
|
+
}
|
|
675
|
+
case "multiPolygon": {
|
|
676
|
+
const mpg = geometry.shape.value;
|
|
677
|
+
const rings = [];
|
|
678
|
+
for (const poly of mpg.polygons) {
|
|
679
|
+
for (const ring of poly.rings) {
|
|
680
|
+
rings.push(ring.coords.map((c) => coordToArray(c.x, c.y, c.z, c.m)));
|
|
681
|
+
}
|
|
682
|
+
}
|
|
683
|
+
return { rings };
|
|
684
|
+
}
|
|
685
|
+
default:
|
|
686
|
+
return null;
|
|
687
|
+
}
|
|
688
|
+
}
|