UNPKG

jtc-utils

Version:
53 lines (44 loc) 1.14 kB
import { type Charset, type CharsetDecoderOptions, type CharsetEncodeOptions, type CharsetEncoder, type CharsetEncoderOptions, StandardDecoder, } from "./charset.cjs"; class Utf16beCharset implements Charset { get name() { return "utf-16be"; } createDecoder(options?: CharsetDecoderOptions) { return new StandardDecoder("utf-16be", options); } createEncoder(options?: CharsetEncoderOptions) { return new Utf16beEncoder(); } isUnicode() { return true; } isEbcdic() { return false; } } class Utf16beEncoder implements CharsetEncoder { canEncode(str: string) { return true; } encode(str: string, options?: CharsetEncodeOptions): Uint8Array { const out = new Uint8Array(str.length * 2); const limit = options?.limit ?? Number.POSITIVE_INFINITY; for (let i = 0; i < str.length; i++) { const cp = str.charCodeAt(i); out[i * 2] = (cp >>> 8) & 0xff; out[i * 2 + 1] = cp & 0xff; } if (out.length > limit) { return out.subarray(0, Math.floor(limit / 2) * 2); } return out; } } export const utf16be = new Utf16beCharset();