ngrx-immer
Version:
Immer wrappers around NgRx methods createReducer, on, and ComponentStore
20 lines (17 loc) • 1.24 kB
TypeScript
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 };