Index: node_modules/gauge/lib/wide-truncate.js
===================================================================
--- node_modules/gauge/lib/wide-truncate.js	(revision 81bc7da776d8cda42939ef4ab350c88d13b4941f)
+++ node_modules/gauge/lib/wide-truncate.js	(revision 81bc7da776d8cda42939ef4ab350c88d13b4941f)
@@ -0,0 +1,31 @@
+'use strict'
+var stringWidth = require('string-width')
+var stripAnsi = require('strip-ansi')
+
+module.exports = wideTruncate
+
+function wideTruncate (str, target) {
+  if (stringWidth(str) === 0) {
+    return str
+  }
+  if (target <= 0) {
+    return ''
+  }
+  if (stringWidth(str) <= target) {
+    return str
+  }
+
+  // We compute the number of bytes of ansi sequences here and add
+  // that to our initial truncation to ensure that we don't slice one
+  // that we want to keep in half.
+  var noAnsi = stripAnsi(str)
+  var ansiSize = str.length + noAnsi.length
+  var truncated = str.slice(0, target + ansiSize)
+
+  // we have to shrink the result to account for our ansi sequence buffer
+  // (if an ansi sequence was truncated) and double width characters.
+  while (stringWidth(truncated) > target) {
+    truncated = truncated.slice(0, -1)
+  }
+  return truncated
+}
