export interface IndentStringOptions { default readonly indent ? : string ; default readonly includeEmptyLines ? : boolean ; } param string param count example export function indentString ( string , count = 1 , options = { } ) { const { indent = ' ' , includeEmptyLines = false } = options ; if ( typeof string !== 'string' ) { throw new TypeError ( `Expected \`input\` to be a \`string\`, got \`${ typeof string }\`` ) ; } if ( typeof count !== 'number' ) { throw new TypeError ( `Expected \`count\` to be a \`number\`, got \`${ typeof count }\`` ) ; } if ( count < 0 ) { throw new RangeError ( `Expected \`count\` to be at least 0, got \`${ count }\`` ) ; } if ( typeof indent !== 'string' ) { throw new TypeError ( `Expected \`options.indent\` to be a \`string\`, got \`${ typeof indent }\`` ) ; } if ( count === 0 ) { return string ; } const regex = includeEmptyLines ? /^/gm : /^(?!\s*$)/gm ; return string . replace ( regex , indent . repeat ( count ) ) ; }