Files
workspace/code/one-designer/packages/report-expression/src/index.ts
T
2026-09-20 17:34:40 +08:00

73 lines
1.5 KiB
TypeScript

/**
* @report/expression 公共入口(对应设计文档 §4.2、§10)。
*
* 表达式系统使用受限语法和 AST,不执行任意 JavaScript。
* 本包只依赖 @report/core 的类型,不依赖 DOM 或任何求值框架。
*/
// 词法
export type { Token, TokenType, TokenizeError, TokenizeResult } from "./tokenizer.js"
export { tokenize, KEYWORDS } from "./tokenizer.js"
// AST
export type {
ExpressionNode,
NodeType,
SourceSpan,
LiteralNode,
IdentifierNode,
MemberNode,
IndexNode,
CallNode,
UnaryNode,
BinaryNode,
LogicalNode,
ConditionalNode,
ParseError,
ParseResult,
} from "./ast.js"
export {
walkNode,
collectRootIdentifiers,
collectFunctionNames,
printNode,
} from "./ast.js"
// 语法
export { parse, isValidExpression, allowedFunctionNames } from "./parser.js"
// 作用域
export type { EvalScope, ScopeRoot } from "./scope.js"
export { SCOPE_ROOTS, resolveRoot, safeGet } from "./scope.js"
// 内置函数
export type { BuiltinFunction } from "./builtins.js"
export { BUILTINS, isBuiltinFunction, builtinFunctionNames } from "./builtins.js"
// 求值
export type {
EvalOptions,
EvalResult,
CompiledExpression,
} from "./evaluator.js"
export {
evaluateAst,
evaluateExpression,
evaluateCompiled,
evaluateValue,
compile,
} from "./evaluator.js"
// 绑定
export type {
ResolveBindingOptions,
ResolveBindingResult,
} from "./binding.js"
export {
ExpressionCache,
resolveBinding,
formatValue,
fieldToExpression,
isBindingEmpty,
} from "./binding.js"