Skip to content

Executes code in a (unsafe) sandboxed environment, instruction by instruction, with configurable speed.

Notifications You must be signed in to change notification settings

FranciscoCaetano88/step-interpreter

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

Executes code in a (unsafe) sandboxed environment, instruction by instruction, with configurable speed.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 100.0%