summaryrefslogtreecommitdiff
path: root/node_modules/@webassemblyjs/utf8/lib/decoder.js
diff options
context:
space:
mode:
authorlittleblack111 <littleblack11111@gmail.com>2024-08-30 17:21:18 +0800
committerlittleblack111 <littleblack11111@gmail.com>2024-08-30 17:21:18 +0800
commitefbc2ffe6a1ee5ec38a4396305561d6515d0943e (patch)
tree2b4c94f18f2c792dfda813050755d5c0273fae22 /node_modules/@webassemblyjs/utf8/lib/decoder.js
parent43acceb75957c880a5ba5a31aae221394a36d5f6 (diff)
node fixes, updates
Diffstat (limited to 'node_modules/@webassemblyjs/utf8/lib/decoder.js')
-rw-r--r--node_modules/@webassemblyjs/utf8/lib/decoder.js74
1 files changed, 74 insertions, 0 deletions
diff --git a/node_modules/@webassemblyjs/utf8/lib/decoder.js b/node_modules/@webassemblyjs/utf8/lib/decoder.js
new file mode 100644
index 00000000..305a2b6e
--- /dev/null
+++ b/node_modules/@webassemblyjs/utf8/lib/decoder.js
@@ -0,0 +1,74 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.decode = decode;
+
+function con(b) {
+ if ((b & 0xc0) === 0x80) {
+ return b & 0x3f;
+ } else {
+ throw new Error("invalid UTF-8 encoding");
+ }
+}
+
+function code(min, n) {
+ if (n < min || 0xd800 <= n && n < 0xe000 || n >= 0x10000) {
+ throw new Error("invalid UTF-8 encoding");
+ } else {
+ return n;
+ }
+}
+
+function decode(bytes) {
+ return _decode(bytes).map(function (x) {
+ return String.fromCharCode(x);
+ }).join("");
+}
+
+function _decode(bytes) {
+ var result = [];
+
+ while (bytes.length > 0) {
+ var b1 = bytes[0];
+
+ if (b1 < 0x80) {
+ result.push(code(0x0, b1));
+ bytes = bytes.slice(1);
+ continue;
+ }
+
+ if (b1 < 0xc0) {
+ throw new Error("invalid UTF-8 encoding");
+ }
+
+ var b2 = bytes[1];
+
+ if (b1 < 0xe0) {
+ result.push(code(0x80, ((b1 & 0x1f) << 6) + con(b2)));
+ bytes = bytes.slice(2);
+ continue;
+ }
+
+ var b3 = bytes[2];
+
+ if (b1 < 0xf0) {
+ result.push(code(0x800, ((b1 & 0x0f) << 12) + (con(b2) << 6) + con(b3)));
+ bytes = bytes.slice(3);
+ continue;
+ }
+
+ var b4 = bytes[3];
+
+ if (b1 < 0xf8) {
+ result.push(code(0x10000, (((b1 & 0x07) << 18) + con(b2) << 12) + (con(b3) << 6) + con(b4)));
+ bytes = bytes.slice(4);
+ continue;
+ }
+
+ throw new Error("invalid UTF-8 encoding");
+ }
+
+ return result;
+} \ No newline at end of file