TessemblyDocs
0.3.x · RFC3 GitHub

JAVASCRIPT / INTERNATIONALIZATION

npm and languages

The same Rust implementation, a bundled Wasm asset and no npm runtime dependencies. Korean for a Korean primary language; English otherwise.

Use the library

The package source is packages/npm. Version 0.1.1 is already published under MIT through OIDC. Version 0.3.0 is the implemented F1/F2 supply-filter candidate. A passing build alone does not prove registry publication.

shell
npm install tessembly
# Verified tarball / 검증된 배포 파일
npm install ./tessembly-0.3.0.tgz
javascript
import { createTessembly } from 'tessembly';
const t = await createTessembly();
console.log(t.checkPattern('P4:D(I>TS)'));
const bytes = t.encodePattern('P4:D(T)');
console.log(t.decodePattern(bytes));
t.dispose();

Node.js 22+ is required. Browser applications use tessembly/browser. Supply wasmUrl when the bundler needs an explicitly copied asset, or trusted wasm bytes/Module to avoid fetching. No Rust, Python, native addon or installation script runs on the consumer machine.

Zero-dependency boundary

All npm dependency categories are empty, including peer/optional/bundled and development dependencies. The Wasm build uses only the Rust standard library and local format crates. The compiled module has no imports and ships in the tarball.

Node built-ins and browser WebAssembly/TextEncoder are platform facilities. Svelte documentation and external conformance tools remain separate. Native CLI/TCK JSON still uses serde_json, not linked into npm Wasm. The API handles formats, not solvers or datasets.

Language selection

Neutral Pages URLs select ko only for a Korean primary browser language. Every other primary language selects en, even when Korean is a secondary preference. Explicit /en/ and /ko/ URLs win; manual preferences are saved when storage is available. JavaScript-disabled visitors get readable English and language links.

The npm library uses browser primary language or desktop/Node locale. language/setLanguage override presentation; TESSEMBLY_LANG and --lang override CLI preferences. Codes, byte spans, machine states, syntax and stored bytes remain language-independent.

javascript
const t = await createTessembly({ language: 'ko' });
t.setLanguage('en');

Both documentation languages are authored and prerendered. No language model, translation service or runtime i18n dependency is used.

OIDC publishing and recovery

Trusted Publisher remains GitHub owner daejunnom, repository Tessembly, filename npm-release.yml and environment npm, with direct npm publish permission. Different login emails are not a blocker. The working OIDC setup does not need recreating.

The 0.1.1 upload succeeded; only its old final checker failed after about 38 seconds. The original registry artifact is now confirmed read-only. Do not delete or republish it. Start a NEW release for the hardening candidate: main / mode=publish / expected_version=0.3.0. verify-only does not test npm authorization.

The workflow never loads NPM_TOKEN or silently falls back to token authentication. After an actual verified OIDC release, revoke the bootstrap npm token and delete its GitHub Secret separately. Keep 2FA enabled. See the security chapter and docs/PUBLISHING.md for exact-artifact recovery.

MIT license

Tessembly sources and documentation are MIT. Copyright (c) 2026 daejunnom. npm contains the same LICENSE as the repository; third-party components retain their own licenses.

Published 0.1.0 and 0.1.1 tarballs are not rewritten. The 0.3.0 hardening candidate must pass the explicit release workflow before publication. Semantic profiles and binary wire versions are unchanged.