Hooki
⚓️ An advanced Javascript hook system.
Installation
npm install hooki --save
Usage
// product.class.js
import Hooki from ' hooki' ;
import { before , after } from ' ./hooks' ;
class Product {
constructor (name , price , stock ) {
this .name = name;
this .price = price;
this .stock = stock;
}
buy (quantity ) {
console .log (` ${ this .name } x${ quantity} ` );
}
}
export new Hooki (ProductClass , before , after );
// hooks.js
export const before = {
buy: [
function verifyStock (context ) {
if (context .params .quantity > context .self .quantity ) {
throw Error (' Amount exceeds stock!' );
}
return context;
}
]
};
export const after = {
buy: [
function removeFromStock (context ) {
context .self .quantity -= context .params .quantity ;
return context
}
]
};
// app.js
import Product from ' ./product.class.js' ;
const bag = new Product (' bag' , 10.43 , 5 );
bag .buy (4 );
// -> bag x4
console .log (bag .stock );
// -> 1
bag .buy (2 );
// -> Error: Amount exceeds stock!
Roadmap
Tests
target types
action types
hook types
features
plugins