トランスパイラ、コンパイラ、ソースマップおよびNode.jsエージェント
Node.jsエージェントは、TypeScriptなどのJavaScriptにコンパイルされる言語で書かれたアプリケーションをサポートします。Node.jsエージェントは、JavaScriptのみに組み込めますが、アプリケーションをJavaScriptにコンパイルするようトランスパイラを設定した場合、TypeScriptも使用できます。
注記
結果として生成されるJavaScriptとソースが一致しない場合があります。そのため、報告されるメタデータ(脆弱性のコード行やファイル名など)は、ソースではなくコンパイルした結果を参照します。
TypeScriptなどの一部の言語では、実行前にコードのプリコンパイルが必要なものがあります。このような場合、Node.jsエージェントは、アプリケーションのコンパイル済エントリポイントを指す必要があります。
これを行うには、--importオプションを使用してNode.jsエージェントを設定します。
scripts: {
"test": "...",
"start": "...",
"contrast": "node --import @contrast/agent /path/to/transpiled/entrypoint.js"
}ソースマップ
ソースマップを使用すると、TypeScriptのソースとトランスパイルされたJavaScript間で対応する行番号を確認できます。
ソースマップを使用するには、YAML設定でBabel変換(enable_babel)と変換キャッシュ(rewrite_cache)を有効にする必要があります。
agent:
node:
rewrite_cache:
enable: true
path: ./cache
enable_babel: true有効にすると、エージェントはロードされているソースと同じディレクトリにあるソースマップ(mapファイル)を検索します(例:/home/app/index.jsファイルがロードされると、/home/app/index.js.mapが検索されます)。
ソースマップがまだない場合は、ソースマップを生成するために必要なフラグを使用して再コンパイルする必要があります。これはトランスパイラによって異なりますので、お使いのトランスパイラのオプションを確認してください。例えば、TypeScriptの場合は、--source-mapフラグをTypeScriptコンパイラ(tsc)に追加するか、tsconfig.jsonの”compilerOptions”セクションに”sourceMap”: trueエントリを追加します。