@opra/common
Version:
Opra common package
31 lines (30 loc) • 1.52 kB
TypeScript
import '../polifils/array-find-last.js';
import type { StrictOmit } from 'ts-gems';
import { Validator } from 'valgen';
import type { ComplexType } from '../document/index.js';
import { ResponsiveMap } from '../helpers/index.js';
import { OpraSchema } from '../schema/index.js';
import { ComparisonExpression, type ComparisonOperator, Expression } from './ast/index.js';
export declare namespace FilterRules {
interface Options {
caseSensitive?: boolean;
}
interface Rule {
operators?: ComparisonOperator[];
description?: string;
prepare?: (args: ComparisonExpression.PrepareArgs) => any;
mappedField?: string;
}
}
export declare class FilterRules {
protected _rules: ResponsiveMap<FilterRules.Rule>;
protected _decoderCache: WeakMap<any, Validator<any, any, import("valgen").ExecutionOptions>>;
constructor(rules?: Record<string, FilterRules.Rule>, options?: FilterRules.Options);
set(fieldName: string, options?: Partial<StrictOmit<FilterRules.Rule, 'operators'>> & {
operators?: ComparisonOperator[] | string;
}): void;
normalizeFilter(filter: OpraSchema.Field.QualifiedName | Expression, currentType?: ComplexType, scope?: string | '*'): Expression | undefined;
protected normalizeFilterAst(ast: Expression, stack: Expression[], currentType?: ComplexType, scope?: string | '*'): Expression | undefined;
toJSON(): Record<string, FilterRules.Rule>;
[Symbol.iterator](): IterableIterator<[string, FilterRules.Rule]>;
}