mirror of
https://github.com/n8n-io/n8n.git
synced 2026-05-24 05:15:16 +02:00
22 lines
772 B
TypeScript
22 lines
772 B
TypeScript
import { Tournament } from '@n8n/tournament';
|
|
|
|
import { DollarSignValidator, ThisSanitizer, 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: [ThisSanitizer],
|
|
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);
|
|
};
|