Skip to content

vanillaes/absurdum

main
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
src
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Absurdum Logo


Absurdum is a Javascript utility library built with a focus on providing idempotent side-effect free functions and clear/readable modular source for tree shaking.

GitHub Release NPM Release Bundlephobia Latest Status Release Status

Discord

Features

  • Explores the flexibility of Reduce
  • Abstraction Free -> tree-shake friendly
  • Functional -> all operators are side-effect free
  • Polyfills -> includes operator polyfills for older browsers
  • Isomorphic -> works consistently across all JS runtimes
  • Typescript -> typings are provided for all operators
  • Intellisense -> supports code completions + inline documentation
  • Well Tested -> includes 600+ tests covering every aspect

Imports

This package works isomorphically in browsers and server-side JavaScript runtimes

Browsers

Import directly from the local path or a CDN

Top-level operator namespaces (ie [arrays, objects, strings]) can be imported from the index

<script type="module">
import { arrays, objects, strings } from 'path/to/absurdum/index.js'
</script>

The minified version can be imported from

<script type="module">
import { arrays, objects, strings } from 'path/to/absurdum/index.min.js'
</script>

Node

Install the package

npm install @vanillaes/absurdum

Top-level operator namespaces are provided

import { arrays, objects, strings } from '@vanillaes/absurdum';

Individual operators can also be imported from their parent namespaces

import { chunk, find } from '@vanillaes/absurdum/arrays';
import { assign, invert } from '@vanillaes/absurdum/objects';
import { camelCase, repeat } from '@vanillaes/absurdum/strings';

Note: Webpack's tree-shaking algorithm doesn't work with multi-layered exports. To optimize bundle size, prefer individual operator imports.

Usage

Import an operator and feed it some inputs

const input = ['a', 'b', 'c', 'd'];
const output = reverse(input);
console.log(output);
// > ['d', 'c', 'b', 'a']

Tip: For VSCode users. Input type-checking, intellisense, and inline documentation are all supported.

API Documentation

Arrays

Operator Lodash Polyfills
chunk _.chunk
compact _.compact
difference _.difference
drop _.drop
dropRight _.dropRight
fill _.fill Array.prototype.fill
filter _.filter
find _.find Array.prototype.find
findIndex _.findIndex Array.prototype.findIndex
findLastIndex _.findLastIndex
flat _.flatten Array.prototype.flat
frequency
intersection _.intersection
map _.map
pull _.pull
take _.take
takeRight _.takeRight
union _.union
unique _.uniq
unzip _.unzip
without _.without
xor _.xor
zip _.zip

Objects

Operator Lodash Polyfills
assign _.assign Object.assign
at _.at
defaults _.defaults
defaultsDeep _.defaultsDeep
entries _.toPairs Object.entries
filter _.filter
findKey _.findKey
findLastKey _.findLastKey
forIn _.forIn
fromEntries _.fromPairs Object.fromEntries
get _.get
has _.has
invert _.invert
mapKeys _.mapKeys
mapValues _.mapValues
merge _.merge
pick _.pick
result _.result
transform _.transform
values _.values Object.values

Strings

Operator Lodash Polyfills
camelCase _.camelCase
chomp
deburr _.deburr
endsWith _.endsWith String.prototype.endsWith
includes String.prototype.includes
kebabCase _.kebabCase
pad _.pad
padEnd _.padEnd String.prototype.padEnd
padStart _.padStart String.prototype.padStart
pascalCase _.startCase
repeat _.repeat String.prototype.repeat
reverse
snakeCase _.snakeCase
startsWith _.startsWith String.prototype.startsWith
trimEnd _.trimEnd String.prototype.trimEnd
trimStart _.trimStart String.prototype.trimStart
truncate _.truncate
words _.words