inputx-pinyin-wasm 1.0.2

WASM bindings for inputx-pinyin — Mandarin Pinyin IME engine, browser/Node ready. Powers the Inputx IME web surface.
Documentation

@goliapkg/pinyin (WASM)

Browser / Node bindings for inputx-pinyin — a self-developed Mandarin Pinyin input engine with segmenter, fuzzy syllables, FST dict, and L0 user-learning. Pre-built into a ~100 KB WebAssembly module (bootstrap dict embedded by default; full 9 MB dict available behind a build feature).

The web surface of the Inputx IME.

License: MIT OR Apache-2.0.

Read this in 简体中文 · 日本語.

Install

npm install @goliapkg/pinyin

Usage

import init, { PinyinEngine } from "@goliapkg/pinyin";

await init();                              // load + instantiate the .wasm
const eng = new PinyinEngine();

// Exact-syllable lookup
console.log(eng.lookup("zhongguo"));       // ["中国", "中过", ...]

// Prefix completion (used for partial-input IME suggestions)
const hits = eng.prefix("zho");
hits.slice(0, 5).forEach(h => console.log(h.pinyin, h.word));

// User picks a candidate → engine learns. 3 picks → auto-pin to L0.
eng.recordPick("zhongguo", "中国");

// Char → pinyin reverse lookup
console.log(eng.encode(""));             // "zhong"

// Persistence — caller chooses storage
const state = eng.exportL0();
localStorage.setItem("pinyin-l0", JSON.stringify(state));
// later:
eng.importL0(JSON.parse(localStorage.getItem("pinyin-l0") ?? "{}"));

What ships

  • golia_pinyin_wasm_bg.wasm — engine + bootstrap FST (~100 KB)
  • golia_pinyin_wasm.js — ES-module wrapper
  • golia_pinyin_wasm.d.ts — TypeScript types

For the full 414K-entry dict (9 MB), rebuild without the bootstrap_only feature — see Build below.

Build from source

Default (small bootstrap dict, ~100 KB total bundle):

git clone https://github.com/goliajp/inputx
wasm-pack build core/crates/inputx-pinyin-wasm --target web --release
# output in core/crates/inputx-pinyin-wasm/pkg/

Full dict (~9 MB, all 414K entries):

wasm-pack build core/crates/inputx-pinyin-wasm \
    --no-default-features --target web --release

See also