Helpers
The @perseid/core
package offers a collection of isomorphic helper functions that are useful for a wide range of projects.
forEach
Implementation of JS Array.forEach
method, adapted to asynchronous callbacks.
function forEach<T>(
items: T[],
callback: (item: T, index: number) => Promise<void>,
): Promise<void>;
Parameters
- items: Items to iterate on.
- callback: Asynchronous function to execute for each item.
Returns
Translated label.
Usage
[1, 2, 3].forEach(async (item) => {
await doSomethingAsync(item);
});
toSnakeCase
Transforms text
into SNAKE_CASE.
function toSnakeCase(text: string): string;
Parameters
- text: Text to transform.
Returns
Transformed text.
Usage
toSnakeCase('helloWorld'); // HELLO_WORLD
isPlainObject
Returns true
if variable
is a plain object, false
otherwise.
function isPlainObject<T>(variable: T): boolean;
Parameters
- variable: Variable to check.
Returns
true
if variable is a plain object, false
otherwise.
Usage
isPlainObject(189); // false
isPlainObject(null); // false
isPlainObject([1, 2, 3]); // false
isPlainObject(new Date()); // false
isPlainObject({ hello: 'world' }); // true
deepCopy
Performs a deep copy of variable
. Only plain objects and arrays are deeply copied.
function deepCopy<T>(variable: T): T;
Parameters
- variable: Variable to deeply copy.
Returns
Variable deep copy.
Usage
const object = { hello: 'world', subObject: { key: 'test' } };
const objectDeepCopy = deepCopy(object);
object === objectDeepCopy; // false
object.subObject === objectDeepCopy.subObject; // false
JSON.stringify(object) === JSON.stringify(objectDeepCopy); // true
deepMerge
Performs a deep merge of firstVariable
and secondVariable
. Only plain objects and arrays are
deeply merged. In any other case, secondVariable
is returned if it is defined.
function deepMerge<T1, T2>(
firstVariable: T1,
secondVariable: T2,
): T1 & T2;
Parameters
- firstVariable: First object.
- secondVariable: Second object.
Returns
Variables deep merge.
Usage
// { hello: 'world', subObject: { key: 'test', key2: 'test2' } }
deepMerge({ hello: 'world', subObject: { key: 'test' } }, { subObject: { key2: 'test2' } });