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

ts-llmt

v1.2.0

Published

Experimental TypeScript library for Large Language Model Templates

Readme

TypeScript Large Language Model Templates (TS-LLMT)

Build Status npm latest version

This repository holds experimental code aimed at providing native TypeScript support for Large Language Model Templates.

The key idea is to track "named-holes" in templates at type-checking (typing) time. This means:

  • You never need to debug an accidental substitution for the wrong variable name.
  • You can substitute for some variables but not others, in any order you like, and the remaining variables are tracked in the type.
  • You can substitute templates with more holes into a named-hole in a template, and you get the correct remaining holes in the right places in the final template.
  • The same hole can appear in multiple places, substitution substitutes it everywhere, as you would expect.
  • There is support for few-shot prompts (where you have some iterated sub-template over a data structure).

Here's a mini-example:

import { nv, template } from 'ts-llmt';

const thingVar = nv('thing');
const thing2Var = nv('thing2');
// *NOTE*: type of `whatIsAtoB` is magically inferred to be:
//         `Template<"thing" | "thing2">`
const whatIsAtoB = template`what is a ${thingVar} to a ${thing2Var}?`;

// Replacing the `thing` variable in whatIsAtoB, gives the type:
//         `Template<"thing2">`
const whatIsTabletoB = whatIsAtoB.vars.thing.substStr('table');

// The escaped raw form of this template is as so:
expect(whatIsTabletoB.escaped).toEqual('what is a table to a {{thing2}}?');

The key nice feature of this is that you get as "as-you-type" error checking, and arguments can be auto-completed by the IDE. You can never substitute for a variable that is not there.

You can do multi-variable replacement nicely too, and still have all the wonderful type-checking like so:

whatIsAtoB.substs({ thing: 'table', thing2: 'chair' });
expect(whatIsTabletoB.escaped).toEqual('what is a table to a chair?');

License: Apache 2.0

Source code for this library is released under the Apache 2.0 license. The full text of the Apache-2.0 license is available in the accompanying LICENSE.md file.

Contributing

See the CONTRIBUTING.md file for details of how to contribute, setup your environment, run tests, check license headers, style, and format your commit messages.