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