pepka
TypeScript icon, indicating that this package has built-in type declarations

1.5.3 • Public • Published

image

HI! Meet pepka - JavaScript/TypeScript functional programming utility library named after my parakeet.

This lib is intended to be a functional toolkit more flexible than ramda is. Its' basic API is similimar to ramda's one. Other goals are:

  • Async pipes. They are very handy, but are not 100% pure in terms of Haskell c:
  • Most flexible types possible (Let'em be any better than crashing because of their failures. I'm currently working on full JSDocs and better basic types).
  • Tree-shakeble and smallest possible. What could be native, is native.
  • Has "quick" alternatives of most computation-heavy functions with q prefix which are not completely safe by fp means: most of them do mutations and it may be needed to clone or cloneShallow data in a first pipe of compose(...).
  • Has basic toolbelt-types like AnyObject and AnyFunc<ReturnType?, [...args]?> etc.
  • Has some basic additinal must-have stuff that ramda does not.

Full docs are coming, please reference ramda's ones for most operations and examples: https://ramdajs.com/docs/

Basic API differences:

  • clone() clones deeply as possible any type possible.
  • cloneShallow() clones only by 1st level of folding also any type possible.
  • mergeDeep - replaces arrays.
    • mergeDeepX - replaces its' elements with same indexes.
    • mergeDeepAdd - adds new elements to arrays.
  • type - returns type UpperCased of anything passed to it, including classes and typed arrays.
  • mapKeys - changes existing keys and data by map or function like usual mapper.
  • explore(label)(data) - compose(explore('the number'))(42) results in 'the number', 42 in console passing by the data.
  • genBy(generator(index), length) - generates arrays.
  • sizeof(array or object) - counts indexes of it.
  • Aliases: mirror, reflect, echo = identity.
  • Quicks: qappend, qassoc, qreduce, qmergeDeep, qmergeDeepX, qmergeDeepAdd, qmapKeys, qfilter

Async APIs:

  • composeAsync - waits for a Promise if emitted by a pipe inside it.
  • waitAll = Promise.all
  • forEachAsync - runs a handler with all elements passed in parallel.
  • forEachSerial - waits for a previous handler to resolve if Promise emitted.

Dependents (5)

Package Sidebar

Install

npm i pepka

Weekly Downloads

400

Version

1.5.3

License

MIT

Unpacked Size

115 kB

Total Files

27

Last publish

Collaborators

  • houd1ni