New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

type-safe-prompt

Package Overview
Dependencies
Maintainers
1
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

type-safe-prompt

A lightweight library for handling prompts with embeddable variables in a type-safe manner

latest
Source
npmnpm
Version
0.0.4
Version published
Maintainers
1
Created
Source

type-safe-prompt

type-safe-prompt is a lightweight library for handling prompts with embeddable variables in a type-safe manner.

Installation

The package is available on the npm registry. You can install it using your preferred package manager:

$ npm install type-safe-prompt
# or
$ yarn add type-safe-prompt
# or
$ pnpm add type-safe-prompt

Usage

Define your prompt template using a constant:

const prompt = `
You are {{name}}, a {{role}}.
Please respond politely to user requests.
`

Use the fillPrompt function to embed variables into the template. This provides type safety for variable specification:

import { fillPrompt } from "type-safe-prompt"

// This will cause a type error because the required variables 'role' and 'name' are missing
const filledPrompt = fillPrompt(prompt, {})

// This will also cause a type error due to missing required variables and an incorrect variable name
const filledPrompt = fillPrompt(prompt, {
  miss: "Alice",
})

When there are no type errors, you can see the resolved prompt text at the type level:

const filledPrompt = fillPrompt(prompt, {
  name: "Alice",
  role: "Engineer",
}) // => "\nYou are Alice, a Engineer.\nPlease respond politely to user requests.\n"

This is useful as it allows you to verify the content of the resolved prompt without actually executing the code at runtime.

When should you use this library? (And when shouldn't you?)

When defining templates with embeddable variables, you might first think of using template literals like this:

const myPrompt = (vars: { [K in "name"]: readonly string }) => {
  return `
your name is ${vars.name}
`
}

This library does essentially the same thing, but makes this pattern more convenient and easier to implement.

Benefits of using type-safe-prompt:

  • Avoid indentation issues: Wrapping prompts in functions can break indentation and reduce readability. With type-safe-prompt, you can declare prompt templates at the top level, preserving proper formatting.
  • Reduce boilerplate: While abstracting templates with functions isn't overly complex, it can be tedious to write repeatedly. type-safe-prompt allows you to define templates as simple strings.
  • Proper return type inference: The library provides appropriate type information for the resolved prompts.

If these benefits don't appeal to you, you might not need type-safe-prompt. If you're not concerned about indentation and prefer to avoid additional dependencies over the verbosity of writing functions, using plain template literals might be a better choice.

License

This project is licensed under the MIT License.

Contributing

Contributions are welcome!

Keywords

llm

FAQs

Package last updated on 02 Nov 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts