⚓️ An advanced Javascript hook system.
npm install hooki --save
// 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!
- tests
- object
- class
- function
- function
- get
- set
- getter
- setter
- construct
- after
- before
- errors
- plugin system
- async hooks (promises, callback)
- extended hooks methods (
target.after([hook])
,target.before([hooks])
)
- hooki-events
- hooki-validator
- hooki-errors
- hooki-lifecycle
- hooki-modules