@mcabreradev/filter
Version:
A powerful, SQL-like array filtering library for TypeScript and JavaScript with advanced pattern matching, MongoDB-style operators, deep object comparison, and zero dependencies
54 lines (53 loc) • 1.91 kB
TypeScript
import { Signal, PipeTransform } from '@angular/core';
import { filter } from '../../core/filter/filter';
import type { Expression, FilterOptions } from '../../types';
export declare class FilterService<T> {
private dataSignal;
private expressionSignal;
private optionsSignal;
readonly filtered: Signal<T[]>;
readonly isFiltering: Signal<boolean>;
setData: (data: T[]) => void;
setExpression: (expr: Expression<T> | null) => void;
setOptions: (opts: FilterOptions) => void;
reset: () => void;
}
export declare class FilterPipe implements PipeTransform {
transform<T>(data: T[] | null | undefined, expr: Expression<T>, opts?: FilterOptions): T[];
}
export declare class DebouncedFilterService<T> {
private dataSignal;
private expressionSignal;
private optionsSignal;
private timer;
private pendingSignal;
readonly filtered: Signal<T[]>;
readonly isFiltering: Signal<boolean>;
readonly isPending: Signal<boolean>;
setData: (data: T[]) => void;
setOptions: (opts: FilterOptions) => void;
setExpressionDebounced: (expr: Expression<T> | null, delay?: number) => void;
reset: () => void;
}
export declare class PaginatedFilterService<T> {
private dataSignal;
private expressionSignal;
private optionsSignal;
private pageSignal;
private pageSizeSignal;
readonly filtered: Signal<T[]>;
readonly isFiltering: Signal<boolean>;
readonly currentPage: Signal<number>;
readonly pageSize: Signal<number>;
readonly paginatedResults: Signal<T[]>;
readonly totalPages: Signal<number>;
setData: (data: T[]) => void;
setExpression: (expr: Expression<T> | null) => void;
setOptions: (opts: FilterOptions) => void;
setPage: (page: number) => void;
setPageSize: (size: number) => void;
nextPage: () => void;
prevPage: () => void;
reset: () => void;
}
export { filter };