> ## JavaScript SDK

> JavaScript SDK for Antithesis

> Fetch the complete documentation index at: https://antithesis.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

---

[Contact us](/company/contact/) about the availability of the JavaScript SDK.

## JavaScript instrumentation

The Antithesis platform can automatically instrument JavaScript code by performing a source transformation after you've sent it to us. No changes to your source code or build system are required. Our instrumentor assumes by default that you are using NodeJS as your runtime -- [contact us](/company/contact/) if you'd like to use a different runtime. We do not support instrumenting JavaScript code that runs in a browser.

### NodeJS

Place directories, files, or symlinks to the code you want instrumented or cataloged in the directory `/opt/antithesis/catalog/` within your container image. Antithesis will follow all symlinks while resolving the path to the cataloging directory.

However, it will follow only one symlink deep into each item placed within `/opt/antithesis/catalog/`. That is, you should not symlink to a symlink.

#### Example cataloging directory:

```bash
> ln -s /usr/share/my_app /opt/antithesis/catalog

> ls -lAh /opt/antithesis/catalog
lrwxrwxrwx  1 me users 4 Apr  8 17:32 /opt/antithesis/catalog -> /usr/share/my_app

> ls -lAh /opt/antithesis/catalog/
-rwxr-xr-x  1 me users  20K Apr  8 17:33 dotnet_file.dll
lrwxrwxrwx  1 me users 27 Apr  8 17:52 more_files -> /opt/my_project/java_files
-rwxr-xr-x  1 me users  10K Apr  8 17:33 python_script.py

> ls -lA /opt/antithesis/catalog/more_files/
-rw-r--r--  1 me users  16K Apr  8 17:51 main.jar
lrwxrwxrwx  1 me users  16K Apr  8 17:51 my_other.jar -> /some/other/place.jar
```

Based on the example above, the following files would be instrumented:

- `dotnet_file.dll`
- `python_script.py`
- `main.jar`

Ignored files:

- `my_other.jar` - this will be ignored as we already encountered one symlink when traversing down from `opt/antithesis/catalog/more_files`.

When instrumenting Javascript, the instrumentor will search for directories containing `node_modules` and recursively instrument all of the code within said directories; however, it will by default exclude everything in `node_modules` and some standard configuration files that happen to be implemented as JavaScript (for instance `eslint.config.js`). It follows that vendored dependencies will be instrumented by default.

> **Note**
>
> The instrumentor will, by default, act upon every language it supports in the cataloging directory: ([Java ](/docs/reference/sdk/java/how_to_build_with_sdk/), [Python](/docs/reference/sdk/python/), [JavaScript](/docs/reference/sdk/javascript_sdk/), [.NET](/docs/reference/sdk/dotnet/instrumentation/)), not just JavaScript.

For dependency management, Antithesis supports `require` by default, but can be configured to support `import` -- email us at `support@antithesis.com` and we'll flip the setting for your account.

### JS-target languages

Antithesis can instrument projects in JavaScript-target languages such as TypeScript if you provide us with transpiled JavaScript code. Transpilation must happen before you send us the code (as part of your build process), rather than at service startup.

### Symbolization

Antithesis will automatically gather the symbol information from your code. You do not need to separately provide us with symbol files.

### Help

[Contact us](/company/contact/) if you need help with this.
