@sdkwork/sdk-common 1.0.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"string.cjs","sources":["../../src/utils/string.ts"],"sourcesContent":["export const EMPTY_STRING = '';\nexport const SPACE = ' ';\nexport const DASH = '-';\nexport const UNDERSCORE = '_';\nexport const DOT = '.';\nexport const SLASH = '/';\nexport const BACKSLASH = '\\\\';\nexport const NEWLINE = '\\n';\nexport const CARRIAGE_RETURN = '\\r';\nexport const TAB = '\\t';\n\nexport namespace StringUtils {\n export function isEmpty(value: unknown): boolean {\n return value === null || value === undefined || value === '';\n }\n\n export function isNotEmpty(value: unknown): boolean {\n return !isEmpty(value);\n }\n\n export function isBlank(value: unknown): boolean {\n if (isEmpty(value)) return true;\n if (typeof value !== 'string') return false;\n return value.trim().length === 0;\n }\n\n export function isNotBlank(value: unknown): boolean {\n return !isBlank(value);\n }\n\n export function trim(value: string): string {\n return value?.trim() ?? '';\n }\n\n export function trimStart(value: string): string {\n return value?.trimStart() ?? '';\n }\n\n export function trimEnd(value: string): string {\n return value?.trimEnd() ?? '';\n }\n\n export function toLowerCase(value: string): string {\n return value?.toLowerCase() ?? '';\n }\n\n export function toUpperCase(value: string): string {\n return value?.toUpperCase() ?? '';\n }\n\n export function capitalize(value: string): string {\n if (isEmpty(value)) return '';\n return value.charAt(0).toUpperCase() + value.slice(1).toLowerCase();\n }\n\n export function capitalizeWords(value: string): string {\n if (isEmpty(value)) return '';\n return value.split(/\\s+/).map(capitalize).join(' ');\n }\n\n export function camelCase(value: string): string {\n if (isEmpty(value)) return '';\n return value\n .replace(/[-_\\s]+(.)?/g, (_, char) => (char ? char.toUpperCase() : ''))\n .replace(/^(.)/, (char) => char.toLowerCase());\n }\n\n export function pascalCase(value: string): string {\n if (isEmpty(value)) return '';\n const camel = camelCase(value);\n return camel.charAt(0).toUpperCase() + camel.slice(1);\n }\n\n export function kebabCase(value: string): string {\n if (isEmpty(value)) return '';\n return value\n .replace(/([a-z])([A-Z])/g, '$1-$2')\n .replace(/[\\s_]+/g, '-')\n .toLowerCase();\n }\n\n export function snakeCase(value: string): string {\n if (isEmpty(value)) return '';\n return value\n .replace(/([a-z])([A-Z])/g, '$1_$2')\n .replace(/[\\s-]+/g, '_')\n .toLowerCase();\n }\n\n export function constantCase(value: string): string {\n return snakeCase(value).toUpperCase();\n }\n\n export function truncate(value: string, length: number, suffix: string = '...'): string {\n if (isEmpty(value) || value.length <= length) return value ?? '';\n return value.slice(0, length - suffix.length) + suffix;\n }\n\n export function truncateWords(value: string, wordCount: number, suffix: string = '...'): string {\n if (isEmpty(value)) return '';\n const words = value.split(/\\s+/);\n if (words.length <= wordCount) return value;\n return words.slice(0, wordCount).join(' ') + suffix;\n }\n\n export function padStart(value: string, length: number, padChar: string = ' '): string {\n return value?.padStart(length, padChar) ?? '';\n }\n\n export function padEnd(value: string, length: number, padChar: string = ' '): string {\n return value?.padEnd(length, padChar) ?? '';\n }\n\n export function repeat(value: string, count: number): string {\n if (isEmpty(value) || count <= 0) return '';\n return value.repeat(count);\n }\n\n export function reverse(value: string): string {\n if (isEmpty(value)) return '';\n return value.split('').reverse().join('');\n }\n\n export function startsWith(value: string, prefix: string): boolean {\n return value?.startsWith(prefix) ?? false;\n }\n\n export function endsWith(value: string, suffix: string): boolean {\n return value?.endsWith(suffix) ?? false;\n }\n\n export function contains(value: string, search: string): boolean {\n return value?.includes(search) ?? false;\n }\n\n export function containsIgnoreCase(value: string, search: string): boolean {\n return value?.toLowerCase().includes(search.toLowerCase()) ?? false;\n }\n\n export function indexOf(value: string, search: string): number {\n return value?.indexOf(search) ?? -1;\n }\n\n export function lastIndexOf(value: string, search: string): number {\n return value?.lastIndexOf(search) ?? -1;\n }\n\n export function substring(value: string, start: number, end?: number): string {\n if (isEmpty(value)) return '';\n return end !== undefined ? value.slice(start, end) : value.slice(start);\n }\n\n export function slice(value: string, start: number, end?: number): string {\n return substring(value, start, end);\n }\n\n export function split(value: string, separator: string | RegExp, limit?: number): string[] {\n if (isEmpty(value)) return [];\n return value.split(separator, limit);\n }\n\n export function join(values: string[], separator: string = ''): string {\n return values?.join(separator) ?? '';\n }\n\n export function replace(value: string, search: string | RegExp, replacement: string): string {\n return value?.replace(search, replacement) ?? '';\n }\n\n export function replaceAll(value: string, search: string | RegExp, replacement: string): string {\n return value?.replaceAll(search, replacement) ?? '';\n }\n\n export function remove(value: string, search: string | RegExp): string {\n return value?.replace(search, '') ?? '';\n }\n\n export function removeAll(value: string, search: string | RegExp): string {\n const regex = typeof search === 'string' ? new RegExp(search, 'g') : new RegExp(search.source, `${search.flags}g`);\n return value?.replace(regex, '') ?? '';\n }\n\n export function countOccurrences(value: string, search: string): number {\n if (isEmpty(value) || isEmpty(search)) return 0;\n return (value.match(new RegExp(escapeRegex(search), 'g')) || []).length;\n }\n\n export function escapeHtml(value: string): string {\n const htmlEntities: Record<string, string> = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;'\n };\n return value?.replace(/[&<>\"']/g, char => htmlEntities[char] || char) ?? '';\n }\n\n export function unescapeHtml(value: string): string {\n const htmlEntities: Record<string, string> = {\n '&amp;': '&',\n '&lt;': '<',\n '&gt;': '>',\n '&quot;': '\"',\n '&#39;': \"'\",\n '&#x27;': \"'\",\n '&apos;': \"'\"\n };\n return value?.replace(/&(?:amp|lt|gt|quot|#39|#x27|apos);/g, entity => htmlEntities[entity] || entity) ?? '';\n }\n\n export function escapeRegex(value: string): string {\n return value?.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&') ?? '';\n }\n\n export function isNumeric(value: string): boolean {\n if (isEmpty(value)) return false;\n return !isNaN(Number(value)) && !isNaN(parseFloat(value));\n }\n\n export function isAlpha(value: string): boolean {\n if (isEmpty(value)) return false;\n return /^[a-zA-Z]+$/.test(value);\n }\n\n export function isAlphanumeric(value: string): boolean {\n if (isEmpty(value)) return false;\n return /^[a-zA-Z0-9]+$/.test(value);\n }\n\n export function isHex(value: string): boolean {\n if (isEmpty(value)) return false;\n return /^[0-9a-fA-F]+$/.test(value);\n }\n\n export function isUuid(value: string): boolean {\n if (isEmpty(value)) return false;\n return /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(value);\n }\n\n export function isEmail(value: string): boolean {\n if (isEmpty(value)) return false;\n return /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(value);\n }\n\n export function isUrl(value: string): boolean {\n if (isEmpty(value)) return false;\n try {\n new URL(value);\n return true;\n } catch {\n return false;\n }\n }\n\n export function isPhoneNumber(value: string): boolean {\n if (isEmpty(value)) return false;\n return /^\\+?[\\d\\s-()]{10,}$/.test(value);\n }\n\n export function mask(value: string, start: number, end: number, maskChar: string = '*'): string {\n if (isEmpty(value)) return '';\n const actualStart = Math.max(0, start);\n const actualEnd = Math.min(value.length, end);\n if (actualStart >= actualEnd) return value;\n const masked = maskChar.repeat(actualEnd - actualStart);\n return value.slice(0, actualStart) + masked + value.slice(actualEnd);\n }\n\n export function maskEmail(value: string): string {\n if (!isEmail(value)) return value;\n const parts = value.split('@');\n const localPart = parts[0];\n const domain = parts[1];\n if (!localPart || !domain) return value;\n const maskedLocal = mask(localPart, 2, localPart.length - 2);\n return `${maskedLocal}@${domain}`;\n }\n\n export function maskPhone(value: string): string {\n if (isEmpty(value)) return value;\n const digits = value.replace(/\\D/g, '');\n if (digits.length < 7) return value;\n return mask(digits, 3, digits.length - 4);\n }\n\n export function maskCreditCard(value: string): string {\n if (isEmpty(value)) return value;\n const digits = value.replace(/\\D/g, '');\n if (digits.length < 8) return value;\n return mask(digits, 4, digits.length - 4);\n }\n\n export function formatNumber(value: number | string, options?: Intl.NumberFormatOptions): string {\n const num = typeof value === 'string' ? parseFloat(value) : value;\n if (isNaN(num)) return '';\n return num.toLocaleString(undefined, options);\n }\n\n export function formatCurrency(value: number | string, currency: string = 'USD', locale?: string): string {\n const num = typeof value === 'string' ? parseFloat(value) : value;\n if (isNaN(num)) return '';\n return num.toLocaleString(locale, { style: 'currency', currency });\n }\n\n export function formatPercentage(value: number | string, decimals: number = 0): string {\n const num = typeof value === 'string' ? parseFloat(value) : value;\n if (isNaN(num)) return '';\n return `${(num * 100).toFixed(decimals)}%`;\n }\n\n export function formatBytes(bytes: number, decimals: number = 2): string {\n if (bytes === 0) return '0 Bytes';\n const k = 1024;\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return `${parseFloat((bytes / Math.pow(k, i)).toFixed(decimals))} ${sizes[i]}`;\n }\n\n export function random(length: number = 16, charset: string = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'): string {\n let result = '';\n for (let i = 0; i < length; i++) {\n result += charset.charAt(Math.floor(Math.random() * charset.length));\n }\n return result;\n }\n\n export function uuid(): string {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = Math.random() * 16 | 0;\n const v = c === 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n }\n\n export function slugify(value: string): string {\n return value\n ?.toLowerCase()\n .trim()\n .replace(/[^\\w\\s-]/g, '')\n .replace(/[\\s_-]+/g, '-')\n .replace(/^-+|-+$/g, '') ?? '';\n }\n\n export function unslugify(value: string): string {\n return value\n ?.replace(/-/g, ' ')\n .replace(/\\b\\w/g, char => char.toUpperCase()) ?? '';\n }\n\n export function levenshteinDistance(a: string, b: string): number {\n const matrix: number[][] = [];\n for (let i = 0; i <= b.length; i++) {\n matrix[i] = [i];\n }\n for (let j = 0; j <= a.length; j++) {\n if (matrix[0]) matrix[0][j] = j;\n }\n for (let i = 1; i <= b.length; i++) {\n for (let j = 1; j <= a.length; j++) {\n if (b.charAt(i - 1) === a.charAt(j - 1)) {\n matrix[i]![j] = matrix[i - 1]![j - 1]!;\n } else {\n matrix[i]![j] = Math.min(\n matrix[i - 1]![j - 1]! + 1,\n matrix[i]![j - 1]! + 1,\n matrix[i - 1]![j]! + 1\n );\n }\n }\n }\n return matrix[b.length]![a.length]!;\n }\n\n export function similarity(a: string, b: string): number {\n if (isEmpty(a) && isEmpty(b)) return 1;\n if (isEmpty(a) || isEmpty(b)) return 0;\n const distance = levenshteinDistance(a, b);\n const maxLength = Math.max(a.length, b.length);\n return 1 - distance / maxLength;\n }\n\n export function fuzzyMatch(text: string, pattern: string, threshold: number = 0.6): boolean {\n return similarity(text, pattern) >= threshold;\n }\n\n export function equals(a: string, b: string, ignoreCase: boolean = false): boolean {\n if (ignoreCase) {\n return a?.toLowerCase() === b?.toLowerCase();\n }\n return a === b;\n }\n\n export function equalsIgnoreCase(a: string, b: string): boolean {\n return equals(a, b, true);\n }\n\n export function wordCount(value: string): number {\n if (isEmpty(value)) return 0;\n return value.trim().split(/\\s+/).filter(Boolean).length;\n }\n\n export function characterCount(value: string, includeSpaces: boolean = true): number {\n if (isEmpty(value)) return 0;\n return includeSpaces ? value.length : value.replace(/\\s/g, '').length;\n }\n\n export function lineCount(value: string): number {\n if (isEmpty(value)) return 0;\n return value.split(/\\r?\\n/).length;\n }\n\n export function splitLines(value: string): string[] {\n if (isEmpty(value)) return [];\n return value.split(/\\r?\\n/);\n }\n\n export function words(value: string): string[] {\n if (isEmpty(value)) return [];\n return value.trim().split(/\\s+/).filter(Boolean);\n }\n\n export function charAt(value: string, index: number): string {\n return value?.charAt(index) ?? '';\n }\n\n export function charCodeAt(value: string, index: number): number {\n return value?.charCodeAt(index) ?? NaN;\n }\n\n export function fromCharCode(...codes: number[]): string {\n return String.fromCharCode(...codes);\n }\n\n export function insert(value: string, index: number, insertValue: string): string {\n if (isEmpty(value)) return insertValue;\n return value.slice(0, index) + insertValue + value.slice(index);\n }\n\n export function swapCase(value: string): string {\n return value?.replace(/[a-zA-Z]/g, char => {\n return char === char.toUpperCase() ? char.toLowerCase() : char.toUpperCase();\n }) ?? '';\n }\n\n export function surround(value: string, wrapper: string): string {\n return `${wrapper}${value}${wrapper}`;\n }\n\n export function quote(value: string, quoteChar: string = '\"'): string {\n return `${quoteChar}${value}${quoteChar}`;\n }\n\n export function unquote(value: string): string {\n if (isEmpty(value)) return '';\n if ((value.startsWith('\"') && value.endsWith('\"')) ||\n (value.startsWith(\"'\") && value.endsWith(\"'\")) ||\n (value.startsWith('`') && value.endsWith('`'))) {\n return value.slice(1, -1);\n }\n return value;\n }\n\n export function wrap(value: string, prefix: string, suffix: string = prefix): string {\n return `${prefix}${value}${suffix}`;\n }\n\n export function unwrap(value: string, prefix: string, suffix: string = prefix): string {\n if (isEmpty(value)) return '';\n if (value.startsWith(prefix) && value.endsWith(suffix)) {\n return value.slice(prefix.length, -suffix.length);\n }\n return value;\n }\n\n export function template(templateStr: string, values: Record<string, unknown>): string {\n return templateStr?.replace(/\\{\\{(\\w+)\\}\\}/g, (_, key) => String(values[key] ?? '')) ?? '';\n }\n\n export function interpolate(templateStr: string, values: Record<string, unknown>): string {\n return template(templateStr, values);\n }\n\n export function dedent(value: string): string {\n const lines = value.split('\\n');\n const minIndent = Math.min(\n ...lines.filter(line => line.trim().length > 0).map(line => line.match(/^\\s*/)?.[0].length ?? 0)\n );\n return lines.map(line => line.slice(minIndent)).join('\\n');\n }\n\n export function indent(value: string, spaces: number = 2): string {\n const indentation = ' '.repeat(spaces);\n return value.split('\\n').map(line => indentation + line).join('\\n');\n }\n\n export function center(value: string, width: number, padChar: string = ' '): string {\n if (isEmpty(value) || value.length >= width) return value ?? '';\n const padding = width - value.length;\n const leftPad = Math.floor(padding / 2);\n const rightPad = padding - leftPad;\n return padChar.repeat(leftPad) + value + padChar.repeat(rightPad);\n }\n\n export function alignLeft(value: string, width: number, padChar: string = ' '): string {\n return padEnd(value, width, padChar);\n }\n\n export function alignRight(value: string, width: number, padChar: string = ' '): string {\n return padStart(value, width, padChar);\n }\n\n export function alignCenter(value: string, width: number, padChar: string = ' '): string {\n return center(value, width, padChar);\n }\n\n export function toBoolean(value: string): boolean {\n const truthy = ['true', '1', 'yes', 'on', 'y'];\n return truthy.includes(value?.toLowerCase().trim());\n }\n\n export function toNumber(value: string, defaultValue: number = 0): number {\n const num = parseFloat(value);\n return isNaN(num) ? defaultValue : num;\n }\n\n export function toArray(value: string, separator: string | RegExp = ','): string[] {\n return split(value, separator);\n }\n\n export function hashCode(value: string): number {\n let hash = 0;\n for (let i = 0; i < value.length; i++) {\n const char = value.charCodeAt(i);\n hash = ((hash << 5) - hash) + char;\n hash = hash & hash;\n }\n return hash;\n }\n\n export function isPalindrome(value: string): boolean {\n const cleaned = value.toLowerCase().replace(/[^a-z0-9]/g, '');\n return cleaned === cleaned.split('').reverse().join('');\n }\n\n export function isAnagram(a: string, b: string): boolean {\n const normalize = (s: string) => s.toLowerCase().replace(/[^a-z0-9]/g, '').split('').sort().join('');\n return normalize(a) === normalize(b);\n }\n\n export function reverseWords(value: string): string {\n return value?.split(/\\s+/).reverse().join(' ') ?? '';\n }\n\n export function sortCharacters(value: string): string {\n return value?.split('').sort().join('') ?? '';\n }\n\n export function uniqueCharacters(value: string): string {\n return [...new Set(value)].join('');\n }\n\n export function removeDuplicates(value: string): string {\n return value?.split('').filter((char, index, arr) => arr.indexOf(char) === index).join('') ?? '';\n }\n\n export function longestCommonSubstring(a: string, b: string): string {\n if (isEmpty(a) || isEmpty(b)) return '';\n const matrix: number[][] = Array(a.length + 1).fill(null).map(() => Array(b.length + 1).fill(0));\n let maxLength = 0;\n let endIndex = 0;\n for (let i = 1; i <= a.length; i++) {\n for (let j = 1; j <= b.length; j++) {\n if (a[i - 1] === b[j - 1]) {\n matrix[i]![j] = matrix[i - 1]![j - 1]! + 1;\n if (matrix[i]![j]! > maxLength) {\n maxLength = matrix[i]![j]!;\n endIndex = i;\n }\n }\n }\n }\n return a.slice(endIndex - maxLength, endIndex);\n }\n\n export function longestCommonPrefix(strings: string[]): string {\n if (strings.length === 0) return '';\n if (strings.length === 1) return strings[0] ?? '';\n const sorted = [...strings].sort();\n const first = sorted[0] ?? '';\n const last = sorted[sorted.length - 1] ?? '';\n let i = 0;\n while (i < first.length && first[i] === last[i]) {\n i++;\n }\n return first.slice(0, i);\n }\n\n export function longestCommonSuffix(strings: string[]): string {\n const reversed = strings.map(s => s?.split('').reverse().join('') ?? '');\n return longestCommonPrefix(reversed).split('').reverse().join('');\n }\n\n export function truncateMiddle(value: string, maxLength: number, separator: string = '...'): string {\n if (isEmpty(value) || value.length <= maxLength) return value ?? '';\n const sepLen = separator.length;\n const charsToShow = maxLength - sepLen;\n const frontChars = Math.ceil(charsToShow / 2);\n const backChars = Math.floor(charsToShow / 2);\n return value.slice(0, frontChars) + separator + value.slice(-backChars);\n }\n\n export function ellipsis(value: string, maxLength: number): string {\n return truncate(value, maxLength, '...');\n }\n\n export function ellipsisMiddle(value: string, maxLength: number): string {\n return truncateMiddle(value, maxLength, '...');\n }\n\n export function pad(value: string, length: number, padChar: string = ' '): string {\n return center(value, length, padChar);\n }\n\n export function padCenter(value: string, length: number, padChar: string = ' '): string {\n return center(value, length, padChar);\n }\n\n export function isAscii(value: string): boolean {\n return /^[\\x00-\\x7F]*$/.test(value);\n }\n\n export function isLowerCase(value: string): boolean {\n return value === value.toLowerCase();\n }\n\n export function isUpperCase(value: string): boolean {\n return value === value.toUpperCase();\n }\n\n export function isCapitalized(value: string): boolean {\n return value.charAt(0) === value.charAt(0).toUpperCase();\n }\n\n export function swapPrefix(value: string, oldPrefix: string, newPrefix: string): string {\n if (value.startsWith(oldPrefix)) {\n return newPrefix + value.slice(oldPrefix.length);\n }\n return value;\n }\n\n export function swapSuffix(value: string, oldSuffix: string, newSuffix: string): string {\n if (value.endsWith(oldSuffix)) {\n return value.slice(0, -oldSuffix.length) + newSuffix;\n }\n return value;\n }\n\n export function ensurePrefix(value: string, prefix: string): string {\n return value.startsWith(prefix) ? value : prefix + value;\n }\n\n export function ensureSuffix(value: string, suffix: string): string {\n return value.endsWith(suffix) ? value : value + suffix;\n }\n\n export function removePrefix(value: string, prefix: string): string {\n return value.startsWith(prefix) ? value.slice(prefix.length) : value;\n }\n\n export function removeSuffix(value: string, suffix: string): string {\n return value.endsWith(suffix) ? value.slice(0, -suffix.length) : value;\n }\n\n export function take(value: string, n: number): string {\n return value?.slice(0, n) ?? '';\n }\n\n export function takeRight(value: string, n: number): string {\n return value?.slice(-n) ?? '';\n }\n\n export function takeWhile(value: string, predicate: (char: string) => boolean): string {\n let result = '';\n for (const char of value ?? '') {\n if (!predicate(char)) break;\n result += char;\n }\n return result;\n }\n\n export function takeRightWhile(value: string, predicate: (char: string) => boolean): string {\n let result = '';\n for (let i = (value?.length ?? 0) - 1; i >= 0; i--) {\n const char = value?.charAt(i) ?? '';\n if (!predicate(char)) break;\n result = char + result;\n }\n return result;\n }\n\n export function drop(value: string, n: number): string {\n return value?.slice(n) ?? '';\n }\n\n export function dropRight(value: string, n: number): string {\n return value?.slice(0, -n) ?? '';\n }\n\n export function dropWhile(value: string, predicate: (char: string) => boolean): string {\n let i = 0;\n for (const char of value ?? '') {\n if (!predicate(char)) break;\n i++;\n }\n return value?.slice(i) ?? '';\n }\n\n export function dropRightWhile(value: string, predicate: (char: string) => boolean): string {\n let i = (value?.length ?? 0) - 1;\n while (i >= 0 && predicate(value?.charAt(i) ?? '')) {\n i--;\n }\n return value?.slice(0, i + 1) ?? '';\n }\n\n export function countLines(value: string): number {\n return lineCount(value);\n }\n\n export function getLine(value: string, lineNumber: number): string {\n const lines = splitLines(value);\n return lines[lineNumber] ?? '';\n }\n\n export function getLines(value: string): string[] {\n return splitLines(value);\n }\n\n export function isSingleLine(value: string): boolean {\n return !value?.includes('\\n');\n }\n\n export function isMultiLine(value: string): boolean {\n return value?.includes('\\n') ?? false;\n }\n\n export function normalizeLineEndings(value: string, lineEnding: '\\n' | '\\r\\n' | '\\r' = '\\n'): string {\n return value?.replace(/\\r\\n|\\r|\\n/g, lineEnding) ?? '';\n }\n\n export function toCamelCase(value: string): string {\n return camelCase(value);\n }\n\n export function toKebabCase(value: string): string {\n return kebabCase(value);\n }\n\n export function toSnakeCase(value: string): string {\n return snakeCase(value);\n }\n\n export function toPascalCase(value: string): string {\n return pascalCase(value);\n }\n\n export function toConstantCase(value: string): string {\n return constantCase(value);\n }\n\n export function toSentenceCase(value: string): string {\n if (isEmpty(value)) return '';\n return value.charAt(0).toUpperCase() + value.slice(1).toLowerCase();\n }\n\n export function toTitleCase(value: string): string {\n return capitalizeWords(value);\n }\n\n export function toCapitalCase(value: string): string {\n return capitalizeWords(value);\n }\n\n export function toDotCase(value: string): string {\n return value?.replace(/([a-z])([A-Z])/g, '$1.$2').replace(/[-_\\s]+/g, '.').toLowerCase() ?? '';\n }\n\n export function toPathCase(value: string): string {\n return value?.replace(/([a-z])([A-Z])/g, '$1/$2').replace(/[-_\\s]+/g, '/').toLowerCase() ?? '';\n }\n\n export function stripTags(value: string): string {\n return value?.replace(/<[^>]*>/g, '') ?? '';\n }\n\n export function stripNumbers(value: string): string {\n return value?.replace(/\\d+/g, '') ?? '';\n }\n\n export function stripWhitespace(value: string): string {\n return value?.replace(/\\s+/g, '') ?? '';\n }\n\n export function stripPunctuation(value: string): string {\n return value?.replace(/[^\\w\\s]/g, '') ?? '';\n }\n\n export function normalizeWhitespace(value: string): string {\n return value?.replace(/\\s+/g, ' ').trim() ?? '';\n }\n\n export function includesAll(value: string, searches: string[]): boolean {\n return searches.every(search => value?.includes(search) ?? false);\n }\n\n export function includesAny(value: string, searches: string[]): boolean {\n return searches.some(search => value?.includes(search) ?? false);\n }\n}\n"],"names":["StringUtils","wordCount","words"],"mappings":"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"}
1
+ {"version":3,"file":"string.cjs","sources":["../../src/utils/string.ts"],"sourcesContent":["export const EMPTY_STRING = '';\nexport const SPACE = ' ';\nexport const DASH = '-';\nexport const UNDERSCORE = '_';\nexport const DOT = '.';\nexport const SLASH = '/';\nexport const BACKSLASH = '\\\\';\nexport const NEWLINE = '\\n';\nexport const CARRIAGE_RETURN = '\\r';\nexport const TAB = '\\t';\n\nexport namespace StringUtils {\n export function isEmpty(value: unknown): boolean {\n return value === null || value === undefined || value === '';\n }\n\n export function isNotEmpty(value: unknown): boolean {\n return !isEmpty(value);\n }\n\n export function isBlank(value: unknown): boolean {\n if (isEmpty(value)) return true;\n if (typeof value !== 'string') return false;\n return value.trim().length === 0;\n }\n\n export function isNotBlank(value: unknown): boolean {\n return !isBlank(value);\n }\n\n export function trim(value: string): string {\n return value?.trim() ?? '';\n }\n\n export function trimStart(value: string): string {\n return value?.trimStart() ?? '';\n }\n\n export function trimEnd(value: string): string {\n return value?.trimEnd() ?? '';\n }\n\n export function toLowerCase(value: string): string {\n return value?.toLowerCase() ?? '';\n }\n\n export function toUpperCase(value: string): string {\n return value?.toUpperCase() ?? '';\n }\n\n export function capitalize(value: string): string {\n if (isEmpty(value)) return '';\n return value.charAt(0).toUpperCase() + value.slice(1).toLowerCase();\n }\n\n export function capitalizeWords(value: string): string {\n if (isEmpty(value)) return '';\n return value.split(/\\s+/).map(capitalize).join(' ');\n }\n\n export function camelCase(value: string): string {\n if (isEmpty(value)) return '';\n return value\n .replace(/[-_\\s]+(.)?/g, (_, char) => (char ? char.toUpperCase() : ''))\n .replace(/^(.)/, (char) => char.toLowerCase());\n }\n\n export function pascalCase(value: string): string {\n if (isEmpty(value)) return '';\n const camel = camelCase(value);\n return camel.charAt(0).toUpperCase() + camel.slice(1);\n }\n\n export function kebabCase(value: string): string {\n if (isEmpty(value)) return '';\n return value\n .replace(/([a-z])([A-Z])/g, '$1-$2')\n .replace(/[\\s_]+/g, '-')\n .toLowerCase();\n }\n\n export function snakeCase(value: string): string {\n if (isEmpty(value)) return '';\n return value\n .replace(/([a-z])([A-Z])/g, '$1_$2')\n .replace(/[\\s-]+/g, '_')\n .toLowerCase();\n }\n\n export function constantCase(value: string): string {\n return snakeCase(value).toUpperCase();\n }\n\n export function truncate(value: string, length: number, suffix: string = '...'): string {\n if (isEmpty(value) || value.length <= length) return value ?? '';\n return value.slice(0, length - suffix.length) + suffix;\n }\n\n export function truncateWords(value: string, wordCount: number, suffix: string = '...'): string {\n if (isEmpty(value)) return '';\n const words = value.split(/\\s+/);\n if (words.length <= wordCount) return value;\n return words.slice(0, wordCount).join(' ') + suffix;\n }\n\n export function padStart(value: string, length: number, padChar: string = ' '): string {\n return value?.padStart(length, padChar) ?? '';\n }\n\n export function padEnd(value: string, length: number, padChar: string = ' '): string {\n return value?.padEnd(length, padChar) ?? '';\n }\n\n export function repeat(value: string, count: number): string {\n if (isEmpty(value) || count <= 0) return '';\n return value.repeat(count);\n }\n\n export function reverse(value: string): string {\n if (isEmpty(value)) return '';\n return value.split('').reverse().join('');\n }\n\n export function startsWith(value: string, prefix: string): boolean {\n return value?.startsWith(prefix) ?? false;\n }\n\n export function endsWith(value: string, suffix: string): boolean {\n return value?.endsWith(suffix) ?? false;\n }\n\n export function contains(value: string, search: string): boolean {\n return value?.includes(search) ?? false;\n }\n\n export function containsIgnoreCase(value: string, search: string): boolean {\n return value?.toLowerCase().includes(search.toLowerCase()) ?? false;\n }\n\n export function indexOf(value: string, search: string): number {\n return value?.indexOf(search) ?? -1;\n }\n\n export function lastIndexOf(value: string, search: string): number {\n return value?.lastIndexOf(search) ?? -1;\n }\n\n export function substring(value: string, start: number, end?: number): string {\n if (isEmpty(value)) return '';\n return end !== undefined ? value.slice(start, end) : value.slice(start);\n }\n\n export function slice(value: string, start: number, end?: number): string {\n return substring(value, start, end);\n }\n\n export function split(value: string, separator: string | RegExp, limit?: number): string[] {\n if (isEmpty(value)) return [];\n return value.split(separator, limit);\n }\n\n export function join(values: string[], separator: string = ''): string {\n return values?.join(separator) ?? '';\n }\n\n export function replace(value: string, search: string | RegExp, replacement: string): string {\n return value?.replace(search, replacement) ?? '';\n }\n\n export function replaceAll(value: string, search: string | RegExp, replacement: string): string {\n return value?.replaceAll(search, replacement) ?? '';\n }\n\n export function remove(value: string, search: string | RegExp): string {\n return value?.replace(search, '') ?? '';\n }\n\n export function removeAll(value: string, search: string | RegExp): string {\n const regex = typeof search === 'string' ? new RegExp(search, 'g') : new RegExp(search.source, `${search.flags}g`);\n return value?.replace(regex, '') ?? '';\n }\n\n export function countOccurrences(value: string, search: string): number {\n if (isEmpty(value) || isEmpty(search)) return 0;\n return (value.match(new RegExp(escapeRegex(search), 'g')) || []).length;\n }\n\n export function escapeHtml(value: string): string {\n const htmlEntities: Record<string, string> = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;'\n };\n return value?.replace(/[&<>\"']/g, char => htmlEntities[char] || char) ?? '';\n }\n\n export function unescapeHtml(value: string): string {\n const htmlEntities: Record<string, string> = {\n '&amp;': '&',\n '&lt;': '<',\n '&gt;': '>',\n '&quot;': '\"',\n '&#39;': \"'\",\n '&#x27;': \"'\",\n '&apos;': \"'\"\n };\n return value?.replace(/&(?:amp|lt|gt|quot|#39|#x27|apos);/g, entity => htmlEntities[entity] || entity) ?? '';\n }\n\n export function escapeRegex(value: string): string {\n return value?.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&') ?? '';\n }\n\n export function isNumeric(value: string): boolean {\n if (isEmpty(value)) return false;\n return !isNaN(Number(value)) && !isNaN(parseFloat(value));\n }\n\n export function isAlpha(value: string): boolean {\n if (isEmpty(value)) return false;\n return /^[a-zA-Z]+$/.test(value);\n }\n\n export function isAlphanumeric(value: string): boolean {\n if (isEmpty(value)) return false;\n return /^[a-zA-Z0-9]+$/.test(value);\n }\n\n export function isHex(value: string): boolean {\n if (isEmpty(value)) return false;\n return /^[0-9a-fA-F]+$/.test(value);\n }\n\n export function isUuid(value: string): boolean {\n if (isEmpty(value)) return false;\n return /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(value);\n }\n\n export function isEmail(value: string): boolean {\n if (isEmpty(value)) return false;\n return /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(value);\n }\n\n export function isUrl(value: string): boolean {\n if (isEmpty(value)) return false;\n try {\n new URL(value);\n return true;\n } catch {\n return false;\n }\n }\n\n export function isPhoneNumber(value: string): boolean {\n if (isEmpty(value)) return false;\n return /^\\+?[\\d\\s-()]{10,}$/.test(value);\n }\n\n export function mask(value: string, start: number, end: number, maskChar: string = '*'): string {\n if (isEmpty(value)) return '';\n const actualStart = Math.max(0, start);\n const actualEnd = Math.min(value.length, end);\n if (actualStart >= actualEnd) return value;\n const masked = maskChar.repeat(actualEnd - actualStart);\n return value.slice(0, actualStart) + masked + value.slice(actualEnd);\n }\n\n export function maskEmail(value: string): string {\n if (!isEmail(value)) return value;\n const parts = value.split('@');\n const localPart = parts[0];\n const domain = parts[1];\n if (!localPart || !domain) return value;\n const maskedLocal = mask(localPart, 2, localPart.length - 2);\n return `${maskedLocal}@${domain}`;\n }\n\n export function maskPhone(value: string): string {\n if (isEmpty(value)) return value;\n const digits = value.replace(/\\D/g, '');\n if (digits.length < 7) return value;\n return mask(digits, 3, digits.length - 4);\n }\n\n export function maskCreditCard(value: string): string {\n if (isEmpty(value)) return value;\n const digits = value.replace(/\\D/g, '');\n if (digits.length < 8) return value;\n return mask(digits, 4, digits.length - 4);\n }\n\n export function formatNumber(value: number | string, options?: Intl.NumberFormatOptions): string {\n const num = typeof value === 'string' ? parseFloat(value) : value;\n if (isNaN(num)) return '';\n return num.toLocaleString(undefined, options);\n }\n\n export function formatCurrency(value: number | string, currency: string = 'USD', locale?: string): string {\n const num = typeof value === 'string' ? parseFloat(value) : value;\n if (isNaN(num)) return '';\n return num.toLocaleString(locale, { style: 'currency', currency });\n }\n\n export function formatPercentage(value: number | string, decimals: number = 0): string {\n const num = typeof value === 'string' ? parseFloat(value) : value;\n if (isNaN(num)) return '';\n return `${(num * 100).toFixed(decimals)}%`;\n }\n\n export function formatBytes(bytes: number, decimals: number = 2): string {\n if (bytes === 0) return '0 Bytes';\n const k = 1024;\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return `${parseFloat((bytes / Math.pow(k, i)).toFixed(decimals))} ${sizes[i]}`;\n }\n\n export function random(length: number = 16, charset: string = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'): string {\n let result = '';\n for (let i = 0; i < length; i++) {\n result += charset.charAt(Math.floor(Math.random() * charset.length));\n }\n return result;\n }\n\n export function uuid(): string {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = Math.random() * 16 | 0;\n const v = c === 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n }\n\n export function slugify(value: string): string {\n return value\n ?.toLowerCase()\n .trim()\n .replace(/[^\\w\\s-]/g, '')\n .replace(/[\\s_-]+/g, '-')\n .replace(/^-+|-+$/g, '') ?? '';\n }\n\n export function unslugify(value: string): string {\n return value\n ?.replace(/-/g, ' ')\n .replace(/\\b\\w/g, char => char.toUpperCase()) ?? '';\n }\n\n export function levenshteinDistance(a: string, b: string): number {\n const matrix: number[][] = [];\n for (let i = 0; i <= b.length; i++) {\n matrix[i] = [i];\n }\n for (let j = 0; j <= a.length; j++) {\n if (matrix[0]) matrix[0][j] = j;\n }\n for (let i = 1; i <= b.length; i++) {\n for (let j = 1; j <= a.length; j++) {\n if (b.charAt(i - 1) === a.charAt(j - 1)) {\n matrix[i]![j] = matrix[i - 1]![j - 1]!;\n } else {\n matrix[i]![j] = Math.min(\n matrix[i - 1]![j - 1]! + 1,\n matrix[i]![j - 1]! + 1,\n matrix[i - 1]![j]! + 1\n );\n }\n }\n }\n return matrix[b.length]![a.length]!;\n }\n\n export function similarity(a: string, b: string): number {\n if (isEmpty(a) && isEmpty(b)) return 1;\n if (isEmpty(a) || isEmpty(b)) return 0;\n const distance = levenshteinDistance(a, b);\n const maxLength = Math.max(a.length, b.length);\n return 1 - distance / maxLength;\n }\n\n export function fuzzyMatch(text: string, pattern: string, threshold: number = 0.6): boolean {\n return similarity(text, pattern) >= threshold;\n }\n\n export function equals(a: string, b: string, ignoreCase: boolean = false): boolean {\n if (ignoreCase) {\n return a?.toLowerCase() === b?.toLowerCase();\n }\n return a === b;\n }\n\n export function equalsIgnoreCase(a: string, b: string): boolean {\n return equals(a, b, true);\n }\n\n export function wordCount(value: string): number {\n if (isEmpty(value)) return 0;\n return value.trim().split(/\\s+/).filter(Boolean).length;\n }\n\n export function characterCount(value: string, includeSpaces: boolean = true): number {\n if (isEmpty(value)) return 0;\n return includeSpaces ? value.length : value.replace(/\\s/g, '').length;\n }\n\n export function lineCount(value: string): number {\n if (isEmpty(value)) return 0;\n return value.split(/\\r?\\n/).length;\n }\n\n export function splitLines(value: string): string[] {\n if (isEmpty(value)) return [];\n return value.split(/\\r?\\n/);\n }\n\n export function words(value: string): string[] {\n if (isEmpty(value)) return [];\n return value.trim().split(/\\s+/).filter(Boolean);\n }\n\n export function charAt(value: string, index: number): string {\n return value?.charAt(index) ?? '';\n }\n\n export function charCodeAt(value: string, index: number): number {\n return value?.charCodeAt(index) ?? NaN;\n }\n\n export function fromCharCode(...codes: number[]): string {\n return String.fromCharCode(...codes);\n }\n\n export function insert(value: string, index: number, insertValue: string): string {\n if (isEmpty(value)) return insertValue;\n return value.slice(0, index) + insertValue + value.slice(index);\n }\n\n export function swapCase(value: string): string {\n return value?.replace(/[a-zA-Z]/g, char => {\n return char === char.toUpperCase() ? char.toLowerCase() : char.toUpperCase();\n }) ?? '';\n }\n\n export function surround(value: string, wrapper: string): string {\n return `${wrapper}${value}${wrapper}`;\n }\n\n export function quote(value: string, quoteChar: string = '\"'): string {\n return `${quoteChar}${value}${quoteChar}`;\n }\n\n export function unquote(value: string): string {\n if (isEmpty(value)) return '';\n if ((value.startsWith('\"') && value.endsWith('\"')) ||\n (value.startsWith(\"'\") && value.endsWith(\"'\")) ||\n (value.startsWith('`') && value.endsWith('`'))) {\n return value.slice(1, -1);\n }\n return value;\n }\n\n export function wrap(value: string, prefix: string, suffix: string = prefix): string {\n return `${prefix}${value}${suffix}`;\n }\n\n export function unwrap(value: string, prefix: string, suffix: string = prefix): string {\n if (isEmpty(value)) return '';\n if (value.startsWith(prefix) && value.endsWith(suffix)) {\n return value.slice(prefix.length, -suffix.length);\n }\n return value;\n }\n\n export function template(templateStr: string, values: Record<string, unknown>): string {\n return templateStr?.replace(/\\{\\{(\\w+)\\}\\}/g, (_, key) => String(values[key] ?? '')) ?? '';\n }\n\n export function interpolate(templateStr: string, values: Record<string, unknown>): string {\n return template(templateStr, values);\n }\n\n export function dedent(value: string): string {\n const lines = value.split('\\n');\n const minIndent = Math.min(\n ...lines.filter(line => line.trim().length > 0).map(line => line.match(/^\\s*/)?.[0].length ?? 0)\n );\n return lines.map(line => line.slice(minIndent)).join('\\n');\n }\n\n export function indent(value: string, spaces: number = 2): string {\n const indentation = ' '.repeat(spaces);\n return value.split('\\n').map(line => indentation + line).join('\\n');\n }\n\n export function center(value: string, width: number, padChar: string = ' '): string {\n if (isEmpty(value) || value.length >= width) return value ?? '';\n const padding = width - value.length;\n const leftPad = Math.floor(padding / 2);\n const rightPad = padding - leftPad;\n return padChar.repeat(leftPad) + value + padChar.repeat(rightPad);\n }\n\n export function alignLeft(value: string, width: number, padChar: string = ' '): string {\n return padEnd(value, width, padChar);\n }\n\n export function alignRight(value: string, width: number, padChar: string = ' '): string {\n return padStart(value, width, padChar);\n }\n\n export function alignCenter(value: string, width: number, padChar: string = ' '): string {\n return center(value, width, padChar);\n }\n\n export function toBoolean(value: string): boolean {\n const truthy = ['true', '1', 'yes', 'on', 'y'];\n return truthy.includes(value?.toLowerCase().trim());\n }\n\n export function toNumber(value: string, defaultValue: number = 0): number {\n const num = parseFloat(value);\n return isNaN(num) ? defaultValue : num;\n }\n\n export function toArray(value: string, separator: string | RegExp = ','): string[] {\n return split(value, separator);\n }\n\n export function hashCode(value: string): number {\n let hash = 0;\n for (let i = 0; i < value.length; i++) {\n const char = value.charCodeAt(i);\n hash = ((hash << 5) - hash) + char;\n hash = hash & hash;\n }\n return hash;\n }\n\n export function isPalindrome(value: string): boolean {\n const cleaned = value.toLowerCase().replace(/[^a-z0-9]/g, '');\n return cleaned === cleaned.split('').reverse().join('');\n }\n\n export function isAnagram(a: string, b: string): boolean {\n const normalize = (s: string) => s.toLowerCase().replace(/[^a-z0-9]/g, '').split('').sort().join('');\n return normalize(a) === normalize(b);\n }\n\n export function reverseWords(value: string): string {\n return value?.split(/\\s+/).reverse().join(' ') ?? '';\n }\n\n export function sortCharacters(value: string): string {\n return value?.split('').sort().join('') ?? '';\n }\n\n export function uniqueCharacters(value: string): string {\n return [...new Set(value)].join('');\n }\n\n export function removeDuplicates(value: string): string {\n return value?.split('').filter((char, index, arr) => arr.indexOf(char) === index).join('') ?? '';\n }\n\n export function longestCommonSubstring(a: string, b: string): string {\n if (isEmpty(a) || isEmpty(b)) return '';\n const matrix: number[][] = Array(a.length + 1).fill(null).map(() => Array(b.length + 1).fill(0));\n let maxLength = 0;\n let endIndex = 0;\n for (let i = 1; i <= a.length; i++) {\n for (let j = 1; j <= b.length; j++) {\n if (a[i - 1] === b[j - 1]) {\n matrix[i]![j] = matrix[i - 1]![j - 1]! + 1;\n if (matrix[i]![j]! > maxLength) {\n maxLength = matrix[i]![j]!;\n endIndex = i;\n }\n }\n }\n }\n return a.slice(endIndex - maxLength, endIndex);\n }\n\n export function longestCommonPrefix(strings: string[]): string {\n if (strings.length === 0) return '';\n if (strings.length === 1) return strings[0] ?? '';\n const sorted = [...strings].sort();\n const first = sorted[0] ?? '';\n const last = sorted[sorted.length - 1] ?? '';\n let i = 0;\n while (i < first.length && first[i] === last[i]) {\n i++;\n }\n return first.slice(0, i);\n }\n\n export function longestCommonSuffix(strings: string[]): string {\n const reversed = strings.map(s => s?.split('').reverse().join('') ?? '');\n return longestCommonPrefix(reversed).split('').reverse().join('');\n }\n\n export function truncateMiddle(value: string, maxLength: number, separator: string = '...'): string {\n if (isEmpty(value) || value.length <= maxLength) return value ?? '';\n const sepLen = separator.length;\n const charsToShow = maxLength - sepLen;\n const frontChars = Math.ceil(charsToShow / 2);\n const backChars = Math.floor(charsToShow / 2);\n return value.slice(0, frontChars) + separator + value.slice(-backChars);\n }\n\n export function ellipsis(value: string, maxLength: number): string {\n return truncate(value, maxLength, '...');\n }\n\n export function ellipsisMiddle(value: string, maxLength: number): string {\n return truncateMiddle(value, maxLength, '...');\n }\n\n export function pad(value: string, length: number, padChar: string = ' '): string {\n return center(value, length, padChar);\n }\n\n export function padCenter(value: string, length: number, padChar: string = ' '): string {\n return center(value, length, padChar);\n }\n\n export function isAscii(value: string): boolean {\n return /^[\\x00-\\x7F]*$/.test(value);\n }\n\n export function isLowerCase(value: string): boolean {\n return value === value.toLowerCase();\n }\n\n export function isUpperCase(value: string): boolean {\n return value === value.toUpperCase();\n }\n\n export function isCapitalized(value: string): boolean {\n return value.charAt(0) === value.charAt(0).toUpperCase();\n }\n\n export function swapPrefix(value: string, oldPrefix: string, newPrefix: string): string {\n if (value.startsWith(oldPrefix)) {\n return newPrefix + value.slice(oldPrefix.length);\n }\n return value;\n }\n\n export function swapSuffix(value: string, oldSuffix: string, newSuffix: string): string {\n if (value.endsWith(oldSuffix)) {\n return value.slice(0, -oldSuffix.length) + newSuffix;\n }\n return value;\n }\n\n export function ensurePrefix(value: string, prefix: string): string {\n return value.startsWith(prefix) ? value : prefix + value;\n }\n\n export function ensureSuffix(value: string, suffix: string): string {\n return value.endsWith(suffix) ? value : value + suffix;\n }\n\n export function removePrefix(value: string, prefix: string): string {\n return value.startsWith(prefix) ? value.slice(prefix.length) : value;\n }\n\n export function removeSuffix(value: string, suffix: string): string {\n return value.endsWith(suffix) ? value.slice(0, -suffix.length) : value;\n }\n\n export function take(value: string, n: number): string {\n return value?.slice(0, n) ?? '';\n }\n\n export function takeRight(value: string, n: number): string {\n return value?.slice(-n) ?? '';\n }\n\n export function takeWhile(value: string, predicate: (char: string) => boolean): string {\n let result = '';\n for (const char of value ?? '') {\n if (!predicate(char)) break;\n result += char;\n }\n return result;\n }\n\n export function takeRightWhile(value: string, predicate: (char: string) => boolean): string {\n let result = '';\n for (let i = (value?.length ?? 0) - 1; i >= 0; i--) {\n const char = value?.charAt(i) ?? '';\n if (!predicate(char)) break;\n result = char + result;\n }\n return result;\n }\n\n export function drop(value: string, n: number): string {\n return value?.slice(n) ?? '';\n }\n\n export function dropRight(value: string, n: number): string {\n return value?.slice(0, -n) ?? '';\n }\n\n export function dropWhile(value: string, predicate: (char: string) => boolean): string {\n let i = 0;\n for (const char of value ?? '') {\n if (!predicate(char)) break;\n i++;\n }\n return value?.slice(i) ?? '';\n }\n\n export function dropRightWhile(value: string, predicate: (char: string) => boolean): string {\n let i = (value?.length ?? 0) - 1;\n while (i >= 0 && predicate(value?.charAt(i) ?? '')) {\n i--;\n }\n return value?.slice(0, i + 1) ?? '';\n }\n\n export function countLines(value: string): number {\n return lineCount(value);\n }\n\n export function getLine(value: string, lineNumber: number): string {\n const lines = splitLines(value);\n return lines[lineNumber] ?? '';\n }\n\n export function getLines(value: string): string[] {\n return splitLines(value);\n }\n\n export function isSingleLine(value: string): boolean {\n return !value?.includes('\\n');\n }\n\n export function isMultiLine(value: string): boolean {\n return value?.includes('\\n') ?? false;\n }\n\n export function normalizeLineEndings(value: string, lineEnding: '\\n' | '\\r\\n' | '\\r' = '\\n'): string {\n return value?.replace(/\\r\\n|\\r|\\n/g, lineEnding) ?? '';\n }\n\n export function toCamelCase(value: string): string {\n return camelCase(value);\n }\n\n export function toKebabCase(value: string): string {\n return kebabCase(value);\n }\n\n export function toSnakeCase(value: string): string {\n return snakeCase(value);\n }\n\n export function toPascalCase(value: string): string {\n return pascalCase(value);\n }\n\n export function toConstantCase(value: string): string {\n return constantCase(value);\n }\n\n export function toSentenceCase(value: string): string {\n if (isEmpty(value)) return '';\n return value.charAt(0).toUpperCase() + value.slice(1).toLowerCase();\n }\n\n export function toTitleCase(value: string): string {\n return capitalizeWords(value);\n }\n\n export function toCapitalCase(value: string): string {\n return capitalizeWords(value);\n }\n\n export function toDotCase(value: string): string {\n return value?.replace(/([a-z])([A-Z])/g, '$1.$2').replace(/[-_\\s]+/g, '.').toLowerCase() ?? '';\n }\n\n export function toPathCase(value: string): string {\n return value?.replace(/([a-z])([A-Z])/g, '$1/$2').replace(/[-_\\s]+/g, '/').toLowerCase() ?? '';\n }\n\n export function stripTags(value: string): string {\n return value?.replace(/<[^>]*>/g, '') ?? '';\n }\n\n export function stripNumbers(value: string): string {\n return value?.replace(/\\d+/g, '') ?? '';\n }\n\n export function stripWhitespace(value: string): string {\n return value?.replace(/\\s+/g, '') ?? '';\n }\n\n export function stripPunctuation(value: string): string {\n return value?.replace(/[^\\w\\s]/g, '') ?? '';\n }\n\n export function normalizeWhitespace(value: string): string {\n return value?.replace(/\\s+/g, ' ').trim() ?? '';\n }\n\n export function includesAll(value: string, searches: string[]): boolean {\n return searches.every(search => value?.includes(search) ?? false);\n }\n\n export function includesAny(value: string, searches: string[]): boolean {\n return searches.some(search => value?.includes(search) ?? false);\n }\n}\n"],"names":["StringUtils","wordCount","words"],"mappings":"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"}
@@ -29,23 +29,23 @@ var StringUtils;
29
29
  }
30
30
  StringUtils2.isNotBlank = isNotBlank;
31
31
  function trim(value) {
32
- return (value == null ? void 0 : value.trim()) ?? "";
32
+ return value?.trim() ?? "";
33
33
  }
34
34
  StringUtils2.trim = trim;
35
35
  function trimStart(value) {
36
- return (value == null ? void 0 : value.trimStart()) ?? "";
36
+ return value?.trimStart() ?? "";
37
37
  }
38
38
  StringUtils2.trimStart = trimStart;
39
39
  function trimEnd(value) {
40
- return (value == null ? void 0 : value.trimEnd()) ?? "";
40
+ return value?.trimEnd() ?? "";
41
41
  }
42
42
  StringUtils2.trimEnd = trimEnd;
43
43
  function toLowerCase(value) {
44
- return (value == null ? void 0 : value.toLowerCase()) ?? "";
44
+ return value?.toLowerCase() ?? "";
45
45
  }
46
46
  StringUtils2.toLowerCase = toLowerCase;
47
47
  function toUpperCase(value) {
48
- return (value == null ? void 0 : value.toUpperCase()) ?? "";
48
+ return value?.toUpperCase() ?? "";
49
49
  }
50
50
  StringUtils2.toUpperCase = toUpperCase;
51
51
  function capitalize(value) {
@@ -96,11 +96,11 @@ var StringUtils;
96
96
  }
97
97
  StringUtils2.truncateWords = truncateWords;
98
98
  function padStart(value, length, padChar = " ") {
99
- return (value == null ? void 0 : value.padStart(length, padChar)) ?? "";
99
+ return value?.padStart(length, padChar) ?? "";
100
100
  }
101
101
  StringUtils2.padStart = padStart;
102
102
  function padEnd(value, length, padChar = " ") {
103
- return (value == null ? void 0 : value.padEnd(length, padChar)) ?? "";
103
+ return value?.padEnd(length, padChar) ?? "";
104
104
  }
105
105
  StringUtils2.padEnd = padEnd;
106
106
  function repeat(value, count) {
@@ -114,27 +114,27 @@ var StringUtils;
114
114
  }
115
115
  StringUtils2.reverse = reverse;
116
116
  function startsWith(value, prefix) {
117
- return (value == null ? void 0 : value.startsWith(prefix)) ?? false;
117
+ return value?.startsWith(prefix) ?? false;
118
118
  }
119
119
  StringUtils2.startsWith = startsWith;
120
120
  function endsWith(value, suffix) {
121
- return (value == null ? void 0 : value.endsWith(suffix)) ?? false;
121
+ return value?.endsWith(suffix) ?? false;
122
122
  }
123
123
  StringUtils2.endsWith = endsWith;
124
124
  function contains(value, search) {
125
- return (value == null ? void 0 : value.includes(search)) ?? false;
125
+ return value?.includes(search) ?? false;
126
126
  }
127
127
  StringUtils2.contains = contains;
128
128
  function containsIgnoreCase(value, search) {
129
- return (value == null ? void 0 : value.toLowerCase().includes(search.toLowerCase())) ?? false;
129
+ return value?.toLowerCase().includes(search.toLowerCase()) ?? false;
130
130
  }
131
131
  StringUtils2.containsIgnoreCase = containsIgnoreCase;
132
132
  function indexOf(value, search) {
133
- return (value == null ? void 0 : value.indexOf(search)) ?? -1;
133
+ return value?.indexOf(search) ?? -1;
134
134
  }
135
135
  StringUtils2.indexOf = indexOf;
136
136
  function lastIndexOf(value, search) {
137
- return (value == null ? void 0 : value.lastIndexOf(search)) ?? -1;
137
+ return value?.lastIndexOf(search) ?? -1;
138
138
  }
139
139
  StringUtils2.lastIndexOf = lastIndexOf;
140
140
  function substring(value, start, end) {
@@ -152,24 +152,24 @@ var StringUtils;
152
152
  }
153
153
  StringUtils2.split = split;
154
154
  function join(values, separator = "") {
155
- return (values == null ? void 0 : values.join(separator)) ?? "";
155
+ return values?.join(separator) ?? "";
156
156
  }
157
157
  StringUtils2.join = join;
158
158
  function replace(value, search, replacement) {
159
- return (value == null ? void 0 : value.replace(search, replacement)) ?? "";
159
+ return value?.replace(search, replacement) ?? "";
160
160
  }
161
161
  StringUtils2.replace = replace;
162
162
  function replaceAll(value, search, replacement) {
163
- return (value == null ? void 0 : value.replaceAll(search, replacement)) ?? "";
163
+ return value?.replaceAll(search, replacement) ?? "";
164
164
  }
165
165
  StringUtils2.replaceAll = replaceAll;
166
166
  function remove(value, search) {
167
- return (value == null ? void 0 : value.replace(search, "")) ?? "";
167
+ return value?.replace(search, "") ?? "";
168
168
  }
169
169
  StringUtils2.remove = remove;
170
170
  function removeAll(value, search) {
171
171
  const regex = typeof search === "string" ? new RegExp(search, "g") : new RegExp(search.source, `${search.flags}g`);
172
- return (value == null ? void 0 : value.replace(regex, "")) ?? "";
172
+ return value?.replace(regex, "") ?? "";
173
173
  }
174
174
  StringUtils2.removeAll = removeAll;
175
175
  function countOccurrences(value, search) {
@@ -185,7 +185,7 @@ var StringUtils;
185
185
  '"': "&quot;",
186
186
  "'": "&#39;"
187
187
  };
188
- return (value == null ? void 0 : value.replace(/[&<>"']/g, (char) => htmlEntities[char] || char)) ?? "";
188
+ return value?.replace(/[&<>"']/g, (char) => htmlEntities[char] || char) ?? "";
189
189
  }
190
190
  StringUtils2.escapeHtml = escapeHtml;
191
191
  function unescapeHtml(value) {
@@ -198,11 +198,11 @@ var StringUtils;
198
198
  "&#x27;": "'",
199
199
  "&apos;": "'"
200
200
  };
201
- return (value == null ? void 0 : value.replace(/&(?:amp|lt|gt|quot|#39|#x27|apos);/g, (entity) => htmlEntities[entity] || entity)) ?? "";
201
+ return value?.replace(/&(?:amp|lt|gt|quot|#39|#x27|apos);/g, (entity) => htmlEntities[entity] || entity) ?? "";
202
202
  }
203
203
  StringUtils2.unescapeHtml = unescapeHtml;
204
204
  function escapeRegex(value) {
205
- return (value == null ? void 0 : value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")) ?? "";
205
+ return value?.replace(/[.*+?^${}()|[\]\\]/g, "\\$&") ?? "";
206
206
  }
207
207
  StringUtils2.escapeRegex = escapeRegex;
208
208
  function isNumeric(value) {
@@ -326,11 +326,11 @@ var StringUtils;
326
326
  }
327
327
  StringUtils2.uuid = uuid;
328
328
  function slugify(value) {
329
- return (value == null ? void 0 : value.toLowerCase().trim().replace(/[^\w\s-]/g, "").replace(/[\s_-]+/g, "-").replace(/^-+|-+$/g, "")) ?? "";
329
+ return value?.toLowerCase().trim().replace(/[^\w\s-]/g, "").replace(/[\s_-]+/g, "-").replace(/^-+|-+$/g, "") ?? "";
330
330
  }
331
331
  StringUtils2.slugify = slugify;
332
332
  function unslugify(value) {
333
- return (value == null ? void 0 : value.replace(/-/g, " ").replace(/\b\w/g, (char) => char.toUpperCase())) ?? "";
333
+ return value?.replace(/-/g, " ").replace(/\b\w/g, (char) => char.toUpperCase()) ?? "";
334
334
  }
335
335
  StringUtils2.unslugify = unslugify;
336
336
  function levenshteinDistance(a, b) {
@@ -371,7 +371,7 @@ var StringUtils;
371
371
  StringUtils2.fuzzyMatch = fuzzyMatch;
372
372
  function equals(a, b, ignoreCase = false) {
373
373
  if (ignoreCase) {
374
- return (a == null ? void 0 : a.toLowerCase()) === (b == null ? void 0 : b.toLowerCase());
374
+ return a?.toLowerCase() === b?.toLowerCase();
375
375
  }
376
376
  return a === b;
377
377
  }
@@ -406,11 +406,11 @@ var StringUtils;
406
406
  }
407
407
  StringUtils2.words = words;
408
408
  function charAt(value, index) {
409
- return (value == null ? void 0 : value.charAt(index)) ?? "";
409
+ return value?.charAt(index) ?? "";
410
410
  }
411
411
  StringUtils2.charAt = charAt;
412
412
  function charCodeAt(value, index) {
413
- return (value == null ? void 0 : value.charCodeAt(index)) ?? NaN;
413
+ return value?.charCodeAt(index) ?? NaN;
414
414
  }
415
415
  StringUtils2.charCodeAt = charCodeAt;
416
416
  function fromCharCode(...codes) {
@@ -423,9 +423,9 @@ var StringUtils;
423
423
  }
424
424
  StringUtils2.insert = insert;
425
425
  function swapCase(value) {
426
- return (value == null ? void 0 : value.replace(/[a-zA-Z]/g, (char) => {
426
+ return value?.replace(/[a-zA-Z]/g, (char) => {
427
427
  return char === char.toUpperCase() ? char.toLowerCase() : char.toUpperCase();
428
- })) ?? "";
428
+ }) ?? "";
429
429
  }
430
430
  StringUtils2.swapCase = swapCase;
431
431
  function surround(value, wrapper) {
@@ -457,7 +457,7 @@ var StringUtils;
457
457
  }
458
458
  StringUtils2.unwrap = unwrap;
459
459
  function template(templateStr, values) {
460
- return (templateStr == null ? void 0 : templateStr.replace(/\{\{(\w+)\}\}/g, (_, key) => String(values[key] ?? ""))) ?? "";
460
+ return templateStr?.replace(/\{\{(\w+)\}\}/g, (_, key) => String(values[key] ?? "")) ?? "";
461
461
  }
462
462
  StringUtils2.template = template;
463
463
  function interpolate(templateStr, values) {
@@ -467,10 +467,7 @@ var StringUtils;
467
467
  function dedent(value) {
468
468
  const lines = value.split("\n");
469
469
  const minIndent = Math.min(
470
- ...lines.filter((line) => line.trim().length > 0).map((line) => {
471
- var _a;
472
- return ((_a = line.match(/^\s*/)) == null ? void 0 : _a[0].length) ?? 0;
473
- })
470
+ ...lines.filter((line) => line.trim().length > 0).map((line) => line.match(/^\s*/)?.[0].length ?? 0)
474
471
  );
475
472
  return lines.map((line) => line.slice(minIndent)).join("\n");
476
473
  }
@@ -502,7 +499,7 @@ var StringUtils;
502
499
  StringUtils2.alignCenter = alignCenter;
503
500
  function toBoolean(value) {
504
501
  const truthy = ["true", "1", "yes", "on", "y"];
505
- return truthy.includes(value == null ? void 0 : value.toLowerCase().trim());
502
+ return truthy.includes(value?.toLowerCase().trim());
506
503
  }
507
504
  StringUtils2.toBoolean = toBoolean;
508
505
  function toNumber(value, defaultValue = 0) {
@@ -535,11 +532,11 @@ var StringUtils;
535
532
  }
536
533
  StringUtils2.isAnagram = isAnagram;
537
534
  function reverseWords(value) {
538
- return (value == null ? void 0 : value.split(/\s+/).reverse().join(" ")) ?? "";
535
+ return value?.split(/\s+/).reverse().join(" ") ?? "";
539
536
  }
540
537
  StringUtils2.reverseWords = reverseWords;
541
538
  function sortCharacters(value) {
542
- return (value == null ? void 0 : value.split("").sort().join("")) ?? "";
539
+ return value?.split("").sort().join("") ?? "";
543
540
  }
544
541
  StringUtils2.sortCharacters = sortCharacters;
545
542
  function uniqueCharacters(value) {
@@ -547,7 +544,7 @@ var StringUtils;
547
544
  }
548
545
  StringUtils2.uniqueCharacters = uniqueCharacters;
549
546
  function removeDuplicates(value) {
550
- return (value == null ? void 0 : value.split("").filter((char, index, arr) => arr.indexOf(char) === index).join("")) ?? "";
547
+ return value?.split("").filter((char, index, arr) => arr.indexOf(char) === index).join("") ?? "";
551
548
  }
552
549
  StringUtils2.removeDuplicates = removeDuplicates;
553
550
  function longestCommonSubstring(a, b) {
@@ -583,7 +580,7 @@ var StringUtils;
583
580
  }
584
581
  StringUtils2.longestCommonPrefix = longestCommonPrefix;
585
582
  function longestCommonSuffix(strings) {
586
- const reversed = strings.map((s) => (s == null ? void 0 : s.split("").reverse().join("")) ?? "");
583
+ const reversed = strings.map((s) => s?.split("").reverse().join("") ?? "");
587
584
  return longestCommonPrefix(reversed).split("").reverse().join("");
588
585
  }
589
586
  StringUtils2.longestCommonSuffix = longestCommonSuffix;
@@ -659,11 +656,11 @@ var StringUtils;
659
656
  }
660
657
  StringUtils2.removeSuffix = removeSuffix;
661
658
  function take(value, n) {
662
- return (value == null ? void 0 : value.slice(0, n)) ?? "";
659
+ return value?.slice(0, n) ?? "";
663
660
  }
664
661
  StringUtils2.take = take;
665
662
  function takeRight(value, n) {
666
- return (value == null ? void 0 : value.slice(-n)) ?? "";
663
+ return value?.slice(-n) ?? "";
667
664
  }
668
665
  StringUtils2.takeRight = takeRight;
669
666
  function takeWhile(value, predicate) {
@@ -677,8 +674,8 @@ var StringUtils;
677
674
  StringUtils2.takeWhile = takeWhile;
678
675
  function takeRightWhile(value, predicate) {
679
676
  let result = "";
680
- for (let i = ((value == null ? void 0 : value.length) ?? 0) - 1; i >= 0; i--) {
681
- const char = (value == null ? void 0 : value.charAt(i)) ?? "";
677
+ for (let i = (value?.length ?? 0) - 1; i >= 0; i--) {
678
+ const char = value?.charAt(i) ?? "";
682
679
  if (!predicate(char)) break;
683
680
  result = char + result;
684
681
  }
@@ -686,11 +683,11 @@ var StringUtils;
686
683
  }
687
684
  StringUtils2.takeRightWhile = takeRightWhile;
688
685
  function drop(value, n) {
689
- return (value == null ? void 0 : value.slice(n)) ?? "";
686
+ return value?.slice(n) ?? "";
690
687
  }
691
688
  StringUtils2.drop = drop;
692
689
  function dropRight(value, n) {
693
- return (value == null ? void 0 : value.slice(0, -n)) ?? "";
690
+ return value?.slice(0, -n) ?? "";
694
691
  }
695
692
  StringUtils2.dropRight = dropRight;
696
693
  function dropWhile(value, predicate) {
@@ -699,15 +696,15 @@ var StringUtils;
699
696
  if (!predicate(char)) break;
700
697
  i++;
701
698
  }
702
- return (value == null ? void 0 : value.slice(i)) ?? "";
699
+ return value?.slice(i) ?? "";
703
700
  }
704
701
  StringUtils2.dropWhile = dropWhile;
705
702
  function dropRightWhile(value, predicate) {
706
- let i = ((value == null ? void 0 : value.length) ?? 0) - 1;
707
- while (i >= 0 && predicate((value == null ? void 0 : value.charAt(i)) ?? "")) {
703
+ let i = (value?.length ?? 0) - 1;
704
+ while (i >= 0 && predicate(value?.charAt(i) ?? "")) {
708
705
  i--;
709
706
  }
710
- return (value == null ? void 0 : value.slice(0, i + 1)) ?? "";
707
+ return value?.slice(0, i + 1) ?? "";
711
708
  }
712
709
  StringUtils2.dropRightWhile = dropRightWhile;
713
710
  function countLines(value) {
@@ -724,15 +721,15 @@ var StringUtils;
724
721
  }
725
722
  StringUtils2.getLines = getLines;
726
723
  function isSingleLine(value) {
727
- return !(value == null ? void 0 : value.includes("\n"));
724
+ return !value?.includes("\n");
728
725
  }
729
726
  StringUtils2.isSingleLine = isSingleLine;
730
727
  function isMultiLine(value) {
731
- return (value == null ? void 0 : value.includes("\n")) ?? false;
728
+ return value?.includes("\n") ?? false;
732
729
  }
733
730
  StringUtils2.isMultiLine = isMultiLine;
734
731
  function normalizeLineEndings(value, lineEnding = "\n") {
735
- return (value == null ? void 0 : value.replace(/\r\n|\r|\n/g, lineEnding)) ?? "";
732
+ return value?.replace(/\r\n|\r|\n/g, lineEnding) ?? "";
736
733
  }
737
734
  StringUtils2.normalizeLineEndings = normalizeLineEndings;
738
735
  function toCamelCase(value) {
@@ -769,39 +766,39 @@ var StringUtils;
769
766
  }
770
767
  StringUtils2.toCapitalCase = toCapitalCase;
771
768
  function toDotCase(value) {
772
- return (value == null ? void 0 : value.replace(/([a-z])([A-Z])/g, "$1.$2").replace(/[-_\s]+/g, ".").toLowerCase()) ?? "";
769
+ return value?.replace(/([a-z])([A-Z])/g, "$1.$2").replace(/[-_\s]+/g, ".").toLowerCase() ?? "";
773
770
  }
774
771
  StringUtils2.toDotCase = toDotCase;
775
772
  function toPathCase(value) {
776
- return (value == null ? void 0 : value.replace(/([a-z])([A-Z])/g, "$1/$2").replace(/[-_\s]+/g, "/").toLowerCase()) ?? "";
773
+ return value?.replace(/([a-z])([A-Z])/g, "$1/$2").replace(/[-_\s]+/g, "/").toLowerCase() ?? "";
777
774
  }
778
775
  StringUtils2.toPathCase = toPathCase;
779
776
  function stripTags(value) {
780
- return (value == null ? void 0 : value.replace(/<[^>]*>/g, "")) ?? "";
777
+ return value?.replace(/<[^>]*>/g, "") ?? "";
781
778
  }
782
779
  StringUtils2.stripTags = stripTags;
783
780
  function stripNumbers(value) {
784
- return (value == null ? void 0 : value.replace(/\d+/g, "")) ?? "";
781
+ return value?.replace(/\d+/g, "") ?? "";
785
782
  }
786
783
  StringUtils2.stripNumbers = stripNumbers;
787
784
  function stripWhitespace(value) {
788
- return (value == null ? void 0 : value.replace(/\s+/g, "")) ?? "";
785
+ return value?.replace(/\s+/g, "") ?? "";
789
786
  }
790
787
  StringUtils2.stripWhitespace = stripWhitespace;
791
788
  function stripPunctuation(value) {
792
- return (value == null ? void 0 : value.replace(/[^\w\s]/g, "")) ?? "";
789
+ return value?.replace(/[^\w\s]/g, "") ?? "";
793
790
  }
794
791
  StringUtils2.stripPunctuation = stripPunctuation;
795
792
  function normalizeWhitespace(value) {
796
- return (value == null ? void 0 : value.replace(/\s+/g, " ").trim()) ?? "";
793
+ return value?.replace(/\s+/g, " ").trim() ?? "";
797
794
  }
798
795
  StringUtils2.normalizeWhitespace = normalizeWhitespace;
799
796
  function includesAll(value, searches) {
800
- return searches.every((search) => (value == null ? void 0 : value.includes(search)) ?? false);
797
+ return searches.every((search) => value?.includes(search) ?? false);
801
798
  }
802
799
  StringUtils2.includesAll = includesAll;
803
800
  function includesAny(value, searches) {
804
- return searches.some((search) => (value == null ? void 0 : value.includes(search)) ?? false);
801
+ return searches.some((search) => value?.includes(search) ?? false);
805
802
  }
806
803
  StringUtils2.includesAny = includesAny;
807
804
  })(StringUtils || (StringUtils = {}));