fix: contain malformed metadata and stale discovery
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
'use strict';
|
||||
|
||||
(function exposeWellFormedString(root, factory) {
|
||||
const api = factory();
|
||||
if (typeof module !== 'undefined' && module.exports) module.exports = api;
|
||||
if (root) root.AptWellFormedString = api;
|
||||
}(typeof window !== 'undefined' ? window : undefined, function wellFormedStringFactory() {
|
||||
function manualToWellFormed(value) {
|
||||
let result = '';
|
||||
for (let index = 0; index < value.length; index += 1) {
|
||||
const codeUnit = value.charCodeAt(index);
|
||||
if (codeUnit >= 0xd800 && codeUnit <= 0xdbff) {
|
||||
const next = value.charCodeAt(index + 1);
|
||||
if (next >= 0xdc00 && next <= 0xdfff) {
|
||||
result += value[index] + value[index + 1];
|
||||
index += 1;
|
||||
} else {
|
||||
result += '\ufffd';
|
||||
}
|
||||
} else if (codeUnit >= 0xdc00 && codeUnit <= 0xdfff) {
|
||||
result += '\ufffd';
|
||||
} else {
|
||||
result += value[index];
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
function toWellFormedString(value, fallback = '') {
|
||||
let string;
|
||||
try {
|
||||
string = String(value);
|
||||
} catch {
|
||||
string = String(fallback);
|
||||
}
|
||||
return typeof string.toWellFormed === 'function'
|
||||
? string.toWellFormed()
|
||||
: manualToWellFormed(string);
|
||||
}
|
||||
|
||||
return Object.freeze({ toWellFormedString });
|
||||
}));
|
||||
Reference in New Issue
Block a user