# CHANGES **DEPRECATED: Please see [github releases](https://github.com/neurosnap/robodux/releases) to a changelog** ## 11.0.0 (06-06-2021) - :wrench: Remove `immer` as a peer dependency and made it a normal dependency - :boom: `createLoader` and `createLoaderTable` now hold different state, please see documentation for details ## 10.1.3 (05-31-2021) - :sparkles: `createLoaderTable` now returns `getSelectors` function that makes it easier to get loaders out of the slice ## 10.1.1 (2-22-2020) - :wrench: improved typings for `mustSelectEntity` ## 10.1.0 (12-20-2020) - :sparkles: `createListTable` which makes it easier to have a table of lists - :wrench: added `meta` object to `createLoader` state so we can pass arbitrary data through our loaders ## 10.0.0 (10-08-2020) - :heavy_plus_sign: added `reselect` as a peer dependency - :boom: renamed `createTable` -> `createMap` - :sparkles: new `createTable` API with extended functionality to `createMap` - new function `getSelectors` which will build a bunch of useful selectors automatically: selectTable, selectTableAsList, selectById, selectByIds which are properly memoized - :sparkles: new function `mustSelectEntity` which will enforce that the return type of `*ById` (find, select) _must_ return the table entity instead of possibly returning undefined - :sparkles: `createMap` and `createTable` have a new action called `merge` which will merge objects and arrays one layer deep ## 9.1.0 (07-10-2020) - :sparkles: `createList` slice helper to manage lists in redux state ## 9.0.0 (05-09-2020) - :wrench: Changed the name of slice helpers to better illustrate intent - mapSlice -> createTable - assignSlice -> createSlice - loadingSlice -> createLoader - loadingMapSlice -> createLoaderTable ## 8.2.0 (03-06-2020) - :wrench: improved timestamps for loading slice ## 8.1.0 (02-15-2020) - :sparkles: New loading slice `loadingMapSlice` which is the same as `loadingSlice` only it can spawn unique loaders ## 8.0.0 (02-15-2020) - :wrench: Breaking changes to `loadingSlice` - `error` from string -> boolean - `timestamp` property which is a unix timestamp updated on every loader update ## 7.0.1 (01-05-2020) - :sparkles: Created new API for reusing our slice helper reducers: `mapReducers`, `assignReducers`, and `loadingReducers` ## 7.0.0 (12-02-2019) - :wrench: Improved typings for `createAction` - :wrench: Allow custom data for `error` and `message` inside `loadingSlice` ## 6.0.0 (11-04-2019) - :wrench: Improved typings for a better developer experience ## 5.1.4 (10-29-2019) - :bug: `mapSlice` was mutating state object incorrectly ## 5.1.3 (10-22-2019) - :wrench: attempting to improve typing for `createApp` ## 5.1.2 (10-18-2019 - :bug: createApp would fail if object passed did not contain a `reducers` key ## v5.1.1 (10-18-2019) - :bug: Make `immer` and `redux` peer dependencies ## v5.1.0 (10-06-2019) - :sparkles: initial `createApp` which will accept an array of modules and return a reducer ## v5.0.0 (09-12-2019) - :boom: removed optional slice for `createSlice`, it is now required and cannot be empty - :boom: `useImmer` option, enabled by default, disabled specifically for slice helpers - :boom: renamed `slice` to `name` for `createSlice`, `createReducers` and all slice helpers - :boom: renamed `actions` to `reducers` for `createSlice` to signal that it is a mapping between action names and reducers: `reducer` + `action` = `reduct` - :sparkles: `createActionMap` helper function to combine actions from multiple slices - :sparkles: `createReducerMap` helper function to combine reducers from multiple slices ## v4.2.0 (04-24-2019) - :sparkles: loading slice has a reset action - :sparkles: loading slice now accepts a message when loading or success ## v4.1.0 (04-11-2019) - :sparkles: add new action `patchX` to `mapSlice` which allows partial updates to an entity ## v4.0.0 (03-13-2019) - :hammer: removed `selectors` from robodux `selectors` in robodux was struggling to be useful and ultimately we decided to remove it entirely from the library. ## v3.0.0 (02-21-2019) - :sparkles: `extraActions` parameter to `robodux` allows reducers to listen to external action types - :sparkles: `loadingSlice` is a new slice helper that handles loading states - :boom: `mapSlice` now accepts an object instead of a `slice` string, e.g. mapSlice('aSlice') -> mapSlice({ slice: 'aSlice' }) ## v2.1.0 (01-16-2019) - :sparkles: Added assign slice helper ## v2.0.0 (01-06-2019) - :sparkles: Better typescript support ## v1.2.0 (12-29-2018) - :sparkles: map slice helper