n8n/packages/workflow/src/expression-evaluator-proxy.ts
oleg 93df675464
fix(core): Prevent resolving of raw “$” as stringified function (#19237)
Co-authored-by: Michael Kret <michael.k@radency.com>
2025-10-02 08:29:06 +02:00

22 lines
744 B
TypeScript

import { Tournament } from '@n8n/tournament';
import { DollarSignValidator, PrototypeSanitizer } from './expression-sandboxing';
type Evaluator = (expr: string, data: unknown) => string | null | (() => unknown);
type ErrorHandler = (error: Error) => void;
const errorHandler: ErrorHandler = () => {};
const tournamentEvaluator = new Tournament(errorHandler, undefined, undefined, {
before: [],
after: [PrototypeSanitizer, DollarSignValidator],
});
const evaluator: Evaluator = tournamentEvaluator.execute.bind(tournamentEvaluator);
export const setErrorHandler = (handler: ErrorHandler) => {
tournamentEvaluator.errorHandler = handler;
};
export const evaluateExpression: Evaluator = (expr, data) => {
return evaluator(expr, data);
};