@honua/app-platform 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/contract/pmtiles.d.ts +6 -5
- package/contract/pmtiles.d.ts.map +1 -1
- package/contract/pmtiles.js +30 -5
- package/controls/catalog.d.ts.map +1 -1
- package/controls/catalog.js +110 -0
- package/controls/index.d.ts +1 -1
- package/controls/index.js +1 -1
- package/controls/types.d.ts +1 -1
- package/controls/types.js +1 -1
- 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/kernel/renderer.d.ts +82 -0
- package/kernel/renderer.js +1 -0
- package/offline/conflict-resolution.d.ts +183 -0
- package/offline/conflict-resolution.d.ts.map +1 -0
- package/offline/conflict-resolution.js +286 -0
- package/offline/credential-screen.d.ts +34 -0
- package/offline/credential-screen.d.ts.map +1 -0
- package/offline/credential-screen.js +78 -0
- package/offline/digest.d.ts +15 -0
- package/offline/digest.d.ts.map +1 -0
- package/offline/digest.js +58 -0
- package/offline/edit-queue.d.ts +403 -0
- package/offline/edit-queue.d.ts.map +1 -0
- package/offline/edit-queue.js +1807 -0
- package/offline/edit-replay.d.ts +116 -0
- package/offline/edit-replay.d.ts.map +1 -0
- package/offline/edit-replay.js +392 -0
- package/offline/fetch-handler.d.ts +12 -0
- package/offline/fetch-handler.d.ts.map +1 -0
- package/offline/fetch-handler.js +65 -0
- package/offline/index.d.ts +52 -0
- package/offline/index.d.ts.map +1 -0
- package/offline/index.js +34 -0
- package/offline/indexeddb.d.ts +135 -0
- package/offline/indexeddb.d.ts.map +1 -0
- package/offline/indexeddb.js +888 -0
- package/offline/memory-store.d.ts +17 -0
- package/offline/memory-store.d.ts.map +1 -0
- package/offline/memory-store.js +183 -0
- package/offline/quota.d.ts +161 -0
- package/offline/quota.d.ts.map +1 -0
- package/offline/quota.js +370 -0
- package/offline/read-gate.d.ts +175 -0
- package/offline/read-gate.d.ts.map +1 -0
- package/offline/read-gate.js +252 -0
- package/offline/read-resource.d.ts +99 -0
- package/offline/read-resource.d.ts.map +1 -0
- package/offline/read-resource.js +156 -0
- package/offline/read.d.ts +50 -0
- package/offline/read.d.ts.map +1 -0
- package/offline/read.js +65 -0
- package/offline/region.d.ts +29 -0
- package/offline/region.d.ts.map +1 -0
- package/offline/region.js +1007 -0
- package/offline/replay-conflict.d.ts +183 -0
- package/offline/replay-conflict.d.ts.map +1 -0
- package/offline/replay-conflict.js +482 -0
- package/offline/selection.d.ts +140 -0
- package/offline/selection.d.ts.map +1 -0
- package/offline/selection.js +391 -0
- package/offline/snapshot.d.ts +132 -0
- package/offline/snapshot.d.ts.map +1 -0
- package/offline/snapshot.js +312 -0
- package/offline/status.d.ts +136 -0
- package/offline/status.d.ts.map +1 -0
- package/offline/status.js +479 -0
- package/offline/store-conformance.d.ts +48 -0
- package/offline/store-conformance.d.ts.map +1 -0
- package/offline/store-conformance.js +233 -0
- package/offline/tile-protocol.d.ts +81 -0
- package/offline/tile-protocol.d.ts.map +1 -0
- package/offline/tile-protocol.js +119 -0
- package/offline/types.d.ts +349 -0
- package/offline/types.d.ts.map +1 -0
- package/offline/types.js +75 -0
- package/package.json +14 -2
- package/scene-workspace/index.d.ts +2 -2
- package/scene-workspace/index.d.ts.map +1 -1
- package/scene-workspace/index.js +1 -1
- package/scene-workspace/scene-discovery.d.ts +111 -91
- package/scene-workspace/scene-discovery.d.ts.map +1 -1
- package/scene-workspace/scene-discovery.js +340 -92
- package/scene-workspace/scene-view.d.ts +6 -6
- package/scene-workspace/scene-view.d.ts.map +1 -1
- package/scene-workspace/scene-view.js +32 -6
- package/web-components/elements.d.ts +34 -0
- package/web-components/elements.d.ts.map +1 -1
- package/web-components/elements.js +82 -8
- package/web-components/index.d.ts +2 -0
- package/web-components/index.d.ts.map +1 -1
- package/web-components/index.js +3 -1
- package/web-components/map-chrome.d.ts +103 -0
- package/web-components/map-chrome.d.ts.map +1 -0
- package/web-components/map-chrome.js +325 -0
- package/web-components/widget-shell.d.ts +68 -0
- package/web-components/widget-shell.d.ts.map +1 -0
- package/web-components/widget-shell.js +224 -0
- package/widget-capabilities.d.ts +67 -0
- package/widget-capabilities.js +152 -0
|
@@ -0,0 +1,382 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Realtime append/update/delete patch semantics over a normative Honua GeoArrow
|
|
3
|
+
* batch, with declared rebuild thresholds.
|
|
4
|
+
*
|
|
5
|
+
* Every other columnar operation produces a brand new batch from a whole input
|
|
6
|
+
* batch. A live layer cannot afford that: at a million rows a full re-encode
|
|
7
|
+
* plus a full re-transfer per event defeats the columnar path outright, and it
|
|
8
|
+
* invalidates the `ArrayBuffer` identities a renderer has already bound. This
|
|
9
|
+
* module defines how a snapshot batch plus a delta stream becomes an updated
|
|
10
|
+
* batch, when writing into the existing backings is legal, and when the SDK
|
|
11
|
+
* must rebuild instead.
|
|
12
|
+
*
|
|
13
|
+
* ## The three outcomes
|
|
14
|
+
*
|
|
15
|
+
* {@link applyColumnarPatch} returns exactly one of:
|
|
16
|
+
*
|
|
17
|
+
* - `patched-in-place` — appended rows were written into caller-declared
|
|
18
|
+
* reserved capacity, updates were written over the existing values, and
|
|
19
|
+
* deletes became tombstones. No backing buffer was reallocated, so
|
|
20
|
+
* `bufferIdentityPreserved` is `true` and a renderer binding taken before the
|
|
21
|
+
* patch still aliases the same `ArrayBuffer`s.
|
|
22
|
+
* - `rebuilt` — a declared threshold was crossed or the patch could not be
|
|
23
|
+
* expressed in the existing layout, so a compacted batch was produced with a
|
|
24
|
+
* new batch id and a new identity generation. `bufferIdentityPreserved` is
|
|
25
|
+
* `false`, the named `reason` says which rule fired, and every consumer keyed
|
|
26
|
+
* on the previous identity must rebind.
|
|
27
|
+
* - `rejected` — the patch was refused before a single byte moved. The input
|
|
28
|
+
* batch is byte-identical to what it was before the call.
|
|
29
|
+
*
|
|
30
|
+
* ## Identity
|
|
31
|
+
*
|
|
32
|
+
* Updates and deletes are keyed by the batch's feature-id column. A batch
|
|
33
|
+
* without one cannot resolve them and is rejected rather than guessing by row
|
|
34
|
+
* position, because row position is not stable across a rebuild. The feature-id
|
|
35
|
+
* index is cached per feature-id backing buffer and extended incrementally as
|
|
36
|
+
* rows are appended, so patch cost stays proportional to the patch rather than
|
|
37
|
+
* to the batch.
|
|
38
|
+
*
|
|
39
|
+
* At most one operation per feature id per patch is accepted. Two operations on
|
|
40
|
+
* one feature would need a conflict-resolution rule that the realtime contract
|
|
41
|
+
* does not define, and silently applying last-one-wins would make the result
|
|
42
|
+
* depend on delivery order within an event batch.
|
|
43
|
+
*
|
|
44
|
+
* ## Tombstones
|
|
45
|
+
*
|
|
46
|
+
* A delete is never compacted in place, because compaction moves every
|
|
47
|
+
* subsequent row and therefore invalidates offsets, bound buffers, and any row
|
|
48
|
+
* index a caller is holding. A delete records a tombstone in the batch's
|
|
49
|
+
* bounded overlay (run-length ranges in schema metadata) and leaves the payload
|
|
50
|
+
* untouched. {@link decodePatchedGeoArrowBatch} and {@link columnarPatchLiveMask}
|
|
51
|
+
* honor the overlay, so a deleted row never resurfaces; a rebuild is what
|
|
52
|
+
* physically removes it.
|
|
53
|
+
*
|
|
54
|
+
* Layout-unaware readers — `decodeGeoArrowBatch`, aggregation, filters — still
|
|
55
|
+
* see tombstoned rows, because the overlay is Honua metadata rather than an
|
|
56
|
+
* Arrow-level concept. That is the price of not moving a million rows per
|
|
57
|
+
* delete, and the tombstone-ratio threshold is what keeps the window small.
|
|
58
|
+
*
|
|
59
|
+
* ## Determinism
|
|
60
|
+
*
|
|
61
|
+
* The same base batch and the same patch always produce the same output bytes.
|
|
62
|
+
*
|
|
63
|
+
* - Appended rows are written in patch order at the end of the batch; updates
|
|
64
|
+
* are written where the row already is; deletes never move a row. Nothing is
|
|
65
|
+
* ordered by hash iteration or by first-seen order.
|
|
66
|
+
* - Threshold evaluation is a fixed sequence — tombstone ratio, tombstone
|
|
67
|
+
* overlay bytes, capacity, vertex growth, then layout feasibility — so a
|
|
68
|
+
* patch that crosses two rules always names the same one.
|
|
69
|
+
* - A rebuild copies live rows in ascending source-row order, then appends in
|
|
70
|
+
* patch order. Cancellation checks and progress reports only suspend that
|
|
71
|
+
* pass; they cannot change one output byte.
|
|
72
|
+
*
|
|
73
|
+
* A batch whose identity declares sort keys cannot accept an append or an
|
|
74
|
+
* update to a sort-key column, because both would silently break the declared
|
|
75
|
+
* order that pagination, caching, and picking depend on. Declare
|
|
76
|
+
* `ordering: { stable: false, keys: [] }` for a patchable live batch.
|
|
77
|
+
*
|
|
78
|
+
* @experimental
|
|
79
|
+
*/
|
|
80
|
+
import type { ColumnarBatchIdentityV1, CreateGeoArrowBatchInput, DecodedGeoArrowRow, GeoArrowConversionLimits, GeoArrowGeometryKind, GeoArrowLineString, GeoArrowPoint, GeoArrowPolygon } from "./geoarrow-types.js";
|
|
81
|
+
import { type ColumnarTelemetryOptions } from "./telemetry.js";
|
|
82
|
+
import type { ColumnarBatchV1 } from "./types.js";
|
|
83
|
+
import type { ColumnarWorkerOperation, ColumnarWorkerOperationContext } from "./worker.js";
|
|
84
|
+
/** Honua's realtime columnar patch layout, recorded in schema metadata. */
|
|
85
|
+
export declare const HONUA_COLUMNAR_PATCH_LAYOUT_VERSION: "1.0";
|
|
86
|
+
/** Stable discriminator for a versioned columnar patch. */
|
|
87
|
+
export declare const COLUMNAR_PATCH_KIND: "honua.columnar-patch";
|
|
88
|
+
/** Version discriminator for the first columnar patch contract. */
|
|
89
|
+
export declare const COLUMNAR_PATCH_VERSION: "1.0";
|
|
90
|
+
/** Tombstoned rows as a fraction of `rowCount` before a rebuild is forced. */
|
|
91
|
+
export declare const DEFAULT_COLUMNAR_PATCH_MAX_TOMBSTONE_RATIO = 0.25;
|
|
92
|
+
/** UTF-8 ceiling for the encoded tombstone overlay before a rebuild is forced. */
|
|
93
|
+
export declare const DEFAULT_COLUMNAR_PATCH_MAX_TOMBSTONE_OVERLAY_BYTES = 4096;
|
|
94
|
+
/** Fraction of declared reserved capacity that may be consumed before a rebuild. */
|
|
95
|
+
export declare const DEFAULT_COLUMNAR_PATCH_MAX_CAPACITY_UTILIZATION = 0.9;
|
|
96
|
+
/** Vertex count relative to the last rebuild before a rebuild is forced. */
|
|
97
|
+
export declare const DEFAULT_COLUMNAR_PATCH_MAX_VERTEX_GROWTH_RATIO = 1.5;
|
|
98
|
+
/** Operations accepted in one patch. There is no unbounded mode. */
|
|
99
|
+
export declare const DEFAULT_COLUMNAR_PATCH_MAX_OPERATIONS = 65536;
|
|
100
|
+
/** Rows copied between cooperative abort checks during a rebuild. */
|
|
101
|
+
export declare const COLUMNAR_PATCH_ABORT_CHECK_ROWS = 8192;
|
|
102
|
+
/** A semantic geometry value carried by an append or an update. */
|
|
103
|
+
export type ColumnarPatchGeometry = GeoArrowPoint | GeoArrowLineString | GeoArrowPolygon | null;
|
|
104
|
+
/**
|
|
105
|
+
* Resumable position for one patch, matching the realtime cursor contract:
|
|
106
|
+
* the cursor resumes the stream, the sequence orders it, and `observedAt`
|
|
107
|
+
* records freshness on the patched batch identity.
|
|
108
|
+
*/
|
|
109
|
+
export interface ColumnarPatchCursorV1 {
|
|
110
|
+
readonly cursor: string;
|
|
111
|
+
/** Strictly increasing per batch lineage. */
|
|
112
|
+
readonly sequence: number;
|
|
113
|
+
/** RFC 3339 instant at which the producing source observed the change. */
|
|
114
|
+
readonly observedAt: string;
|
|
115
|
+
}
|
|
116
|
+
/** Add one row keyed by a feature id that the batch does not already carry. */
|
|
117
|
+
export interface ColumnarPatchAppendV1 {
|
|
118
|
+
readonly op: "append";
|
|
119
|
+
readonly featureId: number;
|
|
120
|
+
readonly geometry: ColumnarPatchGeometry;
|
|
121
|
+
/** Required when the batch declares a temporal column. */
|
|
122
|
+
readonly timestamp?: bigint | null;
|
|
123
|
+
/** Required when the batch declares a dictionary column. */
|
|
124
|
+
readonly dictionaryValue?: string | null;
|
|
125
|
+
}
|
|
126
|
+
/** Overwrite declared columns of the row that carries `featureId`. */
|
|
127
|
+
export interface ColumnarPatchUpdateV1 {
|
|
128
|
+
readonly op: "update";
|
|
129
|
+
readonly featureId: number;
|
|
130
|
+
readonly geometry?: ColumnarPatchGeometry;
|
|
131
|
+
readonly timestamp?: bigint | null;
|
|
132
|
+
readonly dictionaryValue?: string | null;
|
|
133
|
+
}
|
|
134
|
+
/** Tombstone the row that carries `featureId`. */
|
|
135
|
+
export interface ColumnarPatchDeleteV1 {
|
|
136
|
+
readonly op: "delete";
|
|
137
|
+
readonly featureId: number;
|
|
138
|
+
}
|
|
139
|
+
export type ColumnarPatchOperationV1 = ColumnarPatchAppendV1 | ColumnarPatchUpdateV1 | ColumnarPatchDeleteV1;
|
|
140
|
+
/** Input accepted by {@link createColumnarPatch}. */
|
|
141
|
+
export interface CreateColumnarPatchInput {
|
|
142
|
+
/** Must equal the target batch's schema id; a mismatch is schema drift. */
|
|
143
|
+
readonly schemaId: string;
|
|
144
|
+
/** Must equal the target batch's geometry kind; a mismatch is geometry drift. */
|
|
145
|
+
readonly geometryKind: GeoArrowGeometryKind;
|
|
146
|
+
readonly cursor: ColumnarPatchCursorV1;
|
|
147
|
+
readonly operations: readonly ColumnarPatchOperationV1[];
|
|
148
|
+
/** Ceiling on operations in one patch. Defaults to 65,536. */
|
|
149
|
+
readonly maxOperations?: number;
|
|
150
|
+
}
|
|
151
|
+
/** One versioned, self-describing realtime patch. */
|
|
152
|
+
export interface ColumnarPatchV1 {
|
|
153
|
+
readonly kind: typeof COLUMNAR_PATCH_KIND;
|
|
154
|
+
readonly version: typeof COLUMNAR_PATCH_VERSION;
|
|
155
|
+
readonly schemaId: string;
|
|
156
|
+
readonly geometryKind: GeoArrowGeometryKind;
|
|
157
|
+
readonly cursor: ColumnarPatchCursorV1;
|
|
158
|
+
readonly operations: readonly ColumnarPatchOperationV1[];
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Explicit, caller-declared spare capacity. Nothing is over-allocated
|
|
162
|
+
* implicitly: a batch created without a reserve rebuilds on its first append.
|
|
163
|
+
*/
|
|
164
|
+
export interface ColumnarPatchReserveV1 {
|
|
165
|
+
/** Rows of spare capacity in every row-indexed column. */
|
|
166
|
+
readonly rows: number;
|
|
167
|
+
/**
|
|
168
|
+
* Spare coordinate positions. Ignored for point geometry, where one row is
|
|
169
|
+
* exactly one vertex and `rows` already declares the coordinate capacity.
|
|
170
|
+
*/
|
|
171
|
+
readonly vertices?: number;
|
|
172
|
+
/** Spare polygon rings. Ignored for point and linestring geometry. */
|
|
173
|
+
readonly rings?: number;
|
|
174
|
+
}
|
|
175
|
+
/** Row, vertex, and ring counts describing declared or remaining capacity. */
|
|
176
|
+
export interface ColumnarPatchCapacityV1 {
|
|
177
|
+
readonly rows: number;
|
|
178
|
+
readonly vertices: number;
|
|
179
|
+
readonly rings: number;
|
|
180
|
+
}
|
|
181
|
+
/** Declared numeric ceilings that force a deterministic rebuild. */
|
|
182
|
+
export interface ColumnarPatchThresholds {
|
|
183
|
+
/** Tombstones / rowCount. Defaults to 0.25. */
|
|
184
|
+
readonly maxTombstoneRatio?: number;
|
|
185
|
+
/** UTF-8 bytes of the encoded tombstone overlay. Defaults to 4,096. */
|
|
186
|
+
readonly maxTombstoneOverlayBytes?: number;
|
|
187
|
+
/** Consumed fraction of the declared reserve. Defaults to 0.9. */
|
|
188
|
+
readonly maxCapacityUtilization?: number;
|
|
189
|
+
/** Vertices relative to the last rebuild. Defaults to 1.5. */
|
|
190
|
+
readonly maxVertexGrowthRatio?: number;
|
|
191
|
+
}
|
|
192
|
+
/** Overlay state carried by a patched batch. */
|
|
193
|
+
export interface ColumnarPatchStateV1 {
|
|
194
|
+
readonly layoutVersion: typeof HONUA_COLUMNAR_PATCH_LAYOUT_VERSION;
|
|
195
|
+
readonly rowCount: number;
|
|
196
|
+
/** Rows that are not tombstoned. */
|
|
197
|
+
readonly liveRowCount: number;
|
|
198
|
+
readonly tombstoneCount: number;
|
|
199
|
+
readonly tombstoneRatio: number;
|
|
200
|
+
/** Inclusive ascending disjoint tombstoned row ranges. */
|
|
201
|
+
readonly tombstoneRanges: readonly (readonly [number, number])[];
|
|
202
|
+
readonly tombstoneOverlayBytes: number;
|
|
203
|
+
/** Sequence of the most recently applied patch, absent before the first. */
|
|
204
|
+
readonly sequence?: number;
|
|
205
|
+
readonly cursor?: string;
|
|
206
|
+
readonly observedAt?: string;
|
|
207
|
+
/** Patches applied since the batch was created or last rebuilt. */
|
|
208
|
+
readonly generation: number;
|
|
209
|
+
readonly vertices: number;
|
|
210
|
+
readonly rings: number;
|
|
211
|
+
/** Row and vertex counts recorded when the batch was created or rebuilt. */
|
|
212
|
+
readonly baseRows: number;
|
|
213
|
+
readonly baseVertices: number;
|
|
214
|
+
/** Capacity declared when the batch was created or rebuilt. */
|
|
215
|
+
readonly reserve: ColumnarPatchCapacityV1;
|
|
216
|
+
/** Capacity still unused, derived from the batch's own backing allocations. */
|
|
217
|
+
readonly capacity: ColumnarPatchCapacityV1;
|
|
218
|
+
}
|
|
219
|
+
/** Exact accounting for one applied patch. */
|
|
220
|
+
export interface ColumnarPatchMetricsV1 {
|
|
221
|
+
readonly appendedRows: number;
|
|
222
|
+
readonly updatedRows: number;
|
|
223
|
+
readonly deletedRows: number;
|
|
224
|
+
readonly rowsTouched: number;
|
|
225
|
+
/** Bytes written into payload backings. */
|
|
226
|
+
readonly payloadBytesCopied: number;
|
|
227
|
+
/** UTF-8 bytes of rewritten patch-state schema metadata. */
|
|
228
|
+
readonly metadataBytes: number;
|
|
229
|
+
/** Backing bytes newly allocated. Always zero for an in-place patch. */
|
|
230
|
+
readonly backingBytesAllocated: number;
|
|
231
|
+
readonly tombstones: number;
|
|
232
|
+
readonly liveRows: number;
|
|
233
|
+
}
|
|
234
|
+
/** Which declared rule forced a rebuild. */
|
|
235
|
+
export type ColumnarPatchRebuildReason = "tombstone-ratio" | "tombstone-overlay" | "capacity" | "vertex-growth" | "layout";
|
|
236
|
+
/** Why a patch was refused without mutating the batch. */
|
|
237
|
+
export type ColumnarPatchRejectionCode = "duplicate-sequence" | "stale-sequence" | "schema-drift" | "geometry-kind-drift" | "invalid-geometry" | "incomplete-append" | "unknown-feature-id" | "deleted-feature-id" | "duplicate-feature-id" | "missing-feature-id-column" | "ordering-conflict" | "patch-limit-exceeded" | "rebuild-required" | "invalid-patch-state";
|
|
238
|
+
/** Typed failure for patch validation and patch-state parsing. */
|
|
239
|
+
export declare class HonuaColumnarPatchError extends Error {
|
|
240
|
+
readonly code: ColumnarPatchRejectionCode;
|
|
241
|
+
readonly detail?: Readonly<Record<string, unknown>> | undefined;
|
|
242
|
+
constructor(code: ColumnarPatchRejectionCode, message: string, detail?: Readonly<Record<string, unknown>> | undefined, options?: ErrorOptions);
|
|
243
|
+
}
|
|
244
|
+
export interface ColumnarPatchAppliedInPlaceV1 {
|
|
245
|
+
readonly outcome: "patched-in-place";
|
|
246
|
+
readonly batch: ColumnarBatchV1;
|
|
247
|
+
readonly state: ColumnarPatchStateV1;
|
|
248
|
+
readonly metrics: ColumnarPatchMetricsV1;
|
|
249
|
+
readonly bufferIdentityPreserved: true;
|
|
250
|
+
}
|
|
251
|
+
export interface ColumnarPatchRebuiltV1 {
|
|
252
|
+
readonly outcome: "rebuilt";
|
|
253
|
+
readonly batch: ColumnarBatchV1;
|
|
254
|
+
readonly state: ColumnarPatchStateV1;
|
|
255
|
+
readonly metrics: ColumnarPatchMetricsV1;
|
|
256
|
+
readonly bufferIdentityPreserved: false;
|
|
257
|
+
readonly reason: ColumnarPatchRebuildReason;
|
|
258
|
+
}
|
|
259
|
+
export interface ColumnarPatchRejectedV1 {
|
|
260
|
+
readonly outcome: "rejected";
|
|
261
|
+
readonly code: ColumnarPatchRejectionCode;
|
|
262
|
+
readonly message: string;
|
|
263
|
+
readonly detail?: Readonly<Record<string, unknown>>;
|
|
264
|
+
/** The unmodified input batch. */
|
|
265
|
+
readonly batch: ColumnarBatchV1;
|
|
266
|
+
}
|
|
267
|
+
export type ApplyColumnarPatchOutcomeV1 = ColumnarPatchAppliedInPlaceV1 | ColumnarPatchRebuiltV1 | ColumnarPatchRejectedV1;
|
|
268
|
+
/** Rebuild inputs. Omitted values are derived deterministically from the patch. */
|
|
269
|
+
export interface ColumnarPatchRebuildOptions {
|
|
270
|
+
/** Defaults to `<base batch id>~<patch sequence>`. */
|
|
271
|
+
readonly batchId?: string;
|
|
272
|
+
/** Defaults to the base identity with freshness advanced to the patch cursor. */
|
|
273
|
+
readonly identity?: ColumnarBatchIdentityV1;
|
|
274
|
+
/** Defaults to the reserve the batch already declares. */
|
|
275
|
+
readonly reserve?: ColumnarPatchReserveV1;
|
|
276
|
+
}
|
|
277
|
+
export interface ApplyColumnarPatchOptions extends ColumnarTelemetryOptions {
|
|
278
|
+
readonly thresholds?: ColumnarPatchThresholds;
|
|
279
|
+
readonly limits?: GeoArrowConversionLimits;
|
|
280
|
+
readonly signal?: AbortSignal;
|
|
281
|
+
/** Monotonic progress in `[0, 1]` with a stage label. */
|
|
282
|
+
readonly reportProgress?: (fraction: number, stage: string) => void;
|
|
283
|
+
readonly rebuild?: ColumnarPatchRebuildOptions;
|
|
284
|
+
/**
|
|
285
|
+
* When `false`, any condition that would rebuild is rejected with
|
|
286
|
+
* `rebuild-required` instead, so a renderer that cannot rebind stays in
|
|
287
|
+
* control of when the batch identity changes. Defaults to `true`.
|
|
288
|
+
*/
|
|
289
|
+
readonly allowRebuild?: boolean;
|
|
290
|
+
}
|
|
291
|
+
export interface CreatePatchableGeoArrowBatchOptions extends GeoArrowConversionLimits {
|
|
292
|
+
readonly reserve: ColumnarPatchReserveV1;
|
|
293
|
+
}
|
|
294
|
+
export interface PatchableGeoArrowBatchMetrics {
|
|
295
|
+
readonly rows: number;
|
|
296
|
+
readonly vertices: number;
|
|
297
|
+
readonly rings: number;
|
|
298
|
+
/** Payload bytes populated by the conversion. */
|
|
299
|
+
readonly copiedBytes: number;
|
|
300
|
+
/** Total backing bytes, including the declared reserve. */
|
|
301
|
+
readonly backingBytes: number;
|
|
302
|
+
/** Backing bytes held for the declared reserve. */
|
|
303
|
+
readonly reservedBytes: number;
|
|
304
|
+
}
|
|
305
|
+
export interface CreatedPatchableGeoArrowBatch {
|
|
306
|
+
readonly batch: ColumnarBatchV1;
|
|
307
|
+
readonly state: ColumnarPatchStateV1;
|
|
308
|
+
readonly metrics: PatchableGeoArrowBatchMetrics;
|
|
309
|
+
}
|
|
310
|
+
/** Rows of a patched batch with tombstoned rows removed. */
|
|
311
|
+
export interface DecodedPatchedGeoArrowBatch {
|
|
312
|
+
readonly rows: readonly DecodedGeoArrowRow[];
|
|
313
|
+
readonly state: ColumnarPatchStateV1;
|
|
314
|
+
readonly metrics: {
|
|
315
|
+
readonly rows: number;
|
|
316
|
+
readonly tombstonedRows: number;
|
|
317
|
+
readonly materializedRows: number;
|
|
318
|
+
};
|
|
319
|
+
}
|
|
320
|
+
/** Options for the patch worker operation. */
|
|
321
|
+
export interface CreateColumnarPatchOperationOptions extends ApplyColumnarPatchOptions {
|
|
322
|
+
/**
|
|
323
|
+
* The patch to apply, or a provider consulted once per request so one
|
|
324
|
+
* registered operation can drain a live stream.
|
|
325
|
+
*/
|
|
326
|
+
readonly patch: ColumnarPatchV1 | ((batch: ColumnarBatchV1, context: ColumnarWorkerOperationContext) => ColumnarPatchV1 | Promise<ColumnarPatchV1>);
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* Validate one realtime patch. Structural problems throw here; problems that
|
|
330
|
+
* only exist relative to a batch become a `rejected` outcome in
|
|
331
|
+
* {@link applyColumnarPatch}.
|
|
332
|
+
*/
|
|
333
|
+
export declare function createColumnarPatch(input: CreateColumnarPatchInput): ColumnarPatchV1;
|
|
334
|
+
/**
|
|
335
|
+
* Read the patch overlay a batch carries. A batch that has never been patched
|
|
336
|
+
* reports an empty overlay and whatever capacity its allocations already hold.
|
|
337
|
+
*/
|
|
338
|
+
export declare function inspectColumnarPatchState(batch: ColumnarBatchV1, limits?: GeoArrowConversionLimits): ColumnarPatchStateV1;
|
|
339
|
+
/**
|
|
340
|
+
* A per-row liveness mask for renderers: `1` for a live row, `0` for a
|
|
341
|
+
* tombstoned one. Bind it as a filter attribute so a deleted feature stops
|
|
342
|
+
* drawing without waiting for the rebuild that physically removes it.
|
|
343
|
+
*/
|
|
344
|
+
export declare function columnarPatchLiveMask(state: ColumnarPatchStateV1): Uint8Array;
|
|
345
|
+
/**
|
|
346
|
+
* Materialize the live rows of a patched batch in row order. A tombstoned row
|
|
347
|
+
* is never returned, and an updated value is the value that is returned,
|
|
348
|
+
* because the update was written over the row it belongs to.
|
|
349
|
+
*/
|
|
350
|
+
export declare function decodePatchedGeoArrowBatch(batch: ColumnarBatchV1, limits?: GeoArrowConversionLimits): DecodedPatchedGeoArrowBatch;
|
|
351
|
+
/**
|
|
352
|
+
* Convert semantic GeoArrow input into a batch that carries explicitly declared
|
|
353
|
+
* spare capacity, so later appends can be written without reallocating a
|
|
354
|
+
* backing buffer. The reserve is never implicit: a batch created through
|
|
355
|
+
* `createGeoArrowBatch` has none and rebuilds on its first append.
|
|
356
|
+
*/
|
|
357
|
+
export declare function createPatchableGeoArrowBatch(input: CreateGeoArrowBatchInput, options: CreatePatchableGeoArrowBatchOptions): CreatedPatchableGeoArrowBatch;
|
|
358
|
+
/**
|
|
359
|
+
* Apply one realtime patch to a normative GeoArrow batch.
|
|
360
|
+
*
|
|
361
|
+
* The call either writes into the batch's existing backings, rebuilds a
|
|
362
|
+
* compacted batch, or refuses the patch without touching a byte. See the module
|
|
363
|
+
* documentation for the identity, tombstone, threshold, and determinism rules.
|
|
364
|
+
*/
|
|
365
|
+
export declare function applyColumnarPatch(batch: ColumnarBatchV1, patch: ColumnarPatchV1, options?: ApplyColumnarPatchOptions): ApplyColumnarPatchOutcomeV1;
|
|
366
|
+
/**
|
|
367
|
+
* Register realtime patch application as a columnar worker operation, so it
|
|
368
|
+
* runs off the main thread under the existing session lifecycle.
|
|
369
|
+
*
|
|
370
|
+
* A rejection has no batch to return, so it is raised as
|
|
371
|
+
* {@link HonuaColumnarPatchError}. The worker host deliberately does not
|
|
372
|
+
* forward an operation's message across the boundary, so the caller sees
|
|
373
|
+
* `operation-failed` without the rejection code: call
|
|
374
|
+
* {@link applyColumnarPatch} directly when the code has to be observable.
|
|
375
|
+
*
|
|
376
|
+
* Buffer identity is preserved inside the worker, but a worker round trip
|
|
377
|
+
* transfers ownership in both directions, so a renderer bound on the main
|
|
378
|
+
* thread rebinds either way. Apply patches on the thread that owns the binding
|
|
379
|
+
* when preserving that binding is the point.
|
|
380
|
+
*/
|
|
381
|
+
export declare function createColumnarPatchOperation(options: CreateColumnarPatchOperationOptions): ColumnarWorkerOperation;
|
|
382
|
+
//# sourceMappingURL=geoarrow-patch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"geoarrow-patch.d.ts","sourceRoot":"","sources":["../../../src/columnar/geoarrow-patch.ts"],"names":[],"mappings":"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"}
|