Neverending Package Mountain
    Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »

    tart-vmpublic

    tart-vm

    Stability: 1 - Experimental

    NPM version

    Tiny Actor Run-Time in JavaScript behavior sandbox.

    Overview

    Tart behavior sandbox.

    Usage

    To run the below example run:

    npm run readme
    
    "use strict";
     
    var fs = require('fs');
    var path = require('path');
    var tart = require('tart');
    var vm = require('../index.js');
     
    var sponsor = tart.minimal();
     
    var ok = sponsor(function okBeh(behavior) {
        var foo = this.sponsor(behavior);
        foo(this.self);
        this.behavior = function printMsg(message) {
            console.log('got message:', message);
        };
    });
    var ok2 = sponsor(function okBeh(behaviors) {
        var bar = this.sponsor(behaviors.barBeh);
        var baz = this.sponsor(behaviors.bazBeh);
        bar(this.self);
        baz(this.self);
        this.behavior = function printMsg(message) {
            console.log('got message:', message);
        };
    });
     
    var moduleString = fs.readFileSync(
            path.normalize(path.join(__dirname, 'module.js')));
    var module2String = fs.readFileSync(
            path.normalize(path.join(__dirname, 'module2.js')));
     
    var sandbox = sponsor(vm.sandboxBeh);
     
    sandbox({ok: ok, module: moduleString});
    sandbox({ok: ok2, module: module2String});
     

    Tests

    npm test
    

    Documentation

    Public API

    vm.sandboxBeh

    Actor behavior that will sandbox behaviors in the module and return them to ok actor.

    Message format:

    • fail: Actor function (error) {} Optional actor to receive any errors.
    • module: String Module that exports behaviors using module.exports or exports.
    • ok: Actor function (response) {} Actor to receive created sandboxed behaviors.

    Module is a Node.js-like module, except that the only thing available in the global environment is module or exports. Any behavior should be attached to either module.exports or exports. If a single behavior (a function) is exported, that behavior will be sent to ok actor. If module.exports or exports is an object, each key of that object will be treated as a behavior name and the value of that key will be assumed to be a behavior.

    For example, given following module:

    module.exports = function fooBeh(customer) {
        customer("foo");
    };

    vm.sandboxBeh will return fooBeh to ok actor.

    Given following module:

    var behaviors = module.exports = {};
    behaviors.foo = function fooBeh(customer) {
        customer("foo");
    };
    behaviors.bar = function barBeh(customer) {
        customer("bar");
    };

    vm.sandboxBeh will return an object to ok actor that is structured like:

    {
        foo: fooBeh,
        bar: barBeh
    }

    Sources

    Keywords

    none

    install

    npm i tart-vm

    Downloadsweekly downloads

    10

    version

    0.1.2

    license

    none

    last publish

    collaborators

    • avatar