UNPKG

@obsidize/rx-map

Version:

ES6 Map with rxjs extensions for change detection

79 lines (78 loc) 3.11 kB
import { Predicate, PropertySelector } from '../common/utility'; export declare type EntityTransform<T> = (entity: T) => T; export interface Update<K, V> { key: K; changes: Partial<V>; } export interface EntityMapLike<K, V> { keyOf(entity: V): K | undefined; keys(): K[]; values(): V[]; entries(): [K, V][]; getOne(key: K): V | undefined; getMany(keys: K[]): V[]; getManyExisting(keys: K[]): V[]; hasOne(key: K): boolean; hasEvery(keys: K[]): boolean; hasSome(keys: K[]): boolean; addOne(entity: V): V | undefined; addMany(entities: V[]): V[]; setOne(entity: V): V; setMany(entities: V[]): V[]; setAll(entities: V[]): V[]; removeOne(key: K): boolean; removeMany(keys: K[]): boolean[]; removeWhere(predicate: Predicate<V>): V[]; removeAll(): void; updateOne(update: Update<K, V>): V | undefined; updateMany(updates: Update<K, V>[]): V[]; updateOneByKey(key: K, changes: Partial<V>): V | undefined; upsertOne(entity: V): V | undefined; upsertMany(entities: V[]): V[]; transformOne(key: K, transform: EntityTransform<V>): V | undefined; transformMany(transform: EntityTransform<V>): V[]; } /** * Heavily influenced by @ngrx/entity's entity adapter interface. * The methods defined here are intended to follow the same paradigm as the ngrx adapter collection methods: * https://ngrx.io/guide/entity/adapter#adapter-collection-methods */ export declare class EntityMap<K, V, T extends Map<K, V>> implements EntityMapLike<K, V> { protected readonly store: T; protected readonly selectKey: PropertySelector<K, V>; constructor(store: T, selectKey: PropertySelector<K, V>); protected onSetEntry(key: K, value: V): void; protected onDeleteEntry(key: K): boolean; protected onMergeEntries(a?: Partial<V>, b?: Partial<V>): V; get count(): number; keyOf(entity: V): K | undefined; isValidKey(key: K | undefined | null): boolean; iterableKeys(): IterableIterator<K>; keys(): K[]; iterableValues(): IterableIterator<V>; values(): V[]; iterableEntries(): IterableIterator<[K, V]>; entries(): [K, V][]; getOne(key: K): V | undefined; getMany(keys: K[]): V[]; getManyExisting(keys: K[]): V[]; hasOne(key: K): boolean; hasEvery(keys: K[]): boolean; hasSome(keys: K[]): boolean; addOne(entity: V): V | undefined; addMany(entities: V[]): V[]; setOne(entity: V): V; setMany(entities: V[]): V[]; setAll(entities: V[]): V[]; removeOne(key: K): boolean; removeMany(keys: K[]): boolean[]; removeWhere(predicate: Predicate<V>): V[]; removeAll(): void; updateOneByKey(key: K, changes: Partial<V>): V | undefined; updateOne(update: Update<K, V>): V | undefined; updateMany(updates: Update<K, V>[]): V[]; upsertOne(entity: V): V | undefined; upsertMany(entities: V[]): V[]; transformOne(key: K, transform: EntityTransform<V>): V | undefined; transformMany(transform: EntityTransform<V>): V[]; }