nhb-toolbox
Version:
A versatile collection of smart, efficient, and reusable utility functions, classes and types for everyday development needs.
46 lines (45 loc) • 1.64 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.truncateString = truncateString;
exports.generateRandomID = generateRandomID;
exports.trimString = trimString;
const primitives_1 = require("../guards/primitives");
function truncateString(str, maxLength) {
if (!(0, primitives_1.isNonEmptyString)(str))
return '';
const trimmedString = str.trim();
if (!trimmedString)
return '';
if (trimmedString.length <= maxLength)
return trimmedString;
return trimmedString.slice(0, maxLength).concat('...');
}
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;
}
}
function trimString(input) {
if (!input)
return '';
if ((0, primitives_1.isNonEmptyString)(input)) {
return input.trim().replace(/\s+/g, ' ');
}
if (Array.isArray(input)) {
return input.map((str) => (0, primitives_1.isNonEmptyString)(str) ? str.trim().replace(/\s+/g, ' ') : str);
}
throw new TypeError('Expected string or array of strings!', {
cause: 'Invalid Input Type',
});
}