Giter Club home page Giter Club logo

step-interpreter's Introduction

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

step-interpreter's People

Contributors

pantoninho avatar p-brighenti avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.