something is working
This commit is contained in:
+47
@@ -0,0 +1,47 @@
|
||||
"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
|
||||
Reference in New Issue
Block a user