UNPKG

@nextgis/properties-filter

Version:
39 lines (35 loc) 1.58 kB
import { Feature } from 'geojson'; /** * gt - greater (\>) * lt - lower (\<) * ge - greater or equal (\>=) * le - lower or equal (\<=) * eq - equal (=) * ne - not equal (!=) * like - LIKE SQL statement (for strings compare) * ilike - ILIKE SQL statement (for strings compare) */ type Operation = 'gt' | 'lt' | 'ge' | 'le' | 'eq' | 'ne' | 'in' | 'notin' | 'like' | 'ilike'; /** @deprecated use {@link Operation} instead */ type Operations = Operation; type Properties = { [name: string]: any; }; /** * field, operation, value * ['foo', 'eq', 'bar'] * ['count', 'ge', 20] */ type PropertyFilter<T extends Properties = Properties> = [ T extends null ? string : keyof T | `%${string & keyof T}` | `%${string & keyof T}%` | `${string & keyof T}%`, Operation, any ]; type PropertiesFilter<T extends Properties = Properties> = ('all' | 'any' | PropertyFilter<T> | PropertiesFilter<T>)[]; declare function isPropertyFilter(filter: PropertyFilter | PropertiesFilter | string): filter is PropertyFilter; /** @deprecated use {@link isPropertyFilter} instead */ declare function checkIfPropertyFilter(filter: PropertyFilter | PropertiesFilter | string): filter is PropertyFilter; declare function featureFilter(feature: Feature, filters: PropertiesFilter): boolean; declare function propertiesFilter<T extends Properties = Properties>(properties: T, filters: PropertiesFilter<T>): boolean; export { checkIfPropertyFilter, featureFilter, isPropertyFilter, propertiesFilter }; export type { Operation, Operations, Properties, PropertiesFilter, PropertyFilter };