DefineStoreOptionsInPlugin,
StoreGeneric,
StoreWithGetters,
+ _ExtractActionsFromSetupStore,
+ _ExtractGettersFromSetupStore,
+ _ExtractStateFromSetupStore,
} from './types'
import {
getActivePinia,
store = createSetupStore(id, setup, options, pinia, hot)
- // TODO: HMR should also replace getters here
-
store.$reset = $reset
return store as any
// }
-/**
- * @internal
- */
-type _SpreadStateFromStore<SS, K extends readonly any[]> = K extends readonly [
- infer A,
- ...infer Rest
-]
- ? A extends string | number | symbol
- ? SS extends Record<A, _Method | ComputedRef<any>>
- ? _SpreadStateFromStore<SS, Rest>
- : SS extends Record<A, any>
- ? Record<A, UnwrapRef<SS[A]>> & _SpreadStateFromStore<SS, Rest>
- : 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<A, T>
- ? Record<A, UnwrapRef<SS[A]>> & _SpreadPropertiesFromObject<SS, Rest, T>
- : _SpreadPropertiesFromObject<SS, Rest, T>
- : {}
- : {}
-
-/**
- * @internal
- */
-type _ExtractStateFromSetupStore<SS> = _SpreadStateFromStore<
- SS,
- _UnionToTuple<keyof SS>
->
-
-/**
- * @internal
- */
-type _ExtractActionsFromSetupStore<SS> = _SpreadPropertiesFromObject<
- SS,
- _UnionToTuple<keyof SS>,
- _Method
->
-
-/**
- * @internal
- */
-type _ExtractGettersFromSetupStore<SS> = _SpreadPropertiesFromObject<
- SS,
- _UnionToTuple<keyof SS>,
- ComputedRef<any>
->
-
/**
* Extract the actions of a store type. Works with both a Setup Store or an
* Options Store.
-import { DebuggerEvent, Ref, UnwrapRef } from 'vue'
+import { ComputedRef, DebuggerEvent, Ref, UnwrapRef } from 'vue'
import { Pinia } from './rootStore'
/**
hydrate?(store: Store, initialState: UnwrapRef<S>): void
}
+/**
+ * @internal
+ */
+type _SpreadStateFromStore<SS, K extends readonly any[]> = K extends readonly [
+ infer A,
+ ...infer Rest
+]
+ ? A extends string | number | symbol
+ ? SS extends Record<A, _Method | ComputedRef<any>>
+ ? _SpreadStateFromStore<SS, Rest>
+ : SS extends Record<A, any>
+ ? Record<A, UnwrapRef<SS[A]>> & _SpreadStateFromStore<SS, Rest>
+ : 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<A, T>
+ ? Record<A, UnwrapRef<SS[A]>> & _SpreadPropertiesFromObject<SS, Rest, T>
+ : _SpreadPropertiesFromObject<SS, Rest, T>
+ : {}
+ : {}
+
+/**
+ * @internal
+ */
+export type _ExtractStateFromSetupStore<SS> = _SpreadStateFromStore<
+ SS,
+ _UnionToTuple<keyof SS>
+>
+
+/**
+ * @internal
+ */
+export type _ExtractActionsFromSetupStore<SS> = _SpreadPropertiesFromObject<
+ SS,
+ _UnionToTuple<keyof SS>,
+ _Method
+>
+
+/**
+ * @internal
+ */
+export type _ExtractGettersFromSetupStore<SS> = _SpreadPropertiesFromObject<
+ SS,
+ _UnionToTuple<keyof SS>,
+ ComputedRef<any>
+>
+
/**
* Options parameter of `defineStore()` for option stores. Can be extended to
* augment stores with the plugin API. @see {@link DefineStoreOptionsBase}.
*/
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 */