json-p3
Version:
JSONPath, JSON Pointer and JSON Patch
102 lines (101 loc) • 3.68 kB
TypeScript
import { JSONPathNodeList } from "./node";
import { JSONPathQuery } from "./path";
import { Token } from "./token";
import { FilterContext, SerializationOptions } from "./types";
/**
* Base class for all filter expressions.
*/
export declare abstract class FilterExpression {
readonly token: Token;
constructor(token: Token);
/**
* Evaluate the filter expression in the given context.
* @param context - Evaluation context.
*/
abstract evaluate(context: FilterContext): unknown;
/**
* Return a string representation of the expression.
*/
abstract toString(options?: SerializationOptions): string;
}
/**
* Base class for JSONPath ValueType literals.
*/
export declare abstract class FilterExpressionLiteral extends FilterExpression {
}
export declare class NullLiteral extends FilterExpressionLiteral {
evaluate(): null;
toString(): string;
}
export declare class BooleanLiteral extends FilterExpressionLiteral {
readonly token: Token;
readonly value: boolean;
constructor(token: Token, value: boolean);
evaluate(): boolean;
toString(): string;
}
export declare class StringLiteral extends FilterExpressionLiteral {
readonly token: Token;
readonly value: string;
constructor(token: Token, value: string);
evaluate(): string;
toString(): string;
}
export declare class NumberLiteral extends FilterExpressionLiteral {
readonly token: Token;
readonly value: number;
constructor(token: Token, value: number);
evaluate(): number;
toString(): string;
}
export declare class PrefixExpression extends FilterExpression {
readonly token: Token;
readonly operator: string;
readonly right: FilterExpression;
constructor(token: Token, operator: string, right: FilterExpression);
evaluate(context: FilterContext): boolean;
toString(options?: SerializationOptions): string;
}
export declare class InfixExpression extends FilterExpression {
readonly token: Token;
readonly left: FilterExpression;
readonly operator: string;
readonly right: FilterExpression;
readonly logical: boolean;
constructor(token: Token, left: FilterExpression, operator: string, right: FilterExpression);
evaluate(context: FilterContext): boolean;
toString(options?: SerializationOptions): string;
}
export declare class LogicalExpression extends FilterExpression {
readonly token: Token;
readonly expression: FilterExpression;
constructor(token: Token, expression: FilterExpression);
evaluate(context: FilterContext): boolean;
toString(options?: SerializationOptions): string;
}
/**
* Base class for relative and absolute JSONPath query expressions.
*/
export declare abstract class FilterQuery extends FilterExpression {
readonly token: Token;
readonly path: JSONPathQuery;
constructor(token: Token, path: JSONPathQuery);
}
export declare class RelativeQuery extends FilterQuery {
evaluate(context: FilterContext): JSONPathNodeList;
toString(options?: SerializationOptions): string;
}
export declare class RootQuery extends FilterQuery {
evaluate(context: FilterContext): JSONPathNodeList;
toString(options?: SerializationOptions): string;
}
export declare class FunctionExtension extends FilterExpression {
readonly token: Token;
readonly name: string;
readonly args: FilterExpression[];
constructor(token: Token, name: string, args: FilterExpression[]);
evaluate(context: FilterContext): unknown;
toString(options?: SerializationOptions): string;
private unpack_node_list;
}
export declare function compare(left: unknown, operator: string, right: unknown): boolean;