1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- "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
|