You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

encoder.js 3.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. 'use strict';
  2. (function(r) {
  3. function x() {}
  4. function y() {}
  5. var z = String.fromCharCode,
  6. v = {}.toString,
  7. A = v.call(r.SharedArrayBuffer),
  8. B = v(),
  9. q = r.Uint8Array,
  10. t = q || Array,
  11. w = q ? ArrayBuffer : t,
  12. C = w.isView || function(g) {
  13. return g && "length" in g
  14. },
  15. D = v.call(w.prototype);
  16. w = y.prototype;
  17. var E = r.TextEncoder,
  18. a = new(q ? Uint16Array : t)(32);
  19. x.prototype.decode = function(g) {
  20. if (!C(g)) {
  21. var l = v.call(g);
  22. if (l !== D && l !== A && l !== B) throw TypeError(
  23. "Failed to execute 'decode' on 'TextDecoder': The provided value is not of type '(ArrayBuffer or ArrayBufferView)'"
  24. );
  25. g = q ? new t(g) : g || []
  26. }
  27. for (var f = l = "", b = 0, c = g.length | 0, u = c - 32 | 0, e, d, h = 0, p = 0, m, k = 0, n = -1; b <
  28. c;) {
  29. for (e = b <= u ? 32 : c - b | 0; k < e; b = b + 1 | 0, k = k + 1 | 0) {
  30. d = g[b] & 255;
  31. switch (d >> 4) {
  32. case 15:
  33. m = g[b = b + 1 | 0] & 255;
  34. if (2 !== m >> 6 || 247 < d) {
  35. b = b - 1 | 0;
  36. break
  37. }
  38. h = (d & 7) << 6 | m & 63;
  39. p = 5;
  40. d = 256;
  41. case 14:
  42. m = g[b = b + 1 | 0] & 255, h <<= 6, h |= (d & 15) << 6 | m & 63, p = 2 === m >> 6 ? p +
  43. 4 | 0 : 24, d = d + 256 & 768;
  44. case 13:
  45. case 12:
  46. m = g[b = b + 1 | 0] & 255, h <<= 6, h |= (d & 31) << 6 | m & 63, p = p + 7 | 0, b <
  47. c && 2 === m >> 6 && h >> p && 1114112 > h ? (d = h, h = h - 65536 | 0, 0 <= h && (
  48. n = (h >> 10) + 55296 | 0, d = (h & 1023) + 56320 | 0, 31 > k ? (a[k] = n,
  49. k = k + 1 | 0, n = -1) :
  50. (m = n, n = d, d = m))) : (d >>= 8, b = b - d - 1 | 0, d = 65533), h = p = 0,
  51. e = b <= u ? 32 : c - b | 0;
  52. default:
  53. a[k] = d;
  54. continue;
  55. case 11:
  56. case 10:
  57. case 9:
  58. case 8:
  59. }
  60. a[k] = 65533
  61. }
  62. f += z(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[
  63. 14], a[15], a[16], a[17], a[18], a[19], a[20], a[21], a[22], a[23], a[24], a[25], a[26], a[
  64. 27], a[28], a[29], a[30], a[31]);
  65. 32 > k && (f = f.slice(0, k - 32 | 0));
  66. if (b < c) {
  67. if (a[0] = n, k = ~n >>> 31, n = -1, f.length < l.length) continue
  68. } else - 1 !== n && (f += z(n));
  69. l += f;
  70. f = ""
  71. }
  72. return l
  73. };
  74. w.encode = function(g) {
  75. g = void 0 === g ? "" : "" + g;
  76. var l = g.length |
  77. 0,
  78. f = new t((l << 1) + 8 | 0),
  79. b, c = 0,
  80. u = !q;
  81. for (b = 0; b < l; b = b + 1 | 0, c = c + 1 | 0) {
  82. var e = g.charCodeAt(b) | 0;
  83. if (127 >= e) f[c] = e;
  84. else {
  85. if (2047 >= e) f[c] = 192 | e >> 6;
  86. else {
  87. a: {
  88. if (55296 <= e)
  89. if (56319 >= e) {
  90. var d = g.charCodeAt(b = b + 1 | 0) | 0;
  91. if (56320 <= d && 57343 >= d) {
  92. e = (e << 10) + d - 56613888 | 0;
  93. if (65535 < e) {
  94. f[c] = 240 | e >> 18;
  95. f[c = c + 1 | 0] = 128 | e >> 12 & 63;
  96. f[c = c + 1 | 0] = 128 | e >> 6 & 63;
  97. f[c = c + 1 | 0] = 128 | e & 63;
  98. continue
  99. }
  100. break a
  101. }
  102. e = 65533
  103. } else 57343 >= e && (e = 65533);!u && b << 1 < c && b << 1 < (c - 7 | 0) && (u = !
  104. 0, d = new t(3 * l), d.set(f), f = d)
  105. }
  106. f[c] = 224 | e >> 12;f[c = c + 1 | 0] = 128 | e >> 6 & 63
  107. }
  108. f[c = c + 1 | 0] = 128 | e & 63
  109. }
  110. }
  111. return q ?
  112. f.subarray(0, c) : f.slice(0, c)
  113. };
  114. E || (r.TextDecoder = x, r.TextEncoder = y)
  115. })("" + void 0 == typeof $global ? "" + void 0 == typeof self ? this : self : $global); //AnonyCo
  116. //# sourceMappingURL=https://cdn.jsdelivr.net/gh/AnonyCo/FastestSmallestTextEncoderDecoder/EncoderDecoderTogether.min.js.map