'use strict';

var abort$1 = require('./abort.js');
var async$1 = require('./async.js');

var abort = abort$1.abort_1
  , async = async$1.async_1
  ;

// API
var terminator_1 = terminator;

/**
 * Terminates jobs in the attached state context
 *
 * @this  AsyncKitState#
 * @param {function} callback - final callback to invoke after termination
 */
function terminator(callback)
{
  if (!Object.keys(this.jobs).length)
  {
    return;
  }

  // fast forward iteration index
  this.index = this.size;

  // abort jobs
  abort(this);

  // send back results we have so far
  async(callback)(null, this.results);
}

exports.terminator_1 = terminator_1;
