import { Node, Expression } from "../html/ast";
import { StringRange } from "../base/ast";
export declare enum ScriptExpressionKind {
Node = "Node",
Reference = "Reference",
Array = "Array",
Object = "Object",
String = "String",
Number = "Number",
Boolean = "Boolean",
Conjunction = "Conjunction",
Not = "Not",
Group = "Group"
}
declare type BaseScriptExpression = {
id: string;
scriptKind: TKind;
};
export declare type ScriptNode = Node & BaseScriptExpression;
export declare type ScriptObjectProperty = {
key: string;
value: ScriptExpression;
};
export declare enum ScriptConjunctionOperatorKind {
And = "And",
Or = "Or"
}
export declare type ScriptConjunction = {
left: ScriptExpression;
range: StringRange;
right: ScriptExpression;
operator: ScriptConjunctionOperatorKind;
} & BaseScriptExpression;
export declare type ScriptObject = {
properties: ScriptObjectProperty[];
range: StringRange;
} & BaseScriptExpression;
export declare type ScriptArray = {
values: ScriptExpression[];
range: StringRange;
} & BaseScriptExpression;
export declare type ScriptString = {
value: string;
range: StringRange;
} & BaseScriptExpression;
export declare type ScriptBoolean = {
value: boolean;
range: StringRange;
} & BaseScriptExpression;
export declare type ScriptNot = {
expression: ScriptExpression;
range: StringRange;
} & BaseScriptExpression;
export declare type ScriptGroup = {
expression: ScriptExpression;
range: StringRange;
} & BaseScriptExpression;
export declare type ScriptNumber = {
value: number;
range: StringRange;
} & BaseScriptExpression;
export declare type Reference = {
path: ReferencePart[];
range: StringRange;
} & BaseScriptExpression;
export declare type ReferencePart = {
name: string;
optional: boolean;
};
export declare type ScriptExpression = Reference | ScriptNode | ScriptObject | ScriptGroup | ScriptArray | ScriptNumber | ScriptString | ScriptBoolean | ScriptConjunction | ScriptNot;
export declare const traverseJSExpression: (expr: ScriptExpression, owner: Expression, each: (expr: ScriptExpression, parent: Expression) => void | boolean) => any;
export {};