Files
SnowLuma/.pnpm-store/v11/files/67/620ee5665c6a5ab374f9b665b8aa1dbf990ac47b62f4a901ab7a9e2d0a38d3d3a6d7858035e9f204d40b1dac9c8714525856bc45de662552a5842d1bf9c66e
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

41 lines
993 B
Plaintext

const isCompactDoubleQuotedString = (string: string) => {
// eslint-disable-next-line no-control-regex
return !string.match(/[\x00-\x1f\u2028\u2029\\"]/)
}
const compressWithPrefix = (parsed: string[]) => {
if (!Array.isArray(parsed)) {
return parsed
}
if (
!parsed.every(
(entry) =>
typeof entry === 'string' && isCompactDoubleQuotedString(entry),
)
) {
// Should be rare enough, so don't bother escape them.
return parsed
}
const deltas: string[] = []
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('')
}
export default function compress(data: string[]) {
return compressWithPrefix(data)
}