layflags / action-types

Conveniently create action types with multi-level namespace support.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

action-types

es6 js-standard-style CircleCI

Conveniently create action types with multi-level namespace support.

A note about compatibility

The npm package should be used in an ES6 environment. Even though the published code has ES5 syntax it uses some ES6 features, so you have to make sure to use ES5 and ES6 polyfills if you are in an ancient environment.

Install

npm install action-types

Usage

import { ActionType, createActionTypes } from './action-types'

createActionTypes({
  START_APP: ActionType,
  user: {
    ADD: ActionType,
    REMOVE: ActionType,
    current: {
      SET: ActionType,
      CHANGE: ActionType
    }
  }
})

// results in:

{
  START_APP: 'START_APP',
  user: {
    ADD: 'user.ADD',
    REMOVE: 'user.REMOVE',
    CHANGE: 'user.CHANGE',
    current: {
      SET: 'user.current.SET',
      CHANGE: 'user.current.CHANGE'
    }
  }
}

With initial namespace

import { ActionType, createActionTypes } from './action-types'

createActionTypes({
  ADD: ActionType,
  REMOVE: ActionType
}, {
  namespace: 'user'
})

// results in:

{
  ADD: 'user.ADD',
  REMOVE: 'user.REMOVE'
}

With custom namespace separator

import { ActionType, createActionTypes } from './action-types'

createActionTypes({
  user: {
    ADD: ActionType,
    REMOVE: ActionType
  }
}, {
  separator: '::'
})

// results in:

{
  user: {
    ADD: 'user::ADD',
    REMOVE: 'user::REMOVE'
  }
}

Test

npm test

License

MIT

About

Conveniently create action types with multi-level namespace support.

License:MIT License


Languages

Language:JavaScript 100.0%