Simple Hooks

Simple component for creating and calling hooks in Deno

📦 Importing

Import the module by using

import * as Hooks from "https://deno.land/x/simplehooks/mod.ts";

📖 Usage

Registering Callbacks

You can use on to register a persistent callback: Hooks.on("hook-name", CallbackFunction)

Or once to register a single use: Hooks.once("hook-name", CallbackFunction)

Removing Callbacks

You can remove a specific callback using the off method: Hooks.off("hook-name", CallbackFunction)

Or remove all callbacks using reset: Hooks.reset()

Calling Hooks

Once you have a callbacks registered, you can call them using a normal call method: Hooks.call("hook-name", ...args)

This will call every callback in the order they were registered, if any callbacks returns false, it stops calling the remaining. If you don't want this behavior, you can force all callbacks to be called by using the callAll method. Hooks.callAll("hook-name", ...args)

📚 Example:

import * as Hooks from "https://deno.land/x/simplehooks/mod.ts";

function callBack1(arg1) {
    console.log("callback1: " + arg1);
}

function callBack2() {
    console.log("callback2");
}

Hooks.on("test", callBack1);    // Will be called everytime the hook is called
Hooks.once("test", callBack2);  // Will only be called once

Hooks.call("test", "first argument"); // callBack1 and 2 will be called
Hooks.call("test", "first argument"); // Only callBack1 will be called

// You can call the hook anywhere you want inside a project, passing by any arguments you desire

Hooks.on("pre-test"), () => console.log("pre-test");
Hooks.on("after-test"), () => console.log("after-test");
function test() {
    Hooks.call("pre-test");
    // Beginning of function workflow
    const a = true;
    // End of function workflow
    Hooks.call("after-test", a);
}

test();

📃 License

This package is licensed using the MIT License.

Please have a look at LICENSE.md.