@nextgis/properties-filter
Version:
Filtering objects by its properties using expressions
39 lines (35 loc) • 1.58 kB
TypeScript
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 };