Index: trip-planner-front/node_modules/wrap-ansi/index.js
===================================================================
--- trip-planner-front/node_modules/wrap-ansi/index.js	(revision 6a3a178323fd905112b5392bd9d3cb83b66ef2d3)
+++ trip-planner-front/node_modules/wrap-ansi/index.js	(revision e29cc2ea91f8c99a4329f6d20188305dfd752279)
@@ -11,12 +11,5 @@
 const END_CODE = 39;
 
-const ANSI_ESCAPE_BELL = '\u0007';
-const ANSI_CSI = '[';
-const ANSI_OSC = ']';
-const ANSI_SGR_TERMINATOR = 'm';
-const ANSI_ESCAPE_LINK = `${ANSI_OSC}8;;`;
-
-const wrapAnsi = code => `${ESCAPES.values().next().value}${ANSI_CSI}${code}${ANSI_SGR_TERMINATOR}`;
-const wrapAnsiHyperlink = uri => `${ESCAPES.values().next().value}${ANSI_ESCAPE_LINK}${uri}${ANSI_ESCAPE_BELL}`;
+const wrapAnsi = code => `${ESCAPES.values().next().value}[${code}m`;
 
 // Calculate the length of words split on ' ', ignoring
@@ -29,6 +22,5 @@
 	const characters = [...word];
 
-	let isInsideEscape = false;
-	let isInsideLinkEscape = false;
+	let insideEscape = false;
 	let visible = stringWidth(stripAnsi(rows[rows.length - 1]));
 
@@ -44,18 +36,11 @@
 
 		if (ESCAPES.has(character)) {
-			isInsideEscape = true;
-			isInsideLinkEscape = characters.slice(index + 1).join('').startsWith(ANSI_ESCAPE_LINK);
+			insideEscape = true;
+		} else if (insideEscape && character === 'm') {
+			insideEscape = false;
+			continue;
 		}
 
-		if (isInsideEscape) {
-			if (isInsideLinkEscape) {
-				if (character === ANSI_ESCAPE_BELL) {
-					isInsideEscape = false;
-					isInsideLinkEscape = false;
-				}
-			} else if (character === ANSI_SGR_TERMINATOR) {
-				isInsideEscape = false;
-			}
-
+		if (insideEscape) {
 			continue;
 		}
@@ -77,6 +62,6 @@
 
 // Trims spaces from a string ignoring invisible sequences
-const stringVisibleTrimSpacesRight = string => {
-	const words = string.split(' ');
+const stringVisibleTrimSpacesRight = str => {
+	const words = str.split(' ');
 	let last = words.length;
 
@@ -90,5 +75,5 @@
 
 	if (last === words.length) {
-		return string;
+		return str;
 	}
 
@@ -96,7 +81,9 @@
 };
 
-// The wrap-ansi module can be invoked in either 'hard' or 'soft' wrap mode
+// The wrap-ansi module can be invoked
+// in either 'hard' or 'soft' wrap mode
 //
-// 'hard' will never allow a string to take up more than columns characters
+// 'hard' will never allow a string to take up more
+// than columns characters
 //
 // 'soft' allows long words to expand past the column length
@@ -106,7 +93,7 @@
 	}
 
-	let returnValue = '';
+	let pre = '';
+	let ret = '';
 	let escapeCode;
-	let escapeUrl;
 
 	const lengths = wordLengths(string);
@@ -115,5 +102,5 @@
 	for (const [index, word] of string.split(' ').entries()) {
 		if (options.trim !== false) {
-			rows[rows.length - 1] = rows[rows.length - 1].trimStart();
+			rows[rows.length - 1] = rows[rows.length - 1].trimLeft();
 		}
 
@@ -133,5 +120,6 @@
 		}
 
-		// In 'hard' wrap mode, the length of a line is never allowed to extend past 'columns'
+		// In 'hard' wrap mode, the length of a line is
+		// never allowed to extend past 'columns'
 		if (options.hard && lengths[index] > columns) {
 			const remainingColumns = (columns - rowLength);
@@ -167,41 +155,26 @@
 	}
 
-	const pre = [...rows.join('\n')];
+	pre = rows.join('\n');
 
-	for (const [index, character] of pre.entries()) {
-		returnValue += character;
+	for (const [index, character] of [...pre].entries()) {
+		ret += character;
 
 		if (ESCAPES.has(character)) {
-			const {groups} = new RegExp(`(?:\\${ANSI_CSI}(?<code>\\d+)m|\\${ANSI_ESCAPE_LINK}(?<uri>.*)${ANSI_ESCAPE_BELL})`).exec(pre.slice(index).join('')) || {groups: {}};
-			if (groups.code !== undefined) {
-				const code = Number.parseFloat(groups.code);
-				escapeCode = code === END_CODE ? undefined : code;
-			} else if (groups.uri !== undefined) {
-				escapeUrl = groups.uri.length === 0 ? undefined : groups.uri;
-			}
+			const code = parseFloat(/\d[^m]*/.exec(pre.slice(index, index + 4)));
+			escapeCode = code === END_CODE ? null : code;
 		}
 
 		const code = ansiStyles.codes.get(Number(escapeCode));
 
-		if (pre[index + 1] === '\n') {
-			if (escapeUrl) {
-				returnValue += wrapAnsiHyperlink('');
-			}
-
-			if (escapeCode && code) {
-				returnValue += wrapAnsi(code);
-			}
-		} else if (character === '\n') {
-			if (escapeCode && code) {
-				returnValue += wrapAnsi(escapeCode);
-			}
-
-			if (escapeUrl) {
-				returnValue += wrapAnsiHyperlink(escapeUrl);
+		if (escapeCode && code) {
+			if (pre[index + 1] === '\n') {
+				ret += wrapAnsi(code);
+			} else if (character === '\n') {
+				ret += wrapAnsi(escapeCode);
 			}
 		}
 	}
 
-	return returnValue;
+	return ret;
 };
 
@@ -210,5 +183,4 @@
 	return String(string)
 		.normalize()
-		.replace(/\r\n/g, '\n')
 		.split('\n')
 		.map(line => exec(line, columns, options))
