nhb-toolbox
Version:
A versatile collection of smart, efficient, and reusable utility functions, classes and types for everyday development needs.
41 lines (40 loc) • 1.42 kB
JavaScript
import { isNonEmptyString } from '../guards/primitives.js';
export function truncateString(str, maxLength) {
if (!isNonEmptyString(str))
return '';
const trimmedString = str.trim();
if (!trimmedString)
return '';
if (trimmedString.length <= maxLength)
return trimmedString;
return trimmedString.slice(0, maxLength).concat('...');
}
export function generateRandomID(options) {
const { prefix = '', suffix = '', timeStamp = false, length = 16, separator = '', caseOption = null, } = options || {};
const date = timeStamp ? Date.now() : '';
const randomString = Array.from({ length }, () => Math.random().toString(36).slice(2, 3)).join('');
const ID = [prefix?.trim(), date, randomString, suffix?.trim()]
.filter(Boolean)
.join(separator);
switch (caseOption) {
case 'upper':
return ID.toUpperCase();
case 'lower':
return ID.toLowerCase();
default:
return ID;
}
}
export function trimString(input) {
if (!input)
return '';
if (isNonEmptyString(input)) {
return input.trim().replace(/\s+/g, ' ');
}
if (Array.isArray(input)) {
return input.map((str) => isNonEmptyString(str) ? str.trim().replace(/\s+/g, ' ') : str);
}
throw new TypeError('Expected string or array of strings!', {
cause: 'Invalid Input Type',
});
}