トップレベルで REWRITE_HISTORY_COMMAND をエクスポートし拡張ライターへ公開
Lexxy のパッケージルートから REWRITE_HISTORY_COMMAND が直接取得できるようになり、拡張機能の実装がシンプルになります。
背景
拡張ライターは過去に内部モジュール ./extensions/rewritable_history_extension へ依存してコマンドを取得していましたが、公式 API として公開されていなかったため、利用時にパス指定や非公開モジュールへの依存が生じていました。今回の変更は「拡張ライターが公式に提供されるコマンドへアクセスできるようにする」ことを目的としています。トップレベルエクスポートを追加することで、パッケージ利用者は REWRITE_HISTORY_COMMAND を import { REWRITE_HISTORY_COMMAND } from "lexxy" の形で取得可能になります。
技術的な変更
src/commands.js が新規追加され、REWRITE_HISTORY_COMMAND を内部拡張モジュールから再エクスポートします。
export { REWRITE_HISTORY_COMMAND } from "./extensions/rewritable_history_extension"
src/index.js では既存のエクスポートに対し、先ほど追加した src/commands.js から全エクスポートを再エクスポートする行が挿入されました。
@@ -6,6 +6,7 @@ import { defineElements } from "./elements/index"
import Lexxy from "./config/lexxy"
export * from "./nodes"
+export * from "./commands"
export { highlightCode, highlightElement } from "./helpers/code_highlighting_helper"
export { NativeAdapter } from "./editor/adapters/native_adapter"
この二段階の再エクスポートにより、REWRITE_HISTORY_COMMAND は lexxy パッケージのエントリーポイントから直接参照できるようになります。コードベースの構造は変更せず、既存のモジュール分割は維持されたまま公開 API が拡張されました。
設計判断
再エクスポート パターンを採用したことで、内部実装ディレクトリ (extensions/rewritable_history_extension) を隠蔽しつつ、外部公開 API を明示的に拡張できます。新たに名前空間を増やすことなく、既存の export * from "./nodes" 系統と同様の形で統一感を保っています。これにより、将来的に他のコマンドを同様の手法で公開する際の拡張性も確保されています。
まとめ
今回の PR は REWRITE_HISTORY_COMMAND をトップレベルに再エクスポートするだけのシンプルな変更ですが、拡張ライターが公式 API として安全に利用できるようになる点で重要です。既存コードへの影響はなく、今後の拡張機能開発がより直感的になることが期待されます。