Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

redux-tcomb-actions

Package Overview
Dependencies
Maintainers
1
Versions
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

redux-tcomb-actions

An action creator generator function that leverages tcomb for safer and saner reducers

  • 1.1.1
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
0
decreased by-100%
Maintainers
1
Weekly downloads
 
Created
Source

redux-tcomb-actions

This module presents a simple way to generate action creators that provide a bit of type safety via tcomb.

The default export:

function generateActionCreator(PayloadType : [tcomb type], actionConstant : String, ?actionCreator : Function)

also has the following property:

generateActionCreator.ReduxActionIrreducible =  t.irreducible(
    'ReduxAction',
    a => a instanceof Object && t.String.is(a.type)
);

Each action creator generated will have a type refinement of this irreducible:

t.refinement(ReduxActionIrreducible,
    a => a.type === actionConstant && PayloadType.is(a.payload),
    actionConstant
);

Why use this module?

Reducer logic that depends on matching against strings is inevitably fragile, and the tcomb library provides some nice mechanisms for making actions and reducers safer, as well as simplifying reducer logic.

By adding tcomb metadata to action creators, reducers can leverate pattern matching, unions and refinements of actions to remove branching logic from reducer action handlers. See the examples/tMatchReducer.js file for an example.

Usage

Take the following example:

const UserCredentials = t.struct({
    username: t.String,
    password: Password
});

const loginStart = generateActionCreator(
    UserCredentials, // the tcomb type to validate the payload
    'login-started', // the action "type" property
    uc => ({ payload: uc }) // what you would normally use for an action creator, except you won't be specifying the "type" property
);

loginStart.actionName  // 'login-started'
loginStart.payloadType // UserCredentials
loginStart.type        // A refinement of ActionIrreducible that has a guard function validating the action's payload property conforms to the PayloadType

const loginStartAction = loginStart({ username: 'test', password: 'password' });

loginStartAction // { type: 'login-start', payload: {username: 'test', password: 'password'}}

The result of calling generateActionCreator is an action creator function, with three properties that provide some introspection capability; the most useful of which is likely the action creator's type property: a special refinement of ActionIrreducible, a custom tcomb type that validates an action's type and payload properties.

To see how these are used, take a look at the examples folder and the tests folder. There are two examples of reducers: one using tcomb pattern matching on the action creator tcomb type, and another using standard switching on the action type string.

FAQs

Package last updated on 20 Feb 2016

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc