All files index.js

100% Statements 10/10
100% Branches 0/0
100% Functions 4/4
100% Lines 7/7
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24            54x     3x 3x 3x     3x 43x         3x      
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 };