Skip to content

skinjs is light weight AOP and COP library which enables you to create clean code.

Notifications You must be signed in to change notification settings

kobisasson/skinjs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

README

Summary

Light weight aspect oriented library which enable validating functions based on contracts. the library also enables to define pre and post activities before function. or use your a predefined skin ( or more than one) which will be activated before and after the function body. By proactively providing contract based API for your public API, you enable a reliable dependency to and from your packages.

Installation

To use with node:

$ npm install  skinjs

Documentation

add the required library in your code:

var AV = require('skinjs').aspect;
var AB = AV.aspectBuilder;
var C = require('skinjs').contracts;

Then you can provide a contract to your function and attach before and after functions:

 const aspect = AV.aspectBuilder();
const log = (x) => console.log("before:", x);
this.x = "yooo";
const func = aspect.before(function () {
    this.start = new Date();
    return R.slice(0, Infinity, arguments);
}).after(function (result) {
    assert.equal(this.x, "yooo");
}).bind(this)
    .validate(C.integer32, C.string)
    .for((y) => y + '');
                

you can also provide a skin ( or more then one) that will be activated before and after the function:

const aspect = AV.aspectBuilder();

function long(y){
    for (let i=0;i<1000000;i++) {}
    return "done";
}

 const perfSkin = function (filename) {
        const atom = {};
        atom.context = atom;
        atom.before = function () {
            this.start = new Date();
        };
        atom.after = function () {
            console.log(( filename || '') +': function ' + atom.__funcName + ' took  ' +
                (new Date().getTime() - this.start.getTime() ) + ' ms to generate ' + arguments[0] );
        };
        return atom;
    };
const func = aspect.use(perfSkin(__filename)).validate(C.integer32, C.string)
    .for(long);

Running The Test Suite

Console:

To run the test suite from the console, you need to have mocha installed:

$ npm install -g mocha

Then from the root of the project, you can just call

$ mocha

Alternately, if you've installed the dependencies, via:

$ npm install

then you can run the tests (and get detailed output) by running:

$ gulp test

About

skinjs is light weight AOP and COP library which enables you to create clean code.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published