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

express-twtkpr-core-plugins

v0.9.0

Published

A library of plugins that enhance TwtKpr installs (made with the `express-twtkpr` package).

Readme

express-twtkpr-core-plugins

[!WARNING]
STILL IN ALPHA: Although this is a fully-functional set of plugins which are actively deployed to at least one site (my own), it currently lacks documentation, examples, tests, installation flexibility, or polish (and still has a couple of bugs that need to be fixed). USE AT YOUR OWN RISK

A collection of 3 recommended plugins to expand the functionality of your express-twtkpr installation.

These plugins include:

  • emojiButton: Adds a simple button to the textarea which appends an emoji to your twt.
  • postToMastodon: Enables automatic posting to your Mastodon account.
  • uploadButton: Adds support for drag-and-drop and button-driven file uploads, with optional automatic hashing, renaming, metadata stripping, and resizing of images.
import express, { Request, Response } from "express";

import twtkpr from "express-twtkpr";
import {
	emojiButton,
	postToMastodon,
	uploadButton,
} from "express-twtkpr-core-plugins";

// import other middleware

const app = express();

// add other middleware

app.use(
	"/",
	twtkpr(
		{
			// config options
		},
		[emojiButton, postToMastodon, uploadButton],
	),
);

// add error handler

export default app;

emojiButton

Adds a simple button to the textarea which appends an emoji to your twt.

  • Uses jwz's emoji.js and emoji.css files to generate the button.
  • Keeps track of recently used emoji.
  • Includes support for a massive list of emojis.

Usage

import express, { Request, Response } from "express";

import twtkpr from "express-twtkpr";
import {
	emojiButton,
	postToMastodon,
	uploadButton,
} from "express-twtkpr-core-plugins";

// import other middleware

const app = express();

// add other middleware

app.use(
	"/",
	twtkpr(
		{
			// config options
		},
		[emojiButton],
	),
);

// add error handler

export default app;

postToMastodon

Enables automatic posting to your Mastodon account.

  • Follows principle of POSSE (Publish Own Site, Syndicate Elsewhere)

Usage

For it to work, you MUST include both of the following values:

  • application_token: On your Mastodon client, go to "Preferences", then "Development". Create a new application, then look for the value "Your access token".
  • server_url: The root URL for your Mastodon server (ex: "https://toot.cafe")

The preferred way to include them WILL BE via ENV variables (once the work is complete).

import express, { Request, Response } from "express";

import twtkpr from "express-twtkpr";
import {
	emojiButton,
	postToMastodon,
	uploadButton,
} from "express-twtkpr-core-plugins";

// import other middleware

const app = express();

// add other middleware

app.use(
	"/",
	twtkpr(
		{
            plugins: {
                postToMastodon: {
                    application_token: "<TOKEN>", // or via ENV variable TWTKPR_PLUGIN_PTM_APP_TOKEN
                    server_url: "<URL>", // or via ENV variable TWTKPR_PLUGIN_PTM_APP_TOKEN
                },
            },
			// other config options
		},
		[postToMastodon],
	),
);

// add error handler

export default app;

uploadButton

Adds support for drag-and-drop and button-driven file uploads, with optional automatic hashing, renaming, metadata stripping, and resizing of images.

import express, { Request, Response } from "express";

import twtkpr from "express-twtkpr";
import {
	emojiButton,
	postToMastodon,
	uploadButton,
} from "express-twtkpr-core-plugins";

// import other middleware

const app = express();

// add other middleware

app.use(
	"/",
	twtkpr(
		{
			// config options
		},
		[uploadButton],
	),
);

// add error handler

export default app;

License

Copyright (c) 2026 Eric Woodward, released under the MIT License.