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

@feedzai/js-utilities

v1.6.0

Published

A collection of common javascript utilities for web projects

Downloads

139

Readme

Read The Docs


Build Status version downloads GNU AGPL License PRs Welcome

Intro

In this vast landscape of JavaScript and TypeScript development, having a reliable set of tools at your disposal when building web projects can make all the difference. @feedzai/js-utilities is a comprehensive collection of JavaScript helpers, functions and custom React hooks designed to streamline projects with ease and efficiency.

With this package, developers gain access to a treasure trove of utilities crafted to simplify common tasks encountered in JS/TS projects. From handy helpers to custom React hooks, this library empowers developers to write cleaner, more concise code without sacrificing functionality.

Each function and hook is tested to ensure functionality and effectiveness, whilst giving developers the confidence to integrate them seamlessly into their projects.

It also comes with comprehensive documentation, making it a breeze to navigate and utilize its features effectively.

The package is available in both CommonJS and ES Modules formats so, whether you're working in a traditional environment or embracing the latest ES Modules, we have you covered.

For JavaScript and TypeScript developers seeking a lightweight but robust toolkit that balances simplicity with utility, @feedzai/js-utilities might jus be the answer!

Table of Contents

Installation

This module is distributed via npm which is bundled with node and should be installed as one of your project's dependencies or devDependencies:

## using npm
npm install @feedzai/js-utilities

## using yarn
yarn add @feedzai/js-utilities

## using pnpm
pnpm add @feedzai/js-utilities

Usage

This is a collection of functions, utilities and react hooks. You'll find all available code in src.

The bundle is available as:

  • ES Modules
  • Common JS

To import a piece of code into your javascript project just do:

// Just one function
import { isNil } from "@feedzai/js-utilities";

// Just a single module, with the full path to the file
import isNil from "@feedzai/js-utilities/dist/functions/typed/is-nil";

// Multiple functions
import { callIfExists, throwError, getLSItem } from "@feedzai/js-utilities";

// React Hooks
import { useMount, useConstant } from "@feedzai/js-utilities/hooks";

// Alias the whole object
import * as JS_UTILS from "@feedzai/js-utilities";

Functions

DOM

| Name | Source | | ------------------- | ------------------------------------------------------------------------------------------------------ | | classNames | source | | cloneValidElement | source | | queueMicrotask | source | | toggleDataAttribute | source | | wait | source |

Random

| Name | Source | | ------ | ------------------------------------------------------------------------------------------ | | draw | source | | random | source |

Arrays

| Name | Source | | ----------- | ---------------------------------------------------------------------------------------------- | | arrayMove | source | | chunk | source | | findIndex | source | | find | source | | flatMap | source | | flatten | source | | groupBy | source | | inRange | source | | includes | source | | merge | source | | removeIndex | source | | removeItem | source | | uniqBy | source | | uniq | source |

Browsers

| Name | Source | | --------- | ----------------------------------------------------------------------------------------------------- | | isBrowser | source | | DEV | source |

Curry

| Name | Source | | -------- | -------------------------------------------------------------------------------------------- | | debounce | source | | memo | source | | throttle | source |

Dates

| Name | Source | | ------------------ | ------------------------------------------------------------------------------------------------------- | | getBrowserTimezone | source |

Events

| Name | Source | | ---------------------- | --------------------------------------------------------------------------------------------------------------------------- | | on | source | | off | source | | emitCustomEvent | source | | useCustomEventListener | source |

Internationalization

| Name | Source | | ---------------- | ---------------------------------------------------------------------------------------------------- | | getBrowserLocale | source |

Numbers

| Name | Source | | ------------- | -------------------------------------------------------------------------------------------------- | | formatNumber | source | | round | source | | shortenNumber | source | | toInt | source |

Objects

| Name | Source | | -------- | --------------------------------------------------------------------------------------------- | | at | source | | clone | source | | getValue | source | | get | source | | has | source | | isEqual | source | | omit | source | | pick | source | | set | source |

String

| Name | Source | | ------------------ | -------------------------------------------------------------------------------------------------------- | | camelCase | source | | capitalize | source | | escapeRegExp | source | | kebabCase | source | | makeId | source | | pascalCase | source | | readableStringList | source | | stripUnit | source | | template | source | | titleCase | source | | trim | source |

Typed

| Name | Source | | ---------------- | ------------------------------------------------------------------------------------------------------ | | boolOrBoolString | source | | isArray | source | | isBlank | source | | isBoolean | source | | isDate | source | | isElement | source | | isEmpty | source | | isFunction | source | | isNil | source | | isNull | source | | isNumber | source | | isObject | source | | isPlainObject | source | | isPrimitive | source | | isPromise | source | | isString | source | | isUndefined | source |

Utilities

| Name | Source | | ------------------ | -------------------------------------------------------------------------------------------------------- | | callIfExists | source | | emptyFunction | source | | makeCancelable | source | | throwError | source | | HTTP StatusCodes | source | | Keyboard Key Codes | source |

React Hooks

| Name | Source | | ------------------- | ----------------------------------------------------------------------------------------------- | | useContainerQuery | source | | useControlledState | source | | useNetworkState | source | | usePageVisibility | source | | usePermission | source | | useAutoId | source | | useClickOutside | source | | useConstant | source | | useCopyToClipboard | source | | useEffectOnce | source | | useLifecycle | source | | useLiveRef | source | | useMergeRefs | source | | useMount | source | | useMountedState | source | | usePrevious | source | | useSafeLayoutEffect | source | | useScript | source |

Tests

All tests have been written using cypress.

To run tests locally:

# using npm
npm run test:open

# using npm (headless)
npm run test

# using yarn
yarn test:open

# using yarn (headless)
yarn test

Other solutions available

If you are aware of any, please make a pull request and add it here!

  • Lightdash - A small JavaScript utility library to complement lodash.
  • Radash - A drop-in replacement for lodash, also written in ES Modules.
  • You might not need lodash - It’s a great website, well crafted, battle tested and with a very skilled and active community contributing. The goal of that project is NOT to provide drop in replacements, but to show how to achieve similar functionalities in plain Javascript, to understand how things work behind the hood.

Issues

Looking to contribute? Look for the Good First Issue label. You also need to be a Feedzai-aproved contributor to contribute directly to the repo. Otherwise, you always fork the repo and open a merge-request.

See Issues

🐛 Bugs

Please file an issue for bugs, missing documentation, or unexpected behavior.

See Bugs

💡 Feature Requests

Please file an issue to suggest new features. Vote on feature requests by adding a 👍. This helps maintainers prioritize what to work on.

See Feature Requests

Contributors ✨

This project follows the all-contributors specification. Contributions of any kind welcome!

LICENSE

GNU Affero General Public License v3.0