UNPKG

enumset32

Version:

High-performance, typesafe, small ordered set implemented in TypeScript

46 lines (45 loc) 3.66 kB
/*! * Copyright (c) 2019 Justin Johansson */ export interface Enumset32<ENUM extends NumericEnumLike<ENUM>> { __Enumset32: undefined | ENUM; } export declare type NumericEnumLike<ENUM> = Record<keyof ENUM, number & ENUM[keyof ENUM]> & { [key: number]: undefined | string; }; export declare type UniversalEnumset32<ENUM extends NumericEnumLike<ENUM>> = _UniversalEnumset32<ENUM> & Enumset32<ENUM>; export declare class _UniversalEnumset32<ENUM extends NumericEnumLike<ENUM>> { static create<ENUM extends NumericEnumLike<ENUM>>(enumObject: ENUM): UniversalEnumset32<ENUM>; readonly Enum: ENUM; readonly Member: Record<keyof ENUM, Enumset32<ENUM>>; private readonly _univ; private constructor(); readonly Empty: Enumset32<ENUM>; set(member1?: ENUM[keyof ENUM], member2?: ENUM[keyof ENUM], member3?: ENUM[keyof ENUM], member4?: ENUM[keyof ENUM], member5?: ENUM[keyof ENUM], member6?: ENUM[keyof ENUM], member7?: ENUM[keyof ENUM], member8?: ENUM[keyof ENUM], member9?: ENUM[keyof ENUM], member10?: ENUM[keyof ENUM], member11?: ENUM[keyof ENUM], member12?: ENUM[keyof ENUM], member13?: ENUM[keyof ENUM], member14?: ENUM[keyof ENUM], member15?: ENUM[keyof ENUM], member16?: ENUM[keyof ENUM], member17?: ENUM[keyof ENUM], member18?: ENUM[keyof ENUM], member19?: ENUM[keyof ENUM], member20?: ENUM[keyof ENUM], member21?: ENUM[keyof ENUM], member22?: ENUM[keyof ENUM], member23?: ENUM[keyof ENUM], member24?: ENUM[keyof ENUM], member25?: ENUM[keyof ENUM], member26?: ENUM[keyof ENUM], member27?: ENUM[keyof ENUM], member28?: ENUM[keyof ENUM], member29?: ENUM[keyof ENUM], member30?: ENUM[keyof ENUM], member31?: ENUM[keyof ENUM], member32?: ENUM[keyof ENUM]): Enumset32<ENUM>; add(set: Enumset32<ENUM>, member: ENUM[keyof ENUM]): Enumset32<ENUM>; addAll(set1: Enumset32<ENUM>, set2: Enumset32<ENUM>, ...sets: Array<Enumset32<ENUM>>): Enumset32<ENUM>; complement(set: Enumset32<ENUM>): Enumset32<ENUM>; retain(set: Enumset32<ENUM>, member: ENUM[keyof ENUM]): Enumset32<ENUM>; retainAll(set1: Enumset32<ENUM>, set2: Enumset32<ENUM>, ...sets: Array<Enumset32<ENUM>>): Enumset32<ENUM>; remove(set: Enumset32<ENUM>, member: ENUM[keyof ENUM]): Enumset32<ENUM>; removeAll(set1: Enumset32<ENUM>, set2: Enumset32<ENUM>, ...sets: Array<Enumset32<ENUM>>): Enumset32<ENUM>; toggle(set: Enumset32<ENUM>, member: ENUM[keyof ENUM]): Enumset32<ENUM>; toggleAll(set1: Enumset32<ENUM>, set2: Enumset32<ENUM>, ...sets: Array<Enumset32<ENUM>>): Enumset32<ENUM>; empty(set: Enumset32<ENUM>): boolean; excludes(set: Enumset32<ENUM>, member: ENUM[keyof ENUM]): boolean; excludesEvery(set1: Enumset32<ENUM>, set2: Enumset32<ENUM>): boolean; excludesSome(set1: Enumset32<ENUM>, set2: Enumset32<ENUM>): boolean; includes(set: Enumset32<ENUM>, member: ENUM[keyof ENUM]): boolean; includesEvery(set1: Enumset32<ENUM>, set2: Enumset32<ENUM>): boolean; includesSome(set1: Enumset32<ENUM>, set2: Enumset32<ENUM>): boolean; count(set: Enumset32<ENUM>): number; enumEntries(set: Enumset32<ENUM>): ReadonlyArray<[keyof ENUM, ENUM[keyof ENUM]]>; enumKeys(set: Enumset32<ENUM>): ReadonlyArray<keyof ENUM>; enumValues(set: Enumset32<ENUM>): ReadonlyArray<ENUM[keyof ENUM]>; equal(set1: Enumset32<ENUM>, set2: Enumset32<ENUM>): boolean; isEnumKey(key: string): key is string & keyof ENUM; isEnumValue(value: number): value is number & ENUM[keyof ENUM]; toDigitString(set: Enumset32<ENUM>, radix: number): string; valueOf(): Enumset32<ENUM>; } export declare function UniversalEnumset32<ENUM extends NumericEnumLike<ENUM>>(enumObject: ENUM): UniversalEnumset32<ENUM>;