New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

mittt

Package Overview
Dependencies
Maintainers
1
Versions
14
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

mittt

[![npm version](https://img.shields.io/npm/v/mittt.svg?style=flat-square)](https://www.npmjs.com/package/mittt) [![npm downloads](https://img.shields.io/npm/dm/mittt.svg?style=flat-square)](https://www.npmjs.com/package/mittt) [![gzip](https://img.shiel

latest
npmnpm
Version
2.0.1
Version published
Maintainers
1
Created
Source

Mittt

npm version npm downloads gzip license

Tiny functional event emitter / pubsub.
Forked from https://github.com/developit/mitt
New project created from TSDX CLI.

  • Microscopic: weighs ~300 bytes gzipped size
  • Useful: a wildcard "*" event type listens to all events
  • Useful: a wildcard "*" emit invokes all registered handlers
  • Useful: a wildcard "*!" emit invokes all unique registered handlers
  • Functional: methods don't rely on this

Mittt was made for the browser, but works in any JavaScript runtime. It has no dependencies and supports IE11+.

Table of Contents

Install

This project uses node and npm. Go check them out if you don't have them locally installed.

npm install mittt
# or
# yarn add mittt

Then with a module bundler like rollup or webpack, use as you would anything else:

// using ES6 modules
import mittt from 'mittt'

// using CommonJS modules
var mittt = require('mittt')

The ESM build is also available on unpkg:

<script type="module" src="https://unpkg.com/mittt/dist/mittt.esm.js"></script>

Usage

import mittt from 'mittt'

const emitter = mittt()

function onEvent(eventType, payload) {
  console.log(eventType, payload)
}

// Listen to an event
emitter.on('foo', onEvent)

// Listen to all events
emitter.on('*', onEvent)

// Fire an event
emitter.emit('foo')

// Fire an event with payload
const payload = { a: 'b' }
emitter.emit('bar', payload)

// Fire all registered handlers with payload
emitter.emit('*', payload) // payload is optional

// Given these listeners. Both onEvent would be invoked on '*' emit.
emitter.on('foo', onEvent)
emitter.on('bar', onEvent)
emitter.emit('*', payload)

// Fire all unique registered handlers with payload
emitter.emit('*!', payload) // payload is optional

// Given these listeners. Only one onEvent would be invoked on '*!' emit.
emitter.on('foo', onEvent)
emitter.on('bar', onEvent)
emitter.emit('*!', payload)

// Given these listeners. Both handlers would be invoked on '*!' emit.
emitter.on('foo', (eventType, payload) => {})
emitter.on('bar', (eventType, payload) => {})
emitter.emit('*!', payload)

// Working with handler references:
emitter.on('foo', onEvent) // listen
emitter.off('foo', onEvent) // unlisten

// Initiate emitter with on event setup
const eventHandlerMap = Object.create(null)
eventHandlerMap.foo = [
    (eventType, payload) => {
      console.log(eventType, payload) // foo, 123
    },
    (eventType, payload) => {
      console.log(eventType, payload) // foo, 123
    },
  ]
const emitter = mittt(eventHandlerMap)

emitter.emit('foo', 123) // all handlers for foo are invoked

TypeScript

import mittt, { Emitter, EventHandler } from 'mittt'
const emitter: Emitter = mittt()

let foo: EventHandler = (eventType, payload) => {}

emitter.on('foo', foo)

Smallest-Install

If you want to install the smallest size without wildcard (*) support.
~200 bytes gzipped size.

npm install mittt@^1
# or
# yarn add mittt@^1

FAQs

Package last updated on 04 May 2020

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