/* * Copyright 2021 James Lyne * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import { createStore, Store as VuexStore, // createLogger, CommitOptions, DispatchOptions, } from 'vuex'; import {getters, Getters} from "@/store/getters"; import {mutations, Mutations} from "@/store/mutations"; import {state, State} from "@/store/state"; import {actions, Actions} from "@/store/actions"; export type Store = Omit< VuexStore, "commit" | "getters" | "dispatch" > & { commit[1]>( key: K, payload: P, options?: CommitOptions, ):ReturnType; } & { getters: { [K in keyof Getters]: ReturnType }; } & { dispatch( key: K, payload: Parameters[1], options?: DispatchOptions ):ReturnType; }; export const store = createStore({ state, mutations, getters, actions, // plugins: [createLogger()], }); // define your own `useStore` composition function export function useStore() { return store as Store; }