vm-plus

    3.0.0 • Public • Published

    VM Plus is a tiny abstraction built on top of Node's VM module which makes it easier to run arbitrary closured code.

    Looking for emulating a NodeJS environment inside a VM?

    Take a look at vm-nodejs.

    const VM = require('vm-plus')
     
    const vm = new VM()
      .global('bla', 1)
      .local('bla', 2)
     
    vm.runNaked(`bla`) // evaluates to 1
    vm.run(`return bla`) // evaluates to 2
    vm.run(`test()`, { test: function () { })

    API

    Script.run()

    Runs a compiled script with predefined options and locals. See vm.compile for more information.

    new VM(opts])

    Create a new script runner. opts is an object which can contain the following properties:

    • globals is an object containing properties that will become available in the global scope in scripts run by this virtual machine
    • locals is an object containing properties that will be available as a local variable in scripts run by this virtual machine

    vm.local(name, val) => VM

    Add a new variable to the virtual machine that will be available to scripts ran with vm.run.

    vm.global(name, val) => VM

    Adds a new global that will be available to scripts ran with vm.runNaked and vm.run.

    vm.runNaked(code, [options])

    Run the code in the context of the VM without any closure, and hence without any locals.

    vm.compile(script, [locals], [options])

    Compile a script to be executed multiple times or in a later phase of the application. Returns a Script instance that is able to run the script. Options may be passed as an object that can contain the following properties:

    • lineOffset an offset that will modify the line number in all stack traces
    • columnOffset an offset that will modify the column number in all stack traces
    • filename specifies the filename used in stack traces produced by this script
    • displayErrors can be set to true to prevent NodeJS from adding code to stack traces

    vm.run(script, [locals], [options])

    Run the code in a closure, with optional locals and an options object that gets passed to vm.runInContext. Options may be passed as an object which can contain the following properties:

    • lineOffset an offset that will modify the line number in all stack traces
    • columnOffset an offset that will modify the column number in all stack traces
    • filename specifies the filename used in stack traces produced by this script
    • displayErrors can be set to true to prevent NodeJS from adding code to stack traces

    Install

    npm i vm-plus

    DownloadsWeekly Downloads

    1

    Version

    3.0.0

    License

    MIT

    Last publish

    Collaborators

    • samvv