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

needful

v1.8.3

Published

micro library for functional-style javascript programming

Downloads

30

Readme

Needful

Needful is a functionally-flavored micro library for the modern, pragmatic JavaScript developer.

Version Travis License

Why use Needful?

Small

Needful exports a single 7kb UMD which covers the 90% use-case for functional-style JavaScript programming. It has equivalents to all the most useful parts of lodash (such as keypath operations) without all the pieces you probably don't need.

Simple

Don't get mired in incidental complexity. Why waste cycles deliberating over how to most efficiently include lodash in your build, or fussing over whether you should use lodash-fp or lodash-es. Just pull in Needful and keep working the essential problem.

Smart

Needful is clojurist-friendly. 0 == true. Also, immutability is baked-in.

Why not use lodash / ramda / underscore?

No one's stopping you.

Do you want a feature that Needful is missing? Use Lodash. It's got you covered.

Need automatic currying? Use Ramda. It's got your back.

Want something time-tested and battle-hardened? Use Underscore. It's been around forever—and it works.

Needful is smaller (7kb) and simpler (a single export) than its peers while still covering practically everything you'll need for effective functional-style JavaScript programming (over 5 dozen functions!).

Needful does the needful, and no more.

You can't always get what you want But if you try sometimes you just might find You get what you need

API

nil : undefined

A safe reference to undefined.

While it rarely happens in practice, undefined is not a keyword and it is possible for it to be shadowed. Use nil and avoid the concern entirely.

Kind: global variable
See: isNil, notNil
Since: 1.2.0

isArray(value) ⇒ boolean

A convenient reference to Array.isArray.

Kind: global function
Returns: boolean - Returns true if value is an object, else false.
Since: 1.2.1

| Param | Type | Description | | --- | --- | --- | | value | * | The value to check. |

is(value, type) ⇒ boolean

Checks if value is of type. It's just JavaScript's typeof keyword, as a function.

Kind: global function
Returns: boolean - Returns true if value is of given type, else false.
Since: 1.0.0

| Param | Type | Description | | --- | --- | --- | | value | * | The value to check. | | type | 'undefined' | 'boolean' | 'string' | 'number' | 'object' | 'function' | 'symbol' | The type to check against. |

Example

is({}, 'object');
// => true

is([], 'object');
// => true

is(null, 'object');
// => true

is('foo', 'string');
// => true

is(123, 'number');
// => true

isNil(value) ⇒ boolean

Checks if value is null or undefined.

Kind: global function
Returns: boolean - Returns true if value is nullish, else false.
See: nil, notNil
Since: 1.2.0

| Param | Type | Description | | --- | --- | --- | | value | * | The value to check. |

Example

isNil(null)
// => true

isNil(void 0)
// => true

isNil(NaN)
// => false

notNil(value) ⇒ boolean

Checks if value is not null and not undefined.

Complements isNil.

Kind: global function
Returns: boolean - Returns true if value is not nullish, else false.
See: nil, isNil
Since: 1.2.1

| Param | Type | Description | | --- | --- | --- | | value | * | The value to check. |

Example

notNil(null)
// => false

notNil(void 0)
// => false

notNil(NaN)
// => true

isObject(value) ⇒ boolean

Checks if value is not null and has a typeof 'object'.

Kind: global function
Returns: boolean - Returns true if value is an object, else false.
Since: 0.0.1

| Param | Type | Description | | --- | --- | --- | | value | * | The value to check. |

Example

isObject({})
// => true

isObject([1, 2, 3])
// => true

isObject(Function)
// => true

isObject(null)
// => false

isEqual(value, other) ⇒ boolean

Compares value to other and tests for strict equality.

Kind: global function
Returns: boolean - Returns true if the values are strictly equal, else false.
Since: 1.4.0

| Param | Type | Description | | --- | --- | --- | | value | * | The value to compare. | | other | * | The other value to compare. |

Example

isEqual({}, {})
// => false

isEqual([], [])
// => false

const foo = {};
const bar = foo;
isEqual(foo, bar);
// => true

isEqual('a', 'a');
// => true

isFalse() ⇒ boolean

Checks if value is false.

Kind: global function
Returns: boolean - Returns true when value is equal to false.
See: isTrue, isFalsy, isTruthy, not
Since: 1.2.0

isFalsy(value) ⇒ boolean

Checks if value is falsy.

Kind: global function
Returns: boolean - Returns true when value is null, undefined' or false`.
See: isTrue, isFalse, isTruthy, not
Since: 1.2.0

| Param | Type | Description | | --- | --- | --- | | value | * | The value to check. |

complement(fn) ⇒ boolean

Given a function returns a function which when invoked will return the logically opposite value.

Note: 0 is considered to be truthy.

Kind: global function
Returns: boolean - Returns true if value is an object, else false.
Since: 1.2.1

| Param | Type | Description | | --- | --- | --- | | fn | function | The value to check. |

Example

complement(() => true)();
// => false

complement(() => false)();
// => true

complement(() => nil)();
// => true

complement(() => 0)();
// => false

isTruthy(value) ⇒ boolean

Checks if value is truthy.

Kind: global function
Returns: boolean - Returns true when value is not null, not undefined' and not false`.
See: isTrue, isFalse, isFalsy, not
Since: 0.0.2

| Param | Type | Description | | --- | --- | --- | | value | * | The value to check. |

isZero(value) ⇒ boolean

Checks if value is 0.

JavaScript treats 0 as falsy, Needful treats 0 as truthy, so it makes sense to provide a functional helper for 0 checks.

Kind: global function
Returns: boolean - Returns true when value is 0.
Since: 1.5.3

| Param | Type | Description | | --- | --- | --- | | value | * | The value to check. |

isString(value) ⇒ boolean

Checks if value is a string.

Kind: global function
Returns: boolean - Returns true when value of type 'string'.
Since: 0.0.2

| Param | Type | Description | | --- | --- | --- | | value | * | The value to check. |

isNumber(value) ⇒ boolean

Checks if value is a number.

Kind: global function
Returns: boolean - Returns true when value of type 'number'.
Since: 0.0.2

| Param | Type | Description | | --- | --- | --- | | value | * | The value to check. |

isNumeric(value) ⇒ boolean

Checks if value is a number or a string which can be parsed as a valid number. Faster than a regex.

Kind: global function
Returns: boolean - Returns true when value is of type 'number' or is a string which can be parsed as a number.
Since: 1.8.0

| Param | Type | Description | | --- | --- | --- | | value | * | The value to check. |

isBoolean(value) ⇒ boolean

Checks if value is a boolean.

Kind: global function
Returns: boolean - Returns true when value of type 'boolean'.
Since: 0.0.2

| Param | Type | Description | | --- | --- | --- | | value | * | The value to check. |

isUndefined(value) ⇒ boolean

Checks if value is undefined.

Kind: global function
Returns: boolean - Returns true when value of type 'undefined'.
Since: 0.0.2

| Param | Type | Description | | --- | --- | --- | | value | * | The value to check. |

isNull(value) ⇒ boolean

Checks if value is null.

Kind: global function
Returns: boolean - Returns true when value is null.
Since: 0.0.2

| Param | Type | Description | | --- | --- | --- | | value | * | The value to check. |

isPlainObject(value) ⇒ boolean

Checks if value is a plain object.

Kind: global function
Returns: boolean - Returns true when value is a plain old JavaScript object.
Since: 0.0.1

| Param | Type | Description | | --- | --- | --- | | value | * | The value to check. |

not()

Functional bang.

Kind: global function
Since: 0.0.1

partial(fn, ...args)

Partially apply arguments.

Kind: global function
Since: 0.0.1

| Param | Type | Description | | --- | --- | --- | | fn | function | Function to partial apply arguments to. | | ...args | * | Argument to partially apply. |

Example

const concat = (a, b) => '' + a + b;
const fooify = partial(concat, 'foo');
fooify('bar');
// => 'foobar'

partialRight(fn, ...args)

Partially apply arguments, starting from the right of the arguments given at call time.

Kind: global function
Since: 0.0.1

| Param | Type | Description | | --- | --- | --- | | fn | function | Function to partial apply arguments to. | | ...args | * | Argument to partially apply. |

Example

const concat = (a, b) => '' + a + b;
const fooify = partialRight(concat, 'foo');
fooify('bar');
// => 'barfoo'

clone(value) ⇒ *

Deeply clones plain objects and arrays. Primitives are passed through unchanged.

Kind: global function
Returns: * - Returns cloned Object, Array or passes thru other values
See: clone
Since: 1.5.0

| Param | Type | Description | | --- | --- | --- | | value | * | Value to clone. |

fill(array, value, start, end) ⇒ Array

Fills all the elements of an array from a start index to an end index with a static value. The end index is not included.

Kind: global function
Returns: Array - Returns new array filled with given value from given start index through given end index.
Since: 1.2.0

| Param | Type | Description | | --- | --- | --- | | array | Array | Array | | value | * | Value to fill. | | start | number | Start index, defaults to 0. | | end | number | End index. |

Example

fill([ 1, 2, 3, 4 ], 0, 2, 4);
// => [1, 2, 0, 0]

push(array, ...value) ⇒ Array

Adds one or more elements to the end of an array.

Kind: global function
Returns: Array - Returns new array with given value(s) added to the end.
Since: 1.2.0

| Param | Type | Description | | --- | --- | --- | | array | Array | Array | | ...value | * | Value(s) to be added. |

Example

push([ 1, 2, 3 ], 4);
// => [1, 2, 3, 4]

reverse(array) ⇒ Array

Reverse the order of a given array.

Kind: global function
Returns: Array - Returns new array with values in reverse order.
Since: 1.2.0

| Param | Type | Description | | --- | --- | --- | | array | Array | Array |

Example

reverse([ 1, 2, 3 ]);
// => [3, 2, 1]

unshift(array, ...value) ⇒ Array

Adds one or more elements to the beginning of an array.

Kind: global function
Returns: Array - Returns new array with given value(s) added to the beginning.
Since: 1.2.0

| Param | Type | Description | | --- | --- | --- | | array | Array | Array | | ...value | * | Value(s) to be added. |

Example

unshift([ 1, 2, 3 ], 0);
// => [0, 1, 2, 3]

splice(array, start, count, ...values) ⇒ Array

Changes the contents of an array by removing or replacing existing elements and/or adding new elements.

Kind: global function
Returns: Array - Returns new array with count elements removed from start and values added at start.
Since: 1.2.0

| Param | Type | Description | | --- | --- | --- | | array | Array | Array | | start | number | Start index. | | count | number | Delete count. | | ...values | * | Values to add. |

Example

splice([ 1, 2, 3, 4 ], 1, 1, 4);
// => [1, 4, 3, 4]

concat(...arrays) ⇒ Array

Merges two or more arrays.

Kind: global function
Returns: Array - Returns new array with arrays concatenated.

| Param | Type | Description | | --- | --- | --- | | ...arrays | Array | Arrays to merge. |

Example

concat([ 1, 2 ], [ 3, 4 ]);
// => [1, 2, 3, 4]

join(array, separator) ⇒ Array

Joins all elements of an array into a string.

Kind: global function
Returns: Array - Returns string with all elements of array joined. If given array is empty, returns empty string.

| Param | Type | Description | | --- | --- | --- | | array | Array | Array to join. | | separator | string | String which separates each pair of adjacent elements of the array. |

Example

join([ 'a', 'b', 'c' ], '-');
// => 'a-b-c'

slice(array, start, end) ⇒ Array

Returns a new array from given start index up until given end index.

Kind: global function
Returns: Array - Returns new array containing elements between start and end index of array

| Param | Type | Description | | --- | --- | --- | | array | Array | Array to slice | | start | number | Start index | | end | number | End index (selects up to but does not include end index) |

Example

slice([ 1, 2, 3, 4 ], 1, 3);
// => [ 2, 3 ]

every(array, predicate) ⇒ boolean

Tests whether all elements in the array pass the test implemented by the given predicate function.

Kind: global function
Returns: boolean - Returns boolean indicating whether or not every element in array satisfies predicate

| Param | Type | Description | | --- | --- | --- | | array | Array | Array to test | | predicate | function | Predicate function |

Example

every([ 1, 2, 3 ], v => typeof v === 'number');
// => true
every([ 1, 'foo', 3 ], v => typeof v === 'number');
// => false

filter(array, predicate) ⇒ Array

Returns new array containing only elements of given array which pass given predicate.

Kind: global function
Returns: Array - Returns new array containing only the element of the original array whose values pass the test implemented by the given predicate function.

| Param | Type | Description | | --- | --- | --- | | array | Array | Array to filter | | predicate | function | Predicate function |

Example

filter([ 1, 2, 3 ], v => v % 2);
// => [ 1, 3 ]

find(array, predicate) ⇒ Array

Returns deep clone of first element in array which pass given predicate.

Kind: global function
Returns: Array - Returns clone of first element within array the original array whose values pass the test implemented by the given predicate function.

| Param | Type | Description | | --- | --- | --- | | array | Array | Array to search | | predicate | function | Predicate function |

Example

find([ 1, 2, 3 ], v => v % 2);
// => 1

findIndex()

TODO

Kind: global function

forEach()

TODO

Kind: global function

map()

TODO

Kind: global function

reduce()

TODO

Kind: global function

reduceRight()

TODO

Kind: global function

some()

TODO

Kind: global function

entries()

TODO

Kind: global function

keys()

TODO

Kind: global function

values()

TODO

Kind: global function

pop()

TODO

Kind: global function

shift()

TODO

Kind: global function

includes()

TODO

Kind: global function

indexOf()

TODO

Kind: global function

lastIndexOf()

TODO

Kind: global function

sort()

TODO

Kind: global function

and()

TODO

Kind: global function

or()

TODO

Kind: global function

isEquiv()

Returns true if two given values are equivalent.

Kind: global function

pipe()

Performs left-to-right function composition.

Kind: global function

compose()

Performs right-to-left function composition.

Kind: global function

isEmpty()

A predicate for determining if a given value is "empty". Returns true for empty strings, empty arrays, empty objects as well as for null or undefined.

Kind: global function

castPath()

Converts a keypath string to an array representation of the keypath. Given an array, the array will be shallow-cloned and returned otherwise unchanged.

Kind: global function

get()

Get the value at a given keypath within an given object. If a third argument is supplied, the value of that argument will be used as a default.

Kind: global function

has()

Returns a truthy value indicating presence or absence of the value at a given keypath in a given object.

Kind: global function

walkPath()

Walk a given object along a given keypath and apply a given function to each intermediate value.

Kind: global function

assoc()

Set a value at a given keypath within an given object. Returns a new object. Original is unchanged.

Kind: global function

dissoc()

Unset a value at a given keypath within an given object. Returns a new object. Original is unchanged.

Kind: global function

set()

Set a value at a given keypath within an given object. Warning: Mutates the given object! Use assoc for an immutable version.

Kind: global function
See: assoc

drop()

Unsets a value at a given keypath within an given object. Warning: Mutates the given object! Use dissoc for an immutable version.

Kind: global function

assign()

A convenient reference to Object.assign.

Kind: global function

merge()

Performs a deep merge of all given objects.

Kind: global function

See Also

License

MIT