0.1.37 • Published 3 years ago

js-messages v0.1.37

Weekly downloads
19
License
LGPL-3.0
Repository
github
Last release
3 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

3 years ago

0.1.36

4 years ago

0.1.35

4 years ago

0.1.34

4 years ago

0.1.33

4 years ago

0.1.32

4 years ago

0.1.30

4 years ago

0.1.31

4 years ago

0.1.29

4 years ago

0.1.28

4 years ago

0.1.22

4 years ago

0.1.23

4 years ago

0.1.24

4 years ago

0.1.25

4 years ago

0.1.26

4 years ago

0.1.21

5 years ago

0.1.20

5 years ago

0.1.19

5 years ago

0.1.18

5 years ago

0.1.17

5 years ago

0.1.16

5 years ago

0.1.14

5 years ago

0.1.13

6 years ago

0.1.12

6 years ago

0.1.11

6 years ago

0.1.10

6 years ago

0.1.9

6 years ago

0.1.8

6 years ago

0.1.7

6 years ago

0.1.6

6 years ago

0.1.5

6 years ago

0.1.4

6 years ago

0.1.3

6 years ago