inputx-nihongo-wasm 1.5.0

WASM bindings for inputx-nihongo — Japanese romaji → hiragana/katakana + on-yomi kanji + jukugo, browser/Node ready. Powers the Inputx IME web surface.
Documentation

@goliapkg/nihongo (WASM)

Browser / Node bindings for inputx-nihongo — self-contained Japanese input engine: Hepburn (with kunrei alternates) romaji → hiragana/katakana, on-yomi single-kanji lookup, 27k jukugo (熟語) compound lookup, mechanical compose_sentence particle/copula glue. Pre-built into a ~1.5 MB WebAssembly module (JUKUGO_TABLE + KANJI_TABLE embedded).

The web surface of the Inputx IME.

License: MIT OR Apache-2.0.

Install

npm install @goliapkg/nihongo

Usage

import init, { JapaneseEngine, KanaKind } from "@goliapkg/nihongo";

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

// Drive the engine one ASCII byte at a time. `-` is also accepted as
// chōonpu (ー / long-vowel mark) when the buffer is non-empty so
// long-vowel words like コーヒー stay reachable.
for (const c of "shinjuku") {
    eng.handleLetter(c.charCodeAt(0));
}

console.log(eng.preedit());                // "shinjuku"
console.log(eng.candidates());
// [
//   { word: "新宿",          kind: KanaKind.Kanji,    freq: N,
//     composed: false, proximityMilli: 1000 },
//   { word: "しんじゅく",     kind: KanaKind.Hiragana, freq: 0,
//     composed: false, proximityMilli: 1000 },
//   { word: "シンジュク",     kind: KanaKind.Katakana, freq: 0,
//     composed: false, proximityMilli: 1000 },
// ]

// Commit one — engine clears its buffer ready for the next word.
const committed = eng.commitIndex(0);       // "新宿"

// Backspace pops one byte; escape clears the entire buffer.
for (const c of "tabe") eng.handleLetter(c.charCodeAt(0));
eng.backspace();                            // pops 'e'
eng.escape();                               // clears entirely

Candidate fields

Each candidates() entry carries:

Field Type Meaning
word string The displayed text (kanji / hiragana / katakana)
kind KanaKind Enum (0=Hiragana, 1=Katakana, 2=Kanji) for the host UI's optional kana/kanji hint
freq number 0–100 frequency score. Higher = more common in modern JP. 0 for kana fallback (mechanical romaji → kana, not freq-tuned)
composed boolean true for compose_sentence products (particle/copula glue like 私は). LOW confidence — host should rank these below real dict words
proximityMilli number 1000 = the buffer is the full reading (exact match). < 1000 = prefix-prediction candidate whose reading the buffer is only a prefix of (shinjuk → 新宿 at 875)

What ships

  • inputx_nihongo_wasm_bg.wasm — engine + 27,380 jukugo + 1,666 kanji-reading pairs (~1.5 MB)
  • inputx_nihongo_wasm.js — ES-module wrapper
  • inputx_nihongo_wasm.d.ts — TypeScript types

Build from source

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

For Node-target bundles: wasm-pack build --target nodejs.

API stability

The 1.x line follows semver:

  • JapaneseEngine constructor + method set — no breaking changes within 1.x. New methods may be added as minor bumps.
  • KanaKind enum discriminants — fixed (0=Hiragana, 1=Katakana, 2=Kanji); matches the native facade's KanaKind enum.
  • candidates() object shape — the 5 fields above are stable across 1.x; additional fields may be added as minor bumps.
  • commitIndex return — string for in-range, null for out-of-range index; out-of-range never mutates state.

See also