@honua/react 0.1.2-beta.0 → 0.1.4-beta.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/contract/discovery.d.ts +34 -0
- package/contract/discovery.d.ts.map +1 -1
- package/contract/index.d.ts +7 -5
- package/contract/index.d.ts.map +1 -1
- package/contract/index.js +3 -2
- package/contract/pmtiles.d.ts +10 -1
- package/contract/pmtiles.d.ts.map +1 -1
- package/contract/pmtiles.js +10 -2
- package/contract/protocol-module.d.ts +84 -9
- package/contract/protocol-module.d.ts.map +1 -1
- package/contract/query-filter-fes.d.ts +18 -0
- package/contract/query-filter-fes.d.ts.map +1 -0
- package/contract/query-filter-fes.js +122 -0
- package/contract/query-filter.d.ts +300 -0
- package/contract/query-filter.d.ts.map +1 -0
- package/contract/query-filter.js +883 -0
- package/contract/schema.d.ts +12 -0
- package/contract/schema.d.ts.map +1 -1
- package/contract/schema.js +34 -0
- package/contract/source-capability-support.d.ts.map +1 -1
- package/contract/source-capability-support.js +15 -3
- package/contract/source.d.ts +45 -25
- package/contract/source.d.ts.map +1 -1
- package/contract/source.js +719 -479
- package/contract/types.d.ts +87 -18
- package/contract/types.d.ts.map +1 -1
- package/contract/widget-source.d.ts.map +1 -1
- package/core/client.d.ts +45 -21
- package/core/client.d.ts.map +1 -1
- package/core/client.js +224 -46
- package/core/error-classifications.d.ts +6 -0
- package/core/error-classifications.d.ts.map +1 -1
- package/core/error-classifications.js +6 -0
- package/core/error-code-registry.d.ts +6 -0
- package/core/error-code-registry.d.ts.map +1 -1
- package/core/error-code-registry.js +6 -0
- package/core/error-envelope.js +2 -0
- package/core/errors.d.ts +1 -1
- package/core/errors.js +1 -1
- package/core/geoparquet-sql.d.ts +68 -4
- package/core/geoparquet-sql.d.ts.map +1 -1
- package/core/geoparquet-sql.js +325 -8
- package/core/odata-write-codec.d.ts.map +1 -1
- package/core/odata-write-codec.js +0 -1
- package/core/odata.d.ts +6 -0
- package/core/odata.d.ts.map +1 -1
- package/core/odata.js +6 -1
- package/core/ogc-processes.d.ts +182 -25
- package/core/ogc-processes.d.ts.map +1 -1
- package/core/ogc-processes.js +602 -30
- package/core/process-runner.d.ts +8 -1
- package/core/process-runner.d.ts.map +1 -1
- package/core/process-runner.js +1 -0
- package/core/protocol-transport.d.ts +2 -0
- package/core/protocol-transport.d.ts.map +1 -1
- package/core/stac.d.ts +31 -0
- package/core/stac.d.ts.map +1 -1
- package/core/stac.js +136 -19
- package/core/surfaces.d.ts.map +1 -1
- package/core/surfaces.js +273 -68
- package/core/types.d.ts +123 -9
- package/core/types.d.ts.map +1 -1
- package/core/wfs-axis-order.d.ts +18 -0
- package/core/wfs-axis-order.d.ts.map +1 -0
- package/core/wfs-axis-order.js +108 -0
- package/core/wfs-capabilities.d.ts +65 -24
- package/core/wfs-capabilities.d.ts.map +1 -1
- package/core/wfs-capabilities.js +237 -27
- package/core/wfs-filter.d.ts +26 -3
- package/core/wfs-filter.d.ts.map +1 -1
- package/core/wfs-filter.js +48 -53
- package/core/wfs-protocol-error.d.ts +12 -0
- package/core/wfs-protocol-error.d.ts.map +1 -0
- package/core/wfs-protocol-error.js +13 -0
- package/core/wfs.d.ts +53 -1
- package/core/wfs.d.ts.map +1 -1
- package/core/wfs.js +251 -29
- package/core/wms-feature-info.d.ts +92 -0
- package/core/wms-feature-info.d.ts.map +1 -0
- package/core/wms-feature-info.js +285 -0
- package/core/wms.d.ts +9 -0
- package/core/wms.d.ts.map +1 -1
- package/core/wms.js +17 -5
- package/esri-compat/event-bus.d.ts +20 -0
- package/esri-compat/event-bus.d.ts.map +1 -1
- package/esri-compat/feature-filter.d.ts +46 -1
- package/esri-compat/feature-filter.d.ts.map +1 -1
- package/esri-compat/feature-filter.js +49 -0
- package/esri-compat/geojson-layer.d.ts +4 -2
- package/esri-compat/geojson-layer.d.ts.map +1 -1
- package/esri-compat/geojson-layer.js +4 -2
- package/esri-compat/identity-manager.js +2 -2
- package/esri-compat/imagery-layer.d.ts +2 -1
- package/esri-compat/imagery-layer.d.ts.map +1 -1
- package/esri-compat/imagery-layer.js +2 -1
- package/esri-compat/layer-list.d.ts +8 -1
- package/esri-compat/layer-list.d.ts.map +1 -1
- package/esri-compat/layer-list.js +11 -4
- package/esri-compat/legend.d.ts.map +1 -1
- package/esri-compat/legend.js +1 -1
- package/esri-compat/locator.d.ts +297 -0
- package/esri-compat/locator.d.ts.map +1 -0
- package/esri-compat/locator.js +579 -0
- package/esri-compat/map-image-layer.d.ts.map +1 -1
- package/esri-compat/map-view.d.ts.map +1 -1
- package/esri-compat/map-view.js +1 -1
- package/esri-compat/scene-view.d.ts.map +1 -1
- package/esri-compat/time-slider.d.ts +29 -0
- package/esri-compat/time-slider.d.ts.map +1 -1
- package/esri-compat/time-slider.js +117 -0
- package/esri-compat/wfs-layer.d.ts +2 -1
- package/esri-compat/wfs-layer.d.ts.map +1 -1
- package/esri-compat/wfs-layer.js +2 -1
- package/esri-compat/widget-host.d.ts +42 -6
- package/esri-compat/widget-host.d.ts.map +1 -1
- package/esri-compat/widget-host.js +99 -10
- package/generated-app/projection.d.ts.map +1 -1
- package/generated-app/runtime.d.ts.map +1 -1
- package/map/data-to-map-bridge.d.ts +1 -1
- package/map/data-to-map-bridge.d.ts.map +1 -1
- package/map/data-to-map-bridge.js +1 -2
- package/map/honua-map.d.ts.map +1 -1
- package/map/honua-map.js +1 -1
- package/map/index.d.ts +2 -0
- package/map/index.d.ts.map +1 -1
- package/map/index.js +2 -0
- package/map/realtime-reconciliation-adapter.d.ts +98 -0
- package/map/realtime-reconciliation-adapter.d.ts.map +1 -0
- package/map/realtime-reconciliation-adapter.js +84 -0
- package/map/temporal-playback.d.ts +25 -0
- package/map/temporal-playback.d.ts.map +1 -1
- package/map/temporal-playback.js +29 -1
- package/package.json +4 -3
- package/query-planner/canonical-filter.d.ts +30 -0
- package/query-planner/canonical-filter.d.ts.map +1 -0
- package/query-planner/canonical-filter.js +30 -0
- package/query-planner/columnar-plan.d.ts +63 -0
- package/query-planner/columnar-plan.d.ts.map +1 -0
- package/query-planner/columnar-plan.js +94 -0
- package/query-planner/diagnostics.d.ts +3 -3
- package/query-planner/diagnostics.d.ts.map +1 -1
- package/query-planner/diagnostics.js +17 -4
- package/query-planner/duckdb.d.ts.map +1 -1
- package/query-planner/duckdb.js +16 -2
- package/query-planner/execution-context.d.ts.map +1 -1
- package/query-planner/execution-context.js +3 -1
- package/query-planner/executor.d.ts.map +1 -1
- package/query-planner/executor.js +7 -1
- package/query-planner/geoservices.d.ts.map +1 -1
- package/query-planner/geoservices.js +24 -5
- package/query-planner/grpc.d.ts.map +1 -1
- package/query-planner/grpc.js +29 -5
- package/query-planner/index.d.ts +20 -5
- package/query-planner/index.d.ts.map +1 -1
- package/query-planner/index.js +16 -3
- package/query-planner/ir.d.ts +6 -1
- package/query-planner/ir.d.ts.map +1 -1
- package/query-planner/ir.js +63 -1
- package/query-planner/odata-protocol-module.d.ts +54 -0
- package/query-planner/odata-protocol-module.d.ts.map +1 -0
- package/query-planner/odata-protocol-module.js +199 -0
- package/query-planner/odata-v1.d.ts +23 -0
- package/query-planner/odata-v1.d.ts.map +1 -0
- package/query-planner/odata-v1.js +202 -0
- package/query-planner/odata.d.ts +0 -3
- package/query-planner/odata.d.ts.map +1 -1
- package/query-planner/odata.js +0 -143
- package/query-planner/ogc-features.d.ts.map +1 -1
- package/query-planner/ogc-features.js +23 -1
- package/query-planner/planner.d.ts +2 -2
- package/query-planner/planner.d.ts.map +1 -1
- package/query-planner/planner.js +146 -27
- package/query-planner/representation.d.ts +59 -0
- package/query-planner/representation.d.ts.map +1 -0
- package/query-planner/representation.js +140 -0
- package/query-planner/types.d.ts +153 -3
- package/query-planner/types.d.ts.map +1 -1
- package/query-planner/wfs-protocol-module.d.ts +57 -0
- package/query-planner/wfs-protocol-module.d.ts.map +1 -0
- package/query-planner/wfs-protocol-module.js +731 -0
- package/query-planner/wfs-v1.d.ts +41 -0
- package/query-planner/wfs-v1.d.ts.map +1 -0
- package/query-planner/wfs-v1.js +366 -0
- package/query-planner/wfs.d.ts +1 -3
- package/query-planner/wfs.d.ts.map +1 -1
- package/query-planner/wfs.js +1 -70
- package/react/honua-map.d.ts +3 -1
- package/react/honua-map.d.ts.map +1 -1
- package/react/honua-map.js +11 -1
- package/react/hooks.d.ts +1 -1
- package/react/hooks.js +1 -1
- package/react/selection.d.ts.map +1 -1
- package/react/selection.js +0 -0
- package/react/use-mounted-source.d.ts +1 -1
- package/react/use-mounted-source.js +1 -1
- package/realtime/checkpoint-store.d.ts +206 -0
- package/realtime/checkpoint-store.d.ts.map +1 -0
- package/realtime/checkpoint-store.js +504 -0
- package/realtime/contract.d.ts +142 -0
- package/realtime/contract.d.ts.map +1 -0
- package/realtime/contract.js +154 -0
- package/realtime/exploration.d.ts +16 -0
- package/realtime/exploration.d.ts.map +1 -0
- package/realtime/exploration.js +32 -0
- package/realtime/honua-server.d.ts +131 -0
- package/realtime/honua-server.d.ts.map +1 -0
- package/realtime/honua-server.js +302 -0
- package/realtime/index.d.ts +39 -0
- package/realtime/index.d.ts.map +1 -0
- package/realtime/index.js +26 -0
- package/realtime/odata-delta.d.ts +114 -0
- package/realtime/odata-delta.d.ts.map +1 -0
- package/realtime/odata-delta.js +483 -0
- package/realtime/projections.d.ts +30 -0
- package/realtime/projections.d.ts.map +1 -0
- package/realtime/projections.js +51 -0
- package/realtime/reconciliation.d.ts +245 -0
- package/realtime/reconciliation.d.ts.map +1 -0
- package/realtime/reconciliation.js +377 -0
- package/realtime/reducer.d.ts +14 -0
- package/realtime/reducer.d.ts.map +1 -0
- package/realtime/reducer.js +351 -0
- package/realtime/resumable-transport.d.ts +111 -0
- package/realtime/resumable-transport.d.ts.map +1 -0
- package/realtime/resumable-transport.js +406 -0
- package/realtime/resumable.d.ts +104 -0
- package/realtime/resumable.d.ts.map +1 -0
- package/realtime/resumable.js +632 -0
- package/realtime/sse.d.ts +23 -0
- package/realtime/sse.d.ts.map +1 -0
- package/realtime/sse.js +147 -0
- package/realtime/store.d.ts +18 -0
- package/realtime/store.d.ts.map +1 -0
- package/realtime/store.js +63 -0
- package/realtime/types.d.ts +190 -0
- package/realtime/types.d.ts.map +1 -0
- package/realtime/types.js +10 -0
- package/realtime/websocket.d.ts +60 -0
- package/realtime/websocket.d.ts.map +1 -0
- package/realtime/websocket.js +157 -0
- package/realtime/wire.d.ts +28 -0
- package/realtime/wire.d.ts.map +1 -0
- package/realtime/wire.js +73 -0
- package/runtime/index.d.ts +6 -2
- package/runtime/index.d.ts.map +1 -1
- package/runtime/index.js +3 -1
- package/runtime/load-package.d.ts +24 -0
- package/runtime/load-package.d.ts.map +1 -1
- package/runtime/load-package.js +45 -1
- package/runtime/maplibre-renderer.d.ts +11 -0
- package/runtime/maplibre-renderer.d.ts.map +1 -1
- package/runtime/maplibre-renderer.js +32 -7
- package/runtime/offline-region-protocol.d.ts +73 -0
- package/runtime/offline-region-protocol.d.ts.map +1 -0
- package/runtime/offline-region-protocol.js +63 -0
- package/runtime/offline-region-style.d.ts +78 -0
- package/runtime/offline-region-style.d.ts.map +1 -0
- package/runtime/offline-region-style.js +147 -0
- package/runtime/pmtiles-protocol.d.ts +7 -8
- package/runtime/pmtiles-protocol.d.ts.map +1 -1
- package/runtime/pmtiles-protocol.js +19 -66
- package/runtime/protocol-registry.d.ts +55 -0
- package/runtime/protocol-registry.d.ts.map +1 -0
- package/runtime/protocol-registry.js +103 -0
- package/runtime/runtime.d.ts +2 -0
- package/runtime/runtime.d.ts.map +1 -1
- package/runtime/runtime.js +6 -1
- package/studio/index.d.ts +24 -7
- package/studio/index.d.ts.map +1 -1
- package/studio/index.js +21 -7
- package/studio/lifecycle-client.d.ts +164 -0
- package/studio/lifecycle-client.d.ts.map +1 -0
- package/studio/lifecycle-client.js +299 -0
- package/studio/lifecycle-errors.d.ts +91 -0
- package/studio/lifecycle-errors.d.ts.map +1 -0
- package/studio/lifecycle-errors.js +77 -0
- package/studio/lifecycle-types.d.ts +321 -0
- package/studio/lifecycle-types.d.ts.map +1 -0
- package/studio/lifecycle-types.js +22 -0
- package/webmap/convert-label.js +0 -1
- package/webmap/convert-symbol.d.ts.map +1 -1
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical typed query filter — the protocol-neutral semantic filter AST that
|
|
3
|
+
* `Source.query()` accepts on the stable surface, plus the per-protocol
|
|
4
|
+
* compilers that lower it onto each wire dialect.
|
|
5
|
+
*
|
|
6
|
+
* The AST mirrors the experimental `/query-planner` semantic filter (comparison,
|
|
7
|
+
* list, range, null, pattern, spatial, temporal, boolean composition) with two
|
|
8
|
+
* deliberate contract-layer differences:
|
|
9
|
+
*
|
|
10
|
+
* - Spatial predicates carry the same canonical geometry value the rest of the
|
|
11
|
+
* contract uses (`SpatialFilter`-shaped `geometry` + `geometryType`, produced
|
|
12
|
+
* by `envelope()` / `point()` / `polygon()`), so a filter composes with
|
|
13
|
+
* `Query.spatialFilter` without a second geometry vocabulary.
|
|
14
|
+
* - Compilation is schema-free. The planner's semantic compilers verify a
|
|
15
|
+
* `SourceSchemaV2` before emitting; the canonical surface has no verified
|
|
16
|
+
* schema at query time, so literals are typed by the value the caller wrote.
|
|
17
|
+
*
|
|
18
|
+
* Every compiler in this module fails closed: a construct the target protocol
|
|
19
|
+
* cannot express exactly throws `HonuaCapabilityNotSupportedError` naming the
|
|
20
|
+
* construct and the protocol. Nothing is silently dropped and nothing is
|
|
21
|
+
* silently widened; a widening that is genuinely safe (the GeoParquet bbox
|
|
22
|
+
* reduction) is reported through `Result.degraded` by its adapter.
|
|
23
|
+
*
|
|
24
|
+
* @module
|
|
25
|
+
*/
|
|
26
|
+
import type { SpatialFilter } from "../core/spatial-filter.js";
|
|
27
|
+
import type { EsriGeometryType, EsriSpatialRel } from "../core/types.js";
|
|
28
|
+
/** Literal values a canonical filter may compare against. */
|
|
29
|
+
export type QueryFilterScalar = string | number | boolean | null;
|
|
30
|
+
/** Reference to a source field (attribute, geometry, or temporal column). */
|
|
31
|
+
export interface QueryFilterPropertyNode {
|
|
32
|
+
readonly kind: "property";
|
|
33
|
+
readonly name: string;
|
|
34
|
+
}
|
|
35
|
+
/** Scalar literal operand. */
|
|
36
|
+
export interface QueryFilterLiteralNode {
|
|
37
|
+
readonly kind: "literal";
|
|
38
|
+
readonly value: QueryFilterScalar;
|
|
39
|
+
}
|
|
40
|
+
export type QueryFilterComparisonOperator = "eq" | "ne" | "lt" | "lte" | "gt" | "gte";
|
|
41
|
+
export interface QueryFilterComparisonNode {
|
|
42
|
+
readonly kind: "comparison";
|
|
43
|
+
readonly operator: QueryFilterComparisonOperator;
|
|
44
|
+
readonly left: QueryFilterPropertyNode;
|
|
45
|
+
readonly right: QueryFilterLiteralNode;
|
|
46
|
+
}
|
|
47
|
+
export interface QueryFilterListNode {
|
|
48
|
+
readonly kind: "list";
|
|
49
|
+
readonly operator: "in";
|
|
50
|
+
readonly operand: QueryFilterPropertyNode;
|
|
51
|
+
readonly values: readonly QueryFilterLiteralNode[];
|
|
52
|
+
}
|
|
53
|
+
export interface QueryFilterRangeNode {
|
|
54
|
+
readonly kind: "range";
|
|
55
|
+
readonly operator: "between";
|
|
56
|
+
readonly operand: QueryFilterPropertyNode;
|
|
57
|
+
readonly lower: QueryFilterLiteralNode;
|
|
58
|
+
readonly upper: QueryFilterLiteralNode;
|
|
59
|
+
}
|
|
60
|
+
export interface QueryFilterNullNode {
|
|
61
|
+
readonly kind: "null";
|
|
62
|
+
readonly operator: "is-null" | "is-not-null";
|
|
63
|
+
readonly operand: QueryFilterPropertyNode;
|
|
64
|
+
}
|
|
65
|
+
export interface QueryFilterPatternNode {
|
|
66
|
+
readonly kind: "pattern";
|
|
67
|
+
readonly operator: "like";
|
|
68
|
+
readonly operand: QueryFilterPropertyNode;
|
|
69
|
+
/** SQL-style pattern using `%` (any run) and `_` (single character). */
|
|
70
|
+
readonly pattern: string;
|
|
71
|
+
/** Defaults to `true`. `false` requests a case-insensitive match. */
|
|
72
|
+
readonly caseSensitive?: boolean;
|
|
73
|
+
}
|
|
74
|
+
/** Protocol-neutral spatial predicates. */
|
|
75
|
+
export type QueryFilterSpatialPredicate = "intersects" | "contains" | "within" | "crosses" | "touches" | "overlaps" | "bbox-intersects";
|
|
76
|
+
/** Canonical geometry operand: the value the spatial-filter builders emit. */
|
|
77
|
+
export interface QueryFilterGeometryOperand {
|
|
78
|
+
readonly geometry: Record<string, unknown>;
|
|
79
|
+
readonly geometryType: EsriGeometryType;
|
|
80
|
+
}
|
|
81
|
+
export interface QueryFilterSpatialNode {
|
|
82
|
+
readonly kind: "spatial";
|
|
83
|
+
readonly operator: QueryFilterSpatialPredicate;
|
|
84
|
+
readonly geometry: QueryFilterGeometryOperand;
|
|
85
|
+
/**
|
|
86
|
+
* Geometry property to test. Optional for sources with a single primary
|
|
87
|
+
* geometry (GeoServices, OGC, GeoParquet); the WFS / OData compilers resolve
|
|
88
|
+
* it from the adapter when omitted.
|
|
89
|
+
*/
|
|
90
|
+
readonly property?: string;
|
|
91
|
+
}
|
|
92
|
+
export type QueryFilterTemporalPredicate = "before" | "after" | "during" | "time-intersects";
|
|
93
|
+
/** RFC 3339 instant, or an inclusive `[start, end]` interval of instants. */
|
|
94
|
+
export type QueryFilterTemporalLiteralNode = {
|
|
95
|
+
readonly kind: "temporal-literal";
|
|
96
|
+
readonly valueType: "instant";
|
|
97
|
+
readonly value: string;
|
|
98
|
+
} | {
|
|
99
|
+
readonly kind: "temporal-literal";
|
|
100
|
+
readonly valueType: "interval";
|
|
101
|
+
readonly value: readonly [string, string];
|
|
102
|
+
};
|
|
103
|
+
export interface QueryFilterTemporalNode {
|
|
104
|
+
readonly kind: "temporal";
|
|
105
|
+
readonly operator: QueryFilterTemporalPredicate;
|
|
106
|
+
readonly operand: QueryFilterPropertyNode;
|
|
107
|
+
readonly value: QueryFilterTemporalLiteralNode;
|
|
108
|
+
}
|
|
109
|
+
export interface QueryFilterBooleanNode {
|
|
110
|
+
readonly kind: "boolean";
|
|
111
|
+
readonly operator: "and" | "or";
|
|
112
|
+
readonly args: readonly QueryFilterExpression[];
|
|
113
|
+
}
|
|
114
|
+
export interface QueryFilterNotNode {
|
|
115
|
+
readonly kind: "not";
|
|
116
|
+
readonly arg: QueryFilterExpression;
|
|
117
|
+
}
|
|
118
|
+
/** The canonical typed filter accepted by `Query.filter`. */
|
|
119
|
+
export type QueryFilterExpression = QueryFilterComparisonNode | QueryFilterListNode | QueryFilterRangeNode | QueryFilterNullNode | QueryFilterPatternNode | QueryFilterSpatialNode | QueryFilterTemporalNode | QueryFilterBooleanNode | QueryFilterNotNode;
|
|
120
|
+
/**
|
|
121
|
+
* Canonical temporal filter accepted by `Query.temporalFilter`.
|
|
122
|
+
*
|
|
123
|
+
* Without `field` the filter targets the source's own time dimension and
|
|
124
|
+
* compiles to the protocol's time parameter (GeoServices `time=`, OGC / STAC
|
|
125
|
+
* `datetime=`). With `field` it compiles to an explicit temporal predicate on
|
|
126
|
+
* that column, which is the only form OData, WFS, and DuckDB can express.
|
|
127
|
+
* `null` on either interval bound means "open ended".
|
|
128
|
+
*/
|
|
129
|
+
export type QueryTemporalFilter = {
|
|
130
|
+
readonly kind: "instant";
|
|
131
|
+
readonly instant: string;
|
|
132
|
+
readonly field?: string;
|
|
133
|
+
} | {
|
|
134
|
+
readonly kind: "interval";
|
|
135
|
+
readonly start: string | null;
|
|
136
|
+
readonly end: string | null;
|
|
137
|
+
readonly field?: string;
|
|
138
|
+
};
|
|
139
|
+
/**
|
|
140
|
+
* Ergonomic constructors for {@link QueryFilterExpression}. Every helper returns
|
|
141
|
+
* plain data, so a filter can equally be written as an object literal, stored as
|
|
142
|
+
* JSON, or produced by the experimental semantic builder.
|
|
143
|
+
*
|
|
144
|
+
* @example
|
|
145
|
+
* ```ts
|
|
146
|
+
* import { envelope, queryFilter } from "@honua/sdk-js";
|
|
147
|
+
*
|
|
148
|
+
* const filter = queryFilter.and(
|
|
149
|
+
* queryFilter.eq("STATUS", "open"),
|
|
150
|
+
* queryFilter.gt("SEVERITY", 3),
|
|
151
|
+
* queryFilter.spatial("intersects", envelope(-158.5, 21.2, -157.6, 21.7)),
|
|
152
|
+
* );
|
|
153
|
+
* ```
|
|
154
|
+
*/
|
|
155
|
+
export declare const queryFilter: Readonly<{
|
|
156
|
+
eq: (field: string, value: QueryFilterScalar) => QueryFilterComparisonNode;
|
|
157
|
+
ne: (field: string, value: QueryFilterScalar) => QueryFilterComparisonNode;
|
|
158
|
+
lt: (field: string, value: QueryFilterScalar) => QueryFilterComparisonNode;
|
|
159
|
+
lte: (field: string, value: QueryFilterScalar) => QueryFilterComparisonNode;
|
|
160
|
+
gt: (field: string, value: QueryFilterScalar) => QueryFilterComparisonNode;
|
|
161
|
+
gte: (field: string, value: QueryFilterScalar) => QueryFilterComparisonNode;
|
|
162
|
+
isIn: (field: string, values: readonly QueryFilterScalar[]) => QueryFilterListNode;
|
|
163
|
+
between: (field: string, lower: QueryFilterScalar, upper: QueryFilterScalar) => QueryFilterRangeNode;
|
|
164
|
+
isNull: (field: string) => QueryFilterNullNode;
|
|
165
|
+
isNotNull: (field: string) => QueryFilterNullNode;
|
|
166
|
+
like: (field: string, pattern: string, options?: {
|
|
167
|
+
caseSensitive?: boolean;
|
|
168
|
+
}) => QueryFilterPatternNode;
|
|
169
|
+
spatial: (operator: QueryFilterSpatialPredicate, geometry: QueryFilterGeometryOperand, options?: {
|
|
170
|
+
property?: string;
|
|
171
|
+
}) => QueryFilterSpatialNode;
|
|
172
|
+
before: (field: string, instant: string) => QueryFilterTemporalNode;
|
|
173
|
+
after: (field: string, instant: string) => QueryFilterTemporalNode;
|
|
174
|
+
during: (field: string, start: string, end: string) => QueryFilterTemporalNode;
|
|
175
|
+
timeIntersects: (field: string, start: string, end: string) => QueryFilterTemporalNode;
|
|
176
|
+
and: (...args: readonly QueryFilterExpression[]) => QueryFilterBooleanNode;
|
|
177
|
+
or: (...args: readonly QueryFilterExpression[]) => QueryFilterBooleanNode;
|
|
178
|
+
not: (arg: QueryFilterExpression) => QueryFilterNotNode;
|
|
179
|
+
}>;
|
|
180
|
+
/** Structural bounds mirroring the semantic planner's parser limits. */
|
|
181
|
+
export declare const MAX_QUERY_FILTER_DEPTH = 32;
|
|
182
|
+
export declare const MAX_QUERY_FILTER_NODES = 512;
|
|
183
|
+
/**
|
|
184
|
+
* Boolean, comparison, and set operators a filter can name. Mirrors the
|
|
185
|
+
* `filterOperators` vocabulary of `CapabilityConstraints` so a capability
|
|
186
|
+
* profile's allow list can gate the canonical AST without translation.
|
|
187
|
+
*/
|
|
188
|
+
export type QueryFilterOperatorId = QueryFilterComparisonOperator | "in" | "between" | "is-null" | "is-not-null" | "like" | "and" | "or" | "not" | QueryFilterSpatialPredicate | QueryFilterTemporalPredicate;
|
|
189
|
+
/** Compilation identity used to name a refusal. */
|
|
190
|
+
export interface QueryFilterContext {
|
|
191
|
+
/** Wire protocol the filter is being compiled for. */
|
|
192
|
+
readonly protocol: string;
|
|
193
|
+
/** Source id, when the compile is bound to one. */
|
|
194
|
+
readonly sourceId?: string;
|
|
195
|
+
/** Geometry property name, when the dialect must reference it explicitly. */
|
|
196
|
+
readonly geometryProperty?: string;
|
|
197
|
+
/**
|
|
198
|
+
* Operator allow list evaluated for this source. When present, an operator
|
|
199
|
+
* outside it is refused even if the protocol could express it — the source's
|
|
200
|
+
* own capability evidence is narrower than its protocol's grammar.
|
|
201
|
+
*/
|
|
202
|
+
readonly supportedFilterOperators?: readonly QueryFilterOperatorId[];
|
|
203
|
+
/** Optional per-source predicate allow list from the capability profile. */
|
|
204
|
+
readonly supportedSpatialPredicates?: readonly QueryFilterSpatialPredicate[];
|
|
205
|
+
/** Optional per-source temporal predicate allow list from the capability profile. */
|
|
206
|
+
readonly supportedTemporalPredicates?: readonly QueryFilterTemporalPredicate[];
|
|
207
|
+
/**
|
|
208
|
+
* Where the allow lists came from. `capability-profile` marks a refusal as
|
|
209
|
+
* source-evidence-driven rather than protocol-driven, which the error context
|
|
210
|
+
* carries so callers can tell "this server cannot" from "this protocol
|
|
211
|
+
* cannot".
|
|
212
|
+
*/
|
|
213
|
+
readonly constraintSource?: "capability-profile" | "protocol-default";
|
|
214
|
+
}
|
|
215
|
+
/** Fail closed, naming the construct and the protocol that cannot express it. */
|
|
216
|
+
export declare function refuseQueryFilterConstruct(construct: string, ctx: QueryFilterContext): never;
|
|
217
|
+
/**
|
|
218
|
+
* Narrow the evaluated `CapabilityConstraints` of one capability into the
|
|
219
|
+
* allow lists this compiler understands.
|
|
220
|
+
*
|
|
221
|
+
* Vocabularies that the canonical AST cannot name (distance predicates,
|
|
222
|
+
* extension identifiers) are dropped rather than translated, which fails closed
|
|
223
|
+
* by construction: a profile that advertises only constructs outside the AST
|
|
224
|
+
* yields an empty allow list, and every node of that kind is refused. Omitted
|
|
225
|
+
* constraint arrays stay `undefined` — "the evidence says nothing", not "the
|
|
226
|
+
* source supports nothing".
|
|
227
|
+
*/
|
|
228
|
+
export declare function queryFilterConstraints(constraints: {
|
|
229
|
+
readonly filterOperators?: readonly string[];
|
|
230
|
+
readonly spatialPredicates?: readonly string[];
|
|
231
|
+
readonly temporalPredicates?: readonly string[];
|
|
232
|
+
}): Pick<QueryFilterContext, "supportedFilterOperators" | "supportedSpatialPredicates" | "supportedTemporalPredicates">;
|
|
233
|
+
/**
|
|
234
|
+
* Validate a caller-supplied filter before any dialect sees it. Rejects
|
|
235
|
+
* malformed nodes, unbounded nesting, and identifiers that are not plain
|
|
236
|
+
* source field names (the only identifiers every dialect can quote safely).
|
|
237
|
+
*/
|
|
238
|
+
export declare function assertQueryFilter(filter: QueryFilterExpression, ctx: QueryFilterContext): void;
|
|
239
|
+
/** Validate `Query.temporalFilter` independently of the filter AST. */
|
|
240
|
+
export declare function assertTemporalFilter(temporal: QueryTemporalFilter, ctx: QueryFilterContext): void;
|
|
241
|
+
/**
|
|
242
|
+
* Lower a field-bound `Query.temporalFilter` into a filter node so every
|
|
243
|
+
* dialect compiles temporal intent through the same path. Returns `undefined`
|
|
244
|
+
* when the filter targets the source's own time dimension (no `field`), which
|
|
245
|
+
* the protocol time parameter carries instead.
|
|
246
|
+
*/
|
|
247
|
+
export declare function temporalFilterToExpression(temporal: QueryTemporalFilter, ctx: QueryFilterContext): QueryFilterExpression | undefined;
|
|
248
|
+
/** Combine a filter and a lowered temporal predicate into one expression. */
|
|
249
|
+
export declare function andQueryFilters(...parts: readonly (QueryFilterExpression | undefined)[]): QueryFilterExpression | undefined;
|
|
250
|
+
/** GeoServices carries the spatial predicate as request params, not as SQL. */
|
|
251
|
+
export interface CompiledSql92Filter {
|
|
252
|
+
readonly where?: string;
|
|
253
|
+
readonly spatialFilter?: SpatialFilter;
|
|
254
|
+
}
|
|
255
|
+
/** Esri spatial relationships the canonical predicates map onto. @internal */
|
|
256
|
+
export declare const GEOSERVICES_SPATIAL_REL: Record<QueryFilterSpatialPredicate, EsriSpatialRel | undefined>;
|
|
257
|
+
/**
|
|
258
|
+
* Compile to the GeoServices `where` clause plus (at most one) spatial request
|
|
259
|
+
* parameter set. GeoServices expresses exactly one geometry per `query`
|
|
260
|
+
* request, and only conjunctively, so a spatial predicate nested inside `OR` /
|
|
261
|
+
* `NOT` or a second spatial predicate is refused rather than approximated.
|
|
262
|
+
*/
|
|
263
|
+
export declare function compileQueryFilterToSql92(filter: QueryFilterExpression, ctx: QueryFilterContext): CompiledSql92Filter;
|
|
264
|
+
/** True when a filter references geometry anywhere in its tree. */
|
|
265
|
+
export declare function queryFilterHasSpatial(filter: QueryFilterExpression): boolean;
|
|
266
|
+
/** Emitted SQL plus whether a spatial predicate was reduced to its bbox. */
|
|
267
|
+
export interface CompiledDuckDbFilter {
|
|
268
|
+
readonly sql: string;
|
|
269
|
+
readonly bboxApproximated: boolean;
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Compile to a DuckDB `WHERE` fragment. Spatial predicates are emitted through
|
|
273
|
+
* `emitSpatial`, which the GeoParquet driver supplies (it owns the geometry
|
|
274
|
+
* column, its encoding, and the bbox reduction that `Result.degraded` reports).
|
|
275
|
+
*/
|
|
276
|
+
export declare function compileQueryFilterToDuckDbSql(filter: QueryFilterExpression, ctx: QueryFilterContext, emitSpatial: (node: QueryFilterSpatialNode) => {
|
|
277
|
+
readonly sql: string;
|
|
278
|
+
readonly bboxApproximated: boolean;
|
|
279
|
+
}): CompiledDuckDbFilter;
|
|
280
|
+
/**
|
|
281
|
+
* Compile to CQL2 text (OGC API — Features Part 3 / STAC filter extension).
|
|
282
|
+
* `geometryToWkt` is injected so the WKT writer stays in the OData module that
|
|
283
|
+
* already owns it instead of being duplicated here.
|
|
284
|
+
*/
|
|
285
|
+
export declare function compileQueryFilterToCql2Text(filter: QueryFilterExpression, ctx: QueryFilterContext, geometryToWkt: (geometry: Record<string, unknown>, geometryType: string) => string): string;
|
|
286
|
+
/**
|
|
287
|
+
* Compile to an OData `$filter` expression. Spatial predicates are emitted
|
|
288
|
+
* through `emitSpatial` so the adapter's `$metadata`-aware geometry column and
|
|
289
|
+
* SRID resolution stay in one place.
|
|
290
|
+
*/
|
|
291
|
+
export declare function compileQueryFilterToOData(filter: QueryFilterExpression, ctx: QueryFilterContext, emitSpatial: (node: QueryFilterSpatialNode) => string): string;
|
|
292
|
+
/**
|
|
293
|
+
* GeoServices `time=` value. Instants serialize as epoch milliseconds and
|
|
294
|
+
* intervals as `start,end`; an open bound serializes as `null`, which the
|
|
295
|
+
* FeatureServer `time` parameter defines as "unbounded on that side".
|
|
296
|
+
*/
|
|
297
|
+
export declare function compileTemporalFilterToGeoServicesTime(temporal: QueryTemporalFilter, ctx: QueryFilterContext): string;
|
|
298
|
+
/** OGC / STAC `datetime=` value (RFC 3339 instant or `start/end` interval). */
|
|
299
|
+
export declare function compileTemporalFilterToOgcDatetime(temporal: QueryTemporalFilter, ctx: QueryFilterContext): string;
|
|
300
|
+
//# sourceMappingURL=query-filter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-filter.d.ts","sourceRoot":"","sources":["../../../src/contract/query-filter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAIzE,6DAA6D;AAC7D,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;AAEjE,6EAA6E;AAC7E,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,8BAA8B;AAC9B,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC;CACnC;AAED,MAAM,MAAM,6BAA6B,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC;AAEtF,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,6BAA6B,CAAC;IACjD,QAAQ,CAAC,IAAI,EAAE,uBAAuB,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,sBAAsB,CAAC;CACxC;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,uBAAuB,CAAC;IAC1C,QAAQ,CAAC,MAAM,EAAE,SAAS,sBAAsB,EAAE,CAAC;CACpD;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,uBAAuB,CAAC;IAC1C,QAAQ,CAAC,KAAK,EAAE,sBAAsB,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,sBAAsB,CAAC;CACxC;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,SAAS,GAAG,aAAa,CAAC;IAC7C,QAAQ,CAAC,OAAO,EAAE,uBAAuB,CAAC;CAC3C;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,uBAAuB,CAAC;IAC1C,wEAAwE;IACxE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,qEAAqE;IACrE,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,2CAA2C;AAC3C,MAAM,MAAM,2BAA2B,GACnC,YAAY,GACZ,UAAU,GACV,QAAQ,GACR,SAAS,GACT,SAAS,GACT,UAAU,GACV,iBAAiB,CAAC;AAEtB,8EAA8E;AAC9E,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,QAAQ,CAAC,YAAY,EAAE,gBAAgB,CAAC;CACzC;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,2BAA2B,CAAC;IAC/C,QAAQ,CAAC,QAAQ,EAAE,0BAA0B,CAAC;IAC9C;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,MAAM,4BAA4B,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,iBAAiB,CAAC;AAE7F,6EAA6E;AAC7E,MAAM,MAAM,8BAA8B,GACtC;IAAE,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC5F;IAAE,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAC;AAErH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,4BAA4B,CAAC;IAChD,QAAQ,CAAC,OAAO,EAAE,uBAAuB,CAAC;IAC1C,QAAQ,CAAC,KAAK,EAAE,8BAA8B,CAAC;CAChD;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,KAAK,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,SAAS,qBAAqB,EAAE,CAAC;CACjD;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,qBAAqB,CAAC;CACrC;AAED,6DAA6D;AAC7D,MAAM,MAAM,qBAAqB,GAC7B,yBAAyB,GACzB,mBAAmB,GACnB,oBAAoB,GACpB,mBAAmB,GACnB,sBAAsB,GACtB,sBAAsB,GACtB,uBAAuB,GACvB,sBAAsB,GACtB,kBAAkB,CAAC;AAEvB;;;;;;;;GAQG;AACH,MAAM,MAAM,mBAAmB,GAC3B;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAC/E;IACE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAYN;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,WAAW;gBACV,MAAM,SAAS,iBAAiB,KAAG,yBAAyB;gBAM5D,MAAM,SAAS,iBAAiB,KAAG,yBAAyB;gBAM5D,MAAM,SAAS,iBAAiB,KAAG,yBAAyB;iBAM3D,MAAM,SAAS,iBAAiB,KAAG,yBAAyB;gBAM7D,MAAM,SAAS,iBAAiB,KAAG,yBAAyB;iBAM3D,MAAM,SAAS,iBAAiB,KAAG,yBAAyB;kBAM3D,MAAM,UAAU,SAAS,iBAAiB,EAAE,KAAG,mBAAmB;qBAM/D,MAAM,SAAS,iBAAiB,SAAS,iBAAiB,KAAG,oBAAoB;oBAOlF,MAAM,KAAG,mBAAmB;uBACzB,MAAM,KAAG,mBAAmB;kBAKjC,MAAM,WAAW,MAAM,YAAW;QAAE,aAAa,CAAC,EAAE,OAAO,CAAA;KAAE,KAAQ,sBAAsB;wBAQ7F,2BAA2B,YAC3B,0BAA0B,YAC3B;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,KAC7B,sBAAsB;oBAMT,MAAM,WAAW,MAAM,KAAG,uBAAuB;mBAMlD,MAAM,WAAW,MAAM,KAAG,uBAAuB;oBAMhD,MAAM,SAAS,MAAM,OAAO,MAAM,KAAG,uBAAuB;4BAMpD,MAAM,SAAS,MAAM,OAAO,MAAM,KAAG,uBAAuB;mBAMrE,SAAS,qBAAqB,EAAE,KAAG,sBAAsB;kBAK1D,SAAS,qBAAqB,EAAE,KAAG,sBAAsB;eAK5D,qBAAqB,KAAG,kBAAkB;EACrD,CAAC;AAIH,wEAAwE;AACxE,eAAO,MAAM,sBAAsB,KAAK,CAAC;AACzC,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAM1C;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,GAC7B,6BAA6B,GAC7B,IAAI,GACJ,SAAS,GACT,SAAS,GACT,aAAa,GACb,MAAM,GACN,KAAK,GACL,IAAI,GACJ,KAAK,GACL,2BAA2B,GAC3B,4BAA4B,CAAC;AAEjC,mDAAmD;AACnD,MAAM,WAAW,kBAAkB;IACjC,sDAAsD;IACtD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,mDAAmD;IACnD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,6EAA6E;IAC7E,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC;;;;OAIG;IACH,QAAQ,CAAC,wBAAwB,CAAC,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACrE,4EAA4E;IAC5E,QAAQ,CAAC,0BAA0B,CAAC,EAAE,SAAS,2BAA2B,EAAE,CAAC;IAC7E,qFAAqF;IACrF,QAAQ,CAAC,2BAA2B,CAAC,EAAE,SAAS,4BAA4B,EAAE,CAAC;IAC/E;;;;;OAKG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,oBAAoB,GAAG,kBAAkB,CAAC;CACvE;AAED,iFAAiF;AACjF,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,kBAAkB,GAAG,KAAK,CAI5F;AAmED;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE;IAClD,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7C,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/C,QAAQ,CAAC,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACjD,GAAG,IAAI,CACN,kBAAkB,EAClB,0BAA0B,GAAG,4BAA4B,GAAG,6BAA6B,CAC1F,CAeA;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,qBAAqB,EAAE,GAAG,EAAE,kBAAkB,GAAG,IAAI,CAqE9F;AA2DD,uEAAuE;AACvE,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,mBAAmB,EAAE,GAAG,EAAE,kBAAkB,GAAG,IAAI,CAcjG;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,mBAAmB,EAC7B,GAAG,EAAE,kBAAkB,GACtB,qBAAqB,GAAG,SAAS,CAwCnC;AAED,6EAA6E;AAC7E,wBAAgB,eAAe,CAC7B,GAAG,KAAK,EAAE,SAAS,CAAC,qBAAqB,GAAG,SAAS,CAAC,EAAE,GACvD,qBAAqB,GAAG,SAAS,CAKnC;AAkFD,+EAA+E;AAC/E,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC;CACxC;AAED,8EAA8E;AAC9E,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,2BAA2B,EAAE,cAAc,GAAG,SAAS,CAYnG,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,qBAAqB,EAAE,GAAG,EAAE,kBAAkB,GAAG,mBAAmB,CAWrH;AAwCD,mEAAmE;AACnE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAE5E;AA2FD,4EAA4E;AAC5E,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;CACpC;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,qBAAqB,EAC7B,GAAG,EAAE,kBAAkB,EACvB,WAAW,EAAE,CAAC,IAAI,EAAE,sBAAsB,KAAK;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAA;CAAE,GAC1G,oBAAoB,CAatB;AAcD;;;;GAIG;AACH,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,qBAAqB,EAC7B,GAAG,EAAE,kBAAkB,EACvB,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,EAAE,MAAM,KAAK,MAAM,GACjF,MAAM,CAqDR;AAgBD;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,qBAAqB,EAC7B,GAAG,EAAE,kBAAkB,EACvB,WAAW,EAAE,CAAC,IAAI,EAAE,sBAAsB,KAAK,MAAM,GACpD,MAAM,CAwCR;AAiCD;;;;GAIG;AACH,wBAAgB,sCAAsC,CAAC,QAAQ,EAAE,mBAAmB,EAAE,GAAG,EAAE,kBAAkB,GAAG,MAAM,CAMrH;AAED,+EAA+E;AAC/E,wBAAgB,kCAAkC,CAAC,QAAQ,EAAE,mBAAmB,EAAE,GAAG,EAAE,kBAAkB,GAAG,MAAM,CAIjH"}
|