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

sillycode

v0.0.5

Published

Fast and safe implementation of sillycode parsing and rendering

Readme

sillycode

Fast and safe sillycode parsing and rendering libraries for both Rust and JavaScript/TypeScript.

Each library implementation provides functionality to parse sillycode markup into structured parts and render them as HTML. For more information on sillycode and its syntax, see the sillycode guide.

Installation

JavaScript/TypeScript

npm install sillycode

Rust

[dependencies]
sillycode = "0.0.5"

Usage

JavaScript/TypeScript

import { parse, render } from 'sillycode';

const input = "[b]Hello[/b] [:)]";
const parts = parse(input);
const html = render(parts, false);

console.log(html);

Rust

use sillycode::{parse, render};

let input = "[b]Hello[/b] [:)]";
let parts = parse(input);
let html = render(parts, false);

println!("{}", html);

API Reference

JavaScript/TypeScript

For comprehensive information, including type definitions, for the JS/TS API, visit sillycode.netlify.app.

Core Functions

  • parse(input: string): Part[] - Parse sillycode markup into structured parts
  • render(parts: Part[], isEditor?: boolean, emoteSrcPrefix?: string): string - Render parts to HTML
  • length(parts: Part[]): number - Calculate display length of parts

DOM Utilities

  • reverse($root: HTMLElement): string - Extract sillycode markup from DOM elements
  • diff($expected: HTMLElement, $actual: HTMLElement): boolean - Efficiently diff and update DOM trees

Rust

Note that, unlike the JavaScript version, the Rust version doesn't support customizing the emote source prefix. Consider using a simple string replace instead.

Core Functions

  • parse(input: &str) -> Vec<Part> - Parse sillycode markup into structured parts
  • render(parts: impl IntoIterator<Item = Part>, is_editor: bool) -> String - Render parts to HTML
  • length(parts: &[Part]) -> usize - Calculate display length of parts

Types

  • Part - Enum for all parsed parts (text, style, emote, color, etc.)
  • StyleKind - Enum for style types (bold, italic, underline, etc.)
  • EmoteKind - Enum for emote types (smile, sad, etc.)
  • Color - Type alias for color strings

Authors

Made with ❤ by Lua (foxgirl.dev) :3c

License

This project is licensed under MIT. More info in the LICENSE file.