UNPKG

@zxcvbn-ts/dictionary-compression

Version:

dictionary-compression helper for zxcvbn-ts language packages

32 lines 877 B
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