Borex is helper library for redux.
Learn it by Documentation (sorry, it is still draft in russian).
Also check rewritten counter example and another remake with self-reducing actions. The same for TodoMVC example (remake with self-reducing actions).
- Write less code with redux
- FSA compliant actions
- Fat action creators (with action enhancers)
- Self-reducing actions
- Easy data manipulation in reducers (with reducer helpers)
- Simple side-effects
- Extendable: create your own enhancers and helpers
- Flexible: use it any way you like
npm install -S borex-actions
borex-actions
provides utilities for action creating.
import actionCreator from 'borex-actions/actionCreator';
import setPayload from 'borex-actions/setPayload';
import setMeta from 'borex-actions/setMeta';
import setType from 'borex-actions/setType';
import withReducerIn from 'borex-actions/withReducerIn';
export const increment = actionCreator();
export const decrement = actionCreator();
export const addItem = actionCreator(
setPayload((id, text) => ({ id, text }))
);
export const fatAction = actionCreator(
setType('Fat action'),
setPayload((id, text) => ({ id, text })),
setMeta('analytics', (id, text) => ({ event: 'fat-action', id, text })),
withReducerIn('data.list', (state, action) => [...state, action.payload]),
);
npm install -S borex-reducers
borex-reducers
provides utilities for reducer declaration.
import createReducer from 'borex-reducers/createReducer';
import createReducerIn from 'borex-reducers/createReducerIn';
import composeReducers from 'borex-reducers/composeReducers';
import appendIn from 'borex-reducers/appendIn';
import { increment, decrement, addItem } from './actions';
const counterReducer = createReducerIn('counter', on => {
on(increment, counter => counter + 1);
on(decrement, counter => counter - 1);
});
const dataReducer = createReducer(on => {
on(addItem, appendIn('data.list', data => { ...data, createdAt: Date.now() }));
});
const rootReducer = composeReducers(dataReducer, counterReducer);
npm install -D babel-plugin-borex-autotype
.babelrc
{
"plugins": [
"babel-plugin-borex-autotype"
]
}
This plugin inserts names for all anonymous actionCreator
calls.
Input(counter.js):
const increment = actionCreator();
Output:
const increment = actionCreator('counter/increment');
Check plugin documentation page for more details.
The idea is
borex
= BOilerplate REducer for reduX
Also it looks like Boreas with super-duper modern -X suffix :) This fact explains logo (Boreas is Greek god of North Wind).