# redux-thunk-sync-creators

> Creator functions for basic async actions with redux

Latest version **1.0.0** (published 2016-06-15) · ISC license · 0 weekly downloads

## Install

```sh
npm install redux-thunk-sync-creators
pnpm add redux-thunk-sync-creators
yarn add redux-thunk-sync-creators
bun add redux-thunk-sync-creators
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.0 |
| Published | 2016-06-15 |
| First published | 2016-06-15 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 1 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Lachlan Kermode |
| Maintainers | breezykermo |

## Links

- npm: https://www.npmjs.com/package/redux-thunk-sync-creators
- npm.io page: https://npm.io/package/redux-thunk-sync-creators

## Dependencies (1)

- [immutable](https://npm.io/package/immutable.md) ^3.8.1

## Recent versions

- 1.0.0 (latest) — 2016-06-15

## README

# Redux Thunk Sync Creators

Generator functions for synchronous Redux actions commonly used with redux-thunk. The reducers use [immutable] state, which supports more efficient state diffing. *The following API is described as if the 'resource' being passed in is 'user'. As the resource changes, so to do the names of the actions and action creators associated with that resource*:

## isImmutable(item)
Returns `true` if the item is immutable, and `false` otherwise.

## actionTypesFor(resource)
Generates action types for a resource, which is a string. The return value will be an object that has three values:

 - USER_FETCH_START
 - USER_FETCH_SUCCESS
 _ USER_FETCH_ERROR

These action types are used in the other methods in this API, such as `actionCreatorsFor` and `reducersFor`.

## actionCreatorsFor(resource)
Generates the following action creators for a resource:

 - userFetchStart()
 - userFetchSuccess(users)
 - userFetchError(error)

These action creators create the expected action objects. See `reducersFor` for information on what new state these action creators will produce.

## reducersFor(resource)
Generates a reducer that handles those actions described in `actionCreatorsFor`. The following action types are handled in the following ways:

#### USER_FETCH_START
Generated by calling the userFetchStart() function. This will produce the following variations in the next state returned by the reducer:
 - isFetching: true
 - error: null
All other values will remain consistent with the previous state of the reducer.

#### USER_FETCH_SUCCESS
Generated by calling the userFetchSuccess(users) function. This will produce the following variations in the next state returned by the reducer:
 - users: **the users argument passed into the creator**
 - isFetching: false
 - error: null
All other values will remain consistent with the previous state of the reducer.

#### USER_FETCH_ERROR
Generated by calling the userFetchError(error) function. This will produce the following variations in the next state returned by the reducer:
 - users: **the users argument passed in**
 - isFetching: false
 - error: **the error argument passed into the creator**
All other values will remain consistent with the previous state of the reducer.

## initialFrom(reducer)
This will generate the initial immutable state from a given reducer. For example, if the resource is 'user', the state will be an immutable object with the following characteristics:
 - users: null
 - isFetching: false
 - error: null

----------------

## Extending reducers
The standard way to use the reducer generator is to provide the `reducersFor` function as a wrapper around the default case in your own cases. For example, your reducer might look something like this:

```javascript
import {
  initialFrom,
  reducersFor
} from 'redux-thunk-sync-creators'

const defaultUserReducer = reducersFor('user')

export default (state = initialFrom(defaultUserReducer), action) => {
  switch (action.type) {
    /** ... Your own custom cases **/
    default:
      return defaultUserReducer(state, action)
  }
}
```

---
_Source: https://npm.io/package/redux-thunk-sync-creators · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
