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

cool-typewriter

v1.0.4

Published

Simulates typewriter effect on any DOM structure

Readme

cool-typewriter

Install

$ npm install --save-dev cool-typewriter

Description

A lightweight es6 class that simulates typewriter-effects.

Features

  • Can handle any nested DOM structure
  • Doesn't mess around with CSS or classes - leaves styling up to you

Usage

import Typewriter from 'cool-typewriter';

let typewriter = new Typewriter();
typerwriter
  .type(document.getElementByID('demo'))
  .start();

API

Instantiate a new typewriter:

let typewriter = new Typewriter();

Each typewriter can type independently from other typewriters. If you need to animate multiple elements simultaneously, use multiple typewriters.

.type(element)

Define an element to be typed out. The element - including all its descendants - will be typed out.

Can be called multiple times; each element will be queued up and typed out in order when .start() is called.

typewriter
  .type(elementA)
  .type(elementB);

.start()

Starts typing all the elements added via type().

.stop()

Immediately stops typing and clears the queue. Any elements not typed out are lost forever!

.complete()

Instantly complete any typing animations.

.pause()

Pause the typewriter

.resume()

Resume typing after being paused

CSS classes

Sometimes, you may want to style an element as it's being typed. Cool-typewriter provides two classes that you can use for this

cool-typewriter-typing

This class is added to an element as it's being typed and removed once it's done. You could use this to add a caret to simulate typing.

.cool-typewriter-typing:after {
  content: "|";
}

cool-typewriter-empty

This class is added to all elements as they are hidden and removed once an element is being typed. This may be useful to hide elements prior to typing.

.cool-typewriter-empty {
  display: hidden;
}