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

@wildidea/weaver

v0.2.4

Published

Weaver — a story woven for you, at the terminal. Client for the Weaver cloud.

Readme

weaver — the Ink CLI

A self-contained terminal client for the Weaver cloud (12-serving-and-cli.md §7). Ink (React for CLIs) screens over @wildidea/weaver-cloud:

  • Login — username prompt (security v1 = username string only), persisted.
  • StoryList — resume a story or begin a new one.
  • Interview — The Weaver's session-zero script (13-interview.md, verbatim, small-caps register): greeting → two-of-three domain selection → the chosen domains' axis questions (each declinable → open) → length (always) → the 8-question self-portrait battery → startStory.
  • Reader — drives advance({ onPatch }) through the §3 block-map reducer (src/render/patchReducer.ts): the page materializes as dimmed glyph shapes and resolves into words; choices appear when the page settles.
  • History — ←/→ page browser over served pages.

Usage

weaver                     # begin or resume a story
weaver update              # update to the latest published version (live check)
weaver autoupdate on|off   # toggle auto-update on start
weaver --version           # print the installed version

weaver keeps itself current opt-in. The first time a run finds a newer version, weaver asks you in-app — Always update automatically (turns autoupdate on), Update this time only (updates now, asks again next time), or No thanks (turns autoupdate off, notify-only from then on). After that first answer it never asks again. On start it does a cached (~/.weaver/ update-check.json, 24h TTL) registry check off the critical path; once you have opted out it only notifies you when a newer version exists. Turn on auto-install with weaver autoupdate on (persisted in config.json) or WEAVER_AUTO_UPDATE=on for one run — the CLI then npm install -g @wildidea/weaver@latest and re-execs onto the new bundle (no sudo: global installs land in your nvm prefix). Disable the whole thing at runtime with WEAVER_AUTO_UPDATE=off. Dev builds (0.0.0-dev) never self-update.

Run (dev)

npm install          # links @wildidea/weaver-cloud via file:../../weaver-cloud/client/cloud
npm start            # tsx src/index.tsx

The client lib is a file: link — build it first if its lib/ is stale (cd ../../weaver-cloud/client/cloud && npm run build).

Checks & tests

npm run check        # tsc + eslint
npm test             # node:test via tsx (patchReducer + InterviewSpec assembly)

Config

~/.weaver/config.json:

{
  "username": "hiebj",
  "baseUrl": "https://api.weaver.cx",
  "genBaseUrl": "https://weaver.cx"
}
  • baseUrl — buffered REST (API Gateway). Default https://api.weaver.cx.
  • genBaseUrl — streaming surface (CloudFront /gen/*). Defaults to baseUrl when a custom baseUrl is set, else https://weaver.cx.
  • username is written by the Login screen.

The client identity is compiled in: x-weaver-client-key from WEAVER_CLIENT_KEY at build time (dev default weaver-dev-client-key — a soft gate by design, 12 §6) and x-weaver-client-version from the package version. In dev (npm start) both read the environment directly.

Telemetry

Weaver sends anonymous usage telemetry to CloudWatch RUM — a per-run session with coarse (IP-derived) geography, screen views, errors, and story milestones. It carries a first-party random install id (minted in config.json), never your account name, hostname, or file paths. Disable it entirely with:

WEAVER_TELEMETRY=off

Dev builds (npm start, or any build with no RUM ids baked in) are silent by default. The ids are resolved at build time from SSM /weaver-rum/* (env → .env → SSM), same seam as the client key; absent ⇒ disabled.

Build

WEAVER_CLIENT_KEY=<the shared key> npm run build

scripts/build.ts esbuild-bundles everything — the client lib, ink, react — into dist/weaver.js (ESM, node ≥ 20, shebang). npm consumers never touch CodeArtifact, which is why all deps (including the file: link) live in devDependencies: the published artifact has zero runtime dependencies.

Publish (user-gated — do not run from automation)

  1. cd ../../weaver-cloud/client/cloud && npm run build (fresh client lib).
  2. npm version patch (bumps the compiled-in client version).
  3. WEAVER_CLIENT_KEY=$(aws secretsmanager get-secret-value --secret-id weaver/client-key --query SecretString --output text --profile weaver) npm publish --access public (prepublishOnly runs check + test + build).