JSPM

  • Created
  • Published
  • Downloads 140
  • Score
    100M100P100Q80156F
  • License MIT

An ultra lightweight or unsafe-speedy ramda alternative.

Package Exports

  • pepka

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (pepka) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

image

HI! Meet pepka - JavaScript/TypeScript functional programming utilities library named after my paraqeet.

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 not super-pure, but super handy.
  • Most flexible types as 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 ans 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.
  • 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:

  • mergeDeep - replaces arrays.
    • mergeDeepX - replaces elements with same indexes.
    • mergeDeepAdd - adds new element 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.