// index.ts import Vue from 'vue'; import Vuex, { Store, StoreOptions } from 'vuex'; import RootState from './types/RootStateModel'; import { alertStore as alerts } from './modules/alert-store'; import { assetStore as assets } from './modules/asset-store'; import { dataStore as data } from './modules/data-store'; import { permissionStore as permissions } from './modules/permission-store'; import { pageStore as pages } from './modules/page-store'; import { pageCrudStore as cmsPage } from './modules/page-crud-store'; import { translationsStore as translations } from './modules/translations-store'; Vue.use(Vuex); export const storeConfig: StoreOptions = { modules: { alerts, assets, data, permissions, pages, cmsPage, translations } }; export class CmsStore extends Store { public initialize() { // @ts-ignore // Get the internal Vuex actions variable, containing all module actions. const actions = this._actions; // Iterate over all actions inside or outside of modules, in search of '$init' actions to execute. for (const actionName of Object.keys(actions)) { if (!actionName.match(/\$init(?:$|\W)/i)) { continue; } // Execute an $init action is if it was called by Vuex. actions[actionName][0](); } } } export default new CmsStore(storeConfig);