Files
Desktop/ts/util/truncateString.std.ts
2026-03-30 12:42:37 -07:00

26 lines
629 B
TypeScript

// Copyright 2026 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
import { count, truncateAndSize } from './grapheme.std.ts';
import { isBodyTooLong, trimBody } from './longAttachment.std.ts';
export function truncateString(
target: string,
{
byteLimit,
graphemeLimit,
}: { byteLimit?: number; graphemeLimit?: number } = {}
): string {
let result = target;
if (byteLimit && isBodyTooLong(result, byteLimit)) {
result = trimBody(result, byteLimit);
}
if (graphemeLimit && count(result) > graphemeLimit) {
[result] = truncateAndSize(result, graphemeLimit);
}
return result;
}