@zxcvbn-ts/dictionary-compression
Version:
dictionary-compression helper for zxcvbn-ts language packages
32 lines • 877 B
JavaScript
const isCompactDoubleQuotedString = (string) => {
return !string.match(/[\x00-\x1f\u2028\u2029\\"]/);
};
const compressWithPrefix = (parsed) => {
if (!Array.isArray(parsed)) {
return parsed;
}
if (!parsed.every(
(entry) => typeof entry === "string" && isCompactDoubleQuotedString(entry)
)) {
return parsed;
}
const deltas = [];
let last = "";
parsed.forEach((entry) => {
let prefixLen = 0;
const maxPrefixLen = Math.min(entry.length, last.length, 25);
while (prefixLen < maxPrefixLen && entry.charAt(prefixLen) === last.charAt(prefixLen)) {
prefixLen += 1;
}
deltas.push(String.fromCharCode(65 + prefixLen) + entry.slice(prefixLen));
last = entry;
});
return deltas.join("");
};
function compress(data) {
return compressWithPrefix(data);
}
export {
compress as default
};
//# sourceMappingURL=compress.mjs.map