このページの環境プロファイル・字句短縮・診断統一は、Storm Lua EngineのSDK統合ブランチに対応する実装の仕様です。既存の公開済みパッケージへ遡って適用されるものではありません。同じ版のSDKとStorm Minを使用してください。
@stormcat-works/stormmin が公開する関数は次の 6 つです。
CompileOptions
compile()/compileProject() に渡すオプションです。すべて省略可能です。
PropertyConfig:
numericMode を省略し、かつ numericTolerance を { abs: 0, rel: 0 } と明示した場合は exact モードとして扱われます。tolerant モードでも近似の対象になりません。
廃止済みのgeneral-expression-factoring、repeated-expression-factoring、scalar-vector-loop-synthesis、redundant-nil-fallback-eliminationは、true/falseのどちらを指定してもunknown-optimization-passになります。現在の登録は67件です。表示用のpassMetadata()は、全登録ID一覧と同じではありません。Engine SDKの全IDはpassIds()で取得できます。
numericMode: "exact"では、その意味論に合わない変換だけを無効化します。一部パスはexact-safeな部分だけを利用します。実際のdisabledPassesと数値前提を確認してください。
環境設定にはenvironment?: "game" | "extended"(既定game)とhostBindings?: string[]があります。ホスト値・関数のdot区切りパスを宣言するにはextendedが必要です。実行環境と同じ設定を渡してください。extendedと_ENV入力はトークンと行番号を保つ字句短縮を使います。
CompileResult
PassRecord:
Assumptions:
SearchStats:
ProjectCompileOptions / ProjectCompileResult
ProjectCompileOptions は CompileOptions に minify?: boolean(既定 true)を加えたものです。
ProjectCompileResult は CompileResult の統計フィールドに加えて、次を含みます。
失敗時(
ok: false)は diagnostics のみが返され、code/map は含まれません。
analyze / AnalyzeResult
AnalyzeOptions: { disabledRules?: string[] }
AnalyzeResult: { ok: boolean; diagnostics: Diagnostic[] }
ok は内部エラーの場合にのみ false になります。Lua の構文エラーは ok: true のまま diagnostics に syntax-error として報告されます。
Diagnostic
compile()/compileProject()/analyze() すべてで共通のスキーマです。
code は安定な kebab-case 識別子で、廃止されることはあっても意味の変更・再利用はされません。message は常に英語固定で、ローカライズが必要な場合は code をキーにします。診断コードの一覧は 診断コードリファレンス を参照してください。
LuaProject
scanProperties / passMetadata
scanProperties はソース中の property.get* 呼び出しを検出し、種類ごとのキー一覧と、動的(キーが定数でない)呼び出しの件数を返します。passMetadata は全 pass の ID と表示名のペアを返します(同じ pass ID が複数の表示名で登場することがあります)。どちらも Node.js / ブラウザの両方で利用できます。