mirror of
https://github.com/sub-store-org/Sub-Store.git
synced 2025-08-10 00:52:40 +00:00
fix: 修复 Clash 节点名为 binary 的情况
This commit is contained in:
@@ -35,6 +35,53 @@ function getIfPresent(obj, defaultValue) {
|
||||
return isPresent(obj) ? obj : defaultValue;
|
||||
}
|
||||
|
||||
const utf8ArrayToStr =
|
||||
typeof TextDecoder !== 'undefined'
|
||||
? (v) => new TextDecoder().decode(new Uint8Array(v))
|
||||
: (function () {
|
||||
var charCache = new Array(128); // Preallocate the cache for the common single byte chars
|
||||
var charFromCodePt = String.fromCodePoint || String.fromCharCode;
|
||||
var result = [];
|
||||
|
||||
return function (array) {
|
||||
var codePt, byte1;
|
||||
var buffLen = array.length;
|
||||
|
||||
result.length = 0;
|
||||
|
||||
for (var i = 0; i < buffLen; ) {
|
||||
byte1 = array[i++];
|
||||
|
||||
if (byte1 <= 0x7f) {
|
||||
codePt = byte1;
|
||||
} else if (byte1 <= 0xdf) {
|
||||
codePt = ((byte1 & 0x1f) << 6) | (array[i++] & 0x3f);
|
||||
} else if (byte1 <= 0xef) {
|
||||
codePt =
|
||||
((byte1 & 0x0f) << 12) |
|
||||
((array[i++] & 0x3f) << 6) |
|
||||
(array[i++] & 0x3f);
|
||||
} else if (String.fromCodePoint) {
|
||||
codePt =
|
||||
((byte1 & 0x07) << 18) |
|
||||
((array[i++] & 0x3f) << 12) |
|
||||
((array[i++] & 0x3f) << 6) |
|
||||
(array[i++] & 0x3f);
|
||||
} else {
|
||||
codePt = 63; // Cannot convert four byte code points, so use "?" instead
|
||||
i += 3;
|
||||
}
|
||||
|
||||
result.push(
|
||||
charCache[codePt] ||
|
||||
(charCache[codePt] = charFromCodePt(codePt)),
|
||||
);
|
||||
}
|
||||
|
||||
return result.join('');
|
||||
};
|
||||
})();
|
||||
|
||||
export {
|
||||
isIPv4,
|
||||
isIPv6,
|
||||
@@ -43,4 +90,5 @@ export {
|
||||
getIfNotBlank,
|
||||
isPresent,
|
||||
getIfPresent,
|
||||
utf8ArrayToStr,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user