tableflip/prepost

Name: prepost

Owner: TABLEFLIP

Description: Alter arguments and return values before and after a function is called

Created: 2018-01-11 14:49:36.0

Updated: 2018-01-15 11:17:38.0

Pushed: 2018-03-12 10:05:21.0

Homepage: https://www.npmjs.com/package/prepost

Size: 78

Language: JavaScript

GitHub Committers

UserMost Recent Commit# Commits

Other Committers

UserEmailMost Recent Commit# Commits

README

prepost

Build Status dependencies Status JavaScript Style Guide

Alter arguments and return values before and after a function is called

Install
install prepost
Usage

Alter arguments to a function:

rt { pre } from 'prepost'

t add = (a, b) =>  a + b
t doubleAdd = pre((a, b) => [a * 2, b * 2], add)

1, 2) // -> 3
leAdd(1, 2) // -> 6

Alter return value from a function:

rt { post } from 'prepost'

t add = (a, b) =>  a + b
t doubleAdd = post(add, res => res * 2)

1, 2) // -> 3
leAdd(1, 2) // -> 6

Async alter arguments:

rt { pre } from 'prepost'

t add = (a, b) =>  a + b
t doubleAdd = pre(
, b) => new Promise(resolve => setTimeout(resolve([a * 2, b * 2]), 1000)),
d


1, 2) // -> 3
t doubleAdd(1, 2) // -> 6

Async alter return value:

rt { post } from 'prepost'

t add = (a, b) =>  a + b
t doubleAdd = post(
d,
s => new Promise(resolve => setTimeout(resolve(res * 2), 1000))


1, 2) // -> 3
t doubleAdd(1, 2) // -> 6
API
pre(preFunc, [preFunc1, preFunc2, ...,] func)

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, ...])

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


This work is supported by the National Institutes of Health's National Center for Advancing Translational Sciences, Grant Number U24TR002306. This work is solely the responsibility of the creators and does not necessarily represent the official views of the National Institutes of Health.