/* eslint-disable @typescript-eslint/no-explicit-any */ import Interpreter from 'js-interpreter'; import { PluginContext } from '../types/PluginContext.js'; import { SqupContext } from '../types/SqupContext.js'; import { Render } from './Render.js'; export function PerformCalculation( pluginContext: PluginContext, squpContext: SqupContext, expression: string, replacements: Record = {} ): any { const renderedExpression = Render(expression, pluginContext, replacements); if (squpContext.allowInlineEval) { const value = eval(renderedExpression); squpContext.log.debug(`PerformCalculation using eval: ${JSON.stringify(renderedExpression)} returns ${value}`); return value; } else { const myInterpreter = new Interpreter(renderedExpression); myInterpreter.run(); squpContext.log.debug(`PerformCalculation using js-interpeter: ${JSON.stringify(expression)} returns ${myInterpreter.value}`); return myInterpreter.value; } }