import {Store} from 'vuex'; import {computed} from '@vue/composition-api'; import {computedGetter, getAction, getMutation, getStoreFromInstance, useMapping, KnownKeys, RefTypes, ExtractTypes, ExtractGetterTypes, Nullish} from './util'; import {useActions, useState, useGetters, useMutations} from './global' export const useNamespacedActions = useActions export const useNamespacedGetters = useGetters export const useNamespacedMutations = useMutations export const useNamespacedState = useState export function createNamespacedHelpers(storeOrNamespace: Store | string, namespace?: string):{ useState: (map?: KnownKeys[]) => RefTypes; useGetters: (map?: KnownKeys[]) => ExtractGetterTypes; useMutations: (map?: KnownKeys[]) => ExtractTypes; useActions: (map?: KnownKeys[]) => ExtractTypes; } { let store: Store | Nullish = undefined; if (arguments.length === 1) { namespace = storeOrNamespace as string; } else { store = storeOrNamespace as Store; if (!namespace) { throw new Error('Namespace is missing to provide namespaced helpers') } } return { useState: (map?: KnownKeys[]) => useState(store, namespace as string, map), useGetters: (map?: KnownKeys[]) => useGetters(store, namespace as string, map), useMutations: (map?: KnownKeys[]) => useMutations(store, namespace as string, map), useActions: (map?: KnownKeys[]) => useActions(store, namespace as string, map), } }