Make a string that originates in an attacker-controlled response — the error
detail (a JSON field, an Errors value or a text snippet) and the echoed
Content-Type — safe to print into an error message on stderr:
C0 and C1 controls and DEL are dropped. JSON.parse decodes an escaped ESC into
a real ESC byte; printed raw, a hostile or MITM'd endpoint could drive ANSI/OSC
sequences into the terminal.
Bidi formatting characters (isBidiControl) are dropped, so server text cannot
reorder the visible message.
Every run of whitespace — newlines, tabs, U+2028/U+2029 included — becomes one
space and the ends are trimmed, so the text stays on one line and a server
cannot forge an Error: line of its own.
The CLI's JSON output is escaped separately (escapeControlChars in
cli/shared.ts): JSON.stringify alone leaves DEL, C1 and bidi characters raw.
Written as a code-point filter so no raw control byte appears in this source.
Make a string that originates in an attacker-controlled response — the error
detail(a JSON field, anErrorsvalue or a text snippet) and the echoed Content-Type — safe to print into an error message on stderr:JSON.parsedecodes an escaped ESC into a real ESC byte; printed raw, a hostile or MITM'd endpoint could drive ANSI/OSC sequences into the terminal.Error:line of its own.The CLI's JSON output is escaped separately (
escapeControlCharsin cli/shared.ts):JSON.stringifyalone leaves DEL, C1 and bidi characters raw. Written as a code-point filter so no raw control byte appears in this source.