aboutsummaryrefslogtreecommitdiffstats
path: root/vanilla/node_modules/@exodus/bytes/utf8.js
diff options
context:
space:
mode:
authorAdam Mathes <adam@adammathes.com>2026-02-14 14:46:37 -0800
committerAdam Mathes <adam@adammathes.com>2026-02-14 14:46:37 -0800
commitafa87af01c79a9baa539f2992d32154d2a4739bd (patch)
tree92c7416db734270a2fee1d72ee9cc119379ff8e1 /vanilla/node_modules/@exodus/bytes/utf8.js
parent3b927e84d200402281f68181cd4253bc77e5528d (diff)
downloadneko-afa87af01c79a9baa539f2992d32154d2a4739bd.tar.gz
neko-afa87af01c79a9baa539f2992d32154d2a4739bd.tar.bz2
neko-afa87af01c79a9baa539f2992d32154d2a4739bd.zip
task: delete vanilla js prototype\n\n- Removed vanilla/ directory and web/dist/vanilla directory\n- Updated Makefile, Dockerfile, and CI workflow to remove vanilla references\n- Cleaned up web/web.go to remove vanilla embed and routes\n- Verified build and tests pass\n\nCloses NK-2tcnmq
Diffstat (limited to 'vanilla/node_modules/@exodus/bytes/utf8.js')
-rw-r--r--vanilla/node_modules/@exodus/bytes/utf8.js66
1 files changed, 0 insertions, 66 deletions
diff --git a/vanilla/node_modules/@exodus/bytes/utf8.js b/vanilla/node_modules/@exodus/bytes/utf8.js
deleted file mode 100644
index 86b0022..0000000
--- a/vanilla/node_modules/@exodus/bytes/utf8.js
+++ /dev/null
@@ -1,66 +0,0 @@
-import { typedView } from './array.js'
-import { assertU8, E_STRING, E_STRICT_UNICODE } from './fallback/_utils.js'
-import { nativeDecoder, nativeEncoder } from './fallback/platform.js'
-import * as js from './fallback/utf8.auto.js'
-
-// ignoreBOM: true means that BOM will be left as-is, i.e. will be present in the output
-// We don't want to strip anything unexpectedly
-const decoderLoose = nativeDecoder
-const decoderFatal = nativeDecoder
- ? new TextDecoder('utf-8', { ignoreBOM: true, fatal: true })
- : null
-const { isWellFormed } = String.prototype
-
-function deLoose(str, loose, res) {
- if (loose || str.length === res.length) return res // length is equal only for ascii, which is automatically fine
- if (isWellFormed) {
- // We have a fast native method
- if (isWellFormed.call(str)) return res
- throw new TypeError(E_STRICT_UNICODE)
- }
-
- // Recheck if the string was encoded correctly
- let start = 0
- const last = res.length - 3
- // Search for EFBFBD (3-byte sequence)
- while (start <= last) {
- const pos = res.indexOf(0xef, start)
- if (pos === -1 || pos > last) break
- start = pos + 1
- if (res[pos + 1] === 0xbf && res[pos + 2] === 0xbd) {
- // Found a replacement char in output, need to recheck if we encoded the input correctly
- if (js.decodeFast && !nativeDecoder && str.length < 1e7) {
- // This is ~2x faster than decode in Hermes
- try {
- if (encodeURI(str) !== null) return res // guard against optimizing out
- } catch {}
- } else if (str === decode(res)) return res
- throw new TypeError(E_STRICT_UNICODE)
- }
- }
-
- return res
-}
-
-function encode(str, loose = false) {
- if (typeof str !== 'string') throw new TypeError(E_STRING)
- if (str.length === 0) return new Uint8Array() // faster than Uint8Array.of
- if (nativeEncoder || !js.encode) return deLoose(str, loose, nativeEncoder.encode(str))
- // No reason to use unescape + encodeURIComponent: it's slower than JS on normal engines, and modern Hermes already has TextEncoder
- return js.encode(str, loose)
-}
-
-function decode(arr, loose = false) {
- assertU8(arr)
- if (arr.byteLength === 0) return ''
- if (nativeDecoder || !js.decodeFast) {
- return loose ? decoderLoose.decode(arr) : decoderFatal.decode(arr) // Node.js and browsers
- }
-
- return js.decodeFast(arr, loose)
-}
-
-export const utf8fromString = (str, format = 'uint8') => typedView(encode(str, false), format)
-export const utf8fromStringLoose = (str, format = 'uint8') => typedView(encode(str, true), format)
-export const utf8toString = (arr) => decode(arr, false)
-export const utf8toStringLoose = (arr) => decode(arr, true)