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);