# Transpilers, compilers, source maps and the Node.js agent

The Node.js agent supports applications written in languages that compile to JavaScript, such TypeScript. Although the Node.js agent only instruments JavaScript, you can also use TypeScript if you configure the transpiler to compile your application into JavaScript.

### Note

The source may not correspond directly with the resulting JavaScript. As a result, reported metadata (like vulnerability line-of-code and filename) references the compiled result, not the original source.

Some languages, like TypeScript, require you to precompile your code before runtime. In these cases, the Node.js agent must point to the compiled entrypoint for your application.

To do this, set up the Node.js agent using the -r option:

scripts: {
"test": "...",
"start": "...",
"contrast": "node -r @contrast/agent /path/to/transpiled/entrypoint.js"
}

## Source maps

With a source map, you can see the corresponding line numbers between the TypeScript source and the transpiled JavaScript.

To use source maps, you must enable the Babel rewriter and rewrite caching in your YAML configuration:

agent:
node:
rewrite_cache:
enable: true
path: ./cache
enable_babel: true

When enabled, the agent looks for source maps (MAP files) in the same directory as the source that’s being loaded (for example, if the file /home/app/index.js is loaded, then Contrast looks for /home/app/index.js.map).

If you do not already have source maps then it needs to be recompiled using the necessary flags to produce source maps. This is different for every transpiler, so check the options for your transpiler. For example, for TypeScript, append the --source-map flag to the TypeScript compiler (tsc) or add the ”sourceMap”: true entry to the ”compilerOptions” section in tsconfig.json.