// Cache the result to prevent running this over and over
let unsafeEval;
/**
* Not all platforms allow to generate function code (e.g., `new Function`).
* this provides the platform-level detection.
*
* @private
* @returns {boolean}
*/
export default function unsafeEvalSupported()
{
if (typeof unsafeEval === 'boolean')
{
return unsafeEval;
}
try
{
/* eslint-disable no-new-func */
const func = new Function('param1', 'param2', 'param3', 'return param1[param2] === param3;');
/* eslint-enable no-new-func */
unsafeEval = func({ a: 'b' }, 'a', 'b') === true;
}
catch (e)
{
unsafeEval = false;
}
return unsafeEval;
}