react-querybuilder
Version:
React Query Builder component for constructing queries and filters, with utilities for executing them in various database and evaluation contexts
88 lines (87 loc) • 3.51 kB
TypeScript
export type SpELNodeType = "invalid" | SpELOperationType | SpELPrimitiveType | SpELRelOp | SpELIdentifierType | "assign" | "beanref" | "constructorref" | "elvis" | "function" | "identifier" | "indexer" | "list" | "map" | "method" | "between" | "instanceof" | "matches" | "projection" | "qualifiedidentifier" | "selection" | "ternary" | "typeref";
type SpELOperationType = "op-and" | "op-dec" | "op-divide" | "op-eq" | "op-ge" | "op-gt" | "op-inc" | "op-le" | "op-lt" | "op-minus" | "op-modulus" | "op-multiply" | "op-ne" | "op-not" | "op-or" | "op-plus" | "op-power";
export type SpELPrimitiveType = "number" | "string" | "boolean" | "null";
export type SpELRelOp = "==" | ">=" | ">" | "<=" | "<" | "!=" | "in";
export type SpELRelOpType = "op-eq" | "op-ge" | "op-gt" | "op-le" | "op-lt" | "op-ne";
export type SpELIdentifierType = "property" | "compound" | "variable";
export interface SpELBaseNode<T extends SpELNodeType> {
_type: T;
getType: () => T;
getChildren: () => SpELBaseNode<T>[];
getStartPosition: () => number;
getEndPosition: () => number;
getValue: () => boolean | number | string | null;
toString: () => string;
}
export interface SpELPropertyNode extends SpELBaseNode<SpELIdentifierType> {
getRaw: () => string;
getName: () => string;
}
export interface SpELListNode extends SpELBaseNode<"list"> {
getRaw: () => SpELPropertyNode[];
}
export interface SpELCompoundNode extends SpELBaseNode<SpELIdentifierType> {
getChildren: () => SpELPropertyNode[];
}
export interface SpELExpressionNode extends SpELBaseNode<SpELNodeType> {
getChildren: () => SpELExpressionNode[];
}
export interface SpELProcessedExpression {
type: SpELNodeType;
children: SpELProcessedExpression[];
value: number | string | boolean | null;
startPosition: number;
endPosition: number;
identifier: string | null;
}
export interface SpELOpAnd extends SpELProcessedExpression {
type: "op-and";
}
export interface SpELOpOr extends SpELProcessedExpression {
type: "op-or";
}
export interface SpELOpMatches extends SpELProcessedExpression {
type: "matches";
children: [SpELIdentifier, SpELStringLiteral] | [SpELStringLiteral, SpELIdentifier] | [SpELIdentifier, SpELIdentifier];
}
export interface SpELIdentifier extends SpELProcessedExpression {
type: "compound" | "property" | "variable";
identifier: string;
}
export interface SpELRelation extends SpELProcessedExpression {
type: SpELRelOpType;
}
export interface SpELBetweenValues extends SpELProcessedExpression {
type: "between";
children: [SpELIdentifier, SpELListOfValues];
}
export interface SpELBetweenFields extends SpELProcessedExpression {
type: "between";
children: [SpELIdentifier, SpELListOfFields];
}
export interface SpELListOfValues extends SpELProcessedExpression {
type: "list";
children: [SpELPrimitive, SpELPrimitive, ...SpELPrimitive[]];
}
export interface SpELListOfFields extends SpELProcessedExpression {
type: "list";
children: [SpELIdentifier, SpELIdentifier, ...SpELIdentifier[]];
}
export type SpELPrimitive = SpELBooleanLiteral | SpELNumericLiteral | SpELStringLiteral | SpELNullLiteral;
export interface SpELStringLiteral extends SpELProcessedExpression {
type: "string";
value: string;
}
export interface SpELNumericLiteral extends SpELProcessedExpression {
type: "number";
value: number;
}
export interface SpELBooleanLiteral extends SpELProcessedExpression {
type: "boolean";
value: boolean;
}
export interface SpELNullLiteral extends SpELProcessedExpression {
type: "null";
value: null;
}
export {};