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

gingerly-tree-analyzer-monorepo

v0.0.2

Published

Diagnostics, hover and completions for assign-gingerly tree`…` tagged templates: core, TypeScript plugin, VS Code extension.

Readme

gingerly-tree-analyzer

Language support for assign-gingerly's tree`…` tagged templates: diagnostics, hovers and type checks. Its companion is gingerly-tree, which provides the syntax highlighting.

What the extension does is described in packages/vscode/README.md, which is its Marketplace page.

Layout

| Package | What | Runs in | |---|---|---| | packages/core | Finds templates (in JS/TS, Markdown code blocks, HTML <script>), turns each ${…} into a stand-in value, runs assign-gingerly's analyzeTree, and produces findings and hovers. It's given a TypeScript module rather than importing one. | Node and browsers | | packages/ts-plugin | A tsserver plugin: diagnostics, hovers, type checks and a quick fix in .js/.ts files. Uses the project's own assign-gingerly when it has analyzeTree. | tsserver | | packages/vscode | The VS Code extension. It handles Markdown and HTML, and script files where the plugin can't run. It ships the plugin in its node_modules. | VS Code desktop (main) and web (browser) |

A CLI for CI (npx gingerly-tree-analyzer check …) is planned as packages/cli.

assign-gingerly

assign-gingerly is linked from the sibling folder ("assign-gingerly": "file:../assign-gingerly"), so this repo expects to be checked out next to it, as in beGingerly/. The build bundles it from its TypeScript sources (see scripts/build.mjs), so the bundled copy always matches its current source, whether or not its .js has been rebuilt.

Scripts

| | | |---|---| | npm run build | Bundles the plugin and the extension (esbuild) | | npm run typecheck | tsc over all packages and tests | | npm test | Builds, then runs the unit tests with node --test: core, the plugin on a real language service, and tsserver loading the plugin from the extension folder | | npm run test:e2e | The extension in VS Code desktop: the local install, or a downloaded copy. It uses a fresh profile with other extensions disabled, and loads gingerly-tree from ../gingerly-tree. | | npm run test:web | The extension in VS Code for the Web (headless Chromium) | | npm run test:all | All of the above | | npm run package | Builds and writes gingerly-tree-analyzer-<version>.vsix (see StepsToPublish.md) |

Tests are TypeScript files run directly by Node (type stripping), so Node 22.18+ is needed.

npm run update skips two packages (.ncurc.json):

  • typescript stays on 6.x. TypeScript 7 (the native port) has no JS compiler API, which the plugin, the core and the tests need, and VS Code still runs TS server plugins on 6.x. Revisit this when VS Code moves to TypeScript 7.
  • @types/vscode must not be newer than engines.vscode in packages/vscode/package.json, or vsce refuses to package. Bump both together, deliberately.

Debugging

Open this folder in VS Code and press F5 (Run Extension): it builds, then opens a window with this extension and gingerly-tree loaded from source.

  • The extension's log: the Gingerly Tree output channel.
  • The plugin's log: run TypeScript: Open TS Server log and look for [gingerly-tree].