A collection of handy utility functions
This is a collection of utility functions that I keep using across different
projects. I primarily created this package for myself so I don't have to
re-implement certain functions over and over again, and to have a central place for testing them.
Install
npm install @flekschas/utils --save-dev
Usage
import { debounce } from '@flekschas/utils';
const hi = debounce(() => {
console.log('I am debounced');
}, 250);
For cherry picking from a specific topic do:
import { debounce } from '@flekschas/utils/timing';
The utility functions are organized by the following topics:
- animation
- color
- conversion
- dom
- event
- functional-programming
- geometry
- map
- math
- object
- other
- sorting
- string
- timing
- type-checking
- vector
Why yet another library for utility functions?
Generally, I follow four core goals with this collection:
- Reusability
- Performance
- Simplicity
- No dependencies
Whenever a function is reusable in a general context I might add it. When I
add a function I will make sure it's performant. Finally, every function
should be implement as simple as possible without harming performance.
There's always a trade-off between performance and simplicity and my philosophy
is the following: if the simple and complex implementation perform roughly the
same, I choose the simple implementation. If a slightly more complex
implementation is much faster I will favor the complex implementation. In any
case, the API should always be simple and easy to understand! Finally,
I want my utils functions to have no external and as little as possible
internal dependencies. Why? No matter how large this collection becomes as a whole,
if you only need one function, you should only ever have to bundle
a single function and not a whole forrest of depending helper functions.