UNPKG

zustand-injectors

Version:
19 lines (17 loc) 994 B
import { StateCreator, StoreMutatorIdentifier } from 'zustand/vanilla'; type StoreInjectors<S> = { asyncSliceInitializers: Record<string, () => Promise<StateCreator<S, [], [], unknown>>>; injectAsyncSliceInitializer: (key: string, asyncSliceInitializer: () => Promise<StateCreator<S, [], [], unknown>>) => void; }; type Injectors = <T, Mps extends [StoreMutatorIdentifier, unknown][] = [], Mcs extends [StoreMutatorIdentifier, unknown][] = [], U = T>(initializer: StateCreator<T, [...Mps, ["injectors", never]], Mcs>, initialAsyncSliceInitializers?: Record<string, () => Promise<StateCreator<T, [], [], unknown>>>) => StateCreator<T, Mps, [["injectors", U], ...Mcs]>; type Write<T, U> = Omit<T, keyof U> & U; type WithInjectors<S> = S extends { getState: () => infer T; } ? Write<S, StoreInjectors<T>> : never; declare module "zustand/vanilla" { interface StoreMutators<S, A> { injectors: WithInjectors<S>; } } export declare const injectors: Injectors; export {};