index.js
function mergeHelpers(engine, options) {
  if (!options || typeof options !== 'object') {
    throw new TypeError('expected an object');
  }

  var opts = extend({}, options);
  var helpers = merge({}, engine.helpers.cache, opts.helpers);
  var keys = Object.keys(helpers);
  for (var i = 0; i < keys.length; i++) {
    var key = keys[i];
    engine.asyncHelpers.set(key, helpers[key]);
  }

  opts.helpers = engine.asyncHelpers.get({wrap: opts.async});
  return opts;
}
function mergeHelpers(engine, options) {
  if (!options || typeof options !== 'object') {
    throw new TypeError('expected an object');
  }

  var opts = extend({}, options);
  var helpers = merge({}, engine.helpers.cache, opts.helpers);
  var keys = Object.keys(helpers);
  for (var i = 0; i < keys.length; i++) {
    var key = keys[i];
    engine.asyncHelpers.set(key, helpers[key]);
  }

  opts.helpers = engine.asyncHelpers.get({wrap: opts.async});
  return opts;
}
function mergeHelpers ( engine , options ) { if ( ! options || typeof options !== 'object' ) { throw new TypeError ( 'expected an object' ) ; } var opts = extend ( { } , options ) ; var helpers = merge ( { } , engine . helpers . cache , opts . helpers ) ; var keys = Object . keys ( helpers ) ; for ( var i = 0 ; i < keys . length ; i ++ ) { var key = keys [ i ] ; engine . asyncHelpers . set ( key , helpers [ key ] ) ; } opts . helpers = engine . asyncHelpers . get ( { wrap : opts . async } ) ; return opts ; }
Merge the local engine helpers with the options helpers.

@param  {Object} `options` Options passed into `render` or `compile`
@return {Object} Options object with merged helpers
Merge the local engine helpers with the options helpers .