Files
SnowLuma/.pnpm-store/v11/files/56/eecd4b43f47db844fce4b4e8fbc168d847fdc6ec6a7464fd6e81c290f6263d53a989a69a856102a7d09c8b3392b30ee06a521ec11f1ec21a904105d640e951
T
TanTan 2a69b23b47
Dev Build / cleanup (push) Waiting to run
Dev Build / typecheck (push) Waiting to run
docs: 仓库链接指向本镜像仓库
2026-11-13 09:27:07 +08:00

34 lines
1009 B
Plaintext

// warning: extremely hot code path.
// This has been meticulously optimized for use
// within npm install on large package trees.
// Do not edit without careful benchmarking.
const normalizeCache = Object.create(null);
// Limit the size of this. Very low-sophistication LRU cache
const MAX = 10000;
const cache = new Set();
export const normalizeUnicode = (s) => {
if (!cache.has(s)) {
// shake out identical accents and ligatures
normalizeCache[s] = s
.normalize('NFD')
.toLocaleLowerCase('en')
.toLocaleUpperCase('en');
}
else {
cache.delete(s);
}
cache.add(s);
const ret = normalizeCache[s];
let i = cache.size - MAX;
// only prune when we're 10% over the max
if (i > MAX / 10) {
for (const s of cache) {
cache.delete(s);
delete normalizeCache[s];
if (--i <= 0)
break;
}
}
return ret;
};
//# sourceMappingURL=normalize-unicode.js.map