isUtf8.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.isUtf8 = void 0;
  4. const isUtf8 = (buf, from, length) => {
  5. const to = from + length;
  6. while (from < to) {
  7. const c = buf[from];
  8. if (c <= 0x7f) {
  9. from++;
  10. continue;
  11. }
  12. if (c >= 0xc2 && c <= 0xdf) {
  13. if (buf[from + 1] >> 6 === 2) {
  14. from += 2;
  15. continue;
  16. }
  17. else
  18. return false;
  19. }
  20. const c1 = buf[from + 1];
  21. if (((c === 0xe0 && c1 >= 0xa0 && c1 <= 0xbf) || (c === 0xed && c1 >= 0x80 && c1 <= 0x9f)) &&
  22. buf[from + 2] >> 6 === 2) {
  23. from += 3;
  24. continue;
  25. }
  26. if (((c >= 0xe1 && c <= 0xec) || (c >= 0xee && c <= 0xef)) && c1 >> 6 === 2 && buf[from + 2] >> 6 === 2) {
  27. from += 3;
  28. continue;
  29. }
  30. if (((c === 0xf0 && c1 >= 0x90 && c1 <= 0xbf) ||
  31. (c >= 0xf1 && c <= 0xf3 && c1 >> 6 === 2) ||
  32. (c === 0xf4 && c1 >= 0x80 && c1 <= 0x8f)) &&
  33. buf[from + 2] >> 6 === 2 &&
  34. buf[from + 3] >> 6 === 2) {
  35. from += 4;
  36. continue;
  37. }
  38. return false;
  39. }
  40. return true;
  41. };
  42. exports.isUtf8 = isUtf8;
  43. //# sourceMappingURL=isUtf8.js.map