# pepka

> An ultra lightweight, async or unsafe-speedy ramda alternative.

Latest version **1.14.1** (published 2026-09-23) · MIT license · 0 weekly downloads

## Install

```sh
npm install pepka
pnpm add pepka
yarn add pepka
bun add pepka
```

## Health

**Score 70/100 (B)** — status: active.

Positive: has types; esm support; no vulnerabilities; recently updated; high maintenance score; high quality score.

Warnings: low downloads.

## Facts

| | |
|---|---|
| Version | 1.14.1 |
| Published | 2026-09-23 |
| First published | 2019-12-07 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM |
| Dependencies | 0 |
| Unpacked size | 233.8 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 1 |
| Author | Michael houd1ni Akiliev |
| Maintainers | houd1ni |
| Keywords | ramda, functional, fp, toolkit, pure, strongly-typed, typescript, d.ts |

## Links

- npm: https://www.npmjs.com/package/pepka
- Repository: https://github.com/houd1ni/pepka
- Homepage: https://houd1ni.github.io/pepka/
- Issues: https://github.com/houd1ni/pepka/issues
- npm.io page: https://npm.io/package/pepka

## Alternatives

- [lodash.assign](https://npm.io/package/lodash.assign.md) — 2.3M weekly downloads
- [lodash.chunk](https://npm.io/package/lodash.chunk.md) — 1.8M weekly downloads
- [react-native-ios-utilities](https://npm.io/package/react-native-ios-utilities.md) — 138.5K weekly downloads
- [@technically/lodash](https://npm.io/package/@technically/lodash.md) — 50.9K weekly downloads
- [@fluid-topics/ft-icon](https://npm.io/package/@fluid-topics/ft-icon.md) — 20.6K weekly downloads

## Recent versions

- 1.14.1 (latest) — 2026-09-23
- 1.14.0 — 2026-09-23
- 1.13.0 — 2026-05-16
- 1.12.3 — 2026-04-10
- 1.12.2 — 2026-04-03
- 1.12.1 — 2026-04-02
- 1.12.0 — 2026-04-02
- 1.11.1 — 2026-04-02
- 1.11.0 — 2026-04-01
- 1.10.0 — 2026-04-01
- 1.9.5 — 2026-03-29
- 1.9.4 — 2026-03-29
- 1.9.3 — 2026-03-29
- 1.9.2 — 2026-03-29
- 1.9.1 — 2026-03-29
- … 131 more at https://npm.io/package/pepka/versions

## README

![image](https://user-images.githubusercontent.com/7501201/122691868-ae59f800-d23a-11eb-97fa-c0fab3cb0808.png)

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.

---
_Source: https://npm.io/package/pepka · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
