Skip to main content
Version: Next

JavaScript Eval


Description

The JavaScript Eval processor allows you to write custom JavaScript functions to transform and enrich events. It:

  • Executes user-defined JavaScript code
  • Provides full access to input event data
  • Supports complex data transformations
  • Enables dynamic field creation and modification

Required Input

The processor works with any input event stream. All fields from the input event are available as properties in the JavaScript function.


Configuration

JavaScript Function

You need to provide a JavaScript function that processes the input event and returns a new event object. The function must:

  • Be named process
  • Accept a single parameter containing the input event
  • Return a map/object with the output fields

Example function structure:

function process(event) {
// do processing here.
// return a map with fields that matched defined output schema.
return {id: event.id, tempInCelsius: (event.tempInKelvin - 273.15)};
}

The defined output schema must match the event that is returned by the JavaScript function.

Output

The processor forwards a new event containing the fields returned by your JavaScript function.

Example

Input Event

{
"temperature": 25.5,
"humidity": 60,
"timestamp": 1586380105115
}

Configuration

function process(event) {
// Convert temperature from Celsius to Fahrenheit
const tempF = (event.temperature * 9/5) + 32;

// Calculate heat index
const heatIndex = calculateHeatIndex(tempF, event.humidity);

// Return new event with transformed data
return {
temperature_celsius: event.temperature,
temperature_fahrenheit: tempF,
humidity: event.humidity,
heat_index: heatIndex,
timestamp: event.timestamp
};
}

function calculateHeatIndex(temp, humidity) {
// Simplified heat index calculation
return temp + (humidity * 0.1);
}

Output Event

{
"temperature_celsius": 25.5,
"temperature_fahrenheit": 77.9,
"humidity": 60,
"heat_index": 83.9,
"timestamp": 1586380105115
}

Use Cases

  1. Data Transformation

    • Unit conversions
    • Data normalization
    • Complex calculations
    • Field restructuring
  2. Data Enrichment

    • Adding derived fields
    • Computing statistics
    • Combining multiple fields
    • Creating calculated metrics
  3. Custom Logic

    • Business rules implementation
    • Conditional transformations
    • Data validation
    • Custom algorithms

Notes

  • The JavaScript function runs in a GraalVM JavaScript environment
  • All input fields are accessible as properties of the event object
  • The function must return a valid JavaScript object
  • Error handling should be implemented in the JavaScript code
  • Complex JavaScript operations are supported
  • The function is executed for each incoming event, but state can be kept