@ngxs-labs/entity-state
Version:
<p align="center"> <img src="https://raw.githubusercontent.com/ngxs-labs/emitter/master/docs/assets/logo.png"> </p>
58 lines (57 loc) • 2.48 kB
TypeScript
import { EntityStateModel } from './models';
export declare namespace IdStrategy {
abstract class IdGenerator<T> {
protected readonly idKey: keyof T;
protected constructor(idKey: keyof T);
/**
* Generates a completely new ID.
* The IdGenerator's implementation has to ensure that the generated ID does not exist in the current state.
* It can throw an UnableToGenerateIdError if it's unable to do so.
* @param entity The entity to generate an ID for
* @param state The current state
* @see getPresentIdOrGenerate
* @see UnableToGenerateIdError
*/
abstract generateId(entity: Partial<T>, state: EntityStateModel<any>): string;
/**
* Checks if the given id is in the state's ID array
* @param id the ID to check
* @param state the current state
*/
isIdInState(id: string, state: EntityStateModel<any>): boolean;
/**
* This function tries to get the present ID of the given entity with #getIdOf.
* If it's undefined the #generateId function will be used.
* @param entity The entity to get the ID from
* @param state The current state
* @see getIdOf
* @see generateId
*/
getPresentIdOrGenerate(entity: Partial<T>, state: EntityStateModel<any>): string;
/**
* A wrapper for #getIdOf. If the function returns undefined an error will be thrown.
* @param entity The entity to get the ID from
* @see getIdOf
* @see InvalidIdOfError
*/
mustGetIdOf(entity: any): string;
/**
* Returns the ID for the given entity. Can return undefined.
* @param entity The entity to get the ID from
*/
getIdOf(entity: any): string | undefined;
}
class IncrementingIdGenerator<T> extends IdGenerator<T> {
constructor(idKey: keyof T);
generateId(entity: Partial<T>, state: EntityStateModel<any>): string;
}
class UUIDGenerator<T> extends IdGenerator<T> {
constructor(idKey: keyof T);
generateId(entity: Partial<T>, state: EntityStateModel<any>): string;
private uuidv4;
}
class EntityIdGenerator<T> extends IdGenerator<T> {
constructor(idKey: keyof T);
generateId(entity: Partial<T>, state: EntityStateModel<any>): string;
}
}