epps
Version:
Enhances Pinia stores with advanced features such as persistence, encryption, and store extension. Simplifies state management and ensures data security for Vue.js and Nuxt applications.
33 lines (32 loc) • 1.25 kB
TypeScript
import Crypt from "../services/Crypt";
import Persister from "../services/Persister";
import Store from "./Store";
import type { Store as PiniaStore, StateTree } from "pinia";
import type { EppsStoreOptions } from "../types/store";
export default class StorePersister extends Store {
protected _crypt?: Crypt;
private _excludedKeys;
protected _persister?: Persister;
private _propertiesToEncrypt;
private _watchedStore;
constructor(store: PiniaStore, options: EppsStoreOptions, persister: Persister, watchedStore: Set<string>, crypt?: Crypt, debug?: boolean);
augmentStore(): void;
private cryptProperty;
cryptState(state: StateTree, decrypt?: boolean): Promise<StateTree>;
private isEncrypted;
private getPropertiesToEncrypt;
getPersistedState(decrypt?: boolean): Promise<StateTree | undefined>;
private getStateToPersist;
private getWatchMutation;
hasPersistProperty(): boolean;
private initExcludedKeys;
persist(): Promise<void>;
propertyShouldBePersisted(property: string): boolean;
private remember;
shouldBePersisted(): boolean;
private stateIsEmpty;
private stopWatch;
private storeSubscription;
toBeCrypted(): boolean;
toBeWatched(): boolean;
}