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

serikaromanizer

v2.0.3

Published

Insane zero-dependency, FOSS, TypeScript universal romanizer for Japanese, Korean, Hindi, and more.

Readme

SerikaRomanizer 🌏

An incredibly advanced, local, and offline TypeScript universal romanizer for Japanese, Korean, and Hindi.

Built from scratch to handle some of the hardest linguistic complexities without relying on massive neural networks or cloud APIs.

Features ✨

🇯🇵 Japanese (Powered by internal Jōyō NLP)

  • Contextual Tokenization: Uses kuromoji (a lightweight 17MB dictionary-based morphological analyzer) to parse compound kanji accurately (e.g. 過去形 -> kakokei, not ka-kyo-kei).
  • Particle Tracking: Accurately maps grammatical particles based on sentence context (e.g., as wa, as e, as o).
  • Native Spacing Semantics: Automatically generates human-readable Romaji spacing akin to lyric websites (like Genius.com) by utilizing intelligent Part-of-Speech (POS) heuristics. Auxiliaries attach to verbs, tokens resolve suffixes, and particles stand independently.
  • Sokuon (っ) Handling: Delays processing of double consonants until the tokenization string is fully formed to prevent mid-word gemination breaking.

🇰🇷 Korean (Pure Math Hangul Decomposition)

  • Zero Dependency: Maps all 11,172 possible Korean characters purely mathematically.
  • Accurate Unicode Translation: Breaks down characters computationally by intersecting their Choseong, Jungseong, and Jongseong without arrays of static maps. Full batchim (bottom consonant) support!

🇮🇳 Hindi (Advanced Devanagari Transliteration)

  • Schwa Deletion: Includes an advanced heuristic algorithm to naturally drop the trailing inherent 'a' sound (Schwa) where native speakers omit it (e.g., नमस्ते -> namaste, पसंद -> pasand).
  • Virama & Matra Mapping: Fully supports halants (viramas) perfectly cancelling inherent vowels.

Installation 📦

npm install serikaromanizer

Usage 💡

import { romanize } from "serikaromanizer";

async function run() {
    // 🇯🇵 Japanese
    const jaT = "困っちまうこれは誰かのせい。気付いたら大人になっていた。";
    console.log(await romanize(jaT, "ja"));
    // Output: komacchimau kore wa dareka no sei. kizuitara otona ni natteita.

    // 🇰🇷 Korean
    const koT = "안녕하세요! 흙길을 밟고 지나갔다.";
    console.log(await romanize(koT, "ko"));
    // Output: annyeonghaseyo! heulggileul balbgo jinagassda.

    // 🇮🇳 Hindi
    const hiT = "नमस्ते, आप कैसे हैं? मुझे हिंदी सीखना बहुत पसंद है।";
    console.log(await romanize(hiT, "hi"));
    // Output: namaste, aap kaise hain? mujhe hindii siikhnaa bahut pasand hai।
}

run();

Supported Output Languages:

  • ja: Japanese
  • ko: Korean
  • hi: Hindi

Contributing

Pull requests are welcome! If you are fixing a bug, please include tests demonstrating the previous error.

License

MIT