step-interpreter

3.0.0 • Public • Published

Maintainability Test Coverage Build Status

step-interpreter

Sandboxed javascript interpreter that is able to run at configurable speed.

API:

const { run } = require('step-interpreter');
const code = `console.log('hello world!')`;

// default options
const options = {
    stepTime: 15,
    context: {},
    es2015: false,
    sync: false
};

await run(code, options);

Example usage:

const { run } = require('step-interpreter');

const code = `
    const a = 1;

    events.once('test', () => {
        console.log('received test event!');
    })

    for (let i = 0; i < 5; i++) {
        console.log(sum(a, i));
    }

    function sum(a, b) {
        return a + b;
    }

    externalFunction();
    console.log('interpreter done executing');
`;

(async () => {
    const execution = run(code, {
        stepTime: 300,
        context: {
            externalFunction: () =>
                console.log('external function has been called!')
        }
    });
    execution.on('step', (code) => console.log('executing: ', code));

    setTimeout(() => {
        console.log('pausing interpreter...');
        execution.pause();
    }, 1000);

    setTimeout(() => {
        console.log('resuming interpreter...');
        execution.resume();
    }, 3000);

    await execution;
    console.log('stack is now empty, but there are active event listeners..');
    const { executionEnd } = execution.promises;
    execution.emit('test');
    await executionEnd;
    console.log('execution ended');
})();

README TODOS:

  • add option descriptions

Readme

Keywords

none

Package Sidebar

Install

npm i step-interpreter

Weekly Downloads

0

Version

3.0.0

License

ISC

Unpacked Size

50.5 kB

Total Files

18

Last publish

Collaborators

  • pantoninho