@honua/react 0.1.12 → 0.1.13
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/columnar/apache-arrow.d.ts +17 -0
- package/columnar/apache-arrow.d.ts.map +1 -0
- package/columnar/apache-arrow.js +1036 -0
- package/columnar/batch-cache-conformance.d.ts +66 -0
- package/columnar/batch-cache-conformance.d.ts.map +1 -0
- package/columnar/batch-cache-conformance.js +317 -0
- package/columnar/batch-cache-indexeddb.d.ts +31 -0
- package/columnar/batch-cache-indexeddb.d.ts.map +1 -0
- package/columnar/batch-cache-indexeddb.js +148 -0
- package/columnar/batch-cache.d.ts +298 -0
- package/columnar/batch-cache.d.ts.map +1 -0
- package/columnar/batch-cache.js +757 -0
- package/columnar/geoarrow-aggregate.d.ts +178 -0
- package/columnar/geoarrow-aggregate.d.ts.map +1 -0
- package/columnar/geoarrow-aggregate.js +976 -0
- package/columnar/geoarrow-patch.d.ts +382 -0
- package/columnar/geoarrow-patch.d.ts.map +1 -0
- package/columnar/geoarrow-patch.js +1656 -0
- package/columnar/geoarrow-reproject.d.ts +22 -0
- package/columnar/geoarrow-reproject.d.ts.map +1 -0
- package/columnar/geoarrow-reproject.js +119 -0
- package/columnar/geoarrow-serialization.d.ts +68 -0
- package/columnar/geoarrow-serialization.d.ts.map +1 -0
- package/columnar/geoarrow-serialization.js +331 -0
- package/columnar/geoarrow-types.d.ts +271 -0
- package/columnar/geoarrow-types.d.ts.map +1 -0
- package/columnar/geoarrow-types.js +15 -0
- package/columnar/geoarrow.d.ts +52 -0
- package/columnar/geoarrow.d.ts.map +1 -0
- package/columnar/geoarrow.js +1469 -0
- package/columnar/index.d.ts +43 -0
- package/columnar/index.d.ts.map +1 -0
- package/columnar/index.js +29 -0
- package/columnar/operators.d.ts +70 -0
- package/columnar/operators.d.ts.map +1 -0
- package/columnar/operators.js +307 -0
- package/columnar/result.d.ts +369 -0
- package/columnar/result.d.ts.map +1 -0
- package/columnar/result.js +815 -0
- package/columnar/telemetry.d.ts +152 -0
- package/columnar/telemetry.d.ts.map +1 -0
- package/columnar/telemetry.js +265 -0
- package/columnar/transfer.d.ts +28 -0
- package/columnar/transfer.d.ts.map +1 -0
- package/columnar/transfer.js +669 -0
- package/columnar/types.d.ts +175 -0
- package/columnar/types.d.ts.map +1 -0
- package/columnar/types.js +22 -0
- package/columnar/worker.d.ts +157 -0
- package/columnar/worker.d.ts.map +1 -0
- package/columnar/worker.js +1059 -0
- package/connect-url-safety.d.ts +53 -0
- package/connect-url-safety.js +189 -0
- package/contract/pmtiles.d.ts +6 -5
- package/contract/pmtiles.d.ts.map +1 -1
- package/contract/pmtiles.js +30 -5
- package/core/client.d.ts.map +1 -1
- package/core/client.js +87 -19
- package/core/deprecation-notice.d.ts +28 -0
- package/core/deprecation-notice.d.ts.map +1 -0
- package/core/deprecation-notice.js +22 -0
- package/core/esri-geojson.d.ts.map +1 -1
- package/core/esri-geojson.js +10 -6
- package/core/optional-grpc-peer.d.ts +15 -0
- package/core/optional-grpc-peer.d.ts.map +1 -0
- package/core/optional-grpc-peer.js +60 -0
- package/esri-compat/basemap-gallery.d.ts +2 -0
- package/esri-compat/basemap-gallery.d.ts.map +1 -1
- package/esri-compat/basemap-gallery.js +12 -0
- package/esri-compat/basemap.d.ts +4 -0
- package/esri-compat/basemap.d.ts.map +1 -1
- package/esri-compat/basemap.js +70 -0
- package/esri-compat/bookmarks.d.ts +2 -0
- package/esri-compat/bookmarks.d.ts.map +1 -1
- package/esri-compat/bookmarks.js +12 -0
- package/esri-compat/controls.d.ts +18 -0
- package/esri-compat/controls.d.ts.map +1 -1
- package/esri-compat/controls.js +120 -57
- package/esri-compat/directions.d.ts +4 -0
- package/esri-compat/directions.d.ts.map +1 -1
- package/esri-compat/directions.js +30 -20
- package/esri-compat/editor.d.ts +4 -0
- package/esri-compat/editor.d.ts.map +1 -1
- package/esri-compat/editor.js +16 -0
- package/esri-compat/esri-config.d.ts +2 -1
- package/esri-compat/esri-config.d.ts.map +1 -1
- package/esri-compat/feature-effect.d.ts +23 -0
- package/esri-compat/feature-effect.d.ts.map +1 -0
- package/esri-compat/feature-effect.js +12 -0
- package/esri-compat/feature-form.d.ts +6 -0
- package/esri-compat/feature-form.d.ts.map +1 -1
- package/esri-compat/feature-form.js +63 -0
- package/esri-compat/feature-layer.d.ts +21 -2
- package/esri-compat/feature-layer.d.ts.map +1 -1
- package/esri-compat/feature-layer.js +172 -1
- package/esri-compat/feature-table.d.ts +5 -0
- package/esri-compat/feature-table.d.ts.map +1 -1
- package/esri-compat/feature-table.js +23 -0
- package/esri-compat/identity-manager.d.ts +1 -1
- package/esri-compat/identity-manager.js +1 -1
- package/esri-compat/legend.d.ts +2 -0
- package/esri-compat/legend.d.ts.map +1 -1
- package/esri-compat/legend.js +98 -0
- package/esri-compat/locator.d.ts +1 -1
- package/esri-compat/locator.js +1 -1
- package/esri-compat/map-view-mount.d.ts +1 -0
- package/esri-compat/map-view-mount.d.ts.map +1 -1
- package/esri-compat/map-view-mount.js +46 -25
- package/esri-compat/map-view.d.ts +13 -0
- package/esri-compat/map-view.d.ts.map +1 -1
- package/esri-compat/map-view.js +94 -8
- package/esri-compat/map.d.ts +5 -1
- package/esri-compat/map.d.ts.map +1 -1
- package/esri-compat/map.js +10 -0
- package/esri-compat/measurement.d.ts +2 -0
- package/esri-compat/measurement.d.ts.map +1 -1
- package/esri-compat/measurement.js +14 -0
- package/esri-compat/point.d.ts +7 -0
- package/esri-compat/point.d.ts.map +1 -1
- package/esri-compat/point.js +33 -3
- package/esri-compat/popup.d.ts +2 -0
- package/esri-compat/popup.d.ts.map +1 -1
- package/esri-compat/popup.js +12 -0
- package/esri-compat/portal.d.ts +1 -1
- package/esri-compat/portal.js +1 -1
- package/esri-compat/print.d.ts +3 -0
- package/esri-compat/print.d.ts.map +1 -1
- package/esri-compat/print.js +15 -0
- package/esri-compat/search.d.ts +4 -0
- package/esri-compat/search.d.ts.map +1 -1
- package/esri-compat/search.js +25 -28
- package/esri-compat/sketch.d.ts +2 -0
- package/esri-compat/sketch.d.ts.map +1 -1
- package/esri-compat/sketch.js +12 -0
- package/esri-compat/widget-host.d.ts +46 -17
- package/esri-compat/widget-host.d.ts.map +1 -1
- package/esri-compat/widget-host.js +84 -20
- package/esri-compat/widget-shell-hosts.d.ts +61 -0
- package/esri-compat/widget-shell-hosts.d.ts.map +1 -0
- package/esri-compat/widget-shell-hosts.js +76 -0
- package/geocoding/index.d.ts +114 -0
- package/geocoding/index.d.ts.map +1 -0
- package/geocoding/index.js +293 -0
- package/geocoding/provider-http.d.ts +37 -0
- package/geocoding/provider-http.d.ts.map +1 -0
- package/geocoding/provider-http.js +93 -0
- package/geocoding/provider.d.ts +145 -0
- package/geocoding/provider.d.ts.map +1 -0
- package/geocoding/provider.js +41 -0
- package/geocoding/providers/honua.d.ts +28 -0
- package/geocoding/providers/honua.d.ts.map +1 -0
- package/geocoding/providers/honua.js +68 -0
- package/geocoding/providers/nominatim.d.ts +47 -0
- package/geocoding/providers/nominatim.d.ts.map +1 -0
- package/geocoding/providers/nominatim.js +105 -0
- package/geocoding/providers/pelias.d.ts +40 -0
- package/geocoding/providers/pelias.d.ts.map +1 -0
- package/geocoding/providers/pelias.js +115 -0
- package/geocoding/providers/photon.d.ts +39 -0
- package/geocoding/providers/photon.d.ts.map +1 -0
- package/geocoding/providers/photon.js +107 -0
- package/geometry/convert.d.ts +13 -0
- package/geometry/convert.d.ts.map +1 -0
- package/geometry/convert.js +12 -0
- package/geometry/index.d.ts +17 -0
- package/geometry/index.d.ts.map +1 -0
- package/geometry/index.js +15 -0
- package/geometry/internal.d.ts +25 -0
- package/geometry/internal.d.ts.map +1 -0
- package/geometry/internal.js +40 -0
- package/geometry/ops.d.ts +71 -0
- package/geometry/ops.d.ts.map +1 -0
- package/geometry/ops.js +147 -0
- package/geometry/project.d.ts +40 -0
- package/geometry/project.d.ts.map +1 -0
- package/geometry/project.js +88 -0
- package/geometry/types.d.ts +36 -0
- package/geometry/types.d.ts.map +1 -0
- package/geometry/types.js +12 -0
- package/kernel/renderer.d.ts +82 -0
- package/kernel/renderer.js +1 -0
- package/offline/digest.d.ts +15 -0
- package/offline/digest.js +58 -0
- package/offline/quota.d.ts +161 -0
- package/offline/quota.js +370 -0
- package/offline/types.d.ts +349 -0
- package/offline/types.js +75 -0
- package/package.json +14 -2
- package/widget-capabilities.d.ts +67 -0
- package/widget-capabilities.js +152 -0
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dependency-free columnar batch and worker-transfer contracts exported by
|
|
3
|
+
* `@honua/sdk-js/query-planner` for large geospatial results.
|
|
4
|
+
*
|
|
5
|
+
* The Honua envelope includes a normative dependency-free GeoArrow 0.2 mapping
|
|
6
|
+
* without importing an Arrow implementation. Transfers expose exact
|
|
7
|
+
* backing-allocation and payload-copy metrics, deduplicate shared backing
|
|
8
|
+
* buffers, enforce conservative default ceilings, and use a one-owner lease
|
|
9
|
+
* with deterministic cancellation, acknowledgement, error, and disposal
|
|
10
|
+
* behavior.
|
|
11
|
+
*
|
|
12
|
+
* @experimental
|
|
13
|
+
*/
|
|
14
|
+
export { ColumnarBatchLease, createColumnarBatch, inspectColumnarBatch, leaseColumnarBatch } from "./transfer.js";
|
|
15
|
+
export { fromApacheArrowRecordBatch, loadApacheArrow, toApacheArrowRecordBatch } from "./apache-arrow.js";
|
|
16
|
+
export { createGeoArrowBatch, decodeGeoArrowBatch, inspectGeoArrowBatch } from "./geoarrow.js";
|
|
17
|
+
export { DEFAULT_COLUMNAR_RESULT_MAX_FEATURES, columnarBatchToResult, columnarBatchToResultPages, resultToColumnarBatch, } from "./result.js";
|
|
18
|
+
export type { ColumnarBatchToResultOptions, ColumnarBatchToResultPagesOptions, ColumnarGeoJsonGeometry, ColumnarGeoJsonGeometryType, ColumnarResult, ColumnarResultAttributeBinding, ColumnarResultDictionaryBinding, ColumnarResultFeatureIdBinding, ColumnarResultGeometryDescriptor, ColumnarResultProvenance, ColumnarResultTemporalBinding, ResultToColumnarBatchAttributeOptions, ResultToColumnarBatchGeometryOptions, ResultToColumnarBatchOptions, ResultToColumnarBatchResult, } from "./result.js";
|
|
19
|
+
export { createGeoArrowReprojectOperation } from "./geoarrow-reproject.js";
|
|
20
|
+
export type { CreateGeoArrowReprojectOperationOptions } from "./geoarrow-reproject.js";
|
|
21
|
+
export { DEFAULT_GEOARROW_AGGREGATE_MAX_GROUPS, DEFAULT_GEOARROW_AGGREGATE_YIELD_ROWS, GEOARROW_AGGREGATE_ABORT_CHECK_ROWS, GEOARROW_AGGREGATE_MAX_GRID_CELL_INDEX, HONUA_GEOARROW_AGGREGATE_LAYOUT_VERSION, createGeoArrowAggregateOperation, readGeoArrowAggregateBatch, } from "./geoarrow-aggregate.js";
|
|
22
|
+
export type { CreateGeoArrowAggregateOperationOptions, GeoArrowAggregateDictionaryGroupSpec, GeoArrowAggregateGridGroupSpec, GeoArrowAggregateGroupSpec, GeoArrowAggregateMetricKind, GeoArrowAggregateMetricSpec, GeoArrowAggregateNullKeyPolicy, GeoArrowAggregateNumericColumn, GeoArrowAggregateResult, GeoArrowAggregateRow, GeoArrowAggregateSource, GeoArrowAggregateTemporalGroupSpec, GeoArrowAggregateTruncationUnit, } from "./geoarrow-aggregate.js";
|
|
23
|
+
export { COLUMNAR_PATCH_ABORT_CHECK_ROWS, COLUMNAR_PATCH_KIND, COLUMNAR_PATCH_VERSION, DEFAULT_COLUMNAR_PATCH_MAX_CAPACITY_UTILIZATION, DEFAULT_COLUMNAR_PATCH_MAX_OPERATIONS, DEFAULT_COLUMNAR_PATCH_MAX_TOMBSTONE_OVERLAY_BYTES, DEFAULT_COLUMNAR_PATCH_MAX_TOMBSTONE_RATIO, DEFAULT_COLUMNAR_PATCH_MAX_VERTEX_GROWTH_RATIO, HONUA_COLUMNAR_PATCH_LAYOUT_VERSION, HonuaColumnarPatchError, applyColumnarPatch, columnarPatchLiveMask, createColumnarPatch, createColumnarPatchOperation, createPatchableGeoArrowBatch, decodePatchedGeoArrowBatch, inspectColumnarPatchState, } from "./geoarrow-patch.js";
|
|
24
|
+
export type { ApplyColumnarPatchOptions, ApplyColumnarPatchOutcomeV1, ColumnarPatchAppendV1, ColumnarPatchAppliedInPlaceV1, ColumnarPatchCapacityV1, ColumnarPatchCursorV1, ColumnarPatchDeleteV1, ColumnarPatchGeometry, ColumnarPatchMetricsV1, ColumnarPatchOperationV1, ColumnarPatchRebuildOptions, ColumnarPatchRebuildReason, ColumnarPatchRebuiltV1, ColumnarPatchRejectedV1, ColumnarPatchRejectionCode, ColumnarPatchReserveV1, ColumnarPatchStateV1, ColumnarPatchThresholds, ColumnarPatchUpdateV1, ColumnarPatchV1, CreateColumnarPatchInput, CreateColumnarPatchOperationOptions, CreatePatchableGeoArrowBatchOptions, CreatedPatchableGeoArrowBatch, DecodedPatchedGeoArrowBatch, PatchableGeoArrowBatchMetrics, } from "./geoarrow-patch.js";
|
|
25
|
+
export { createGeoArrowFilterOperation, createGeoArrowProjectionOperation, createGeoArrowTransformOperation, } from "./operators.js";
|
|
26
|
+
export { GEOARROW_ENVELOPE_MIGRATIONS, HONUA_GEOARROW_ENVELOPE_KIND, HONUA_GEOARROW_ENVELOPE_VERSION, deserializeGeoArrowBatch, planGeoArrowEnvelopeMigration, readableGeoArrowEnvelopeVersions, serializeGeoArrowBatch, } from "./geoarrow-serialization.js";
|
|
27
|
+
export { DEFAULT_COLUMNAR_BATCH_CACHE_MAX_AGE_MS, DEFAULT_COLUMNAR_BATCH_CACHE_MAX_RECORDS, DEFAULT_COLUMNAR_BATCH_CACHE_QUOTA_BYTES, HONUA_COLUMNAR_BATCH_CACHE_FORMAT, MAX_COLUMNAR_BATCH_CACHE_MAX_AGE_MS, MAX_COLUMNAR_BATCH_CACHE_MAX_RECORDS, MAX_COLUMNAR_BATCH_CACHE_QUOTA_BYTES, columnarBatchCacheKey, columnarBatchCacheOrderingDigest, createColumnarBatchCache, createMemoryColumnarBatchCacheStorage, planColumnarBatchCacheAdmission, } from "./batch-cache.js";
|
|
28
|
+
export type { ColumnarBatchCacheAdmissionV1, ColumnarBatchCacheDiagnosticV1, ColumnarBatchCacheEntryV1, ColumnarBatchCacheFreshnessV1, ColumnarBatchCacheHandle, ColumnarBatchCacheMissReason, ColumnarBatchCacheOptions, ColumnarBatchCacheReadOptions, ColumnarBatchCacheReadV1, ColumnarBatchCacheRecordV1, ColumnarBatchCacheRefusalReason, ColumnarBatchCacheStaleReason, ColumnarBatchCacheStorage, ColumnarBatchCacheWriteOptions, ColumnarBatchCacheWriteV1, } from "./batch-cache.js";
|
|
29
|
+
export { columnarAuthorizationScopeDigest } from "./telemetry.js";
|
|
30
|
+
export type { ColumnarTelemetry, ColumnarTelemetryIdentityV1, ColumnarTelemetryKind, ColumnarTelemetryOptions, ColumnarTelemetrySpan, ColumnarTelemetrySpanResult, } from "./telemetry.js";
|
|
31
|
+
export { createIndexedDbColumnarBatchCacheStorage } from "./batch-cache-indexeddb.js";
|
|
32
|
+
export type { IndexedDbColumnarBatchCacheStorageOptions } from "./batch-cache-indexeddb.js";
|
|
33
|
+
export { COLUMNAR_BATCH_CACHE_CONFORMANCE_CASES, HONUA_COLUMNAR_BATCH_CACHE_CONFORMANCE_KIND, HONUA_COLUMNAR_BATCH_CACHE_CONFORMANCE_VERSION, columnarBatchCacheFixtureBatch, columnarBatchCacheFixtureIdentity, columnarBatchCacheLegacyEntry, runColumnarBatchCacheConformance, } from "./batch-cache-conformance.js";
|
|
34
|
+
export type { ColumnarBatchCacheConformanceCaseResultV1, ColumnarBatchCacheConformanceOptions, ColumnarBatchCacheConformanceReportV1, } from "./batch-cache-conformance.js";
|
|
35
|
+
export { GEOARROW_SPEC_VERSION, HONUA_GEOARROW_LAYOUT_VERSION, HonuaGeoArrowError, } from "./geoarrow-types.js";
|
|
36
|
+
export type { GeoArrowEnvelopeMigrationPlanV1, GeoArrowEnvelopeMigrationRefusal, GeoArrowEnvelopeMigrationV1, } from "./geoarrow-types.js";
|
|
37
|
+
export type { ApacheArrowAdapterMetrics, ApacheArrowAdapterOptions, ApacheArrowDataLike, ApacheArrowFieldLike, ApacheArrowModuleImporter, ApacheArrowModuleLike, ApacheArrowRecordBatchLike, ApacheArrowRecordBatchResult, ApacheArrowTypeLike, ApacheArrowVectorLike, CreateGeoArrowBatchInput, CreatedGeoArrowBatch, DecodedGeoArrowBatch, DecodedGeoArrowRow, GeoArrowBatchInspection, GeoArrowBatchSerializationResult, GeoArrowConversionLimits, GeoArrowSerializationMetrics, GeoArrowSerializationOptions, GeoArrowConversionMetrics, GeoArrowCoordinateLayout, GeoArrowCrs, GeoArrowCrsType, GeoArrowDictionaryBuffers, GeoArrowDictionaryColumnInput, GeoArrowDimensions, GeoArrowEdges, GeoArrowFeatureIdColumnInput, GeoArrowGeometryBuffers, GeoArrowGeometryColumnInput, GeoArrowGeometryKind, GeoArrowLineString, GeoArrowLineStringColumnInput, GeoArrowPoint, GeoArrowPointColumnInput, GeoArrowPolygon, GeoArrowPolygonColumnInput, GeoArrowPosition, GeoArrowTemporalBuffers, GeoArrowTemporalColumnInput, GeoArrowTimestampUnit, FromApacheArrowRecordBatchOptions, GeoArrowBatchFromApacheResult, HonuaGeoArrowErrorCode, LoadApacheArrowOptions, } from "./geoarrow-types.js";
|
|
38
|
+
export type { CreateGeoArrowFilterOperationOptions, CreateGeoArrowProjectionOperationOptions, CreateGeoArrowTransformOperationOptions, GeoArrowProjectionColumn, GeoArrowRowPredicate, } from "./operators.js";
|
|
39
|
+
export { COLUMNAR_WORKER_CANCEL_KIND, COLUMNAR_WORKER_ERROR_KIND, COLUMNAR_WORKER_PROGRESS_KIND, COLUMNAR_WORKER_PROTOCOL_VERSION, COLUMNAR_WORKER_REQUEST_KIND, COLUMNAR_WORKER_RESULT_KIND, HonuaColumnarWorkerError, createColumnarWorkerSession, startColumnarWorkerHost, } from "./worker.js";
|
|
40
|
+
export type { ColumnarWorkerCancelV1, ColumnarWorkerErrorCode, ColumnarWorkerErrorV1, ColumnarWorkerExecutionProgress, ColumnarWorkerExecutionResult, ColumnarWorkerFactory, ColumnarWorkerFaultEvent, ColumnarWorkerHost, ColumnarWorkerMessageEvent, ColumnarWorkerOperation, ColumnarWorkerOperationContext, ColumnarWorkerProgressV1, ColumnarWorkerRequestV1, ColumnarWorkerResultV1, ColumnarWorkerSession, ColumnarWorkerSessionState, ColumnarWorkerStreamOrdering, ColumnarWorkerTransport, CreateColumnarWorkerSessionOptions, ExecuteColumnarWorkerOperationOptions, StartColumnarWorkerHostOptions, } from "./worker.js";
|
|
41
|
+
export { COLUMNAR_BATCH_KIND, COLUMNAR_BATCH_VERSION, COLUMNAR_TRANSFER_KIND, DEFAULT_COLUMNAR_BATCH_MAX_BACKING_BYTES, DEFAULT_COLUMNAR_BATCH_MAX_BUFFER_VIEWS, DEFAULT_COLUMNAR_BATCH_MAX_METADATA_ENTRIES, DEFAULT_COLUMNAR_BATCH_MAX_ROWS, DEFAULT_COLUMNAR_BATCH_MAX_SCHEMA_NODES, DEFAULT_COLUMNAR_BATCH_MAX_STRING_BYTES, HonuaColumnarTransferError, } from "./types.js";
|
|
42
|
+
export type { ColumnarBatchLeaseState, ColumnarBatchIdentityV1, ColumnarBatchLimits, ColumnarBatchMetrics, ColumnarBatchV1, ColumnarBufferRole, ColumnarBufferV1, ColumnarFieldV1, ColumnarFreshnessV1, ColumnarOrderingKeyV1, ColumnarOrderingV1, ColumnarSchemaV1, ColumnarTransferErrorCode, ColumnarTransferMessageV1, ColumnarTransferOptions, ColumnarTransferReceipt, ColumnarTransferTarget, ColumnarTypeV1, CreateColumnarBatchInput, } from "./types.js";
|
|
43
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/columnar/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dependency-free columnar batch and worker-transfer contracts exported by
|
|
3
|
+
* `@honua/sdk-js/query-planner` for large geospatial results.
|
|
4
|
+
*
|
|
5
|
+
* The Honua envelope includes a normative dependency-free GeoArrow 0.2 mapping
|
|
6
|
+
* without importing an Arrow implementation. Transfers expose exact
|
|
7
|
+
* backing-allocation and payload-copy metrics, deduplicate shared backing
|
|
8
|
+
* buffers, enforce conservative default ceilings, and use a one-owner lease
|
|
9
|
+
* with deterministic cancellation, acknowledgement, error, and disposal
|
|
10
|
+
* behavior.
|
|
11
|
+
*
|
|
12
|
+
* @experimental
|
|
13
|
+
*/
|
|
14
|
+
export { ColumnarBatchLease, createColumnarBatch, inspectColumnarBatch, leaseColumnarBatch } from "./transfer.js";
|
|
15
|
+
export { fromApacheArrowRecordBatch, loadApacheArrow, toApacheArrowRecordBatch } from "./apache-arrow.js";
|
|
16
|
+
export { createGeoArrowBatch, decodeGeoArrowBatch, inspectGeoArrowBatch } from "./geoarrow.js";
|
|
17
|
+
export { DEFAULT_COLUMNAR_RESULT_MAX_FEATURES, columnarBatchToResult, columnarBatchToResultPages, resultToColumnarBatch, } from "./result.js";
|
|
18
|
+
export { createGeoArrowReprojectOperation } from "./geoarrow-reproject.js";
|
|
19
|
+
export { DEFAULT_GEOARROW_AGGREGATE_MAX_GROUPS, DEFAULT_GEOARROW_AGGREGATE_YIELD_ROWS, GEOARROW_AGGREGATE_ABORT_CHECK_ROWS, GEOARROW_AGGREGATE_MAX_GRID_CELL_INDEX, HONUA_GEOARROW_AGGREGATE_LAYOUT_VERSION, createGeoArrowAggregateOperation, readGeoArrowAggregateBatch, } from "./geoarrow-aggregate.js";
|
|
20
|
+
export { COLUMNAR_PATCH_ABORT_CHECK_ROWS, COLUMNAR_PATCH_KIND, COLUMNAR_PATCH_VERSION, DEFAULT_COLUMNAR_PATCH_MAX_CAPACITY_UTILIZATION, DEFAULT_COLUMNAR_PATCH_MAX_OPERATIONS, DEFAULT_COLUMNAR_PATCH_MAX_TOMBSTONE_OVERLAY_BYTES, DEFAULT_COLUMNAR_PATCH_MAX_TOMBSTONE_RATIO, DEFAULT_COLUMNAR_PATCH_MAX_VERTEX_GROWTH_RATIO, HONUA_COLUMNAR_PATCH_LAYOUT_VERSION, HonuaColumnarPatchError, applyColumnarPatch, columnarPatchLiveMask, createColumnarPatch, createColumnarPatchOperation, createPatchableGeoArrowBatch, decodePatchedGeoArrowBatch, inspectColumnarPatchState, } from "./geoarrow-patch.js";
|
|
21
|
+
export { createGeoArrowFilterOperation, createGeoArrowProjectionOperation, createGeoArrowTransformOperation, } from "./operators.js";
|
|
22
|
+
export { GEOARROW_ENVELOPE_MIGRATIONS, HONUA_GEOARROW_ENVELOPE_KIND, HONUA_GEOARROW_ENVELOPE_VERSION, deserializeGeoArrowBatch, planGeoArrowEnvelopeMigration, readableGeoArrowEnvelopeVersions, serializeGeoArrowBatch, } from "./geoarrow-serialization.js";
|
|
23
|
+
export { DEFAULT_COLUMNAR_BATCH_CACHE_MAX_AGE_MS, DEFAULT_COLUMNAR_BATCH_CACHE_MAX_RECORDS, DEFAULT_COLUMNAR_BATCH_CACHE_QUOTA_BYTES, HONUA_COLUMNAR_BATCH_CACHE_FORMAT, MAX_COLUMNAR_BATCH_CACHE_MAX_AGE_MS, MAX_COLUMNAR_BATCH_CACHE_MAX_RECORDS, MAX_COLUMNAR_BATCH_CACHE_QUOTA_BYTES, columnarBatchCacheKey, columnarBatchCacheOrderingDigest, createColumnarBatchCache, createMemoryColumnarBatchCacheStorage, planColumnarBatchCacheAdmission, } from "./batch-cache.js";
|
|
24
|
+
export { columnarAuthorizationScopeDigest } from "./telemetry.js";
|
|
25
|
+
export { createIndexedDbColumnarBatchCacheStorage } from "./batch-cache-indexeddb.js";
|
|
26
|
+
export { COLUMNAR_BATCH_CACHE_CONFORMANCE_CASES, HONUA_COLUMNAR_BATCH_CACHE_CONFORMANCE_KIND, HONUA_COLUMNAR_BATCH_CACHE_CONFORMANCE_VERSION, columnarBatchCacheFixtureBatch, columnarBatchCacheFixtureIdentity, columnarBatchCacheLegacyEntry, runColumnarBatchCacheConformance, } from "./batch-cache-conformance.js";
|
|
27
|
+
export { GEOARROW_SPEC_VERSION, HONUA_GEOARROW_LAYOUT_VERSION, HonuaGeoArrowError, } from "./geoarrow-types.js";
|
|
28
|
+
export { COLUMNAR_WORKER_CANCEL_KIND, COLUMNAR_WORKER_ERROR_KIND, COLUMNAR_WORKER_PROGRESS_KIND, COLUMNAR_WORKER_PROTOCOL_VERSION, COLUMNAR_WORKER_REQUEST_KIND, COLUMNAR_WORKER_RESULT_KIND, HonuaColumnarWorkerError, createColumnarWorkerSession, startColumnarWorkerHost, } from "./worker.js";
|
|
29
|
+
export { COLUMNAR_BATCH_KIND, COLUMNAR_BATCH_VERSION, COLUMNAR_TRANSFER_KIND, DEFAULT_COLUMNAR_BATCH_MAX_BACKING_BYTES, DEFAULT_COLUMNAR_BATCH_MAX_BUFFER_VIEWS, DEFAULT_COLUMNAR_BATCH_MAX_METADATA_ENTRIES, DEFAULT_COLUMNAR_BATCH_MAX_ROWS, DEFAULT_COLUMNAR_BATCH_MAX_SCHEMA_NODES, DEFAULT_COLUMNAR_BATCH_MAX_STRING_BYTES, HonuaColumnarTransferError, } from "./types.js";
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import type { ColumnarBatchIdentityV1, DecodedGeoArrowRow, GeoArrowConversionLimits, GeoArrowCrs } from "./geoarrow-types.js";
|
|
2
|
+
import type { ColumnarWorkerOperation } from "./worker.js";
|
|
3
|
+
/** A worker-safe predicate over one decoded GeoArrow row. */
|
|
4
|
+
export type GeoArrowRowPredicate = (row: DecodedGeoArrowRow, index: number) => boolean | Promise<boolean>;
|
|
5
|
+
/** Options for the bounded GeoArrow row-filter worker operation. */
|
|
6
|
+
export interface CreateGeoArrowFilterOperationOptions extends GeoArrowConversionLimits {
|
|
7
|
+
/** Stable id assigned to the filtered output batch. */
|
|
8
|
+
readonly id: string;
|
|
9
|
+
readonly predicate: GeoArrowRowPredicate;
|
|
10
|
+
}
|
|
11
|
+
export type GeoArrowProjectionColumn = "geometry" | "temporal" | "dictionary" | "featureId";
|
|
12
|
+
/** Options for the bounded GeoArrow column-projection worker operation. */
|
|
13
|
+
export interface CreateGeoArrowProjectionOperationOptions extends GeoArrowConversionLimits {
|
|
14
|
+
/** Stable id assigned to the projected output batch. */
|
|
15
|
+
readonly id: string;
|
|
16
|
+
/** Schema id for the projected field set. */
|
|
17
|
+
readonly schemaId: string;
|
|
18
|
+
/** Identity for the projected schema; callers must provide its schema version. */
|
|
19
|
+
readonly identity: ColumnarBatchIdentityV1;
|
|
20
|
+
/** Columns to retain. Geometry is always retained even when omitted. */
|
|
21
|
+
readonly columns?: readonly GeoArrowProjectionColumn[];
|
|
22
|
+
}
|
|
23
|
+
/** Options for a bounded XY affine transform of a GeoArrow batch. */
|
|
24
|
+
export interface CreateGeoArrowTransformOperationOptions extends GeoArrowConversionLimits {
|
|
25
|
+
/** Stable id assigned to the transformed output batch. */
|
|
26
|
+
readonly id: string;
|
|
27
|
+
/** Schema id for the transformed coordinate field set. */
|
|
28
|
+
readonly schemaId: string;
|
|
29
|
+
/** Identity for the transformed schema and coordinate semantics. */
|
|
30
|
+
readonly identity: ColumnarBatchIdentityV1;
|
|
31
|
+
/** Multipliers applied to X and Y. Defaults to `[1, 1]`. */
|
|
32
|
+
readonly scale?: readonly [number, number];
|
|
33
|
+
/** Offsets added to X and Y after scaling. Defaults to `[0, 0]`. */
|
|
34
|
+
readonly translate?: readonly [number, number];
|
|
35
|
+
/** Optional replacement CRS; omitted means preserve the source CRS metadata. */
|
|
36
|
+
readonly outputCrs?: GeoArrowCrs;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Create a deterministic GeoArrow row filter for registration with
|
|
40
|
+
* `startColumnarWorkerHost`.
|
|
41
|
+
*
|
|
42
|
+
* The operation intentionally decodes only the normative GeoArrow row view and
|
|
43
|
+
* re-encodes the selected rows into a new bounded batch. It preserves geometry
|
|
44
|
+
* metadata, temporal values, dictionary values, feature ids, and source
|
|
45
|
+
* identity while omitting `rowOffset` because a filtered batch is not a
|
|
46
|
+
* contiguous source range.
|
|
47
|
+
*/
|
|
48
|
+
export declare function createGeoArrowFilterOperation(options: CreateGeoArrowFilterOperationOptions): ColumnarWorkerOperation;
|
|
49
|
+
/**
|
|
50
|
+
* Create a deterministic GeoArrow column projection for registration with
|
|
51
|
+
* `startColumnarWorkerHost`.
|
|
52
|
+
*
|
|
53
|
+
* Geometry is mandatory in the normative batch. Optional temporal, dictionary,
|
|
54
|
+
* and feature-id columns are retained only when requested. A new schema id and
|
|
55
|
+
* identity are required because the projected field set is a distinct cache and
|
|
56
|
+
* authorization-visible result, even though row order and values are unchanged.
|
|
57
|
+
*/
|
|
58
|
+
export declare function createGeoArrowProjectionOperation(options: CreateGeoArrowProjectionOperationOptions): ColumnarWorkerOperation;
|
|
59
|
+
/**
|
|
60
|
+
* Create a bounded XY affine transform for registration with
|
|
61
|
+
* `startColumnarWorkerHost`.
|
|
62
|
+
*
|
|
63
|
+
* The operation transforms every coordinate while preserving Z/M ordinates,
|
|
64
|
+
* row order, nulls, temporal values, dictionary values, feature ids, and
|
|
65
|
+
* batch identity fields supplied by the caller. A new id, schema id, and
|
|
66
|
+
* identity are required because coordinate semantics are part of the cache
|
|
67
|
+
* and authorization-visible result contract.
|
|
68
|
+
*/
|
|
69
|
+
export declare function createGeoArrowTransformOperation(options: CreateGeoArrowTransformOperationOptions): ColumnarWorkerOperation;
|
|
70
|
+
//# sourceMappingURL=operators.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operators.d.ts","sourceRoot":"","sources":["../../../src/columnar/operators.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,uBAAuB,EACvB,kBAAkB,EAClB,wBAAwB,EACxB,WAAW,EAGZ,MAAM,qBAAqB,CAAC;AAG7B,OAAO,KAAK,EAAE,uBAAuB,EAAkC,MAAM,aAAa,CAAC;AAE3F,6DAA6D;AAC7D,MAAM,MAAM,oBAAoB,GAAG,CAAC,GAAG,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAE1G,oEAAoE;AACpE,MAAM,WAAW,oCAAqC,SAAQ,wBAAwB;IACpF,uDAAuD;IACvD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,SAAS,EAAE,oBAAoB,CAAC;CAC1C;AAED,MAAM,MAAM,wBAAwB,GAAG,UAAU,GAAG,UAAU,GAAG,YAAY,GAAG,WAAW,CAAC;AAE5F,2EAA2E;AAC3E,MAAM,WAAW,wCAAyC,SAAQ,wBAAwB;IACxF,wDAAwD;IACxD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,6CAA6C;IAC7C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,kFAAkF;IAClF,QAAQ,CAAC,QAAQ,EAAE,uBAAuB,CAAC;IAC3C,wEAAwE;IACxE,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,wBAAwB,EAAE,CAAC;CACxD;AAED,qEAAqE;AACrE,MAAM,WAAW,uCAAwC,SAAQ,wBAAwB;IACvF,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,0DAA0D;IAC1D,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,oEAAoE;IACpE,QAAQ,CAAC,QAAQ,EAAE,uBAAuB,CAAC;IAC3C,4DAA4D;IAC5D,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,oEAAoE;IACpE,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/C,gFAAgF;IAChF,QAAQ,CAAC,SAAS,CAAC,EAAE,WAAW,CAAC;CAClC;AAED;;;;;;;;;GASG;AACH,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,oCAAoC,GAAG,uBAAuB,CAuEpH;AAED;;;;;;;;GAQG;AACH,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,wCAAwC,GAChD,uBAAuB,CAqGzB;AAED;;;;;;;;;GASG;AACH,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,uCAAuC,GAC/C,uBAAuB,CAwFzB"}
|
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
import { createGeoArrowBatch, decodeGeoArrowBatch, inspectGeoArrowBatch } from "./geoarrow.js";
|
|
2
|
+
/**
|
|
3
|
+
* Create a deterministic GeoArrow row filter for registration with
|
|
4
|
+
* `startColumnarWorkerHost`.
|
|
5
|
+
*
|
|
6
|
+
* The operation intentionally decodes only the normative GeoArrow row view and
|
|
7
|
+
* re-encodes the selected rows into a new bounded batch. It preserves geometry
|
|
8
|
+
* metadata, temporal values, dictionary values, feature ids, and source
|
|
9
|
+
* identity while omitting `rowOffset` because a filtered batch is not a
|
|
10
|
+
* contiguous source range.
|
|
11
|
+
*/
|
|
12
|
+
export function createGeoArrowFilterOperation(options) {
|
|
13
|
+
if (typeof options !== "object" || options === null) {
|
|
14
|
+
throw new TypeError("GeoArrow filter options must be an object");
|
|
15
|
+
}
|
|
16
|
+
if (typeof options.id !== "string" || options.id.trim() !== options.id || options.id.length === 0) {
|
|
17
|
+
throw new TypeError("GeoArrow filter id must be a non-empty trimmed string");
|
|
18
|
+
}
|
|
19
|
+
if (typeof options.predicate !== "function") {
|
|
20
|
+
throw new TypeError("GeoArrow filter predicate must be a function");
|
|
21
|
+
}
|
|
22
|
+
const limits = { ...options };
|
|
23
|
+
delete limits.id;
|
|
24
|
+
delete limits.predicate;
|
|
25
|
+
return async (batch, context) => {
|
|
26
|
+
const inspection = inspectGeoArrowBatch(batch, limits);
|
|
27
|
+
if (!batch.identity)
|
|
28
|
+
throw new TypeError("GeoArrow filter requires batch identity");
|
|
29
|
+
const decoded = decodeGeoArrowBatch(batch, limits);
|
|
30
|
+
const selected = [];
|
|
31
|
+
for (let index = 0; index < decoded.rows.length; index += 1) {
|
|
32
|
+
if (context.signal.aborted)
|
|
33
|
+
throw new DOMException("The operation was aborted", "AbortError");
|
|
34
|
+
const keep = await options.predicate(decoded.rows[index], index);
|
|
35
|
+
if (typeof keep !== "boolean")
|
|
36
|
+
throw new TypeError("GeoArrow filter predicate must return a boolean");
|
|
37
|
+
if (keep)
|
|
38
|
+
selected.push(decoded.rows[index]);
|
|
39
|
+
if (index === decoded.rows.length - 1 || index % 256 === 0) {
|
|
40
|
+
context.reportProgress(decoded.rows.length === 0 ? 1 : (index + 1) / decoded.rows.length, "filter");
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
const geometry = {
|
|
44
|
+
kind: inspection.geometry.kind,
|
|
45
|
+
field: inspection.geometry.field,
|
|
46
|
+
dimensions: inspection.geometry.dimensions,
|
|
47
|
+
coordinateLayout: inspection.geometry.coordinateLayout,
|
|
48
|
+
...(inspection.geometry.crs === undefined ? {} : { crs: inspection.geometry.crs }),
|
|
49
|
+
...(inspection.geometry.crsType === undefined ? {} : { crsType: inspection.geometry.crsType }),
|
|
50
|
+
edges: inspection.geometry.edges,
|
|
51
|
+
values: selected.map((row) => row.geometry),
|
|
52
|
+
};
|
|
53
|
+
const temporal = inspection.temporal
|
|
54
|
+
? {
|
|
55
|
+
field: inspection.temporal.field,
|
|
56
|
+
unit: inspection.temporal.unit,
|
|
57
|
+
...(inspection.temporal.timezone === undefined ? {} : { timezone: inspection.temporal.timezone }),
|
|
58
|
+
values: selected.map((row) => row.timestamp ?? null),
|
|
59
|
+
}
|
|
60
|
+
: undefined;
|
|
61
|
+
const dictionary = inspection.dictionary
|
|
62
|
+
? {
|
|
63
|
+
field: inspection.dictionary.field,
|
|
64
|
+
ordered: inspection.dictionary.ordered,
|
|
65
|
+
values: selected.map((row) => row.dictionaryValue ?? null),
|
|
66
|
+
}
|
|
67
|
+
: undefined;
|
|
68
|
+
const featureIds = inspection.featureIds
|
|
69
|
+
? { field: inspection.featureIds.field, values: selected.map((row) => row.featureId ?? 0) }
|
|
70
|
+
: undefined;
|
|
71
|
+
return createGeoArrowBatch({
|
|
72
|
+
id: options.id,
|
|
73
|
+
sequence: batch.sequence,
|
|
74
|
+
schemaId: batch.schema.id,
|
|
75
|
+
identity: batch.identity,
|
|
76
|
+
geometry,
|
|
77
|
+
...(temporal === undefined ? {} : { temporal }),
|
|
78
|
+
...(dictionary === undefined ? {} : { dictionary }),
|
|
79
|
+
...(featureIds === undefined ? {} : { featureIds }),
|
|
80
|
+
}, limits).batch;
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Create a deterministic GeoArrow column projection for registration with
|
|
85
|
+
* `startColumnarWorkerHost`.
|
|
86
|
+
*
|
|
87
|
+
* Geometry is mandatory in the normative batch. Optional temporal, dictionary,
|
|
88
|
+
* and feature-id columns are retained only when requested. A new schema id and
|
|
89
|
+
* identity are required because the projected field set is a distinct cache and
|
|
90
|
+
* authorization-visible result, even though row order and values are unchanged.
|
|
91
|
+
*/
|
|
92
|
+
export function createGeoArrowProjectionOperation(options) {
|
|
93
|
+
if (typeof options !== "object" || options === null) {
|
|
94
|
+
throw new TypeError("GeoArrow projection options must be an object");
|
|
95
|
+
}
|
|
96
|
+
if (typeof options.id !== "string" || options.id.trim() !== options.id || options.id.length === 0) {
|
|
97
|
+
throw new TypeError("GeoArrow projection id must be a non-empty trimmed string");
|
|
98
|
+
}
|
|
99
|
+
if (typeof options.schemaId !== "string" ||
|
|
100
|
+
options.schemaId.trim() !== options.schemaId ||
|
|
101
|
+
options.schemaId.length === 0) {
|
|
102
|
+
throw new TypeError("GeoArrow projection schemaId must be a non-empty trimmed string");
|
|
103
|
+
}
|
|
104
|
+
if (typeof options.identity !== "object" || options.identity === null) {
|
|
105
|
+
throw new TypeError("GeoArrow projection identity must be an object");
|
|
106
|
+
}
|
|
107
|
+
const columns = options.columns === undefined ? ["geometry"] : [...options.columns];
|
|
108
|
+
const allowed = new Set(["geometry", "temporal", "dictionary", "featureId"]);
|
|
109
|
+
if (columns.length !== new Set(columns).size || columns.some((column) => !allowed.has(column))) {
|
|
110
|
+
throw new TypeError("GeoArrow projection columns must be unique supported column names");
|
|
111
|
+
}
|
|
112
|
+
const limits = { ...options };
|
|
113
|
+
delete limits.id;
|
|
114
|
+
delete limits.schemaId;
|
|
115
|
+
delete limits.identity;
|
|
116
|
+
delete limits.columns;
|
|
117
|
+
const wants = new Set(columns);
|
|
118
|
+
return async (batch, context) => {
|
|
119
|
+
const inspection = inspectGeoArrowBatch(batch, limits);
|
|
120
|
+
if (wants.has("temporal") && inspection.temporal === undefined) {
|
|
121
|
+
throw new TypeError("GeoArrow projection requested a missing temporal column");
|
|
122
|
+
}
|
|
123
|
+
if (wants.has("dictionary") && inspection.dictionary === undefined) {
|
|
124
|
+
throw new TypeError("GeoArrow projection requested a missing dictionary column");
|
|
125
|
+
}
|
|
126
|
+
if (wants.has("featureId") && inspection.featureIds === undefined) {
|
|
127
|
+
throw new TypeError("GeoArrow projection requested a missing feature-id column");
|
|
128
|
+
}
|
|
129
|
+
const decoded = decodeGeoArrowBatch(batch, limits);
|
|
130
|
+
const geometryValues = [];
|
|
131
|
+
const temporalValues = [];
|
|
132
|
+
const dictionaryValues = [];
|
|
133
|
+
const featureIdValues = [];
|
|
134
|
+
for (let index = 0; index < decoded.rows.length; index += 1) {
|
|
135
|
+
if (context.signal.aborted)
|
|
136
|
+
throw new DOMException("The operation was aborted", "AbortError");
|
|
137
|
+
const row = decoded.rows[index];
|
|
138
|
+
geometryValues.push(row.geometry);
|
|
139
|
+
if (wants.has("temporal"))
|
|
140
|
+
temporalValues.push(row.timestamp ?? null);
|
|
141
|
+
if (wants.has("dictionary"))
|
|
142
|
+
dictionaryValues.push(row.dictionaryValue ?? null);
|
|
143
|
+
if (wants.has("featureId"))
|
|
144
|
+
featureIdValues.push(row.featureId);
|
|
145
|
+
if (index === decoded.rows.length - 1 || index % 256 === 0) {
|
|
146
|
+
context.reportProgress(decoded.rows.length === 0 ? 1 : (index + 1) / decoded.rows.length, "projection");
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
const geometry = {
|
|
150
|
+
kind: inspection.geometry.kind,
|
|
151
|
+
field: inspection.geometry.field,
|
|
152
|
+
dimensions: inspection.geometry.dimensions,
|
|
153
|
+
coordinateLayout: inspection.geometry.coordinateLayout,
|
|
154
|
+
...(inspection.geometry.crs === undefined ? {} : { crs: inspection.geometry.crs }),
|
|
155
|
+
...(inspection.geometry.crsType === undefined ? {} : { crsType: inspection.geometry.crsType }),
|
|
156
|
+
edges: inspection.geometry.edges,
|
|
157
|
+
values: geometryValues,
|
|
158
|
+
};
|
|
159
|
+
const temporal = wants.has("temporal")
|
|
160
|
+
? (() => {
|
|
161
|
+
const temporalInspection = inspection.temporal;
|
|
162
|
+
if (temporalInspection === undefined) {
|
|
163
|
+
throw new TypeError("GeoArrow projection requested a missing temporal column");
|
|
164
|
+
}
|
|
165
|
+
return {
|
|
166
|
+
field: temporalInspection.field,
|
|
167
|
+
unit: temporalInspection.unit,
|
|
168
|
+
...(temporalInspection.timezone === undefined ? {} : { timezone: temporalInspection.timezone }),
|
|
169
|
+
values: temporalValues,
|
|
170
|
+
};
|
|
171
|
+
})()
|
|
172
|
+
: undefined;
|
|
173
|
+
const dictionary = wants.has("dictionary")
|
|
174
|
+
? { field: inspection.dictionary.field, ordered: inspection.dictionary.ordered, values: dictionaryValues }
|
|
175
|
+
: undefined;
|
|
176
|
+
const featureIds = wants.has("featureId")
|
|
177
|
+
? { field: inspection.featureIds.field, values: featureIdValues }
|
|
178
|
+
: undefined;
|
|
179
|
+
return createGeoArrowBatch({
|
|
180
|
+
id: options.id,
|
|
181
|
+
sequence: batch.sequence,
|
|
182
|
+
...(batch.rowOffset === undefined ? {} : { rowOffset: batch.rowOffset }),
|
|
183
|
+
schemaId: options.schemaId,
|
|
184
|
+
identity: options.identity,
|
|
185
|
+
geometry,
|
|
186
|
+
...(temporal === undefined ? {} : { temporal }),
|
|
187
|
+
...(dictionary === undefined ? {} : { dictionary }),
|
|
188
|
+
...(featureIds === undefined ? {} : { featureIds }),
|
|
189
|
+
}, limits).batch;
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Create a bounded XY affine transform for registration with
|
|
194
|
+
* `startColumnarWorkerHost`.
|
|
195
|
+
*
|
|
196
|
+
* The operation transforms every coordinate while preserving Z/M ordinates,
|
|
197
|
+
* row order, nulls, temporal values, dictionary values, feature ids, and
|
|
198
|
+
* batch identity fields supplied by the caller. A new id, schema id, and
|
|
199
|
+
* identity are required because coordinate semantics are part of the cache
|
|
200
|
+
* and authorization-visible result contract.
|
|
201
|
+
*/
|
|
202
|
+
export function createGeoArrowTransformOperation(options) {
|
|
203
|
+
if (typeof options !== "object" || options === null) {
|
|
204
|
+
throw new TypeError("GeoArrow transform options must be an object");
|
|
205
|
+
}
|
|
206
|
+
if (typeof options.id !== "string" || options.id.trim() !== options.id || options.id.length === 0) {
|
|
207
|
+
throw new TypeError("GeoArrow transform id must be a non-empty trimmed string");
|
|
208
|
+
}
|
|
209
|
+
if (typeof options.schemaId !== "string" ||
|
|
210
|
+
options.schemaId.trim() !== options.schemaId ||
|
|
211
|
+
options.schemaId.length === 0) {
|
|
212
|
+
throw new TypeError("GeoArrow transform schemaId must be a non-empty trimmed string");
|
|
213
|
+
}
|
|
214
|
+
if (typeof options.identity !== "object" || options.identity === null) {
|
|
215
|
+
throw new TypeError("GeoArrow transform identity must be an object");
|
|
216
|
+
}
|
|
217
|
+
const scale = normalizeAffinePair(options.scale, [1, 1], "scale");
|
|
218
|
+
const translate = normalizeAffinePair(options.translate, [0, 0], "translate");
|
|
219
|
+
const limits = { ...options };
|
|
220
|
+
delete limits.id;
|
|
221
|
+
delete limits.schemaId;
|
|
222
|
+
delete limits.identity;
|
|
223
|
+
delete limits.scale;
|
|
224
|
+
delete limits.translate;
|
|
225
|
+
delete limits.outputCrs;
|
|
226
|
+
return async (batch, context) => {
|
|
227
|
+
const inspection = inspectGeoArrowBatch(batch, limits);
|
|
228
|
+
const decoded = decodeGeoArrowBatch(batch, limits);
|
|
229
|
+
const geometryValues = [];
|
|
230
|
+
for (let index = 0; index < decoded.rows.length; index += 1) {
|
|
231
|
+
if (context.signal.aborted)
|
|
232
|
+
throw new DOMException("The operation was aborted", "AbortError");
|
|
233
|
+
geometryValues.push(transformGeometry(decoded.rows[index].geometry, scale, translate));
|
|
234
|
+
if (index === decoded.rows.length - 1 || index % 256 === 0) {
|
|
235
|
+
context.reportProgress(decoded.rows.length === 0 ? 1 : (index + 1) / decoded.rows.length, "transform");
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
if (decoded.rows.length === 0)
|
|
239
|
+
context.reportProgress(1, "transform");
|
|
240
|
+
const geometry = {
|
|
241
|
+
kind: inspection.geometry.kind,
|
|
242
|
+
field: inspection.geometry.field,
|
|
243
|
+
dimensions: inspection.geometry.dimensions,
|
|
244
|
+
coordinateLayout: inspection.geometry.coordinateLayout,
|
|
245
|
+
...(options.outputCrs === undefined
|
|
246
|
+
? inspection.geometry.crs === undefined
|
|
247
|
+
? {}
|
|
248
|
+
: { crs: inspection.geometry.crs }
|
|
249
|
+
: { crs: options.outputCrs }),
|
|
250
|
+
...(options.outputCrs === undefined && inspection.geometry.crsType !== undefined
|
|
251
|
+
? { crsType: inspection.geometry.crsType }
|
|
252
|
+
: {}),
|
|
253
|
+
edges: inspection.geometry.edges,
|
|
254
|
+
values: geometryValues,
|
|
255
|
+
};
|
|
256
|
+
const temporal = inspection.temporal
|
|
257
|
+
? {
|
|
258
|
+
field: inspection.temporal.field,
|
|
259
|
+
unit: inspection.temporal.unit,
|
|
260
|
+
...(inspection.temporal.timezone === undefined ? {} : { timezone: inspection.temporal.timezone }),
|
|
261
|
+
values: decoded.rows.map((row) => row.timestamp ?? null),
|
|
262
|
+
}
|
|
263
|
+
: undefined;
|
|
264
|
+
const dictionary = inspection.dictionary
|
|
265
|
+
? {
|
|
266
|
+
field: inspection.dictionary.field,
|
|
267
|
+
ordered: inspection.dictionary.ordered,
|
|
268
|
+
values: decoded.rows.map((row) => row.dictionaryValue ?? null),
|
|
269
|
+
}
|
|
270
|
+
: undefined;
|
|
271
|
+
const featureIds = inspection.featureIds
|
|
272
|
+
? { field: inspection.featureIds.field, values: decoded.rows.map((row) => row.featureId ?? 0) }
|
|
273
|
+
: undefined;
|
|
274
|
+
return createGeoArrowBatch({
|
|
275
|
+
id: options.id,
|
|
276
|
+
sequence: batch.sequence,
|
|
277
|
+
...(batch.rowOffset === undefined ? {} : { rowOffset: batch.rowOffset }),
|
|
278
|
+
schemaId: options.schemaId,
|
|
279
|
+
identity: options.identity,
|
|
280
|
+
geometry,
|
|
281
|
+
...(temporal === undefined ? {} : { temporal }),
|
|
282
|
+
...(dictionary === undefined ? {} : { dictionary }),
|
|
283
|
+
...(featureIds === undefined ? {} : { featureIds }),
|
|
284
|
+
}, limits).batch;
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
function normalizeAffinePair(value, fallback, name) {
|
|
288
|
+
const pair = value ?? fallback;
|
|
289
|
+
if (pair.length !== 2 || !Number.isFinite(pair[0]) || !Number.isFinite(pair[1])) {
|
|
290
|
+
throw new TypeError(`GeoArrow transform ${name} must contain exactly two finite numbers`);
|
|
291
|
+
}
|
|
292
|
+
return [pair[0], pair[1]];
|
|
293
|
+
}
|
|
294
|
+
function transformGeometry(geometry, scale, translate) {
|
|
295
|
+
if (geometry === null)
|
|
296
|
+
return null;
|
|
297
|
+
if (geometry.length === 0 || typeof geometry[0] === "number") {
|
|
298
|
+
return transformPosition(geometry, scale, translate);
|
|
299
|
+
}
|
|
300
|
+
if (typeof geometry[0][0] === "number") {
|
|
301
|
+
return geometry.map((position) => transformPosition(position, scale, translate));
|
|
302
|
+
}
|
|
303
|
+
return geometry.map((part) => part.map((position) => transformPosition(position, scale, translate)));
|
|
304
|
+
}
|
|
305
|
+
function transformPosition(position, scale, translate) {
|
|
306
|
+
return [position[0] * scale[0] + translate[0], position[1] * scale[1] + translate[1], ...position.slice(2)];
|
|
307
|
+
}
|