UNPKG

@zxcvbn-ts/dictionary-compression

Version:

dictionary-compression helper for zxcvbn-ts language packages

1 lines 1.77 kB
{"version":3,"sources":["../src/compress.ts"],"sourcesContent":["const isCompactDoubleQuotedString = (string: string) => {\n // eslint-disable-next-line no-control-regex\n return !string.match(/[\\x00-\\x1f\\u2028\\u2029\\\\\"]/)\n}\n\nconst compressWithPrefix = (parsed: string[]) => {\n if (!Array.isArray(parsed)) {\n return parsed\n }\n if (\n !parsed.every(\n (entry) =>\n typeof entry === 'string' && isCompactDoubleQuotedString(entry),\n )\n ) {\n // Should be rare enough, so don't bother escape them.\n return parsed\n }\n\n const deltas: string[] = []\n let last = ''\n parsed.forEach((entry) => {\n let prefixLen = 0\n const maxPrefixLen = Math.min(entry.length, last.length, 25)\n while (\n prefixLen < maxPrefixLen &&\n entry.charAt(prefixLen) === last.charAt(prefixLen)\n ) {\n prefixLen += 1\n }\n deltas.push(String.fromCharCode(65 + prefixLen) + entry.slice(prefixLen))\n last = entry\n })\n\n return deltas.join('')\n}\n\nexport default function compress(data: string[]) {\n return compressWithPrefix(data)\n}\n"],"mappings":"AAAA,MAAM,8BAA8B,CAAC,WAAmB;AAEtD,SAAO,CAAC,OAAO,MAAM,4BAA4B;AACnD;AAEA,MAAM,qBAAqB,CAAC,WAAqB;AAC/C,MAAI,CAAC,MAAM,QAAQ,MAAM,GAAG;AAC1B,WAAO;AAAA,EACT;AACA,MACE,CAAC,OAAO;AAAA,IACN,CAAC,UACC,OAAO,UAAU,YAAY,4BAA4B,KAAK;AAAA,EAClE,GACA;AAEA,WAAO;AAAA,EACT;AAEA,QAAM,SAAmB,CAAC;AAC1B,MAAI,OAAO;AACX,SAAO,QAAQ,CAAC,UAAU;AACxB,QAAI,YAAY;AAChB,UAAM,eAAe,KAAK,IAAI,MAAM,QAAQ,KAAK,QAAQ,EAAE;AAC3D,WACE,YAAY,gBACZ,MAAM,OAAO,SAAS,MAAM,KAAK,OAAO,SAAS,GACjD;AACA,mBAAa;AAAA,IACf;AACA,WAAO,KAAK,OAAO,aAAa,KAAK,SAAS,IAAI,MAAM,MAAM,SAAS,CAAC;AACxE,WAAO;AAAA,EACT,CAAC;AAED,SAAO,OAAO,KAAK,EAAE;AACvB;AAEe,SAAR,SAA0B,MAAgB;AAC/C,SAAO,mBAAmB,IAAI;AAChC;","names":[]}