@rsql/ast
Version:
RSQL AST definitions and functions
165 lines (160 loc) • 5.08 kB
TypeScript
// Generated by dts-bundle v0.7.3
declare const EQ: "==";
declare const NEQ: "!=";
declare const LE: "<=";
declare const GE: ">=";
declare const LT: "<";
declare const GT: ">";
declare const IN: "=in=";
declare const OUT: "=out=";
declare const LE_VERBOSE: "=le=";
declare const GE_VERBOSE: "=ge=";
declare const LT_VERBOSE: "=lt=";
declare const GT_VERBOSE: "=gt=";
declare type CustomComparisonOperator = string;
declare const CanonicalComparisonOperators: ("==" | "!=" | "<=" | ">=" | "<" | ">" | "=in=" | "=out=")[];
declare type CanonicalComparisonOperator = typeof CanonicalComparisonOperators[number];
declare const VerboseComparisonOperators: ("=le=" | "=ge=" | "=lt=" | "=gt=")[];
declare type VerboseComparisonOperator = typeof VerboseComparisonOperators[number];
declare const ComparisonOperators: (
| "=="
| "!="
| "<="
| ">="
| "<"
| ">"
| "=in="
| "=out="
| "=le="
| "=ge="
| "=lt="
| "=gt="
)[];
declare type ComparisonOperator = typeof ComparisonOperators[number] | CustomComparisonOperator;
declare function isComparisonOperator(
candidate: string,
operator?: ComparisonOperator
): candidate is ComparisonOperator;
export {
EQ,
NEQ,
LE,
GE,
LT,
GT,
IN,
OUT,
LE_VERBOSE,
GE_VERBOSE,
LT_VERBOSE,
GT_VERBOSE,
ComparisonOperators,
CanonicalComparisonOperators,
VerboseComparisonOperators,
isComparisonOperator,
ComparisonOperator,
CanonicalComparisonOperator,
VerboseComparisonOperator,
};
declare const AND: ";";
declare const OR: ",";
declare const AND_VERBOSE: "and";
declare const OR_VERBOSE: "or";
declare const CanonicalLogicOperators: (";" | ",")[];
declare type CanonicalLogicOperator = typeof CanonicalLogicOperators[number];
declare const VerboseLogicOperators: ("and" | "or")[];
declare type VerboseLogicOperator = typeof VerboseLogicOperators[number];
declare const LogicOperators: (";" | "," | "and" | "or")[];
declare type LogicOperator = typeof LogicOperators[number];
declare function isLogicOperator(candidate: string, operator?: LogicOperator): candidate is LogicOperator;
export {
AND,
OR,
AND_VERBOSE,
OR_VERBOSE,
CanonicalLogicOperators,
VerboseLogicOperators,
LogicOperators,
isLogicOperator,
CanonicalLogicOperator,
VerboseLogicOperator,
LogicOperator,
};
declare const ReservedChars: readonly ['"', "'", "(", ")", ";", ",", "=", "!", "~", "<", ">", " ", "\n", "\t", "\r"];
declare type ReservedChar = typeof ReservedChars[number];
export { ReservedChars, ReservedChar };
declare const NodeType: {
readonly SELECTOR: "SELECTOR";
readonly VALUE: "VALUE";
readonly COMPARISON: "COMPARISON";
readonly LOGIC: "LOGIC";
};
interface Node<TType = string> {
readonly type: TType;
}
interface SelectorNode extends Node<typeof NodeType.SELECTOR> {
readonly selector: string;
}
interface ValueNode extends Node<typeof NodeType.VALUE> {
readonly value: string | string[];
}
interface BinaryNode<
TType extends string = string,
TLeft extends Node = Node,
TOperator extends string = string,
TRight extends Node = Node
> extends Node<TType> {
readonly left: TLeft;
readonly operator: TOperator;
readonly right: TRight;
}
declare type ComparisonNode = BinaryNode<typeof NodeType.COMPARISON, SelectorNode, ComparisonOperator, ValueNode>;
declare type LogicNode = BinaryNode<typeof NodeType.LOGIC, ExpressionNode, LogicOperator, ExpressionNode>;
declare type ExpressionNode = ComparisonNode | LogicNode;
declare function createSelectorNode(selector: string, skipChecks?: boolean): SelectorNode;
declare function createValueNode(value: string | string[], skipChecks?: boolean): ValueNode;
declare function createComparisonNode(
selector: SelectorNode,
operator: ComparisonOperator,
value: ValueNode,
skipChecks?: boolean
): ComparisonNode;
declare function createLogicNode(
left: ExpressionNode,
operator: LogicOperator,
right: ExpressionNode,
skipChecks?: boolean
): LogicNode;
declare function isNode(candidate: unknown): candidate is Node;
declare function isSelectorNode(candidate: unknown): candidate is SelectorNode;
declare function isValueNode(candidate: unknown): candidate is ValueNode;
declare function isComparisonNode(candidate: unknown, operator?: ComparisonOperator): candidate is ComparisonNode;
declare function isLogicNode(candidate: unknown, operator?: LogicOperator): candidate is LogicNode;
declare function isExpressionNode(candidate: unknown): candidate is ExpressionNode;
declare function getSelector(comparison: ComparisonNode): string;
declare function getValue(comparison: ComparisonNode): string | string[];
declare function getSingleValue(comparison: ComparisonNode): string;
declare function getMultiValue(comparison: ComparisonNode): string[];
export {
createSelectorNode,
createValueNode,
createComparisonNode,
createLogicNode,
isNode,
isSelectorNode,
isValueNode,
isComparisonNode,
isLogicNode,
isExpressionNode,
getSelector,
getValue,
getSingleValue,
getMultiValue,
Node,
SelectorNode,
ValueNode,
BinaryNode,
ComparisonNode,
LogicNode,
ExpressionNode,
};