From d71d89f0711dd9109d34de0e8da26d95bf6cd57d Mon Sep 17 00:00:00 2001 From: Eduardo San Martin Morote Date: Wed, 28 Jul 2021 18:20:46 +0200 Subject: [PATCH] refactor(types): move extractor types --- src/store.ts | 62 +++------------------------------------------------- src/types.ts | 61 +++++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 62 insertions(+), 61 deletions(-) diff --git a/src/store.ts b/src/store.ts index 5eaf7edd..766022cf 100644 --- a/src/store.ts +++ b/src/store.ts @@ -37,6 +37,9 @@ import { DefineStoreOptionsInPlugin, StoreGeneric, StoreWithGetters, + _ExtractActionsFromSetupStore, + _ExtractGettersFromSetupStore, + _ExtractStateFromSetupStore, } from './types' import { getActivePinia, @@ -132,8 +135,6 @@ function createOptionsStore< store = createSetupStore(id, setup, options, pinia, hot) - // TODO: HMR should also replace getters here - store.$reset = $reset return store as any @@ -574,63 +575,6 @@ function createSetupStore< // } -/** - * @internal - */ -type _SpreadStateFromStore = K extends readonly [ - infer A, - ...infer Rest -] - ? A extends string | number | symbol - ? SS extends Record> - ? _SpreadStateFromStore - : SS extends Record - ? Record> & _SpreadStateFromStore - : never - : {} - : {} - -/** - * @internal - */ -type _SpreadPropertiesFromObject< - SS, - K extends readonly any[], - T -> = K extends readonly [infer A, ...infer Rest] - ? A extends string | number | symbol - ? SS extends Record - ? Record> & _SpreadPropertiesFromObject - : _SpreadPropertiesFromObject - : {} - : {} - -/** - * @internal - */ -type _ExtractStateFromSetupStore = _SpreadStateFromStore< - SS, - _UnionToTuple -> - -/** - * @internal - */ -type _ExtractActionsFromSetupStore = _SpreadPropertiesFromObject< - SS, - _UnionToTuple, - _Method -> - -/** - * @internal - */ -type _ExtractGettersFromSetupStore = _SpreadPropertiesFromObject< - SS, - _UnionToTuple, - ComputedRef -> - /** * Extract the actions of a store type. Works with both a Setup Store or an * Options Store. diff --git a/src/types.ts b/src/types.ts index e00bb23f..e6d4ccdd 100644 --- a/src/types.ts +++ b/src/types.ts @@ -1,4 +1,4 @@ -import { DebuggerEvent, Ref, UnwrapRef } from 'vue' +import { ComputedRef, DebuggerEvent, Ref, UnwrapRef } from 'vue' import { Pinia } from './rootStore' /** @@ -549,6 +549,63 @@ export interface DefineStoreOptionsBase { hydrate?(store: Store, initialState: UnwrapRef): void } +/** + * @internal + */ +type _SpreadStateFromStore = K extends readonly [ + infer A, + ...infer Rest +] + ? A extends string | number | symbol + ? SS extends Record> + ? _SpreadStateFromStore + : SS extends Record + ? Record> & _SpreadStateFromStore + : never + : {} + : {} + +/** + * @internal + */ +type _SpreadPropertiesFromObject< + SS, + K extends readonly any[], + T +> = K extends readonly [infer A, ...infer Rest] + ? A extends string | number | symbol + ? SS extends Record + ? Record> & _SpreadPropertiesFromObject + : _SpreadPropertiesFromObject + : {} + : {} + +/** + * @internal + */ +export type _ExtractStateFromSetupStore = _SpreadStateFromStore< + SS, + _UnionToTuple +> + +/** + * @internal + */ +export type _ExtractActionsFromSetupStore = _SpreadPropertiesFromObject< + SS, + _UnionToTuple, + _Method +> + +/** + * @internal + */ +export type _ExtractGettersFromSetupStore = _SpreadPropertiesFromObject< + SS, + _UnionToTuple, + ComputedRef +> + /** * Options parameter of `defineStore()` for option stores. Can be extended to * augment stores with the plugin API. @see {@link DefineStoreOptionsBase}. @@ -595,7 +652,7 @@ export interface DefineStoreOptions< */ export interface DefineSetupStoreOptions< Id extends string, - // TODO: pass SS instead + // NOTE: Passing SS seems to make TS crash S extends StateTree, G, A /* extends ActionsTree */ -- 2.47.2