npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

almost-functional

v0.4.1

Published

A small functional library

Downloads

6

Readme

Almost Functional

Docs are a work in progress.

Install

npm install almost-functional

API

compose

Composes a function that will return the result of invoking the functions in succession where the return value of the previous function is supplied to the next

Param
...fns: Array
Return
Function;
Example
const square = (n) => n * n;
const mult = (a, b) => a * b;

const multSquare = compose(
  square,
  mult,
);
multSquare(10, 10);
// => 10000

curry

Returns a curried function that is equal to the provided function. Arguments of the curried function do not need to be provided at the same time.

Param
fn: Function;
Return
Function || any;
Example
const sumFive = curry(
  (a: number, b: number, c: number, d: number, e: number) => a + b + c + d + e,
);

sumFive(1)(1)(1)(1)(1);
// => 5
sumFive(1, 1, 1, 1, 1);
// => 5
sumFive(1, 1)(1, 1, 1, 1);
// => 5

first

Returns the first element in an array or undefined

Param
arr: Array;
Return
any;
Example
first([1, 2, 3]);
// => 1
first([]);
// => undefined

flatten

Flattens an array one level deep

Param
arr: Array;
Return
Array;
Example
flatten([1, 2, 3, [4, 5, 6]]);
// => [1, 2, 3, 4, 5, 6]

flattenDeep

Recursively flattens an array

Param
arr: Array;
Return
Array;
Example
flattenDeep([1, 2, 3, [4, 5, [6, 7, [8, 9]]]]);
// => [1, 2, 3, 4, 5, 6, 7, 8, 9]

forEach

Iterates over the provided array and invokes the iteratee on each element. The iteratee is provided the value, index and array.

Param
arr: Array;
iteratee: Function;
Return
void
Example
forEach([1, 2, 3], (val) => {
  console.log(val);
});
// => 1
// => 2
// => 3

forEach([1], (val, idx, arr) => {
  console.log(`val: ${val} - idx: ${idx} - arr: ${arr}`);
});
// => val: 1 - idx: 0 - arr: 1

fromPairs

Returns an object created from the key:value pairs provided.

Param
pairsArr: Array;
Return
Object;
Example
fromPairs(['a', 1], ['b', 2]);
// => {a: 1, b: 2}

head

Returns the first element in an array or undefined

Param
arr: Array;
Return
any;
Example
head([1, 2, 3]);
// => 1
head([]);
// => undefined

isFunction

Checks if the value is a function

Param
val: any;
Return
boolean;
Example
isFunction(() => {});
// => true
isFunction({});
// => false

isObject

Checks if the value is a object

Param
val: any;
Return
boolean;
Example
isObject({});
// => true
isObject(null);
// => false
isObject(() => {});
// => false

isObjectLike

Checks if the value is object like, which is not null and an object.

Param
val: any;
Return
boolean;
Example
isObjectLike(null);
// => false
isObjectLike([]);
// => true
isObjectLike({});
// => true

isPlainObject

Checks if the value has been created by the Object constructor.

Param
val: any;
Return
boolean;
Example
class A {}
isPlainObject(new A());
// => false
isPlainObject({});
// => true

keys

Returns an array from the key values from the provided object.

Param
obj: Object;
Return
Array;
Example
keys('almost-functional');
// => []
keys({a: 1, b: 2});
// ['a', 'b']

last

Returns the last element of an array or undefined

Param
...args: Array
Return
any;
Example
last([]);
// => undefined
last([1, 2, 3]);
// => 3

merge

Merges the arguments provided.

Param
...args: Array
Return
Object;
Example
merge({a: 1, b: 2}, {c: 3, d: 4}, {e: 5, f: 6});
// => {a: 1, b: 2, c: 3, d: 4, e: 5, f: 6}

mergeSafe

Merges the arguments provided, remove all none objects, null, and arrays.

Param
...args: Array
Return
Object;
Example
merge({a: 1, b: 2}, {c: 3, d: 4}, {e: 5, f: 6}, null, []);
// => {a: 1, b: 2, c: 3, d: 4, e: 5, f: 6}

pipe

Composes a function that will pipe the result of the invoking function to the next function.

Param
...fns: Array
Return
Function;
Example
const square = (n) => n * n;
const mult = (a, b) => a * b;

const multSquare = pipe(
  mult,
  square,
);
multSquare(10, 10);
// => 10000

pluckDeep

Recursively searches an object for a specified keys and returns it or null.

Param
obj: Object;
Return
any;
Example
const pluckObj = pluckDeep({a: {b: {c: 1, d: {e: 'found'}}}});

pluckObj('f');
// => null
pluckObj('e');
// => 'found'

random

Returns a random number between min and max.

Param
min: number;
max: number;
Return
number;
Example
random(0, 100);
// => 44

remove

Removes all provided elements from the array.

Param
...args: Array
Return
Array;
Example
remove([1, 2, 3, 4], 1, 2, 3);
// => [4]
remove(['a', 2, 'b', 4], 1, 2, 'b');
// => ['a', 4]

removeFalsy

Returns a new array with all falsy (false, 0, '', "", null, undefined, or NaN) values removed.

Param
arr: amy;
Return
Array;
Example
removeFalsy([1, 2, 3, false, 0, '', '', null, undefined, NaN, 'hello']);
// =>  [1 , 2, 3, 'hello']

shuffle

Returns a new array, shuffled.

Param
list: Array;
Return
Array;
Example
shuffle([1, 2, 3, 4, 5]);
// => [2,1,5,3,4]
shuffle([1, 2, 3, 4, 5]);
// => [4,5,1,2,3]

tail

Returns all elements of the array expect for the head

Param
arr: Array;
Return
Array;
Example
tail([1, 2, 3]);
// => [2, 3]

toLower

Converts a string to lower case and removes all non-alpha characters

Param
text: String;
Return
string;
Example
toLower('123ABc!_*&&34:"{}');
// => 'abc'

toUpper

Converts a string to upper case and removes all non-alpha characters

Param
text: String;
Return
string;
Example
toUpper('--foo-bar');
// => FOOBAR