'use strict'; 
 | 
var uncurryThis = require('../internals/function-uncurry-this'); 
 | 
var requireObjectCoercible = require('../internals/require-object-coercible'); 
 | 
var toString = require('../internals/to-string'); 
 | 
var whitespaces = require('../internals/whitespaces'); 
 | 
  
 | 
var replace = uncurryThis(''.replace); 
 | 
var ltrim = RegExp('^[' + whitespaces + ']+'); 
 | 
var rtrim = RegExp('(^|[^' + whitespaces + '])[' + whitespaces + ']+$'); 
 | 
  
 | 
// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation 
 | 
var createMethod = function (TYPE) { 
 | 
  return function ($this) { 
 | 
    var string = toString(requireObjectCoercible($this)); 
 | 
    if (TYPE & 1) string = replace(string, ltrim, ''); 
 | 
    if (TYPE & 2) string = replace(string, rtrim, '$1'); 
 | 
    return string; 
 | 
  }; 
 | 
}; 
 | 
  
 | 
module.exports = { 
 | 
  // `String.prototype.{ trimLeft, trimStart }` methods 
 | 
  // https://tc39.es/ecma262/#sec-string.prototype.trimstart 
 | 
  start: createMethod(1), 
 | 
  // `String.prototype.{ trimRight, trimEnd }` methods 
 | 
  // https://tc39.es/ecma262/#sec-string.prototype.trimend 
 | 
  end: createMethod(2), 
 | 
  // `String.prototype.trim` method 
 | 
  // https://tc39.es/ecma262/#sec-string.prototype.trim 
 | 
  trim: createMethod(3) 
 | 
}; 
 |