'use strict'; var $TypeError = require('es-errors/type'); var StringPad = require('./StringPad'); var ToLength = require('./ToLength'); var ToString = require('./ToString'); // https://262.ecma-international.org/15.0/#sec-stringpaddingbuiltinsimpl module.exports = function StringPaddingBuiltinsImpl(O, maxLength, fillString, placement) { if (placement !== 'start' && placement !== 'end' && placement !== 'START' && placement !== 'END') { throw new $TypeError('Assertion failed: `placement` must be ~START~ or ~END~'); } var S = ToString(O); // step 1 var intMaxLength = ToLength(maxLength); // step 2 var stringLength = S.length; // step 3 if (intMaxLength <= stringLength) { return S; } // step 4 var filler = typeof fillString === 'undefined' ? ' ' : ToString(fillString); // steps 5-6 return StringPad(S, intMaxLength, filler, placement); // step 7 };