Files
scriptc/tests/corpus/node24-text-codec-properties.ts
Chris Tate 50a2731631 Expand Node 24 text-encoding support (#629)
* Expand Node 24 text-encoding support

* Update codec diagnostics for encodeInto support
2026-10-03 05:38:29 -05:00

25 lines
1.2 KiB
TypeScript

import { TextDecoder as NodeDecoder } from "node:util";
for (const label of ["utf8", " \tUTF-8\r\n", "latin1", "cp866", "utf-16", "unicodefffe", "logical", "iso-8859-8-i", "visual", "gb18030", "gbk", "shift-jis", "euc-kr"]) {
const decoder = new NodeDecoder(label, { fatal: true, ignoreBOM: true });
console.log(JSON.stringify(label), decoder.encoding, decoder.fatal, decoder.ignoreBOM);
console.log(decoder.decode(new Uint8Array()), decoder.encoding);
}
const decoder = new TextDecoder();
const readProperties = () => [decoder.encoding, decoder.fatal, decoder.ignoreBOM];
console.log(JSON.stringify(readProperties()));
const utf16 = new TextDecoder("utf-16le", { ignoreBOM: true });
console.log(utf16.encoding, utf16.decode(new Uint8Array([0xff, 0xfe, 0x61, 0])));
let calls = 0;
function label(): string { calls++; return "gbk"; }
console.log(new TextDecoder(label()).encoding, calls);
function receiver(): TextDecoder { calls++; return decoder; }
console.log(receiver().fatal, receiver().ignoreBOM, receiver().encoding, calls);
for (const label of ["logical", "visual"]) {
const decoder = new TextDecoder(label);
console.log(decoder.encoding, decoder.decode(new Uint8Array([0xe0]), { stream: true }), decoder.decode(), decoder.encoding);
}