sum
: Calculates the sum of an array of numbers. Returns 0 if the array is empty.
sum([1,2,3]) // 6
mean
: Computes the mean of an array of number. Returns 0 if the array is empty
mean([1,2,3]) // 2
findIndexAndValue
: Finds a value in an array given a predicate, and returns an object with the value and its index
const fruits = ["banana", "peach", "strawberry" ];
findIndexAndValue(fruits, (f) => f === "peach") // {index: 1, value: "peach"}
range
: Creates an array of numbers betweenstart
(defaults to 0) andstop
(excluded) in increments ofstep
(defaults to 1)
range(3) // [0,1,2]
range(1,3) // [1,2]
range(1,6,2) // [1,3,5]
areArraysEquivalent
: Checks whether two arrays have the same elements
areArraysEquivalent([1, 2, 3], [3, 2, 1]) // true;
once
: Decorator making a function callable once
let i = 0;
const increment = () => i++;
const wrapped = once(increment);
wrapped(); // i = 1
wrapped(); // i = 1
wrapped(); // i = 1
A fast priority queue / heap implementation, with O(nlog(n))
complexity.
The constructor takes a comparator function.
Public fields:
size
: (number) the size of the heapisEmpty
: (boolean) whether the heap is emptyenqueue
: adds an element to the queue and prioritizes itdequeue
: pops the next element in the priority queuepeek
: look at the next element without popping ithas
: checks whether a given element is in the queue
const queue = new PriorityQueue((a: string, b: string) => a < b ? -1 : a === b ? 0 : 1);
queue.enqueue("Bob");
queue.enqueue("Zack");
queue.enqueue("Alice");
queue.size(); // 3
queue.has("Dan"); // false
queue.dequeue(); // Alice
queue.dequeue(); // Bob
queue.peek(); // Zack
queue.isEmpty(); // false
queue.dequeue(); // Zack
round
: Rounds a value to a given precision. By default rounds to the nearest integer
round(Math.PI, 2) // 3.14
modulo(n: number, d: number)
: Computesn
modulod
.
Note: the modulo operator has the same sign as the divisor d
whereas the remainder n % d
has
the same sign as the dividend n
modulo(-1, 3); // 2
-1 % 3; // -1
merge
: Type-safeObject.assign
const m = merge(
{ foo: 123 },
{ foo: "abc", bar: 123 },
{ foo: true, baz: "abc" }
)
typeof m // { foo: boolean; bar: number; baz: string }
debounce
: A debounce decorator. Parameters:func
The function to debounce.delay
(default: 100) Minimum delay in ms between calls.throttle
(default:false
) When debouncing every new call tofunc
resets the delay timer. When throttling the function ensures there is at leastdelay
ms between calls
const arr = [];
const fn = debounce(() => arr.push(Math.random()), 10);
fn();
await sleep(6);
fn();
await sleep(6);
fn();
await sleep(11);
arr.length; // 1
Debounce
: a debounce class, similar to the simpler function, but with the ability toflush
randint(a:number, b: number)
: Returns a random integer in[a;b]
randint(0, 5) // 2
regexEscape
: escape special Regex characters
regexEscape(".") // \.
regexEscape("(*.*)") // \(\*\.\*\)
areSetsEqual
: checks whether two sets are equal
const s1 = new Set([2, 3, 4]);
const s2 = new Set([4, 3, 2]);
areSetsEqual(s1, s2); // true
randomString
: Creates a random string of a given length in the alphabet[a-zA-Z0-9_-]
(64 characters)
randomString(8); // TNxOLDho
nanoId
: A fast alias ofrandomString
withlength = 8
by default
nanoId(); // b6eKfYLB
capitalize
: Turns the first letter of a string to uppercase
capitalize("capitalized") // "Capitalized"
trim
,trimStart
,trimEnd
: trim (regex escaped) characters (substring) from a string
trim("--dashes-", "-") // "dashes"
trimEnd("ellipsis...", ".") // "ellipsis"
type
: Returns a string representation of the type of an object and is more precise thantypeof
.
// null / undefined types
type(null); // "null"
type(undefined); // "undefined"
// other primitive types
type(0); // "number"
type(BigInt(0)); // "bigint"
type(true); // "boolean"
type(""); // "string"
type(Symbol("")); // "symbol"
// object types
type([]); // "array"
type(new Date()); // "date"
type(new Boolean(true)); // "boolean"
type(new Number(0)); // "number"
type(new String("")); // "string"
type(new Error("")); // "error"
type(new RegExp("a")); // "regexp"
type(/a/); // "regexp"
type({}); // "object"
// function type
type(() => 1); // "function"
type(class Dog {}); // "class"
-
Prettify<T>
: Prettify types by ensuring type expansion -
Required<T, K extends keyof T>
: Require only a specific subset of keys ofT
-
Partial<T, K extends keyof T>
: Partial on specific keys ofT
-
StrictOmit<T, K extends keyof T>
:Omit
with constrained keys -
StrictExtract<T, U extends T>
:Extract
with constrained keys -
Timeout
: Return type ofsetTimeout
-
StructuredCloneValue
: allowable values for thestructuredClone
function