3.0.0 • Published 8 years ago

vm-plus v3.0.0

Weekly downloads
5
License
MIT
Repository
github
Last release
8 years ago

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
3.0.0

8 years ago

2.0.1

9 years ago

2.0.0

9 years ago

1.3.0

9 years ago

1.1.1

9 years ago

1.1.0

9 years ago

1.0.0

9 years ago