0.1.37 • Published 4 years ago

js-messages v0.1.37

Weekly downloads
19
License
LGPL-3.0
Repository
github
Last release
4 years ago

js-messages

A small library to handle messages, message types and message creators (also known as "actions", "action types" and "action creators" in redux context). js-messages is written in TypeScript, everything is completely type safe.

Licence npm version Build status Coverage status

Installation

npm install --save js-messages

Usage

js-messages consists of three functions:

  • defineMessage: To define one type of message / to create one message creator
  • defineMessages: To define multiple related messages represented by message creators
  • props: A helper function to define a message creator where all message properties must be declared explicitly in an object.

Example 1 (using defineMessage)

import { defineMessage } from 'js-messages'

const increment = defineMessage('increment')
// for messages of shape { type: 'increment' }

const decrement = defineMessage('decrement')
// for messages of shape { type: 'decrement' }

const resetTo = defineMessage('resetTo', (value: number) => ({ value }))
// for messages of shape { type: 'resetTo', value: number }

Example 2 (using defineMessage and props)

const saveToStorage = defineMessage(
  'saveToStorage',
  props<{ tasks: Task[]; storageKey: string }>()
)

// for messages of shape
//   {
//     type: 'saveToStorage',
//     tasks: Task[],
//     storageKey: string
//   }

Example 3 (using defineMessages, without namespace):

import { defineMessages } from 'js-messages'

const Actions = defineMessages({
  increment: null,
  // for messages of shape { type: 'increment' }

  decrement: null,
  // for messages of shape { type: 'decrement' }

  resetTo: (value: number) => ({ value })
  // for messages of shape { type: 'resetTo', value: number }

  log: (value: number, message: string = null) => ({ value, message })
  // for messages of shape { type: 'log', value: number, message: string }
})

Example 4 (using defineMessages, with namespace):

import { defineMessages } from 'js-messages'

const Actions = defineMessages('counter', {
  increment: null,
  // for messages of shape { type: 'counter.increment' }

  decrement: null,
  // for messages of shape { type: 'counter.decrement' }

  resetTo: (value: number) => ({ value })
  // for messages of shape { type: 'counter.resetTo', value: number }

  log: (value: number, message: string = null) => ({ value, message })
  // for messages of shape { type: 'counter.log', value: number, message: string }
})

License

"js-messages" is licensed under LGPLv3.

Project status

"js-messages" is currently in beta status.

0.1.37

4 years ago

0.1.36

5 years ago

0.1.35

5 years ago

0.1.34

5 years ago

0.1.33

5 years ago

0.1.32

5 years ago

0.1.30

5 years ago

0.1.31

5 years ago

0.1.29

5 years ago

0.1.28

5 years ago

0.1.22

5 years ago

0.1.23

5 years ago

0.1.24

5 years ago

0.1.25

5 years ago

0.1.26

5 years ago

0.1.21

6 years ago

0.1.20

6 years ago

0.1.19

6 years ago

0.1.18

6 years ago

0.1.17

6 years ago

0.1.16

6 years ago

0.1.14

6 years ago

0.1.13

7 years ago

0.1.12

7 years ago

0.1.11

7 years ago

0.1.10

7 years ago

0.1.9

7 years ago

0.1.8

7 years ago

0.1.7

7 years ago

0.1.6

7 years ago

0.1.5

7 years ago

0.1.4

7 years ago

0.1.3

7 years ago