UNPKG

@digitalwalletcorp/sql-builder

Version:
63 lines (62 loc) 1.78 kB
type Token = { type: 'IDENTIFIER'; value: string; } | { type: 'OPERATOR'; value: string; } | { type: 'NUMBER'; value: number; } | { type: 'BOOLEAN'; value: boolean; } | { type: 'STRING'; value: string; } | { type: 'NULL'; value: null; } | { type: 'UNDEFINED'; value: undefined; } | { type: 'PARENTHESIS'; value: '(' | ')'; }; /** * SQLBuilderの条件文(*IF*)で指定された条件文字列を解析するためのAST。 * JavaScriptの文法をカバーするものではなく、SQLBuilderで利用可能な限定的な構文のみサポートする。 */ export declare class AbstractSyntaxTree { /** * 与えられた条件文字列を構文解析し、entityに対する条件として成立するか評価する * * @param {string} condition "params != null && params.length > 10" のような条件 * @param {Record<string, any>} entity * @returns {boolean} */ evaluateCondition(condition: string, entity: Record<string, any>): boolean; /** * 与えられた条件文字列をトークンに分割する * * @param {string} condition * @returns {Token[]} */ tokenize(condition: string): Token[]; /** * Shunting Yardアルゴリズムで構文を逆ポーランド記法(Reverse Polish Notation)に変換する * * @param {Token[]} tokens * @returns {Token[]} */ shuntingYard(tokens: Token[]): Token[]; /** * 逆ポーランド記法(Reverse Polish Notation)のトークンを評価する * * @param {Token[]} rpnTokens * @param {Record<string, any>} entity * @returns {boolean} */ evaluateRpn(rpnTokens: Token[], entity: Record<string, any>): boolean; } export {};