UNPKG

@rbxts/sift

Version:

Immutable data library for Luau

54 lines (36 loc) 1.37 kB
import type { AnySet } from "./Util" declare namespace SiftSet { export function add<T, I>(set: Set<T>, ...values: I[]): Set<T | I> export function copy<T extends AnySet>(set: T): T export function count<T, S extends Set<T>>( set: S, predicate?: (item: T) => unknown ): number export function difference<T>(set: Set<T>, ...sets: Set<T>[]): Set<T> export function differenceSymmetric<T>(set: Set<T>, ...sets: Set<T>[]): Set<T> export function filter<T, S extends Set<T>>( set: S, predicate: (item: T, set: Readonly<S>) => unknown ): Set<T> export function fromArray<T>(array: T[]): Set<T> export function has(set: AnySet, item: unknown): boolean export function intersection<T>(...sets: Set<T>[]): Set<T> export function isSubset<A extends AnySet, B extends AnySet>( subset: A, superset: B ): boolean export function isSuperset<A extends AnySet, B extends AnySet>( superset: A, subset: B ): boolean export function map<T, R, S extends Set<T>>( set: S, mapper: (item: T, set: Readonly<S>) => R ): Set<R> export function merge<T>(...sets: Set<T>[]): Set<T> export function subtract<S extends AnySet>(set: S, ...values: unknown[]): S export function toArray<T>(set: Set<T>): T[] // Aliases export { merge as join, merge as union, subtract as delete } } export = SiftSet