aboutsummaryrefslogtreecommitdiffstats
path: root/vanilla/node_modules/undici/lib/encoding
diff options
context:
space:
mode:
Diffstat (limited to 'vanilla/node_modules/undici/lib/encoding')
-rw-r--r--vanilla/node_modules/undici/lib/encoding/index.js33
1 files changed, 33 insertions, 0 deletions
diff --git a/vanilla/node_modules/undici/lib/encoding/index.js b/vanilla/node_modules/undici/lib/encoding/index.js
new file mode 100644
index 0000000..41f7794
--- /dev/null
+++ b/vanilla/node_modules/undici/lib/encoding/index.js
@@ -0,0 +1,33 @@
+'use strict'
+
+const textDecoder = new TextDecoder()
+
+/**
+ * @see https://encoding.spec.whatwg.org/#utf-8-decode
+ * @param {Uint8Array} buffer
+ */
+function utf8DecodeBytes (buffer) {
+ if (buffer.length === 0) {
+ return ''
+ }
+
+ // 1. Let buffer be the result of peeking three bytes from
+ // ioQueue, converted to a byte sequence.
+
+ // 2. If buffer is 0xEF 0xBB 0xBF, then read three
+ // bytes from ioQueue. (Do nothing with those bytes.)
+ if (buffer[0] === 0xEF && buffer[1] === 0xBB && buffer[2] === 0xBF) {
+ buffer = buffer.subarray(3)
+ }
+
+ // 3. Process a queue with an instance of UTF-8’s
+ // decoder, ioQueue, output, and "replacement".
+ const output = textDecoder.decode(buffer)
+
+ // 4. Return output.
+ return output
+}
+
+module.exports = {
+ utf8DecodeBytes
+}