Variable queryFilterConst

queryFilter: Readonly<{
    after: ((field: string, instant: string) => QueryFilterTemporalNode);
    and: ((...args: readonly QueryFilterExpression[]) => QueryFilterBooleanNode);
    before: ((field: string, instant: string) => QueryFilterTemporalNode);
    between: ((field: string, lower: QueryFilterScalar, upper: QueryFilterScalar) => QueryFilterRangeNode);
    during: ((field: string, start: string, end: string) => QueryFilterTemporalNode);
    eq: ((field: string, value: QueryFilterScalar) => QueryFilterComparisonNode);
    gt: ((field: string, value: QueryFilterScalar) => QueryFilterComparisonNode);
    gte: ((field: string, value: QueryFilterScalar) => QueryFilterComparisonNode);
    isIn: ((field: string, values: readonly QueryFilterScalar[]) => QueryFilterListNode);
    isNotNull: ((field: string) => QueryFilterNullNode);
    isNull: ((field: string) => QueryFilterNullNode);
    like: ((field: string, pattern: string, options?: {
        caseSensitive?: boolean;
    }) => QueryFilterPatternNode);
    lt: ((field: string, value: QueryFilterScalar) => QueryFilterComparisonNode);
    lte: ((field: string, value: QueryFilterScalar) => QueryFilterComparisonNode);
    ne: ((field: string, value: QueryFilterScalar) => QueryFilterComparisonNode);
    not: ((arg: QueryFilterExpression) => QueryFilterNotNode);
    or: ((...args: readonly QueryFilterExpression[]) => QueryFilterBooleanNode);
    spatial: ((operator: QueryFilterSpatialPredicate, geometry: QueryFilterGeometryOperand, options?: {
        property?: string;
    }) => QueryFilterSpatialNode);
    timeIntersects: ((field: string, start: string, end: string) => QueryFilterTemporalNode);
}> = ...

Ergonomic constructors for QueryFilterExpression. Every helper returns plain data, so a filter can equally be written as an object literal, stored as JSON, or produced by the experimental semantic builder.

import { envelope, queryFilter } from "@honua/sdk-js";

const filter = queryFilter.and(
queryFilter.eq("STATUS", "open"),
queryFilter.gt("SEVERITY", 3),
queryFilter.spatial("intersects", envelope(-158.5, 21.2, -157.6, 21.7)),
);