| 'use strict'; |
| module.exports = (str, count, opts) => { |
| // Support older versions: use the third parameter as options.indent |
| // TODO: Remove the workaround in the next major version |
| const options = typeof opts === 'object' ? Object.assign({indent: ' '}, opts) : {indent: opts || ' '}; |
| count = count === undefined ? 1 : count; |
| |
| if (typeof str !== 'string') { |
| throw new TypeError(`Expected \`input\` to be a \`string\`, got \`${typeof str}\``); |
| } |
| |
| if (typeof count !== 'number') { |
| throw new TypeError(`Expected \`count\` to be a \`number\`, got \`${typeof count}\``); |
| } |
| |
| if (typeof options.indent !== 'string') { |
| throw new TypeError(`Expected \`options.indent\` to be a \`string\`, got \`${typeof options.indent}\``); |
| } |
| |
| if (count === 0) { |
| return str; |
| } |
| |
| const regex = options.includeEmptyLines ? /^/mg : /^(?!\s*$)/mg; |
| return str.replace(regex, options.indent.repeat(count)); |
| } |
| ; |