@konfirm/decoy
Version:
Proxy objects, keeping track of mutations to commit/rollback
60 lines (59 loc) • 1.65 kB
TypeScript
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;