aboutsummaryrefslogtreecommitdiffstats
path: root/tools/execute_js_code.js
blob: 0b7557b49ae97fe12b8b274cbeeb6197d0622a02 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/**
 * Execute the javascript code in node.js.
 * @typedef {Object} Args
 * @property {string} code - Javascript code to execute, such as `console.log("hello world")`
 * @param {Args} args
 */
exports.run = function run({ code }) {
  let output = "";
  const oldStdoutWrite = process.stdout.write.bind(process.stdout);
  process.stdout.write = (chunk, _encoding, callback) => {
    output += chunk;
    if (callback) callback();
  };

  const value = eval(code);
  if (value !== undefined) {
    output += value;
  }

  process.stdout.write = oldStdoutWrite;
  return output;
}