skinjs
v0.0.1-1
Published
skinjs is an AOP and COP (Contract Oriented Programming ) library which enables to create a more error prone and clean code
Downloads
1
Maintainers
Readme
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