mirror of
https://github.com/vercel-labs/scriptc.git
synced 2026-10-21 05:50:55 +08:00
26 lines
1.5 KiB
JavaScript
26 lines
1.5 KiB
JavaScript
import { stripVTControlCharacters as strip, toUSVString as usv } from "node:util";
|
|
const stripStored = strip;
|
|
const usvStored = usv;
|
|
|
|
for (const value of [undefined, null, 0, -0, 1.5, NaN, Infinity, true, false, 2n, Symbol("x"), {}, [], [1, 2]]) {
|
|
try { console.log("strip", strip(value)); }
|
|
catch (error) { console.log(error.name, error.code, error.message); }
|
|
try { console.log("usv", usv(value)); }
|
|
catch (error) { console.log(error.name, error.code, error.message); }
|
|
try { console.log("stored-strip", stripStored(value)); }
|
|
catch (error) { console.log(error.name, error.code, error.message); }
|
|
try { console.log("stored-usv", usvStored(value)); }
|
|
catch (error) { console.log(error.name, error.code, error.message); }
|
|
}
|
|
try { strip(); } catch (error) { console.log("omitted", error.name, error.code, error.message); }
|
|
console.log("omitted-usv", usv());
|
|
console.log("identity", strip === stripStored, usv === usvStored);
|
|
try { stripStored(); } catch (error) { console.log("omitted-stored", error.name, error.code, error.message); }
|
|
console.log("omitted-stored-usv", usvStored());
|
|
let order = "";
|
|
function extra() { order += "extra"; return null; }
|
|
console.log("extras", strip("\u001b[1mx", extra()), order);
|
|
console.log("extras", usv("\ud800", extra()), order);
|
|
try { strip(12, extra()); } catch (error) { console.log("validation-after-arguments", order, error.code); }
|
|
try { usv(Symbol("x"), extra()); } catch (error) { console.log("conversion-after-arguments", order, error.name, error.message); }
|