github.com/covergates/covergates@v0.2.2-0.20201009050117-42ef8a19fb95/web/src/store/index.ts (about) 1 import Vue from 'vue'; 2 import Vuex from 'vuex'; 3 import UserModule, { 4 Actions as UserActions, 5 Mutations as UserMutations 6 } from './modules/user'; 7 import RepoModule, { 8 Actions as RepoActions, 9 Mutations as RepoMutations 10 } from './modules/repository'; 11 import ReportModule, { 12 Actions as ReportActions, 13 Mutations as ReportMutations 14 } from './modules/report'; 15 Vue.use(Vuex); 16 17 function getBaseURL(): string { 18 const base = process.env.NODE_ENV === 'production' ? VUE_BASE : process.env.BASE_URL; 19 if (base === '/') { 20 return ''; 21 } 22 return base; 23 } 24 25 /** 26 * Enum for Vux Mutations 27 */ 28 export const Mutations = { 29 ...UserMutations, 30 ...RepoMutations, 31 ...ReportMutations 32 }; 33 34 /** 35 * Enum for Vuex Actions 36 * @readonly 37 * @enum 38 */ 39 export const Actions = { 40 ...UserActions, 41 ...RepoActions, 42 ...ReportActions 43 }; 44 45 /** 46 * State of the the Vux, includes the state from modules. 47 * Modules should declare it's own state to this interface. 48 */ 49 export interface State { 50 base: string; 51 } 52 53 const rootState = { 54 base: getBaseURL() 55 }; 56 57 /** 58 * RootState is the state that belongs the root store, 59 * excludes state from modules. 60 */ 61 export type RootState = typeof rootState; 62 export const storeConfig = { 63 state: rootState, 64 mutations: {}, 65 actions: {}, 66 modules: { 67 user: UserModule, 68 repository: RepoModule, 69 report: ReportModule 70 } 71 }; 72 export default new Vuex.Store<RootState>(storeConfig);