@equantic/linq
Version:
eQuantic Linq for JavaScript
22 lines (21 loc) • 1.7 kB
TypeScript
import QueryString from 'qs';
import { FilteringCollection } from './FilteringCollection.js';
import type { FieldPath } from '../base.js';
import type { IFiltering, IFilteringInfo } from './base.js';
export interface IFilteringParserOptions<TData extends object = any, TDestination extends object = TData> {
consideringNullValues?: boolean;
consideringEmptyValues?: boolean;
parseProperty: (prop: FieldPath<TData>) => IFilteringInfo<TDestination>;
}
export interface IFilteringConverterOptions<TSource extends object = any, TDestination extends object = TSource> {
parseProperty: (prop: FieldPath<TSource>) => FieldPath<TDestination>;
}
export declare class FilteringParser {
static parseQueryString<TData extends object = any>(queryFilter?: string | string[] | QueryString.ParsedQs | QueryString.ParsedQs[]): FilteringCollection<TData>;
static parseObject<TData extends object = any, TDestination extends object = TData>(data: TData, options?: IFilteringParserOptions<TData, TDestination>): FilteringCollection<TDestination>;
static parse<TSource extends object, TDestination extends object>(source: IFiltering<TSource>, options?: IFilteringConverterOptions<TSource, TDestination>): IFiltering<TDestination>;
static parseCollection<TSource extends object, TDestination extends object>(source: FilteringCollection<TSource>, options?: IFilteringConverterOptions<TSource, TDestination>): FilteringCollection<TDestination>;
static parseExpression<TData extends object = any>(exp: string, result: IFiltering<TData>[]): void;
static toQueryString<TSource extends object>(filtering: IFiltering<TSource>[]): string | undefined;
private static validateValue;
}