# @extremejs/utils

> ExtremeJS Utilities

Latest version **1.0.0-beta.22** (published 2024-06-04) · MIT license · 0 weekly downloads

## Install

```sh
npm install @extremejs/utils
pnpm add @extremejs/utils
yarn add @extremejs/utils
bun add @extremejs/utils
```

## Health

**Score 35/100 (D)** — status: abandoned.

Positive: has types; esm support; no vulnerabilities; has provenance; high quality score.

Warnings: low downloads.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.0-beta.22 |
| Published | 2024-06-04 |
| First published | 2022-08-27 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Node | >= 18.12.0 |
| Dependencies | 0 |
| Unpacked size | 618.4 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Provenance | attested (GitHub Actions) |
| GitHub stars | 3 |
| Author | Ardalan Amini |
| Maintainers | ardalanamini |
| Keywords | utilities, utils, util, typescript, ts, javascript, js, node.js, node, browser, import, require, add, camelCase, capitalize, chunk, compact, concat, divide, drop, dropRight, endsWith, eq, fill, first, get, head, identity, isArguments, isArray, isArrayBuffer, isArrayLike, isArrayLikeObject, isBoolean, isBuffer, isDate, isElement, isEmpty, isError, isEven, isFinite, isFunction, isIndex, isInstanceOf, isInteger, isLength, isMap, isNan, isNil, isNull, isNumber, isObject, isObjectLike, isPlainObject, isPositive, isPrototype, isRegExp, isSafeInteger, isSet, isString, isSymbol, isTypeOf, isTypedArray, isUndefined, isWeakMap, isWeakSet, iteratee, join, kebabCase, keys, last, lowerCase, lowerFirst, max, maxBy, maxByFn, maxByProperty, mean, meanBy, meanByFn, meanByProperty, min, minBy, minByFn, minByProperty, multiply, noop, objectToString, objectToStringTag, property, prototypeOf, repeat, replace, slice, snakeCase, split, startsWith, subtract, sum, sumBy, sumByFn, sumByProperty, tail, toPath, typeOf, upperCase, upperFirst |

## Links

- npm: https://www.npmjs.com/package/@extremejs/utils
- Repository: https://github.com/extremejs/utils
- Homepage: https://extremejs.github.io/utils
- Issues: https://github.com/extremejs/utils/issues
- npm.io page: https://npm.io/package/@extremejs/utils

## Alternatives

- [@mapbox/jsonlint-lines-primitives](https://npm.io/package/@mapbox/jsonlint-lines-primitives.md) — 5.3M weekly downloads
- [reftools](https://npm.io/package/reftools.md) — 3.5M weekly downloads
- [@hey-api/openapi-ts](https://npm.io/package/@hey-api/openapi-ts.md) — 3.5M weekly downloads
- [@mapbox/geojson-rewind](https://npm.io/package/@mapbox/geojson-rewind.md) — 2.4M weekly downloads
- [turbo-stream](https://npm.io/package/turbo-stream.md) — 1.7M weekly downloads

## Recent versions

- 1.0.0-beta.22 (latest) — 2024-06-04
- 1.0.0-beta.23 (beta) — 2026-10-01
- 1.0.0-beta.21 — 2024-04-26
- 1.0.0-beta.20 — 2023-04-23
- 1.0.0-beta.19 — 2023-02-20
- 1.0.0-beta.18 — 2023-02-04
- 1.0.0-beta.17 — 2022-10-15
- 1.0.0-beta.16 — 2022-09-03
- 1.0.0-beta.15 — 2022-09-02
- 1.0.0-beta.14 — 2022-09-02
- 1.0.0-beta.13 — 2022-09-01
- 1.0.0-beta.12 — 2022-08-31
- 1.0.0-beta.11 — 2022-08-30
- 1.0.0-beta.10 — 2022-08-30
- 1.0.0-beta.9 — 2022-08-30
- … 8 more at https://npm.io/package/@extremejs/utils/versions

## README

# @extremejs/utils

Modern TypeScript utilities inspired by [lodash](https://lodash.com),
aiming to be high performance while having minimal size impact.

[![Test](https://github.com/extremejs/utils/actions/workflows/test.yaml/badge.svg)](https://github.com/extremejs/utils/actions/workflows/test.yaml)
[![CodeCov](https://codecov.io/gh/extremejs/utils/branch/main/graph/badge.svg?token=1TKSPJICKI)](https://codecov.io/gh/extremejs/utils)
[![Security](https://snyk.io/test/github/extremejs/utils/badge.svg)](https://snyk.io/test/github/extremejs/utils)
[![License](https://img.shields.io/github/license/extremejs/utils.svg)](https://github.com/extremejs/utils/blob/main/LICENSE)
[![NPM Version](https://img.shields.io/npm/v/@extremejs/utils.svg)](https://www.npmjs.com/package/@extremejs/utils)
[![NPM Monthly Downloads](https://img.shields.io/npm/dm/@extremejs/utils.svg)](https://www.npmjs.com/package/@extremejs/utils)
[![NPM Total Downloads](https://img.shields.io/npm/dt/@extremejs/utils.svg)](https://www.npmjs.com/package/@extremejs/utils)
[![NPM Bundle Size (Minified + GZip)](https://img.shields.io/bundlephobia/minzip/@extremejs/utils.svg)](https://bundlephobia.com/package/@extremejs/utils)
[![NPM Bundle Size (Minified)](https://img.shields.io/bundlephobia/min/@extremejs/utils.svg)](https://bundlephobia.com/package/@extremejs/utils)
[![Built with TypeScript](https://img.shields.io/npm/types/prototyped.js.svg)](https://www.typescriptlang.org)
[![Tested With Jest](https://img.shields.io/badge/tested_with-jest-99424f.svg)](https://jestjs.io)
[![Open GitHub Issues](https://img.shields.io/github/issues-raw/extremejs/utils.svg)](https://github.com/extremejs/utils/issues)
[![Open GitHub Pull Requests](https://img.shields.io/github/issues-pr-raw/extremejs/utils)](https://github.com/extremejs/utils/pulls)
[![Github Stars](https://img.shields.io/github/stars/extremejs/utils.svg?style=social&label=Stars)](https://github.com/extremejs/utils)
[![Github Forks](https://img.shields.io/github/forks/extremejs/utils.svg?style=social&label=Fork)](https://github.com/extremejs/utils)

## Table of Content

- [Installation](#installation)
  - [NPM](#npm)
  - [PNPM](#pnpm)
  - [Yarn](#yarn)
- [Usage](#usage)
  - [Notes](#notes)
- [Versioning](#versioning)
- [Authors](#authors)
- [License](#license)

## Installation

### NPM

```shell
npm i @extremejs/utils
```

### PNPM

```shell
pnpm add @extremejs/utils
```

### Yarn

```shell
yarn add @extremejs/utils
```

## Usage

```typescript
import { sumByFn, sumByProperty, sumBy } from "@extremejs/utils";
// or
import { sumByFn, sumByProperty, sumBy } from "@extremejs/utils/sum-by-fn";

const sum1 = sumByFn([{ a: 1 }, { a: 2 }, { a: 3 }], ({ a }) => a); // => 6
// or
const sum2 = sumByProperty([{ a: 1 }, { a: 2 }, { a: 3 }], "a"); // => 6
// or
const sum3 = sumBy([{ a: 1 }, { a: 2 }, { a: 3 }], ({ a }) => a); // => 6
// or
const sum4 = sumBy([{ a: 1 }, { a: 2 }, { a: 3 }], "a"); // => 6
```

> API usage documents are available [here](https://extremejs.github.io/utils).

### Notes

1. Although this package is inspired by `lodash`,
   the method names might not be exactly the same or have different usage API,
   so make sure to read the docs first before using it.
2. The methods do not type check at runtime
   (e.g. The `Array` `chunk` method assumes the `size` parameter is always a valid positive integer)
   so make sure you pass the correct values based on the `documents`/`typescript` types.

## Versioning

We use [SemVer](http://semver.org) for versioning.
For the versions available, see the [releases on this repository](https://github.com/extremejs/utils/releases).

## Authors

- **Ardalan Amini** - _Core Maintainer_ - [@ardalanamini](https://github.com/ardalanamini)

See also the list of [contributors](https://github.com/extremejs/utils/contributors) who participated in this project.

## License

This project is licensed under the MIT License - see the [LICENSE](https://github.com/extremejs/utils/blob/main/LICENSE) file for details.

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