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

Readme

Keywords

Package Sidebar

Install

npm i vm-plus

Weekly Downloads

4

Version

3.0.0

License

MIT

Last publish

Collaborators

  • samvv