UNPKG

@konfirm/decoy

Version:

Proxy objects, keeping track of mutations to commit/rollback

60 lines (59 loc) 1.65 kB
export type Decoy<T extends object> = T; /** * Create a new Decoy * * @export * @template T * @param {T} target * @param {boolean} [onlyLastKeyMutation] * @return {*} {Decoy<T>} */ export declare function create<T extends object = object>(target: T, onlyLastKeyMutation?: boolean): Decoy<T>; /** * Calculate the checksum of given Decoy * * @export * @param {Decoy<object>} proxy * @return {*} {string} */ export declare function checksum(proxy: Decoy<object>): string; export declare function isDecoy<T extends object = object>(input: any): input is Decoy<T>; /** * Purge a Decoy and its linked Decoys * * @export * @template T * @param {Decoy<T>} decoy * @return {*} {Promise<T>} */ export declare function purge<T extends object = object>(decoy: Decoy<T>): Promise<T>; /** * Commit the mutations to the decoyed object * * @export * @template T * @param {Decoy<T>} decoy * @param {...Array<keyof T>} keys * @return {*} {Promise<T>} */ export declare function commit<T extends object = object>(decoy: Decoy<T>, ...keys: Array<keyof T>): Promise<T>; /** * Roll back the mutations on the Decoy * * @export * @template T * @param {Decoy<T>} decoy * @param {...Array<keyof T>} keys * @return {*} {Promise<T>} */ export declare function rollback<T extends object = object>(decoy: Decoy<T>, ...keys: Array<keyof T>): Promise<T>; /** * Check whether the Decoy has mutations * * @export * @template T * @param {Decoy<T>} decoy * @param {...Array<keyof T>} keys * @return {*} {boolean} */ export declare function hasMutations<T extends object = object>(decoy: Decoy<T>, ...keys: Array<keyof T>): boolean;