1'use strict'; 2 3module.exports = (string, count = 1, options) => { 4 options = { 5 indent: ' ', 6 includeEmptyLines: false, 7 ...options 8 }; 9 10 if (typeof string !== 'string') { 11 throw new TypeError( 12 `Expected \`input\` to be a \`string\`, got \`${typeof string}\`` 13 ); 14 } 15 16 if (typeof count !== 'number') { 17 throw new TypeError( 18 `Expected \`count\` to be a \`number\`, got \`${typeof count}\`` 19 ); 20 } 21 22 if (typeof options.indent !== 'string') { 23 throw new TypeError( 24 `Expected \`options.indent\` to be a \`string\`, got \`${typeof options.indent}\`` 25 ); 26 } 27 28 if (count === 0) { 29 return string; 30 } 31 32 const regex = options.includeEmptyLines ? /^/gm : /^(?!\s*$)/gm; 33 34 return string.replace(regex, options.indent.repeat(count)); 35}; 36