UNPKG

pipey

Version:

Utility functions to convert class-based api's to parameter-based functions

24 lines (17 loc) 727 B
import { getMethods, compose, createMethod } from './utils'; // type Accessor = (a) -> Object ((a) -> b) -> b // type Class = Function // createPipe :: String -> Accessor export const createPipe = method => (...args) => obj => obj[method].apply(obj, args); // This is beautiful. My library in action. const map = createPipe('map'); const filter = createPipe('filter'); const reduce = createPipe('reduce'); // createPipes :: [String] -> Object Accessor export const createPipes = compose( reduce((acc, method) => ({ ...acc, [method]: createPipe(method) }), {}), filter(Boolean), ); // fromClassPrototype :: Class -> Accessors export const fromClassPrototype = compose(createPipes, getMethods); export { compose };