---
title: "Input JavaScript"
description: "initialize inputs at runtime using JavaScript."
source: "https://github.com/log-10x/modules/tree/main/pipelines/run/units/transform/script/input/unit.yaml"
icon: "material/power-plug-outline"

---
Initialize [inputs](https://doc.log10x.com/run/input "Read events into the pipeline from local and remote sources") using JavaScript constructors to perform the following functions:

:material-check: **Validate** launch [arguments](https://doc.log10x.com/api/js/#TenXEnv "Access 10x launch arguments.") and [halt](https://doc.log10x.com/api/js/#TenXLog.throwError) the pipeline if unnecessary.

:material-file-table: **Load** .csv/.tsv [lookup](https://doc.log10x.com/api/js/#TenXLookup.load) files to enrich TenXObject and summary instances.

:material-globe-model: **Connect** to [GeoIP DBs](https://doc.log10x.com/api/js/#TenXLookup.loadGeoIPDB) to geo-reference IP addresses.

:material-counter: **Initialize** [counters](https://doc.log10x.com/api/js/#TenXCounter.getAndSet) and [dictionaries](https://doc.log10x.com/api/js/#TenXInput.set).

The example below from [http.js](https://github.com/log-10x/config/blob/main/pipelines/run/config/transform/script/http.js){target="\_blank"} loads an HTTP message [lookup](https://doc.log10x.com/api/js/#TenXLookup "Load and query the values of text lookup tables (.csv, .tsv) and geoIP DB files (.mmdb).") based on the value of a launch argument.

```js
/**
 * Input constructors are designed to initialize specific resources at the start of pipeline execution.
 */
export class HttpInput extends TenXInput {

 /**
  * This constructor loads the 'http.csv' lookup table to enrich instances of 'HttpSummary' below. 
  */
  constructor() {

  if !TenXLookup.load("data/run/lookup/http.csv", true)
    throw new Error("could not load HTTP lookup!");
}
```

To load input constructors see [JavaScript configuration](https://doc.log10x.com/config/javascript/).

## :material-menu: Options

Specify the options below to [configure](/config "configure") multiple Input JavaScript:

|Name|Description|
|---|---|
|[inputActionsClassName](#inputactionsclassname "JavaScript class name")|JavaScript class name|
|[inputActions](#inputactions "10x JavaScript statements to execute")|10x JavaScript statements to execute|
|[inputActionsFile](#inputactionsfile "Declaring .js file")|Declaring .js file|

### :material-menu-right-outline:**`inputActionsClassName`**

JavaScript class name.

|Type|Required|Names|
|---|---|---|
|String|✔|\[inputActionsClassName, TenXInputClassName\]|

Specifies the JavaScript class name in which [inputActions](https://doc.log10x.com/run/transform/script/input/#inputactions "10x JavaScript statements to execute") are defined.


### :material-menu-right-outline:**`inputActions`**

10x JavaScript statements to execute.

|Type|Default|Names|
|---|---|---|
|List|\[\]|\[inputActions, TenXInput\]|

JavaScript statements for initializing target input(s).

**NOTE**: This argument is not designed to be set directly, but instead by passing a [.js launch file](https://doc.log10x.com/config/javascript/) containing
these statements nested within an [TenXInput](https://doc.log10x.com/api/js/#TenXInput "Serves as a base class to allow for custom input initialization.") sub-class constructor as described above.


### :material-menu-right-outline:**`inputActionsFile`**

Declaring .js file.

|Type|Default|Names|
|---|---|---|
|String|""|\[inputActionsFile, TenXInputFile\]|

Specifies the .js file name declaring [inputActions](https://doc.log10x.com/run/transform/script/input/#inputactions "10x JavaScript statements to execute").


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

