xref: /expo/packages/@expo/cli/src/utils/ansi.ts (revision e32ccf9f)
109bb6093SEvan Bacon/** Remove ansi characters from a string and return the sanitized results. */
2*e32ccf9fSEvan Baconexport function stripAnsi(str?: string | null) {
38d307f52SEvan Bacon  if (!str) {
48d307f52SEvan Bacon    return str;
58d307f52SEvan Bacon  }
68d307f52SEvan Bacon  const pattern = [
78d307f52SEvan Bacon    '[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)',
88d307f52SEvan Bacon    '(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))',
98d307f52SEvan Bacon  ].join('|');
108d307f52SEvan Bacon
118d307f52SEvan Bacon  return str.replace(new RegExp(pattern, 'g'), '');
128d307f52SEvan Bacon}
13