Coder Social home page Coder Social logo

tart-vm's Introduction

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

tart-vm's People

Contributors

tristanls avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.