@known-as-bmf/store
Version:
Lightweight synchronous state management library.
26 lines (23 loc) • 596 B
text/typescript
import { Middleware } from './types';
/**
* Compose middlewares from right to left.
*
* @param middlewares - Middlewares to compose.
*
* @public
*/
export const pipeMiddlewares = <S>(
...middlewares: Middleware<S>[]
): Middleware<S> => (store, hooks) => middlewares.map((m) => m(store, hooks));
/**
* Compose middlewares from left to right.
*
* @param middlewares - Middlewares to compose.
*
* @public
*/
export const composeMiddlewares = <S>(
...middlewares: Middleware<S>[]
): Middleware<S> => {
return pipeMiddlewares(...middlewares.reverse());
};