3.0.0 • Published 4 years ago

step-interpreter v3.0.0

Weekly downloads
1
License
ISC
Repository
github
Last release
4 years ago

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
3.0.0

4 years ago

2.1.6

4 years ago

2.1.5

4 years ago

2.1.4

4 years ago

2.1.3

4 years ago

2.1.2

4 years ago

2.1.1

4 years ago

2.1.0

4 years ago

2.0.4

4 years ago

2.0.3

4 years ago

2.0.2

4 years ago

2.0.1

4 years ago

2.0.0

4 years ago

1.0.2

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago

0.1.1

5 years ago

0.1.0

5 years ago

0.0.3

6 years ago

0.0.2

6 years ago

0.0.1

6 years ago