hooki

0.4.0 • Public • Published

Hooki

Hooki Logo

⚓️ 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

  • tests

target types

  • object
  • class
  • function

action types

  • function
  • get
  • set
  • getter
  • setter
  • construct

hook types

  • after
  • before
  • errors

features

  • plugin system
  • async hooks (promises, callback)
  • extended hooks methods (target.after([hook]), target.before([hooks]))

plugins

  • hooki-events
  • hooki-validator
  • hooki-errors
  • hooki-lifecycle
  • hooki-modules

Package Sidebar

Install

npm i hooki

Weekly Downloads

5

Version

0.4.0

License

MIT

Last publish

Collaborators

  • russiann