@qualifyze/airtable-formulator
Version:
Airtable Formula Manipulator
37 lines (36 loc) • 1.26 kB
TypeScript
import { ExtendedNodeType, GroupNode, GroupType, Operator, TokenNode } from "./primitives";
import { FieldReference } from "./field-reference";
import { OperationNode } from "./operation";
import { FunctionCallNode } from "./function-call";
import { ArgumentListNode } from "./argument-list";
import { ModifierNode } from "./modifier";
import { EnclosedExpressionNode } from "./enclosed-expression";
import { FunctionReference } from "./function-reference";
import { TokenTypeName } from "../tokenize";
/**
* Map of all node types, that have additional properties to their corresponding
* node interface.
*/
declare type Map = {
operator: Operator;
fieldReference: FieldReference;
functionReference: FunctionReference;
operation: OperationNode;
functionCall: FunctionCallNode;
argumentList: ArgumentListNode;
modifier: ModifierNode;
enclosedExpression: EnclosedExpressionNode;
group: GroupNode;
};
declare type ExtendedMap = {
[T in GroupType | ExtendedNodeType | "operator"]: Map[T];
};
declare type TokenMap = {
[T in Exclude<TokenTypeName, keyof Map>]: TokenNode<T>;
};
/**
* Map of all node types to their corresponding node interface.
*/
export interface NodeMap extends ExtendedMap, TokenMap {
}
export {};