UNPKG

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
"use strict"; 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', }); }