| /*! | |
|  * word-wrap <https://github.com/jonschlinkert/word-wrap> | |
|  * | |
|  * Copyright (c) 2014-2023, Jon Schlinkert. | |
|  * Released under the MIT License. | |
|  */ | |
| 
 | |
| function trimEnd(str) { | |
|   let lastCharPos = str.length - 1; | |
|   let lastChar = str[lastCharPos]; | |
|   while(lastChar === ' ' || lastChar === '\t') { | |
|     lastChar = str[--lastCharPos]; | |
|   } | |
|   return str.substring(0, lastCharPos + 1); | |
| } | |
| 
 | |
| function trimTabAndSpaces(str) { | |
|   const lines = str.split('\n'); | |
|   const trimmedLines = lines.map((line) => trimEnd(line)); | |
|   return trimmedLines.join('\n'); | |
| } | |
| 
 | |
| module.exports = function(str, options) { | |
|   options = options || {}; | |
|   if (str == null) { | |
|     return str; | |
|   } | |
| 
 | |
|   var width = options.width || 50; | |
|   var indent = (typeof options.indent === 'string') | |
|     ? options.indent | |
|     : '  '; | |
| 
 | |
|   var newline = options.newline || '\n' + indent; | |
|   var escape = typeof options.escape === 'function' | |
|     ? options.escape | |
|     : identity; | |
| 
 | |
|   var regexString = '.{1,' + width + '}'; | |
|   if (options.cut !== true) { | |
|     regexString += '([\\s\u200B]+|$)|[^\\s\u200B]+?([\\s\u200B]+|$)'; | |
|   } | |
| 
 | |
|   var re = new RegExp(regexString, 'g'); | |
|   var lines = str.match(re) || []; | |
|   var result = indent + lines.map(function(line) { | |
|     if (line.slice(-1) === '\n') { | |
|       line = line.slice(0, line.length - 1); | |
|     } | |
|     return escape(line); | |
|   }).join(newline); | |
| 
 | |
|   if (options.trim === true) { | |
|     result = trimTabAndSpaces(result); | |
|   } | |
|   return result; | |
| }; | |
| 
 | |
| function identity(str) { | |
|   return str; | |
| }
 |