UNPKG

@monstermann/fn

Version:

A utility library for TypeScript.

35 lines (33 loc) 886 B
import { dfdlT } from "@monstermann/dfdl"; import { cloneSet } from "@monstermann/remmi"; //#region src/set/addOrElse.ts /** * `addOrElse(target, value, orElse)` * * Adds a `value` to the `target` set and returns a new set. If the value already exists in the set, calls the `orElse` function with the target set and returns its result. * * ```ts * addOrElse(new Set([1, 2]), 3, (set) => set.size); // Set([1, 2, 3]) * addOrElse(new Set([1, 2]), 2, (set) => set.size); // 2 * ``` * * ```ts * pipe( * new Set([1, 2]), * addOrElse(3, (set) => set.size), * ); // Set([1, 2, 3]) * * pipe( * new Set([1, 2]), * addOrElse(2, (set) => set.size), * ); // 2 * ``` */ const addOrElse = dfdlT((target, value, orElse) => { if (target.has(value)) return orElse(target); const result = cloneSet(target); result.add(value); return result; }, 3); //#endregion export { addOrElse };