prepost
Alter arguments and return values before and after a function is called
Install
npm install prepost
Usage
Alter arguments to a function:
const add = a + bconst doubleAdd = // -> 3 // -> 6
Alter return value from a function:
const add = a + bconst doubleAdd = // -> 3 // -> 6
Async alter arguments:
const add = a + bconst doubleAdd = // -> 3await // -> 6
Async alter return value:
const add = a + bconst doubleAdd = // -> 3await // -> 6
API
pre(preFunc, [preFunc1, preFunc2, ...,] func)
preFunc
- function (or array of functions) to call beforefunc
. It is passed arguments as they would be if callingfunc
normally.preFunc
must return an array of arguments or a promise that resolves to an array.preFunc1, preFunc2, ...
- other functions to call in series beforefunc
. The altered arguments frompreFunc
are passed topreFunc1
and so on.func
- function to call after all the pre-functions have run and altered arguments
Returns a function that when called will call all the pre-functions in order before finally calling func
.
NOTE: If any one of your pre functions returns a promise then the function returned by pre
becomes async (returns a promise), regardless of whether func
was already async or not.
post(func, postFunc [, postFunc1, postFunc2, ...])
func
- function to call and pass return value topostFunc
postFunc
- function (or array of functions) to call afterfunc
. It is passed the return value as it's first argument. Iffunc
returns a promise, this is first resolved beforepostFunc
is called.preFunc
should return the altered return value fromfunc
or a promise that resolves to the return value.postFunc1, postFunc2, ...
- other functions to call in series afterfunc
. The altered return value frompostFunc
is passed topostFunc1
and so on.
Returns a function that when called will call all the post-functions in order after calling func
.
NOTE: If any one of your post functions returns a promise then the function returned by post
becomes async (returns a promise), regardless of whether func
was already async or not.
Contribute
Feel free to dive in! Open an issue or submit PRs.
License
MIT © Alan Shaw