// deno-lint-ignore no-explicit-any const G: any = { eval: eval, }; const context = new Proxy(G, { get: (target, prop) => { return target[prop]; }, set: (target, prop, value) => { target[prop] = value; return true; }, has: () => { return true; }, }); export const runCode = (code: string) => { try { new Function(code); } catch (err) { throw err; } const fn = new Function("context", ` with (context) { ${code} } `); return fn(context); } export const evalCode = (code: string) => { try { return runCode(`return eval("(${code.replaceAll('"', '\\"')})");`); } catch (err) { if (err.name === "SyntaxError") { return runCode(`return eval("${code.replaceAll('"', '\\"')}");`); } else { throw err; } } } // deno-lint-ignore no-explicit-any export const addToContext = (name: string, value: any) => { G[name] = value; }