From 90189dd9974be01596ec776e63a4eceef1a036e0 Mon Sep 17 00:00:00 2001 From: Kenta Moriuchi Date: Tue, 7 Nov 2023 06:18:28 +0900 Subject: fix(ext): use `String#toWellFormed` in ext/webidl and ext/node (#21054) Fixes #18802 This PR adds `util.toUSVString` to node:util: ```js import util from "node:util"; util.toUSVString("string\ud801"); // => "string\ufffd" ``` --- ext/node/polyfills/util.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'ext/node/polyfills') diff --git a/ext/node/polyfills/util.ts b/ext/node/polyfills/util.ts index 1b611b1fd..2e25746ef 100644 --- a/ext/node/polyfills/util.ts +++ b/ext/node/polyfills/util.ts @@ -37,7 +37,9 @@ const { SafeSet, SetPrototypeAdd, SetPrototypeHas, + StringPrototypeIsWellFormed, StringPrototypePadStart, + StringPrototypeToWellFormed, } = primordials; export { @@ -187,6 +189,13 @@ export const TextDecoder = _TextDecoder; export type TextEncoder = import("./_utils.ts")._TextEncoder; export const TextEncoder = _TextEncoder; +export function toUSVString(str: string): string { + if (StringPrototypeIsWellFormed(str)) { + return str; + } + return StringPrototypeToWellFormed(str); +} + function pad(n: number) { return StringPrototypePadStart(NumberPrototypeToString(n), 2, "0"); } @@ -309,6 +318,7 @@ export default { stripVTControlCharacters, TextDecoder, TextEncoder, + toUSVString, log, debuglog, isDeepStrictEqual, -- cgit v1.2.3