@push.rocks/lik
Version:
Provides a collection of lightweight helpers and utilities for Node.js projects.
105 lines (104 loc) • 2.85 kB
TypeScript
import * as plugins from './classes.plugins.js';
export declare const uni: (prefix?: string) => string;
export interface IObjectmapForEachFunction<T> {
(itemArg: T): void;
}
export interface IObjectmapFindFunctionSync<T> {
(itemArg: T): boolean;
}
export interface IObjectmapFindFunction<T> {
(itemArg: T): Promise<boolean>;
}
export interface IObjectMapEventData<T> {
operation: 'add' | 'remove';
payload: T;
}
/**
* allows keeping track of objects
*/
export declare class ObjectMap<T> {
private fastMap;
eventSubject: plugins.smartrx.rxjs.Subject<IObjectMapEventData<T>>;
/**
* returns a new instance
*/
constructor();
/**
* adds an object mapped to a string
* the string must be unique
*/
addMappedUnique(uniqueKeyArg: string, objectArg: T): void;
/**
* fastest way to get an object from the map
* @param uniqueKey
*/
getMappedUnique(uniqueKeyArg: string): T;
/**
* remove key
* @param functionArg
*/
removeMappedUnique(uniqueKey: string): void;
/**
* add object to Objectmap
* returns false if the object is already in the map
* returns true if the object was added successfully
*/
add(objectArg: T): string;
/**
* like .add but adds an whole array of objects
*/
addArray(objectArrayArg: T[]): void;
/**
* check if object is in Objectmap
*/
checkForObject(objectArg: T): boolean;
/**
* get key for object
* @param findFunction
*/
getKeyForObject(objectArg: T): string;
/**
* find object
*/
find(findFunction: IObjectmapFindFunction<T>): Promise<T>;
findSync(findFunction: IObjectmapFindFunctionSync<T>): T;
/**
* finds a specific element and then removes it
*/
findOneAndRemove(findFunction: IObjectmapFindFunction<T>): Promise<T>;
findOneAndRemoveSync(findFunction: IObjectmapFindFunctionSync<T>): T;
/**
* run function for each item in Objectmap
*/
forEach(functionArg: IObjectmapForEachFunction<T>): Promise<void>;
/**
* gets an object in the Observablemap and removes it, so it can't be retrieved again
*/
getOneAndRemove(): T;
/**
* returns a cloned array of all the objects currently in the Objectmap
*/
getArray(): T[];
/**
* check if Objectmap ist empty
*/
isEmpty(): boolean;
/**
* remove object from Objectmap
*/
remove(objectArg: T): T;
/**
* wipe Objectmap
*/
wipe(): void;
/**
* returns a new Objectmap that includes
*/
concat(objectMapArg: ObjectMap<T>): ObjectMap<T>;
/**
* tries to merge another Objectmap
* Note: uniqueKeyCollisions will cause overwrite
* @param objectMapArg
*/
addAllFromOther(objectMapArg: ObjectMap<T>): void;
}