2023-01-29
セキュリティの基本、怪しいプログラムを仮想空間に閉じ込めて動かす、サンドボックス化。JavaScriptの構文解析ライブラリ「acorn」の関係プロダクトを見ていたら発見した「JS-Interpreter」は、JavaScriptで書かれたJavaScriptインタプリター。怪しいJavaScriptコードでも安心です!


「JS-Interpreter」
src on GitHub
使い方は簡単、Interpreter をimportして、プログラムをパラメーターとしてインスタンスを生成してrunするだけ!ステップ実行にも対応していていろいろ便利そうです。

残念なことに新しいJavaScriptに対応していないので、letやconstが使えません。上のデモは、しょうがないので、下記のようにletとconstをvarに置き換えています。 const letconst2var = (s) => s.replace(/(let\s)/g, "var ").replace(/(const\s)/g, "var "); constでも再代入できてしまうなど、対応は完全ではないのは今後の課題です。


「Babel demo」

Babelを使ってES6のコードを変換し、インタプリターで動かすデモがありましたが、変換後のコードでステップ実行されてしまうので、利用用途は限定的です。


「JS-Interpreter - ESモジュール版」

acorn-esをURLインポートしている、シンプルな1ファイル構成。テストコードも用意したいですね。

links
- awaitがdefaultなAltJS「SyncJS」
- JavaScriptと仲良くなるためのプログラム整形ツール by esprima / escodegen
- Build a JS Interpreter in JavaScript Using Acorn as a Parser | by Chidume Nnamdi 🔥💻🎵🎮 | Bits and Pieces

Tweet
クリエイティブ・コモンズ・ライセンス
本ブログの記事や写真は「Creative Commons — CC BY 4.0」の下に提供します。記事内で紹介するプログラムや作品は、それぞれに記載されたライセンスを参照ください。
CC BY / @taisukef / アイコン画像 / プロフィール画像 / 「一日一創」画像 / RSS