Skip to main content

API Reference

The snippetManager is a utility for fetching and displaying code snippets in your frontend application. It handles caching, extension-derived language selection, and optional imports.

See also: Snippet Manager for a higher-level guide and examples.

Import

import { snippetManager } from 'shnippet';
import type { SnippetName } from '../snippets/gen-types';

Methods

getSnippet

Fetches a snippet by name.

const result = await snippetManager.getSnippet('add' as SnippetName);

Returns a SnippetResult object:

interface SnippetResult {
name: string;
languages: string[];
defaultLanguage: string;
imports?: Record<string, string[]>;
content: Record<string, string>;
}

formatSnippet

Formats a snippet with optional line numbers.

const formatted = snippetManager.formatSnippet(result.content[result.defaultLanguage], {
language: result.defaultLanguage,
showLineNumbers: true,
});

updateConfig

Note: You likely won't need to use this method. Defaults are read from /snippets/config.json generated at build time.

Updates the snippet manager configuration.

snippetManager.updateConfig({
baseUrl: '/snippets',
fileExtensions: ['ts'], // use extension keys (dots optional)
});

Example Usage

import { snippetManager } from 'shnippet';
import type { SnippetName } from '../snippets/gen-types';

async function displaySnippet() {
// Get the snippet
const result = await snippetManager.getSnippet('add' as SnippetName);

// Get available languages and default language
const { languages, defaultLanguage, imports, content } = result;

// Format with line numbers
const formatted = snippetManager.formatSnippet(content[defaultLanguage], {
language: defaultLanguage,
showLineNumbers: true,
});

return formatted;
}

Type Safety

The snippetManager works with the generated SnippetName type to ensure type safety:

import type { SnippetName } from '../snippets/gen-types';

// Type-safe snippet fetching
const result = await snippetManager.getSnippet('add' as SnippetName); // ✅ Valid
const invalid = await snippetManager.getSnippet('not-a-snippet' as SnippetName); // ❌ Type error

Configuration Options

OptionTypeDescription
baseUrlstringBase URL for fetching snippets (default /snippets)
fileExtensionsstring[]Required at runtime (e.g., ['ts','py']). Keys are normalized extensions without dots; defaultLanguage is the first entry.
defaultImportsRecord<string, string[]>Optional imports per extension key