---
title: "JavaScript Processor"
description: "enrich, filter, aggregate and output TenXObjects using JavaScript."
source: "https://github.com/log-10x/modules/tree/main/pipelines/run/units/transform/script/unit.yaml"
icon: "material/language-javascript"

---
The [JavaScript API](https://doc.log10x.com/api/js/) controls initialization, enrichment, filtering, and serialization of TenXObjects.

Custom code executes in these contexts:

|Context|Description|Example|
|---|---|---|
|[Input](https://doc.log10x.com/run/transform/script/input/ "Initialize inputs at runtime using JavaScript.")|Validate launch arguments and initialize text/GeoIP lookups|[HttpInput](https://github.com/log-10x/config/blob/main/pipelines/run/config/transform/script/http.js#L9){target="\_blank"}|
|[Object](https://doc.log10x.com/run/transform/script/object "Initialize TenXObject instances at runtime using JavaScript.")|Enrich TenXObjects, update counters/dictionaries, filter unnecessary instances|[HttpObject](https://github.com/log-10x/config/blob/main/pipelines/run/config/transform/script/http.js#L30){target="\_blank"}|
|[Summary](https://doc.log10x.com/run/transform/script/summary "Initialize TenXSummary instances at runtime using JavaScript")|Enrich TenXSummaries produced by an [aggregator](https://doc.log10x.com/run/aggregate "Aggregate and summarize TenXObjects to publish as metrics") using text/GeoIP lookups, counters and dictionaries|[HttpSummary](https://github.com/log-10x/config/blob/main/pipelines/run/config/transform/script/http.js#L50){target="\_blank"}|
|[Unit](https://doc.log10x.com/run/transform/script/unit "Initialize pipeline units at runtime using JavaScript.")|Initialize pipeline units at startup via `constructor()` and perform cleanup at shutdown via `close()`|[SymbolLoader](https://github.com/log-10x/modules/blob/main/apps/shared/console/symbolLoader.js){target="\_blank"}|
|[Receiver](https://doc.log10x.com/run/output/receive "Filter and sample TenXObjects based on per-node budget sampling or a declarative field-set mute file")|Filter 'noisy' telemetry via per-node budget sampling or a declarative field-set mute file to prevent over-billing.|[Rate](https://github.com/log-10x/config/blob/main/pipelines/run/receive/rate/rate-object-global.js){target="\_blank"}|
|[Output](https://doc.log10x.com/run/output/stream "Write TenXObjects to custom event and metric destinations.")|Customize encoding of TenXObjects/Summaries to stream (e.g., stdout) and time-series (e.g., Prometheus) outputs.|[Fluent Bit](https://github.com/log-10x/config/blob/main/pipelines/run/config/output/event/process/config.yaml#L63){target="\_blank"}|
|[Log4j](https://doc.log10x.com/run/output/event/process "Write TenXObject and template values to a sub-process stdin")|Customize encoding of TenXObjects to log4j [appenders](https://logging.apache.org/log4j/2.x/manual/appenders.html){target="\_blank"}.|[Filebeat](https://github.com/log-10x/modules/blob/main/pipelines/run/modules/input/forwarder/filebeat/log4j2.yaml){target="\_blank"}|

## :octicons-package-24: Modules


<div class="grid cards" markdown>

-   :material-function:{ .lg .middle } __Function JavaScripts__

    ---

    Define custom JavaScript functions.

    [:octicons-arrow-right-24: More info](/run/transform/script/function)

-   :material-power-plug-outline:{ .lg .middle } __Input JavaScripts__

    ---

    Initialize inputs at runtime using JavaScript.

    [:octicons-arrow-right-24: More info](/run/transform/script/input)

-   :material-star-cog-outline:{ .lg .middle } __Object JavaScripts__

    ---

    Initialize TenXObject instances at runtime using JavaScript.

    [:octicons-arrow-right-24: More info](/run/transform/script/object)

-   :material-power-plug-outline:{ .lg .middle } __Output JavaScripts__

    ---

    Initialize outputs at runtime using JavaScript.

    [:octicons-arrow-right-24: More info](/run/transform/script/output)

-   :material-star-cog-outline:{ .lg .middle } __Summary JavaScripts__

    ---

    Initialize TenXSummary instances at runtime using JavaScript.

    [:octicons-arrow-right-24: More info](/run/transform/script/summary)

-   :material-shape-plus-outline:{ .lg .middle } __Template JavaScripts__

    ---

    Initialize TenXTemplate instances at runtime using JavaScript.

    [:octicons-arrow-right-24: More info](/run/transform/script/template)

-   :material-power-plug-outline:{ .lg .middle } __Unit JavaScripts__

    ---

    Initialize pipeline units at runtime using JavaScript.

    [:octicons-arrow-right-24: More info](/run/transform/script/unit)

-   :material-power-plug-off-outline:{ .lg .middle } __Unit Shutdown JavaScripts__

    ---

    Execute JavaScript when pipeline units shut down.

    [:octicons-arrow-right-24: More info](/run/transform/script/unitShutdown)

</div>
<br/>:material-github: This unit is defined in [script/unit.yaml](https://github.com/log-10x/modules/tree/main/pipelines/run/units/transform/script/unit.yaml "script/unit.yaml"){target="\_blank"}.

