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

@nsite/stealthis

v0.8.0

Published

A drop-in web component that adds a "Borrow this" button to any nsite. Visitors can deploy a copy of the current page to their own nostr identity with one click.

Readme

@nsite/stealthis

A drop-in web component that adds a "Borrow this" button to any nsite. Visitors can deploy a copy of the current page to their own nostr identity with one click.

How it works

When loaded on an nsite, <steal-this> detects the site owner's pubkey from the subdomain, fetches the site manifest from nostr relays, and lets authenticated visitors publish a copy under their own npub. Each deployment appends a muse tag to the manifest, creating a paper trail of who was inspired by the site.

Install

import '@nsite/stealthis';

The widget auto-injects a fixed-position button in the bottom-right corner.

Manual placement

If you want to control where the button appears, add the element yourself (the auto-inject will skip if one already exists):

<steal-this button-text="Cop this joint" stat-text="%s npubs copped this"></steal-this>

Attributes

| Attribute | Default | Description | |-----------|---------|-------------| | button-text | "Borrow this nsite" | Button text | | stat-text | "%s npubs borrowed this nsite" | Paper trail summary. %s is replaced with the count. | | no-trail | (absent) | Boolean attribute. When present, disables the paper trail entirely -- no muse tags are written and the trail UI is not rendered. | | obfuscate-npubs | (absent) | Boolean attribute. Shows truncated npubs with no links in the paper trail. Disables profile fetching. | | do-not-fetch-muse-data | (absent) | Boolean attribute. Skips profile enrichment but still shows full npubs linked to njump. | | accent | #9b59b6 | Accent color for buttons, links, active states, and spinner. When set without background, modal surfaces are also derived from this color. | | background | #1a1a2e | Modal background color. Input fills and borders are derived as darker shades. | | text | #e0e0e0 | Text color. Muted and dim variants are derived at 50% and 65% transparency. | | radius | 8px | Border radius for buttons, modal, and inputs. Inner elements scale proportionally. | | copy-ditto-theme | (absent) | An naddr pointing to a Ditto theme event (kind 36767 or 16767). When set, the deploy flow includes a step to copy the theme to the user's profile. See Ditto NIP. |

The button's trigger part is exposed via ::part(trigger) for CSS customization.

Authentication

The widget supports three sign-in methods:

  • NIP-07 - Browser extension (e.g. nos2x, Alby)
  • NIP-46 Bunker URI - Paste a bunker:// connection string
  • NIP-46 QR / Nostr Connect - Scan a QR code with a signer app

Deploy options

  • Root site - Publishes as the visitor's primary nsite (kind 15128)
  • Named site - Publishes as a named sub-site with a slug (kind 35128)

If the visitor already has a root site, the form defaults to a named site. Overwriting an existing site requires explicit confirmation.

Paper trail

Each deployment adds a muse tag with the deployer's pubkey and relay list. The widget shows an expandable "Inspired N npubs" counter when muse tags are present. A maximum of 9 muse tags are kept per manifest (originator + 8 most recent), with FIFO truncation of the middle.

By default, the trail streams kind-0 profiles from relays to show display names and links to each muse's nsite (or njump fallback). Use obfuscate-npubs to show only truncated npubs, or do-not-fetch-muse-data to skip profile fetching while still linking to njump.

Development

pnpm install
pnpm run build    # builds dist/stealthis.js (IIFE) and dist/stealthis.mjs (ESM)
pnpm run dev      # watch mode

License

MIT