'use strict'; var trimStart = require('string.prototype.trimstart'); var trimEnd = require('string.prototype.trimend'); var GetIntrinsic = require('get-intrinsic'); var $TypeError = GetIntrinsic('%TypeError%'); var RequireObjectCoercible = require('./RequireObjectCoercible'); var ToString = require('./ToString'); // https://262.ecma-international.org/10.0/#sec-trimstring module.exports = function TrimString(string, where) { var str = RequireObjectCoercible(string); var S = ToString(str); var T; if (where === 'start') { T = trimStart(S); } else if (where === 'end') { T = trimEnd(S); } else if (where === 'start+end') { T = trimStart(trimEnd(S)); } else { throw new $TypeError('Assertion failed: invalid `where` value; must be "start", "end", or "start+end"'); } return T; };