diff --git a/apps/wing-console/console/design-system/package.json b/apps/wing-console/console/design-system/package.json
index 82018417c4d..ed5552027d6 100644
--- a/apps/wing-console/console/design-system/package.json
+++ b/apps/wing-console/console/design-system/package.json
@@ -34,6 +34,7 @@
"@tailwindcss/forms": "^0.5.7",
"@tailwindcss/typography": "^0.5.13",
"classnames": "^2.5.1",
+ "lodash.escape": "^4.0.1",
"lodash.uniq": "^4.5.0",
"nanoid": "^4.0.2",
"react": "^18.3.1",
@@ -45,6 +46,7 @@
"@babel/core": "^7.24.7",
"@storybook/react": "^7.6.19",
"@testing-library/react": "^14.3.1",
+ "@types/lodash.escape": "^4.0.9",
"@types/lodash.uniq": "^4.5.9",
"@types/react": "^18.3.3",
"@types/react-dom": "^18.3.0",
diff --git a/apps/wing-console/console/design-system/src/text-highlight.tsx b/apps/wing-console/console/design-system/src/text-highlight.tsx
index 960f526d6ae..a4387d91d17 100644
--- a/apps/wing-console/console/design-system/src/text-highlight.tsx
+++ b/apps/wing-console/console/design-system/src/text-highlight.tsx
@@ -1,3 +1,4 @@
+import escape from "lodash.escape";
import { memo, useEffect, useState } from "react";
import type { Theme } from "./theme-provider.js";
@@ -41,7 +42,7 @@ const highlightJson = (value: string, theme: Theme) => {
} else if (/null/.test(match)) {
className = palette.null;
}
- return `${match}`;
+ return `${escape(match)}`;
},
)}${formatted.slice(CHAR_LIMIT)}`;
};
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index b33ced0127d..91c80fd7baa 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -561,6 +561,9 @@ importers:
classnames:
specifier: ^2.5.1
version: 2.5.1
+ lodash.escape:
+ specifier: ^4.0.1
+ version: 4.0.1
lodash.uniq:
specifier: ^4.5.0
version: 4.5.0
@@ -589,6 +592,9 @@ importers:
'@testing-library/react':
specifier: ^14.3.1
version: 14.3.1(react-dom@18.3.1)(react@18.3.1)
+ '@types/lodash.escape':
+ specifier: ^4.0.9
+ version: 4.0.9
'@types/lodash.uniq':
specifier: ^4.5.9
version: 4.5.9
@@ -10759,6 +10765,12 @@ packages:
'@types/lodash': 4.17.5
dev: true
+ /@types/lodash.escape@4.0.9:
+ resolution: {integrity: sha512-YR9R6RU9D36OWrhVZ+r4fY8mMXQtofnLXAcE6CkKIxdH66uiCdEjkhxx/eiJnYpxjOFmPbWBUUvdv8lckO823Q==}
+ dependencies:
+ '@types/lodash': 4.17.5
+ dev: true
+
/@types/lodash.once@4.1.9:
resolution: {integrity: sha512-nvZ7GYfyZB6CUmXL+7HSXg53rFpc49FsKuRmMiCIGhgJB/yyTip8uHk4mxGyVJOl87dXPlf3qy42WsjOcIrnmg==}
dependencies:
@@ -14292,7 +14304,7 @@ packages:
dependencies:
semver: 7.6.2
shelljs: 0.8.5
- typescript: 5.6.0-dev.20240623
+ typescript: 5.6.0-dev.20240703
dev: true
/dset@3.1.3:
@@ -18003,6 +18015,10 @@ packages:
resolution: {integrity: sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==}
dev: true
+ /lodash.escape@4.0.1:
+ resolution: {integrity: sha512-nXEOnb/jK9g0DYMr1/Xvq6l5xMD7GDG55+GSYIYmS0G4tBk/hURD4JR9WCavs04t33WmJx9kCyp9vJ+mr4BOUw==}
+ dev: false
+
/lodash.flatten@4.4.0:
resolution: {integrity: sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==}
dev: true
@@ -22606,8 +22622,8 @@ packages:
engines: {node: '>=14.17'}
hasBin: true
- /typescript@5.6.0-dev.20240623:
- resolution: {integrity: sha512-g9nRTnzICZMqhhULQsQC/Teb2Kbrd9Ad/sklK65F7Q1MNAF57X2t5y9u7GI1nCyiQLhGrmJqnxXETwDOBtjADQ==}
+ /typescript@5.6.0-dev.20240703:
+ resolution: {integrity: sha512-AAOGWtykhMpxB4l+5CwojT2aBVAszalz9guzYaZMavmKHWxm3HciR+cIcKqDgR22hR7fPBJHtOti7uFCo4mt4A==}
engines: {node: '>=14.17'}
hasBin: true
dev: true