Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
util: fix OSC 8 hyperlink stripping in stripVTControlCharacters
The bundled ansi-regex OSC pattern used a restrictive URI
character class that failed when URIs contained RFC 3986-valid
characters such as parentheses.

Match OSC sequences generically as ESC ] ... ST, aligned with
ansi-regex v6.2.0.

Co-authored-by: Cursor <[email protected]>
Signed-off-by: dushyant <[email protected]>
  • Loading branch information
dushyant-hada-90 and cursoragent committed Jul 26, 2026
commit 0817b0a973bb3515dde749842490e1a4fb54eebd
12 changes: 5 additions & 7 deletions lib/internal/util/inspect.js
Comment thread
dushyant-hada-90 marked this conversation as resolved.
Original file line number Diff line number Diff line change
Expand Up @@ -282,16 +282,14 @@ const meta = [
];

// Regex used for ansi escape code splitting
// Ref: https://github.com/chalk/ansi-regex/blob/f338e1814144efb950276aac84135ff86b72dc8e/index.js
// Ref: https://github.com/chalk/ansi-regex/blob/72bc570/index.js
Comment thread
dushyant-hada-90 marked this conversation as resolved.
Outdated
// License: MIT by Sindre Sorhus <[email protected]>
// Matches all ansi escape code sequences in a string
const ansi = new RegExp(
'[\\u001B\\u009B][[\\]()#;?]*' +
'(?:(?:(?:(?:;[-a-zA-Z\\d\\/\\#&.:=?%@~_]+)*' +
'|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/\\#&.:=?%@~_]*)*)?' +
'(?:\\u0007|\\u001B\\u005C|\\u009C))' +
'|(?:(?:\\d{1,4}(?:;\\d{0,4})*)?' +
'[\\dA-PR-TZcf-nq-uy=><~]))', 'g',
'(?:\\u001B\\][\\s\\S]*?(?:\\u0007|\\u001B\\u005C|\\u009C))' +
'|[\\u001B\\u009B][[\\]()#;?]*' +
'(?:(?:\\d{1,4}(?:;\\d{0,4})*)?' +

This comment was marked as spam.

Comment thread
dushyant-hada-90 marked this conversation as resolved.
Outdated
'[\\dA-PR-TZcf-nq-uy=><~])', 'g',
);

let getStringWidth;
Expand Down
5 changes: 5 additions & 0 deletions test/parallel/test-util-stripvtcontrolcharacters.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,11 @@ for (const ST of ['\u0007', '\u001B\u005C', '\u009C']) {
tests.push(
[`\u001B]8;;mailto:[email protected]${ST}mail\u001B]8;;${ST}`, 'mail'],
[`\u001B]8;k=v;https://example-a.com/?a_b=1&c=2#tit%20le${ST}click\u001B]8;;${ST}`, 'click'],
[`\u001B]8;;https://example.com/(foo${ST}label\u001B]8;;${ST}`, 'label'],
[`\u001B]8;;https://example.com/foo)bar${ST}label\u001B]8;;${ST}`, 'label'],
[`\u001B]8;;https://example.com/!foo${ST}label\u001B]8;;${ST}`, 'label'],
[`\u001B]8;;https://example.com/foo+bar${ST}label\u001B]8;;${ST}`, 'label'],
[`\u001B]8;;https://example.com/[foo]${ST}label\u001B]8;;${ST}`, 'label'],
);
}

Expand Down