Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

fn-hooks

clear110.1.2

Surround node.js functions with pre and post hooks.

readme

fn-hooks

A complete re-write of hooks for Node.js to overcome some fundamental flaws with the original library. Intended as a drop-in replacement with extended functionality.

Build Status NPM version

Why?

The original hooks library attaches hooks to objects and it's this object-centric focus that makes it very difficult to use in conjunction with the protoypal inheritance pattern. When attaching hooks to various levels of a complex inheritance tree it quickly became obvious that hooks would no longer meet our needs. Introducing fn-hooks which attaches hooks to functions, irrespective of the object being called.

More detail to come...

Tests

It's a small library so there aren't many.

$ npm test

Contributing

All contributions are welcome! I'm happy to accept pull requests as long as they conform to the following guidelines:

  • Keep the API clean, we prefer ease-of-use over extra features
  • Don't break the build and add tests where necessary
  • Keep the coding style consistent, we follow JSHint's Coding Style

Otherwise, please open an issue if you have any suggestions or find a bug.

License

The MIT License (MIT) - Copyright (c) 2013 Clear Learning Systems

changelog

fn-hooks Change Log

Unreleased

  • Decent documentation

0.1.0

The majority of functionality has been implemented:

  • pre() and post() hooks for surrounding a function.
  • removePre() and removePost() for removing existing hooks.
  • Support for asynchronous functions where the callback will be called after all hooks have completed (pre and post).
  • Support for complex prototypal inheritance by binding hooks to functions (within both Object or Object.prototype).
  • Pass an Error to next() from within any hook to halt the hook chain.
  • trigger() for manually firing a function's hooks without invoking that function directly.