UNPKG

shelving

Version:

Toolkit for using data in JavaScript.

28 lines (27 loc) 1.65 kB
import type { AnyCaller } from "./function.js"; /** `Set` that cannot be changed. */ export type ImmutableSet<T = unknown> = ReadonlySet<T>; /** `Set` that can be changed. */ export type MutableSet<T = unknown> = Set<T>; /** Things that can be converted to sets. */ export type PossibleSet<T> = ImmutableSet<T> | Iterable<T>; /** Get the type of the _items_ in a set. */ export type SetItem<X> = X extends ReadonlySet<infer Y> ? Y : never; /** Is an unknown value a set? */ export declare function isSet(value: unknown): value is ImmutableSet; /** Assert that a value is a `Set` instance. */ export declare function assertSet(value: unknown, caller?: AnyCaller): asserts value is ImmutableSet; /** Convert a possible set to a `Set`. */ export declare function getSet<T>(value: PossibleSet<T>): ImmutableSet; /** Apply a limit to a set. */ export declare function limitSet<T>(set: ImmutableSet<T>, limit: number): ImmutableSet<T>; /** Is an unknown value an item in a set? */ export declare function isSetItem<T>(set: ImmutableSet<T>, item: unknown): item is T; /** Assert that an unknown value is an item in a set. */ export declare function assertSetItem<T>(set: ImmutableSet<T>, item: unknown, caller?: AnyCaller): asserts item is T; /** Add an item to a set (by reference) and return the set item. */ export declare function addSetItem<T>(set: MutableSet<T>, item: T): T; /** Add multiple items to a set (by reference). */ export declare function addSetItems<T>(set: MutableSet<T>, ...items: T[]): void; /** Remove multiple items from a set (by reference). */ export declare function deleteSetItems<T>(set: MutableSet<T>, ...items: T[]): void;