UNPKG

jtc-utils

Version:
51 lines (50 loc) 1.35 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.utf8 = void 0; const charset_cjs_1 = require("./charset.cjs"); class Utf8Charset { get name() { return "utf-8"; } createDecoder(options) { return new charset_cjs_1.StandardDecoder("utf-8", options); } createEncoder(options) { return new Utf8Encoder(); } isUnicode() { return true; } isEbcdic() { return false; } } class Utf8Encoder { encoder = new TextEncoder(); canEncode(str) { return true; } encode(str, options) { const limit = options?.limit ?? Number.POSITIVE_INFINITY; const encoded = this.encoder.encode(str); if (encoded.length > limit) { let len = limit; if (encoded[limit - 1] >= 0xc2) { len = len - 1; } else if (encoded[limit - 1] >= 0x80) { if (encoded[limit - 2] >= 0xe0) { len = len - 2; } else if (encoded[limit - 2] >= 0x80) { if (encoded[limit - 3] >= 0xf0) { len = len - 3; } } } return encoded.subarray(len); } return encoded; } } exports.utf8 = new Utf8Charset();