vuex-class-modules
Version:
Typescript class decorators for class-style vuex modules.
42 lines (41 loc) • 1.37 kB
TypeScript
import { Store } from "vuex";
import { VuexModule } from "./VuexModule";
export interface ModuleOptions {
generateMutationSetters?: boolean;
}
export interface RegisterOptions {
store: Store<any>;
name: string;
}
export interface IVuexModule extends Dictionary<any> {
__options: RegisterOptions;
}
export interface IModulePrototype {
__mutations?: Dictionary<(payload?: any) => void>;
__actions?: Dictionary<(payload?: any) => Promise<void>>;
}
export declare type ModulePrototype = IModulePrototype & Function;
declare type Dictionary<T> = {
[k: string]: T;
};
interface ModuleDefinition {
state: Dictionary<any>;
moduleRefs: Dictionary<VuexModule>;
getters: Dictionary<() => void>;
mutations: Dictionary<(payload?: any) => void>;
actions: Dictionary<(payload?: any) => Promise<void>>;
localFunctions: Dictionary<(...args: any[]) => any>;
}
export declare class VuexClassModuleFactory {
moduleOptions: ModuleOptions;
instance: IVuexModule;
registerOptions: RegisterOptions;
definition: ModuleDefinition;
constructor(classModule: ModulePrototype, instance: IVuexModule, moduleOptions: ModuleOptions);
private init;
registerVuexModule(): void;
buildAccessor(): any;
private buildThisProxy;
private getMutationSetterName;
}
export {};