UNPKG

@contextjs/collections

Version:

Strongly-typed collection classes for TypeScript, including List, Dictionary, Queue, Stack, and HashSet.

245 lines (208 loc) 5.68 kB
/** * @license * Copyright ContextJS All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found at https://github.com/contextjs/context/blob/main/LICENSE */ /** * @license * Copyright ContextJS All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found at https://github.com/contextjs/context/blob/main/LICENSE */ export declare class Dictionary<TKey, TValue> { /** * Adds or updates a key-value pair in the dictionary. * @param key The key to set. * @param value The value associated with the key. */ set(key: TKey, value: TValue): void; /** * Retrieves the value associated with the specified key. * Returns `null` if the key is not present. * @param key The key to retrieve. */ get(key: TKey): TValue | null; /** * Determines whether the dictionary contains the specified key. * @param key The key to check. */ has(key: TKey): boolean; /** * Removes the value associated with the specified key, if present. * @param key The key to remove. */ delete(key: TKey): void; /** * Removes all entries from the dictionary. */ clear(): void; /** * Returns an array of all values in the dictionary. */ values(): TValue[]; /** * Returns an array of all keys in the dictionary. */ keys(): TKey[]; /** * Gets the total number of entries in the dictionary. */ count(): number; } /** * Represents a hash set (unique values) using custom equality comparison. * @template T The type of elements in the set. */ export declare class HashSet<T> { /** * Creates a new hash set. * @param equals Optional equality comparer. Defaults to strict equality (===). */ constructor(equals?: (a: T, b: T) => boolean); /** * Adds an item to the set if it doesn't already exist. * @param item The item to add. */ public add(item: T): void; /** * Removes an item from the set. * @param item The item to remove. */ public remove(item: T): void; /** * Checks whether the set contains an item. * @param item The item to check. * @returns True if the item exists, otherwise false. */ public has(item: T): boolean; /** * Clears all items from the set. */ public clear(): void; /** * Gets the number of items in the set. */ public get count(): number; /** * Indicates whether the set is empty. */ public get isEmpty(): boolean; /** * Converts the set to an array. * @returns An array of set elements. */ public toArray(): T[]; } /** * Represents a list (dynamic array) data structure. * @template T The type of elements in the list. */ export declare class List<T> { /** * Adds an item to the list. * @param item The item to add. */ public add(item: T): void; /** * Removes an item from the list by index. * @param index The index of the item to remove. */ public remove(index: number): void; /** * Gets an item from the list by index. * @param index The index of the item to get. * @returns The item or null if not found. */ public get(index: number): T | null; /** * Clears all items from the list. */ public clear(): void; /** * Gets the number of items in the list. */ public get count(): number; /** * Converts the list to an array. * @returns An array of items in the list. */ public toArray(): T[]; } /** * Represents a queue (FIFO) data structure. * @template T The type of elements in the queue. */ export declare class Queue<T> { /** * Enqueues an item into the queue. * @param item The item to add. */ public enqueue(item: T): void; /** * Dequeues and returns the first item from the queue. * @returns The dequeued item, or null if the queue is empty. */ public dequeue(): T | null; /** * Gets the item at the front of the queue without removing it. */ public get peek(): T | null; /** * Clears all items from the queue. */ public clear(): void; /** * Gets the number of items in the queue. */ public get count(): number; /** * Indicates whether the queue is empty. */ public get isEmpty(): boolean; /** * Converts the queue to an array. * @returns An array of queue items in insertion order. */ public toArray(): T[]; } /** * Represents a stack (LIFO) data structure. * @template T The type of elements in the stack. */ export declare class Stack<T> { /** * Pushes an element onto the stack. * @param item The item to push. */ public push(item: T): void; /** * Pops an element off the stack. * @returns The popped element, or null if the stack is empty. */ public pop(): T | null; /** * Gets the current element on the stack without removing it. * @returns The current element, or null if the stack is empty. */ public get current(): T | null; /** * Clears all elements from the stack. */ public clear(): void; /** * Gets the number of elements in the stack. */ public get count(): number; /** * Indicates whether the stack is empty. */ public get isEmpty(): boolean; /** * Converts the stack to an array. * @returns An array of stack elements in insertion order. */ public toArray(): T[]; }