Skip to main content
@stormcat-works/stormmin は Node.js とブラウザの両方から import できる ESM 専用パッケージです。公開しているのは粗粒度の compile 系関数のみで、pass ごとの個別 API は提供していません。

Node.js とブラウザの違い

パッケージの実体はどちらも同じ WASM ビルドで、出力は byte 単位で同一です。実行方式だけが異なります。
  • ブラウザ: compile() はメインスレッドをブロックしません。内部の coordinator が Web Worker 上に WASM を lazy-load し、候補の評価を coordinator 自身 + 複数の candidate Worker に分散します。SharedArrayBuffer やクロスオリジン分離は不要です。
  • Node.js: 同じ WASM を呼び出し元のプロセス内で同期的にロードし、候補の評価は Worker を使わず逐次実行します。
ブラウザ環境では Worker コンストラクタが必須です。Worker を提供しない実行コンテキストで呼び出すと、compile() などのすべての呼び出しが Promise の reject で失敗します。

公開関数

各関数のシグネチャとオプション/戻り値の型は ライブラリ API リファレンス を参照してください。

エラーの扱い

ライブラリは専用のエラークラスを公開していません。失敗は次のいずれかの形で表れます。
  • compile()/compileProject() が { ok: false, error, diagnostics } を返す(構文エラーや Stormworks 非対応 API の使用など)。
  • Worker のクラッシュや未対応環境など、呼び出し自体が失敗した場合は Promise が reject される。
analyze() は構文エラーがあっても ok: true のまま diagnostics に syntax-error として報告します。編集中のエディタでリアルタイムに lint 結果を表示する用途を想定した挙動です。ok: false になるのは呼び出し自体の内部エラーのときだけです。

require を使った複数モジュールのリンク

modules はモジュールキー(. 区切りの Lua 識別子、例: lib.util)からソース文字列へのフラットな map です。詳しいルールと制約は require によるモジュール分割 を参照してください。