Awesome
Runtime Hooks
π Utils for JS runtime hooking & injecting.
<p> <a href="https://travis-ci.org/gaoding-inc/runtime-hooks"> <img src="https://travis-ci.org/gaoding-inc/runtime-hooks.svg?branch=master"/> </a> <a href='https://coveralls.io/github/gaoding-inc/runtime-hooks?branch=master'> <img src='https://coveralls.io/repos/github/gaoding-inc/runtime-hooks/badge.svg?branch=master' alt='Coverage Status'/> </a> <a href="https://unpkg.com/runtime-hooks/hooks.js"> <img src="https://img.badgesize.io/https://unpkg.com/runtime-hooks/hooks.js?compression=gzip&label=size&maxAge=300"/> </a> <a href="https://standardjs.com"> <img src="https://img.shields.io/badge/code_style-standard-brightgreen.svg"/> </a> <a href="./package.json"> <img src="https://img.shields.io/npm/v/runtime-hooks.svg?maxAge=300&label=version&colorB=007ec6&maxAge=300"/> </a> </p>What's This?
Adding hooks to any function you need!
Usage
Install via NPM:
npm install runtime-hooks
Basic usage:
import { withHookBefore } from 'runtime-hooks'
window.alert = withHookBefore(window.alert, console.log)
These utils are mainly designed for advanced usage (logging / testing / debugging...), don't abusing them in business code.
withHookBefore
(originalFn: function, hookFn: function): function
Given original function, return a new high-order function that:
- Calls your customs hook function beforehand.
- Calls the original function.
If your hook function returns false
, the original function will not be executed. You can replace the reference to original function with the generated function, which makes sense for function hooking:
window.alert = withHookBefore(window.alert, console.log)
withHookAfter
(originalFn: function, hookFn: function): function
Given original function, return a new high-order function that:
- Calls the original function.
- Calls your customs hook function afterwards.
hookArgs
(originalFn: function, argsGetter: function): function
Given original function, runs a new high-order function that:
- Calls
argsGetter
with args of original function. - If
argsGetter
returns an array, replace original args with it, or else keep the args. - Calls original function with these args, returning what it returns.
hookOutput
(originalFn: function, outputGetter: function): function
Given original function, runs a new high-order function that:
- Calls original function and get its output.
- Calls
outputGetter
with output, returning what it returns.
Both
hookOutput
andwithHookAfter
runs after original function.hookOutput
replaces the output, butwithHookAfter
won't.
License
MIT