Tela SDK for JavaScript
    Preparing search index...

    Class Batch<TInput, TOutput>

    Builder class for creating and executing batch operations on a canvas.

    The Batch class provides a fluent API for building up a collection of executions to be processed in parallel. Items can be added incrementally, and the batch is executed only when execute() is called.

    1. Create batch via canvas.createBatch()
    2. Add items via add() method (can be called multiple times)
    3. Execute batch via execute() method
    4. Monitor progress via events or await result

    Each batch item can have an optional reference ID for later retrieval. If not provided, UUIDs are generated automatically. Reference IDs are useful for correlating results with input data.

    const batch = canvas.createBatch({
    pollingInterval: '1s',
    pollingTimeout: '5m',
    })

    // Add items individually
    batch.add({
    referenceId: 'item-1',
    variables: { query: 'First query' }
    })

    // Or add multiple items at once
    batch.add([
    { variables: { query: 'Second query' } },
    { variables: { query: 'Third query' } }
    ])

    // Execute and track progress
    const execution = await batch.execute()
    execution.on('statusChange', ([status, response]) => {
    if (response.state) {
    console.log(`Progress: ${response.state.completed}/${response.state.total}`)
    }
    })

    const result = await execution.result
    const outputs = await result.getResults()

    Type Parameters

    • TInput

      The input variables type for the canvas

    • TOutput

      The output result type for individual executions

    Index

    Constructors

    Accessors

    Methods

    Constructors

    • Internal

      Creates a new batch builder.

      Type Parameters

      • TInput
      • TOutput

      Parameters

      • client: BaseClient

        HTTP client for making API requests.

      • canvasIdentifier: CanvasIdentifier

        Canvas identification (ID + version or application ID).

      • params: BatchParams = {}

        Optional batch execution parameters.

      Returns Batch<TInput, TOutput>

    Accessors

    • get items(): BatchItem<TInput>[]

      Gets the current list of items in this batch.

      Returns BatchItem<TInput>[]

      Array of batch items.

    Methods

    • Adds one or more items to the batch.

      Items without a reference ID will have UUIDs generated automatically. This method can be called multiple times to build up the batch incrementally.

      Parameters

      • item: MaybeArray<BatchItem<TInput>>

        Single item or array of items to add to the batch.

      Returns void

      // Add single item
      batch.add({
      referenceId: 'my-custom-id',
      variables: { query: 'Hello' }
      })

      // Add multiple items
      batch.add([
      { variables: { query: 'First' } },
      { variables: { query: 'Second' } },
      { variables: { query: 'Third' } }
      ])

      console.log(`Batch has ${batch.items.length} items`)
    • Executes the batch by uploading the input file and creating a batch execution on the server.

      Returns a promise-like object that allows flexible usage patterns:

      • Await for execution object: const exec = await batch.execute()
      • Direct result access: const result = await batch.execute().result

      The batch items are serialized to JSONL format, uploaded to vault storage, and submitted to the batch API for processing.

      Returns BatchExecutionPromiseLike<TOutput>

      A promise-like object with a result property for direct result access.

      // Direct result access (recommended for simple cases)
      const result = await batch.execute().result
      const outputs = await result.getResults()

      // Get execution object for event monitoring
      const execution = await batch.execute()

      execution.on('statusChange', ([status, response]) => {
      console.log(`Status: ${status}`)
      if (response.state) {
      console.log(`Progress: ${response.state.completed}/${response.state.total}`)
      }
      })

      execution.on('success', (result) => {
      console.log('Batch completed!', result.requestId)
      })

      const result = await execution.result

      // Iterate through results
      for await (const output of result.iterateResults()) {
      console.log(output)
      }