UNPKG

ngrx-immer

Version:

Immer wrappers around NgRx methods createReducer, on, and ComponentStore

20 lines (17 loc) 1.24 kB
import { PartialStateUpdater, WritableStateSource } from '@ngrx/signals'; import { EventCreator } from '@ngrx/signals/events'; type ImmerStateUpdater<State extends object> = (state: NoInfer<State>) => void; declare function immerPatchState<State extends object>(stateSource: WritableStateSource<State>, ...updaters: Array<Partial<NoInfer<State>> | PartialStateUpdater<NoInfer<State>> | ImmerStateUpdater<State>>): void; type CaseReducer<State extends object, EventCreators extends EventCreator<string, any>[]> = (event: { [K in keyof EventCreators]: ReturnType<EventCreators[K]>; }[number], state: State) => Partial<State> | PartialStateUpdater<State> | Array<Partial<State> | PartialStateUpdater<State>>; type CaseReducerResult<State extends object, EventCreators extends EventCreator<string, any>[]> = { reducer: CaseReducer<State, EventCreators>; events: EventCreators; }; declare function immerOn<State extends object, EventCreators extends EventCreator<string, any>[]>(...args: [ ...events: EventCreators, reducer: (state: State, action: ReturnType<EventCreators[number]>) => void ]): CaseReducerResult<State, EventCreator<string, any>[]>; export { immerOn, immerPatchState }; export type { ImmerStateUpdater };