blunt-instrument-eval

0.1.0 • Public • Published

blunt-instrument-eval

This package ties together various parts of blunt-instrument to provide an easy way to take javascript code stored in a string, instrument it, evaluate it, and get the trace in a consumable format.

First, install the package (or see blunt-instrument-standalone if you prefer to load the dependency from a <script> tag):

npm install --save blunt-instrument-eval

Then you can use the instrumentedEval function to trace code:

import instrumentedEval from 'blunt-instrument-eval';

const code = `
  function factorial(n) {
    return n == 1 ? 1 : n * factorial(n - 1);
  }
  factorial(5);`;

const trace = instrumentedEval(code);
// Get a collection of the trace events
const tc = trace.toTC().withDenormalizedInfo();
// Look up all the trace events corresponding to the evaluation of "factorial(n - 1)":
const { trevs } = tc.filter((trev) => trev.denormalized.node.codeSlice === 'factorial(n - 1)');

// This will log the four values that factorial(n - 1) evaluates to during the
// course of execution:
// [1, 2, 6, 24]
console.log(trevs.map(trev => trev.data));

The return value of instrumentedEval is an ArrayTrace instance.

Note: code is evaluated in strict mode.

/blunt-instrument-eval/

    Package Sidebar

    Install

    npm i blunt-instrument-eval

    Weekly Downloads

    0

    Version

    0.1.0

    License

    MIT

    Unpacked Size

    15.8 kB

    Total Files

    7

    Last publish

    Collaborators

    • brokensandals