"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.validateUtf8 = void 0; var FIRST_BIT = 0x80; var FIRST_TWO_BITS = 0xc0; var FIRST_THREE_BITS = 0xe0; var FIRST_FOUR_BITS = 0xf0; var FIRST_FIVE_BITS = 0xf8; var TWO_BIT_CHAR = 0xc0; var THREE_BIT_CHAR = 0xe0; var FOUR_BIT_CHAR = 0xf0; var CONTINUING_CHAR = 0x80; /** * Determines if the passed in bytes are valid utf8 * @param bytes - An array of 8-bit bytes. Must be indexable and have length property * @param start - The index to start validating * @param end - The index to end validating */ function validateUtf8(bytes, start, end) { var continuation = 0; for (var i = start; i < end; i += 1) { var byte = bytes[i]; if (continuation) { if ((byte & FIRST_TWO_BITS) !== CONTINUING_CHAR) { return false; } continuation -= 1; } else if (byte & FIRST_BIT) { if ((byte & FIRST_THREE_BITS) === TWO_BIT_CHAR) { continuation = 1; } else if ((byte & FIRST_FOUR_BITS) === THREE_BIT_CHAR) { continuation = 2; } else if ((byte & FIRST_FIVE_BITS) === FOUR_BIT_CHAR) { continuation = 3; } else { return false; } } } return !continuation; } exports.validateUtf8 = validateUtf8; //# sourceMappingURL=validate_utf8.js.map