npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

live-typing

v1.0.4

Published

This package includes both the design and implementation of four typing indicators that integrate the rich features proposed by Media Richness Theory.

Downloads

1

Readme

live-typing

Interaction rich indicators for text-based communication

Description

This package consists of the design and implementation of four typing indicators that can be incorporated in web or messaging platforms such as Discord, Slack, or Reddit. It works for input as well as text area elements. First, there are two typing interfaces that currently exist in SMS and IM applications:

  • No-indicator: displays no cues (or a lack of typing indicator) when someone is typing.
  • Is-typing: this typing interface displays when the other person is typing through three dots ...

Next, there are two new indicators that this library includes for message transparency:

  • Masked-typing: typing is concealed and displayed as # characters. The actual characters are revealed once it is sent.
  • Live-typing: typed characters are displayed in real-time.

Features

  • Real time typing indicators based on the concepts of Media Richness Theory (MRT)
  • Allows user customisation for interaction-rich communication
  • Easy to integrate

Installation

Build the repository

You can build the repository from the source by following these instructions

# Download Node: https://nodejs.org/en/download/
git clone https://github.com/brownhci/live-typing.git
cd live-typing
npm install

Integrate in any modern framework

To use this package in your application, install Node, and run the following command in the terminal:

npm i live-typing

In your code, you can import using

import { typingIndicator } from 'live-typing';

Customization

By default, the typing indicator is set to ... (is-typing). The timeout is set to 5000ms. The indicators are linked with the following key values:

No-indicator: 1
Is-typing indicator: 2
Live-typing: 3
Masked-typing: 4

How to use

The typingIndicator is a custom function of the package live-typing that creates a typing indicator which can display the typing state of an input field. The function takes an object with two properties: timeout which determines how long to wait before assuming that the user has stopped typing, and indicatorType which specifies the type of typing indicator to use.

In this example, we set the timout to 500ms and choose the Masked Typing indicator.

const [isTyping, typedCharacter, responseElement] = typingIndicator({
    timeout: 500,
    indicatorType: 4,
  });

The typingIndicator function returns an array with three elements:

isTyping: a boolean value that indicates whether the user is currently typing or not. typedCharacter: a string that represents the character(s) typed by the user since the last keystroke event. This will vary depending on the typing indicator you specify in the function call. responseElement: an HTML element that can be used to display the typing indicator in the UI.

The responseElement is usually added to the DOM to display the typing indicator in the user interface. If you're creating a messaging application, this will be used by the server to send to the recipient client.

Publications

To be added.