UNPKG

@rattus-orm/vuex

Version:
42 lines (36 loc) 2.16 kB
import { Repository, Model, State, Elements, DataProviderHelpers, DataProvider, SerializedStorage, ModulePath } from '@rattus-orm/core'; import { UseComputedRepository } from '@rattus-orm/core/utils/vueComposableUtils'; import { MutationTree, Store, GetterTree, Plugin } from 'vuex'; import { RattusOrmInstallerOptions } from '@rattus-orm/core/utils/integrationsHelpers'; declare function useRepository<R extends Repository<InstanceType<M>>, M extends typeof Model = typeof Model>(model: M, connection?: string): UseComputedRepository<R, M>; interface Mutations<S extends State> extends MutationTree<S> { save(state: S, records: Elements): void; insert(state: S, records: Elements): void; update(state: S, records: Elements): void; fresh(state: S, records: Elements): void; delete(state: S, ids: string[]): void; flush(state: S): void; } declare class VuexDataProvider extends DataProviderHelpers implements DataProvider { protected readonly store: Store<SerializedStorage>; constructor(store: Store<SerializedStorage>); delete(module: ModulePath, ids: string[]): void; flush(module: ModulePath): void; replace(module: ModulePath, records: Elements): void; getModuleState(module: ModulePath): State; insert(module: ModulePath, records: Elements): void; registerConnection(name: string): void; registerModule(path: ModulePath, initialState?: State): void; save(module: ModulePath, records: Elements): void; update(module: ModulePath, records: Elements): void; hasModule(module: ModulePath): boolean; dump(): SerializedStorage; restore(data: SerializedStorage): void; protected getModulePathString(modulePath: ModulePath): string; protected createMutations(): Mutations<State>; protected createGetters<T>(): GetterTree<T, SerializedStorage>; protected commit(module: ModulePath, name: keyof Mutations<State>, payload?: any): void; protected moduleDataExists([connection, moduleName]: ModulePath): boolean; } declare function installRattusORM(options?: RattusOrmInstallerOptions): Plugin<any>; export { VuexDataProvider, installRattusORM, useRepository };