UNPKG

react-querybuilder

Version:

React Query Builder component for constructing queries and filters, with utilities for executing them in various database and evaluation contexts

187 lines (186 loc) 7.21 kB
import type { DefaultCombinatorNameExtended } from "../../types"; type AnyCase<T extends string> = string extends T ? string : T extends `${infer F1}${infer F2}${infer R}` ? `${Uppercase<F1> | Lowercase<F1>}${Uppercase<F2> | Lowercase<F2>}${AnyCase<R>}` : T extends `${infer F}${infer R}` ? `${Uppercase<F> | Lowercase<F>}${AnyCase<R>}` : ""; type TokenType = "AndExpression" | "BetweenPredicate" | "BitExpression" | "Boolean" | "BooleanExtra" | "CaseWhen" | "ComparisonBooleanPrimary" | "ComparisonSubQueryBooleanPrimary" | "ContainsExpr" | "EndsWithExpr" | "ExpressionList" | "ForceIndexHint" | "ForOptIndexHint" | "FunctionCall" | "FunctionCallParam" | "GroupBy" | "GroupByOrderByItem" | "Identifier" | "IdentifierExpr" | "IdentifierList" | "IgnoreIndexHint" | "IndexHintList" | "InExpressionListPredicate" | "InnerCrossJoinTable" | "InSubQueryPredicate" | "IsExpression" | "IsNullBooleanPrimary" | "LeftRightJoinTable" | "LikePredicate" | "Limit" | "Main" | "NaturalJoinTable" | "NotExpression" | "Null" | "Number" | "OnJoinCondition" | "OrderBy" | "OrExpression" | "Partitions" | "PlaceHolder" | "Prefix" | "RegexpPredicate" | "Select" | "SelectExpr" | "SelectParenthesized" | "SimpleExprParentheses" | "SoundsLikePredicate" | "StartsWithExpr" | "StraightJoinTable" | "String" | "SubQuery" | "TableFactor" | "TableReference" | "TableReferences" | "Union" | "UseIndexHint" | "UsingJoinCondition" | "WhenThenList" | "XorExpression"; export type ComparisonOperator = "=" | ">=" | ">" | "<=" | "<" | "<>" | "!="; export type NotOpt = AnyCase<"NOT"> | null; export type AndOperator = AnyCase<"AND">; export type OrOperator = AnyCase<"OR">; export type XorOperator = AnyCase<"XOR">; export interface SQLWhereObject { type: TokenType; } export interface SQLIdentifier extends SQLWhereObject { type: "Identifier"; value: string; } export interface SQLWhereObjectAny extends SQLWhereObject { [k: string]: any; } export interface SQLStringValue extends SQLWhereObject { type: "String"; value: string; } export interface SQLNumberValue extends SQLWhereObject { type: "Number"; value: string; } export interface SQLSignedNumberValue extends SQLWhereObject { type: "Prefix"; prefix: "+" | "-"; value: SQLNumberValue; } export interface SQLBooleanValue extends SQLWhereObject { type: "Boolean"; value: AnyCase<"TRUE"> | AnyCase<"FALSE">; } export interface SQLBooleanExtra extends SQLWhereObject { type: "BooleanExtra"; value: AnyCase<"UNKNOWN">; } export interface SQLSimpleExprParentheses extends SQLWhereObject { type: "SimpleExprParentheses"; value: SQLExpressionList; } export interface SQLExpressionList extends SQLWhereObject { type: "ExpressionList"; value: SQLExpression[]; } export interface SQLInExpressionListPredicate extends SQLWhereObject { type: "InExpressionListPredicate"; hasNot: NotOpt; left: SQLSimpleExpression; right: SQLExpressionList; } export interface SQLBetweenPredicate extends SQLWhereObject { type: "BetweenPredicate"; hasNot: NotOpt; left: SQLSimpleExpression; right: { left: SQLSimpleExpression right: SQLPredicate }; } export interface SQLLikePredicate extends SQLWhereObject { type: "LikePredicate"; hasNot: NotOpt; left: SQLSimpleExpression; right: SQLSimpleExpression | SQLStartsWithExpr | SQLEndsWithExpr | SQLContainsExpr; escape: SQLStringValue | null; } export interface SQLStartsWithExpr extends SQLWhereObject { type: "StartsWithExpr"; value: SQLStringValue | SQLIdentifier; } export interface SQLEndsWithExpr extends SQLWhereObject { type: "EndsWithExpr"; value: SQLStringValue | SQLIdentifier; } export interface SQLContainsExpr extends SQLWhereObject { type: "ContainsExpr"; value: SQLStringValue | SQLIdentifier; } export interface SQLIsNullBooleanPrimary extends SQLWhereObject { type: "IsNullBooleanPrimary"; hasNot: NotOpt; value: SQLBooleanPrimary; } export interface SQLComparisonBooleanPrimary extends SQLWhereObject { type: "ComparisonBooleanPrimary"; left: SQLBooleanPrimary; operator: ComparisonOperator; right: SQLPredicate; } export interface SQLIsExpression extends SQLWhereObject { type: "IsExpression"; hasNot: NotOpt; left: SQLBooleanPrimary; right: SQLBooleanExtra; } export interface SQLNotExpression extends SQLWhereObject { type: "NotExpression"; value: SQLExpression; } export interface SQLAndExpression extends SQLWhereObject { type: "AndExpression"; operator: AndOperator; left: SQLExpression; right: SQLExpression; } export interface SQLOrExpression extends SQLWhereObject { type: "OrExpression"; operator: OrOperator; left: SQLExpression; right: SQLExpression; } export interface SQLXorExpression extends SQLWhereObject { type: "XorExpression"; operator: XorOperator; left: SQLExpression; right: SQLExpression; } export interface SQLFunctionCall extends SQLWhereObjectAny { type: "FunctionCall"; } export interface SQLCaseWhen extends SQLWhereObjectAny { type: "CaseWhen"; } export interface SQLPrefix extends SQLWhereObjectAny { type: "Prefix"; } export interface SQLSubQuery extends SQLWhereObjectAny { type: "SubQuery"; } export interface SQLIdentifierExpr extends SQLWhereObjectAny { type: "IdentifierExpr"; } export interface SQLBitExpression extends SQLWhereObjectAny { type: "BitExpression"; } export interface SQLInSubQueryPredicate extends SQLWhereObjectAny { type: "InSubQueryPredicate"; } export interface SQLSoundsLikePredicate extends SQLWhereObjectAny { type: "SoundsLikePredicate"; } export interface SQLRegexpPredicate extends SQLWhereObjectAny { type: "RegexpPredicate"; } export interface SQLComparisonSubQueryBooleanPrimary extends SQLWhereObjectAny { type: "ComparisonSubQueryBooleanPrimary"; } export type SQLLiteralValue = SQLStringValue | SQLNumberValue | SQLBooleanValue; export type SQLSimpleExpression = SQLLiteralValue | SQLIdentifier | SQLFunctionCall | SQLCaseWhen | SQLPrefix | SQLSubQuery | SQLIdentifierExpr | SQLBitExpression | SQLSimpleExprParentheses; export type SQLPredicate = SQLSimpleExpression | SQLInExpressionListPredicate | SQLBetweenPredicate | SQLLikePredicate | SQLInSubQueryPredicate | SQLSoundsLikePredicate | SQLRegexpPredicate; export type SQLBooleanPrimary = SQLPredicate | SQLIsNullBooleanPrimary | SQLComparisonBooleanPrimary | SQLComparisonSubQueryBooleanPrimary; export type SQLExpression = SQLBooleanPrimary | SQLIsExpression | SQLNotExpression | SQLAndExpression | SQLOrExpression | SQLXorExpression; export interface ParsedSQL { nodeType: "Main"; value: { type: "Select" distinctOpt: string | null highPriorityOpt: unknown maxStateMentTimeOpt: unknown straightJoinOpt: unknown sqlSmallResultOpt: unknown sqlBigResultOpt: unknown sqlBufferResultOpt: unknown sqlCacheOpt: unknown sqlCalcFoundRowsOpt: unknown selectItems: SQLWhereObjectAny from: SQLWhereObjectAny partition: unknown where: SQLExpression groupBy: SQLWhereObjectAny | null having: SQLWhereObjectAny | null orderBy: SQLWhereObjectAny | null limit: SQLWhereObjectAny | null procedure: SQLWhereObjectAny | null updateLockMode: unknown }; hasSemicolon: boolean; } export type MixedAndXorOrList = { combinator: DefaultCombinatorNameExtended expressions: (MixedAndXorOrList | SQLExpression)[] }; export {};