Skip to content

vm-agent is vm module wrapper, it supports getting inner variables, executing scripts by filepath or function.

Notifications You must be signed in to change notification settings

suguru03/vm-agent

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

56 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

vm-agent

The library is vm module wrapper, it is supposed to be used for testing inner variables or hacking scripts. It is not for production.

It supports executing scripts, functions by filepath or functions. Also, it will be able to access inner variables.

Usage

$ npm i -D vm-agent

If you want to run a script using vm, you need to set a filepath and call run. The context is resolved automatically.

const { Agent } = require('vm-agent');
const agent = new Agent(<filepath>).run();
// or
const exec = require('vm-agent');
const agent = exec(<filepath>);

If the script is an async function, you need to call runAsync function.

const agent = new Agent(<filepath>).runAsync();

After that, if you wanna get inner variables, you need to call getInnerVariable or getValue.

const innerVariables = agent.getInnerVariable();
// or
const innerVariables = agent.getValue();

Examples

Inner functions

function func1() {
  console.log('func1 is called');
  function func2() {
    console.log('func2 is called');
  }
}
exec(func1)
  .getInnerVariable()
  .func2();

Async/Await

async function func1() {
  const util = require('util');
  const delay = util.promisify(setTimeout);
  await delay(100);
  console.log('func1 is called');
  async function func2() {
    await delay(100);
    console.log('func2 is called');
  }
}

async function execute() {
  const agent = await new Agent(func1).runAsync();
  const { func2 } = agent.getInnerVariable();
  await new Agent(func2, agent.getContext()).runAsync();
}

execute();

About

vm-agent is vm module wrapper, it supports getting inner variables, executing scripts by filepath or function.

Resources

Stars

Watchers

Forks

Packages

No packages published