npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

pipeline-hooks

v1.0.1

Published

Attach arbitrary callback to your defined events

Downloads

3

Readme

Hooks

Reaction Hooks provides a simple API that allows you to attach arbitrary callbacks to any particular event that you define. You simply decide what your events are and then add callbacks to it from anywhere in the app. Then you can run all callbacks when that event is fired. The canonical examples are onCoreInit/afterCoreInit event hooks that run code either during Reaction's startup sequence, or after it has completed. (the on/after is just a naming convention, but we suggest that code extending this code utilize this same convention)

Install

import Hooks from "@reactioncommerce/hooks";

Usage

The API has the following methods:

Hooks.Event.add(name, callback)

Here you pass in the name of the event as a String and then the callback function you wish to be executed.

Hooks.Event.remove(name, callback)

Remove a named callback function that has already been added to an event.

Hooks.Events.run(name, item, constant)

For already defined events you will never need to use this, but if you are defining your own events this is what you would execute to fire the event hook. The name argument is the name of the event, the object/modifier on which to run the callbacks, and a constant to be passed to every callback (e.g. for a user-related event, it might be the user)

Example

Let's say we wanted to create our own event for "onCreateUser". We would call the run method when the event occurred.

import Hooks from "@reactioncommerce/hooks";

Accounts.onCreateUser(function (options, user) {
  // add a hook to alter the user object or do something with its data
  user = Hooks.Events.run("onCreateUser", user, options);
  // return the mutated user object
  return user;
});

Now you can pass any amount of functions into that hook from anywhere else in the app

import Hooks from "@reactioncommerce/hooks";

// create a callback to run
function logUserEmail(user) {
  console.log("User being created with email: " + user.emails[0].address);
  // do whatever with the user doc and then return it
  // to the next callback
  return user;
}

// add your callback to the hooks array created above
Hooks.Events.add("onCreateUser", logUserEmail);