@sdkwork/sdk-common 1.0.1 → 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.
- package/README.md +3 -4
- package/dist/auth/token-manager.cjs +8 -16
- package/dist/auth/token-manager.cjs.map +1 -1
- package/dist/auth/token-manager.js +8 -16
- package/dist/auth/token-manager.js.map +1 -1
- package/dist/errors.cjs +15 -18
- package/dist/errors.cjs.map +1 -1
- package/dist/errors.js +15 -18
- package/dist/errors.js.map +1 -1
- package/dist/http/base-client.cjs +23 -33
- package/dist/http/base-client.cjs.map +1 -1
- package/dist/http/base-client.js +23 -33
- package/dist/http/base-client.js.map +1 -1
- package/dist/index.cjs +1 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/utils/cache.cjs +3 -6
- package/dist/utils/cache.cjs.map +1 -1
- package/dist/utils/cache.js +3 -6
- package/dist/utils/cache.js.map +1 -1
- package/dist/utils/logger.cjs +5 -8
- package/dist/utils/logger.cjs.map +1 -1
- package/dist/utils/logger.js +5 -8
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/string.cjs +57 -60
- package/dist/utils/string.cjs.map +1 -1
- package/dist/utils/string.js +57 -60
- package/dist/utils/string.js.map +1 -1
- package/package.json +5 -6
package/dist/utils/string.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"string.js","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 '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\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 '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\",\n ''': \"'\",\n ''': \"'\"\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":"AAAO,MAAM,eAAe;AACrB,MAAM,QAAQ;AACd,MAAM,OAAO;AACb,MAAM,aAAa;AACnB,MAAM,MAAM;AACZ,MAAM,QAAQ;AACd,MAAM,YAAY;AAClB,MAAM,UAAU;AAChB,MAAM,kBAAkB;AACxB,MAAM,MAAM;AAEZ,IAAU;AAAA,CAAV,CAAUA,iBAAV;AACE,WAAS,QAAQ,OAAyB;AAC/C,WAAO,UAAU,QAAQ,UAAU,UAAa,UAAU;AAAA,EAC5D;AAFOA,eAAS,UAAA;AAIT,WAAS,WAAW,OAAyB;AAClD,WAAO,CAAC,QAAQ,KAAK;AAAA,EACvB;AAFOA,eAAS,aAAA;AAIT,WAAS,QAAQ,OAAyB;AAC/C,QAAI,QAAQ,KAAK,EAAG,QAAO;AAC3B,QAAI,OAAO,UAAU,SAAU,QAAO;AACtC,WAAO,MAAM,OAAO,WAAW;AAAA,EACjC;AAJOA,eAAS,UAAA;AAMT,WAAS,WAAW,OAAyB;AAClD,WAAO,CAAC,QAAQ,KAAK;AAAA,EACvB;AAFOA,eAAS,aAAA;AAIT,WAAS,KAAK,OAAuB;AAC1C,YAAO,+BAAO,WAAU;AAAA,EAC1B;AAFOA,eAAS,OAAA;AAIT,WAAS,UAAU,OAAuB;AAC/C,YAAO,+BAAO,gBAAe;AAAA,EAC/B;AAFOA,eAAS,YAAA;AAIT,WAAS,QAAQ,OAAuB;AAC7C,YAAO,+BAAO,cAAa;AAAA,EAC7B;AAFOA,eAAS,UAAA;AAIT,WAAS,YAAY,OAAuB;AACjD,YAAO,+BAAO,kBAAiB;AAAA,EACjC;AAFOA,eAAS,cAAA;AAIT,WAAS,YAAY,OAAuB;AACjD,YAAO,+BAAO,kBAAiB;AAAA,EACjC;AAFOA,eAAS,cAAA;AAIT,WAAS,WAAW,OAAuB;AAChD,QAAI,QAAQ,KAAK,EAAG,QAAO;AAC3B,WAAO,MAAM,OAAO,CAAC,EAAE,gBAAgB,MAAM,MAAM,CAAC,EAAE,YAAA;AAAA,EACxD;AAHOA,eAAS,aAAA;AAKT,WAAS,gBAAgB,OAAuB;AACrD,QAAI,QAAQ,KAAK,EAAG,QAAO;AAC3B,WAAO,MAAM,MAAM,KAAK,EAAE,IAAI,UAAU,EAAE,KAAK,GAAG;AAAA,EACpD;AAHOA,eAAS,kBAAA;AAKT,WAAS,UAAU,OAAuB;AAC/C,QAAI,QAAQ,KAAK,EAAG,QAAO;AAC3B,WAAO,MACJ,QAAQ,gBAAgB,CAAC,GAAG,SAAU,OAAO,KAAK,YAAA,IAAgB,EAAG,EACrE,QAAQ,QAAQ,CAAC,SAAS,KAAK,aAAa;AAAA,EACjD;AALOA,eAAS,YAAA;AAOT,WAAS,WAAW,OAAuB;AAChD,QAAI,QAAQ,KAAK,EAAG,QAAO;AAC3B,UAAM,QAAQ,UAAU,KAAK;AAC7B,WAAO,MAAM,OAAO,CAAC,EAAE,gBAAgB,MAAM,MAAM,CAAC;AAAA,EACtD;AAJOA,eAAS,aAAA;AAMT,WAAS,UAAU,OAAuB;AAC/C,QAAI,QAAQ,KAAK,EAAG,QAAO;AAC3B,WAAO,MACJ,QAAQ,mBAAmB,OAAO,EAClC,QAAQ,WAAW,GAAG,EACtB,YAAA;AAAA,EACL;AANOA,eAAS,YAAA;AAQT,WAAS,UAAU,OAAuB;AAC/C,QAAI,QAAQ,KAAK,EAAG,QAAO;AAC3B,WAAO,MACJ,QAAQ,mBAAmB,OAAO,EAClC,QAAQ,WAAW,GAAG,EACtB,YAAA;AAAA,EACL;AANOA,eAAS,YAAA;AAQT,WAAS,aAAa,OAAuB;AAClD,WAAO,UAAU,KAAK,EAAE,YAAA;AAAA,EAC1B;AAFOA,eAAS,eAAA;AAIT,WAAS,SAAS,OAAe,QAAgB,SAAiB,OAAe;AACtF,QAAI,QAAQ,KAAK,KAAK,MAAM,UAAU,eAAe,SAAS;AAC9D,WAAO,MAAM,MAAM,GAAG,SAAS,OAAO,MAAM,IAAI;AAAA,EAClD;AAHOA,eAAS,WAAA;AAKT,WAAS,cAAc,OAAeC,YAAmB,SAAiB,OAAe;AAC9F,QAAI,QAAQ,KAAK,EAAG,QAAO;AAC3B,UAAMC,SAAQ,MAAM,MAAM,KAAK;AAC/B,QAAIA,OAAM,UAAUD,WAAW,QAAO;AACtC,WAAOC,OAAM,MAAM,GAAGD,UAAS,EAAE,KAAK,GAAG,IAAI;AAAA,EAC/C;AALOD,eAAS,gBAAA;AAOT,WAAS,SAAS,OAAe,QAAgB,UAAkB,KAAa;AACrF,YAAO,+BAAO,SAAS,QAAQ,aAAY;AAAA,EAC7C;AAFOA,eAAS,WAAA;AAIT,WAAS,OAAO,OAAe,QAAgB,UAAkB,KAAa;AACnF,YAAO,+BAAO,OAAO,QAAQ,aAAY;AAAA,EAC3C;AAFOA,eAAS,SAAA;AAIT,WAAS,OAAO,OAAe,OAAuB;AAC3D,QAAI,QAAQ,KAAK,KAAK,SAAS,EAAG,QAAO;AACzC,WAAO,MAAM,OAAO,KAAK;AAAA,EAC3B;AAHOA,eAAS,SAAA;AAKT,WAAS,QAAQ,OAAuB;AAC7C,QAAI,QAAQ,KAAK,EAAG,QAAO;AAC3B,WAAO,MAAM,MAAM,EAAE,EAAE,QAAA,EAAU,KAAK,EAAE;AAAA,EAC1C;AAHOA,eAAS,UAAA;AAKT,WAAS,WAAW,OAAe,QAAyB;AACjE,YAAO,+BAAO,WAAW,YAAW;AAAA,EACtC;AAFOA,eAAS,aAAA;AAIT,WAAS,SAAS,OAAe,QAAyB;AAC/D,YAAO,+BAAO,SAAS,YAAW;AAAA,EACpC;AAFOA,eAAS,WAAA;AAIT,WAAS,SAAS,OAAe,QAAyB;AAC/D,YAAO,+BAAO,SAAS,YAAW;AAAA,EACpC;AAFOA,eAAS,WAAA;AAIT,WAAS,mBAAmB,OAAe,QAAyB;AACzE,YAAO,+BAAO,cAAc,SAAS,OAAO,YAAA,OAAkB;AAAA,EAChE;AAFOA,eAAS,qBAAA;AAIT,WAAS,QAAQ,OAAe,QAAwB;AAC7D,YAAO,+BAAO,QAAQ,YAAW;AAAA,EACnC;AAFOA,eAAS,UAAA;AAIT,WAAS,YAAY,OAAe,QAAwB;AACjE,YAAO,+BAAO,YAAY,YAAW;AAAA,EACvC;AAFOA,eAAS,cAAA;AAIT,WAAS,UAAU,OAAe,OAAe,KAAsB;AAC5E,QAAI,QAAQ,KAAK,EAAG,QAAO;AAC3B,WAAO,QAAQ,SAAY,MAAM,MAAM,OAAO,GAAG,IAAI,MAAM,MAAM,KAAK;AAAA,EACxE;AAHOA,eAAS,YAAA;AAKT,WAAS,MAAM,OAAe,OAAe,KAAsB;AACxE,WAAO,UAAU,OAAO,OAAO,GAAG;AAAA,EACpC;AAFOA,eAAS,QAAA;AAIT,WAAS,MAAM,OAAe,WAA4B,OAA0B;AACzF,QAAI,QAAQ,KAAK,EAAG,QAAO,CAAA;AAC3B,WAAO,MAAM,MAAM,WAAW,KAAK;AAAA,EACrC;AAHOA,eAAS,QAAA;AAKT,WAAS,KAAK,QAAkB,YAAoB,IAAY;AACrE,YAAO,iCAAQ,KAAK,eAAc;AAAA,EACpC;AAFOA,eAAS,OAAA;AAIT,WAAS,QAAQ,OAAe,QAAyB,aAA6B;AAC3F,YAAO,+BAAO,QAAQ,QAAQ,iBAAgB;AAAA,EAChD;AAFOA,eAAS,UAAA;AAIT,WAAS,WAAW,OAAe,QAAyB,aAA6B;AAC9F,YAAO,+BAAO,WAAW,QAAQ,iBAAgB;AAAA,EACnD;AAFOA,eAAS,aAAA;AAIT,WAAS,OAAO,OAAe,QAAiC;AACrE,YAAO,+BAAO,QAAQ,QAAQ,QAAO;AAAA,EACvC;AAFOA,eAAS,SAAA;AAIT,WAAS,UAAU,OAAe,QAAiC;AACxE,UAAM,QAAQ,OAAO,WAAW,WAAW,IAAI,OAAO,QAAQ,GAAG,IAAI,IAAI,OAAO,OAAO,QAAQ,GAAG,OAAO,KAAK,GAAG;AACjH,YAAO,+BAAO,QAAQ,OAAO,QAAO;AAAA,EACtC;AAHOA,eAAS,YAAA;AAKT,WAAS,iBAAiB,OAAe,QAAwB;AACtE,QAAI,QAAQ,KAAK,KAAK,QAAQ,MAAM,EAAG,QAAO;AAC9C,YAAQ,MAAM,MAAM,IAAI,OAAO,YAAY,MAAM,GAAG,GAAG,CAAC,KAAK,CAAA,GAAI;AAAA,EACnE;AAHOA,eAAS,mBAAA;AAKT,WAAS,WAAW,OAAuB;AAChD,UAAM,eAAuC;AAAA,MAC3C,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,IAAA;AAEP,YAAO,+BAAO,QAAQ,YAAY,CAAA,SAAQ,aAAa,IAAI,KAAK,UAAS;AAAA,EAC3E;AATOA,eAAS,aAAA;AAWT,WAAS,aAAa,OAAuB;AAClD,UAAM,eAAuC;AAAA,MAC3C,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,SAAS;AAAA,MACT,UAAU;AAAA,MACV,UAAU;AAAA,IAAA;AAEZ,YAAO,+BAAO,QAAQ,uCAAuC,CAAA,WAAU,aAAa,MAAM,KAAK,YAAW;AAAA,EAC5G;AAXOA,eAAS,eAAA;AAaT,WAAS,YAAY,OAAuB;AACjD,YAAO,+BAAO,QAAQ,uBAAuB,YAAW;AAAA,EAC1D;AAFOA,eAAS,cAAA;AAIT,WAAS,UAAU,OAAwB;AAChD,QAAI,QAAQ,KAAK,EAAG,QAAO;AAC3B,WAAO,CAAC,MAAM,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,WAAW,KAAK,CAAC;AAAA,EAC1D;AAHOA,eAAS,YAAA;AAKT,WAAS,QAAQ,OAAwB;AAC9C,QAAI,QAAQ,KAAK,EAAG,QAAO;AAC3B,WAAO,cAAc,KAAK,KAAK;AAAA,EACjC;AAHOA,eAAS,UAAA;AAKT,WAAS,eAAe,OAAwB;AACrD,QAAI,QAAQ,KAAK,EAAG,QAAO;AAC3B,WAAO,iBAAiB,KAAK,KAAK;AAAA,EACpC;AAHOA,eAAS,iBAAA;AAKT,WAAS,MAAM,OAAwB;AAC5C,QAAI,QAAQ,KAAK,EAAG,QAAO;AAC3B,WAAO,iBAAiB,KAAK,KAAK;AAAA,EACpC;AAHOA,eAAS,QAAA;AAKT,WAAS,OAAO,OAAwB;AAC7C,QAAI,QAAQ,KAAK,EAAG,QAAO;AAC3B,WAAO,6EAA6E,KAAK,KAAK;AAAA,EAChG;AAHOA,eAAS,SAAA;AAKT,WAAS,QAAQ,OAAwB;AAC9C,QAAI,QAAQ,KAAK,EAAG,QAAO;AAC3B,WAAO,6BAA6B,KAAK,KAAK;AAAA,EAChD;AAHOA,eAAS,UAAA;AAKT,WAAS,MAAM,OAAwB;AAC5C,QAAI,QAAQ,KAAK,EAAG,QAAO;AAC3B,QAAI;AACF,UAAI,IAAI,KAAK;AACb,aAAO;AAAA,IACT,QAAQ;AACN,aAAO;AAAA,IACT;AAAA,EACF;AAROA,eAAS,QAAA;AAUT,WAAS,cAAc,OAAwB;AACpD,QAAI,QAAQ,KAAK,EAAG,QAAO;AAC3B,WAAO,sBAAsB,KAAK,KAAK;AAAA,EACzC;AAHOA,eAAS,gBAAA;AAKT,WAAS,KAAK,OAAe,OAAe,KAAa,WAAmB,KAAa;AAC9F,QAAI,QAAQ,KAAK,EAAG,QAAO;AAC3B,UAAM,cAAc,KAAK,IAAI,GAAG,KAAK;AACrC,UAAM,YAAY,KAAK,IAAI,MAAM,QAAQ,GAAG;AAC5C,QAAI,eAAe,UAAW,QAAO;AACrC,UAAM,SAAS,SAAS,OAAO,YAAY,WAAW;AACtD,WAAO,MAAM,MAAM,GAAG,WAAW,IAAI,SAAS,MAAM,MAAM,SAAS;AAAA,EACrE;AAPOA,eAAS,OAAA;AAST,WAAS,UAAU,OAAuB;AAC/C,QAAI,CAAC,QAAQ,KAAK,EAAG,QAAO;AAC5B,UAAM,QAAQ,MAAM,MAAM,GAAG;AAC7B,UAAM,YAAY,MAAM,CAAC;AACzB,UAAM,SAAS,MAAM,CAAC;AACtB,QAAI,CAAC,aAAa,CAAC,OAAQ,QAAO;AAClC,UAAM,cAAc,KAAK,WAAW,GAAG,UAAU,SAAS,CAAC;AAC3D,WAAO,GAAG,WAAW,IAAI,MAAM;AAAA,EACjC;AAROA,eAAS,YAAA;AAUT,WAAS,UAAU,OAAuB;AAC/C,QAAI,QAAQ,KAAK,EAAG,QAAO;AAC3B,UAAM,SAAS,MAAM,QAAQ,OAAO,EAAE;AACtC,QAAI,OAAO,SAAS,EAAG,QAAO;AAC9B,WAAO,KAAK,QAAQ,GAAG,OAAO,SAAS,CAAC;AAAA,EAC1C;AALOA,eAAS,YAAA;AAOT,WAAS,eAAe,OAAuB;AACpD,QAAI,QAAQ,KAAK,EAAG,QAAO;AAC3B,UAAM,SAAS,MAAM,QAAQ,OAAO,EAAE;AACtC,QAAI,OAAO,SAAS,EAAG,QAAO;AAC9B,WAAO,KAAK,QAAQ,GAAG,OAAO,SAAS,CAAC;AAAA,EAC1C;AALOA,eAAS,iBAAA;AAOT,WAAS,aAAa,OAAwB,SAA4C;AAC/F,UAAM,MAAM,OAAO,UAAU,WAAW,WAAW,KAAK,IAAI;AAC5D,QAAI,MAAM,GAAG,EAAG,QAAO;AACvB,WAAO,IAAI,eAAe,QAAW,OAAO;AAAA,EAC9C;AAJOA,eAAS,eAAA;AAMT,WAAS,eAAe,OAAwB,WAAmB,OAAO,QAAyB;AACxG,UAAM,MAAM,OAAO,UAAU,WAAW,WAAW,KAAK,IAAI;AAC5D,QAAI,MAAM,GAAG,EAAG,QAAO;AACvB,WAAO,IAAI,eAAe,QAAQ,EAAE,OAAO,YAAY,UAAU;AAAA,EACnE;AAJOA,eAAS,iBAAA;AAMT,WAAS,iBAAiB,OAAwB,WAAmB,GAAW;AACrF,UAAM,MAAM,OAAO,UAAU,WAAW,WAAW,KAAK,IAAI;AAC5D,QAAI,MAAM,GAAG,EAAG,QAAO;AACvB,WAAO,IAAI,MAAM,KAAK,QAAQ,QAAQ,CAAC;AAAA,EACzC;AAJOA,eAAS,mBAAA;AAMT,WAAS,YAAY,OAAe,WAAmB,GAAW;AACvE,QAAI,UAAU,EAAG,QAAO;AACxB,UAAM,IAAI;AACV,UAAM,QAAQ,CAAC,SAAS,MAAM,MAAM,MAAM,MAAM,IAAI;AACpD,UAAM,IAAI,KAAK,MAAM,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC;AAClD,WAAO,GAAG,YAAY,QAAQ,KAAK,IAAI,GAAG,CAAC,GAAG,QAAQ,QAAQ,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC;AAAA,EAC9E;AANOA,eAAS,cAAA;AAQT,WAAS,OAAO,SAAiB,IAAI,UAAkB,kEAA0E;AACtI,QAAI,SAAS;AACb,aAAS,IAAI,GAAG,IAAI,QAAQ,KAAK;AAC/B,gBAAU,QAAQ,OAAO,KAAK,MAAM,KAAK,OAAA,IAAW,QAAQ,MAAM,CAAC;AAAA,IACrE;AACA,WAAO;AAAA,EACT;AANOA,eAAS,SAAA;AAQT,WAAS,OAAe;AAC7B,WAAO,uCAAuC,QAAQ,SAAS,CAAC,MAAM;AACpE,YAAM,IAAI,KAAK,OAAA,IAAW,KAAK;AAC/B,YAAM,IAAI,MAAM,MAAM,IAAK,IAAI,IAAM;AACrC,aAAO,EAAE,SAAS,EAAE;AAAA,IACtB,CAAC;AAAA,EACH;AANOA,eAAS,OAAA;AAQT,WAAS,QAAQ,OAAuB;AAC7C,YAAO,+BACH,cACD,OACA,QAAQ,aAAa,IACrB,QAAQ,YAAY,KACpB,QAAQ,YAAY,QAAO;AAAA,EAChC;AAPOA,eAAS,UAAA;AAST,WAAS,UAAU,OAAuB;AAC/C,YAAO,+BACH,QAAQ,MAAM,KACf,QAAQ,SAAS,CAAA,SAAQ,KAAK,YAAA,OAAkB;AAAA,EACrD;AAJOA,eAAS,YAAA;AAMT,WAAS,oBAAoB,GAAW,GAAmB;AAChE,UAAM,SAAqB,CAAA;AAC3B,aAAS,IAAI,GAAG,KAAK,EAAE,QAAQ,KAAK;AAClC,aAAO,CAAC,IAAI,CAAC,CAAC;AAAA,IAChB;AACA,aAAS,IAAI,GAAG,KAAK,EAAE,QAAQ,KAAK;AAClC,UAAI,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI;AAAA,IAChC;AACA,aAAS,IAAI,GAAG,KAAK,EAAE,QAAQ,KAAK;AAClC,eAAS,IAAI,GAAG,KAAK,EAAE,QAAQ,KAAK;AAClC,YAAI,EAAE,OAAO,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,GAAG;AACvC,iBAAO,CAAC,EAAG,CAAC,IAAI,OAAO,IAAI,CAAC,EAAG,IAAI,CAAC;AAAA,QACtC,OAAO;AACL,iBAAO,CAAC,EAAG,CAAC,IAAI,KAAK;AAAA,YACnB,OAAO,IAAI,CAAC,EAAG,IAAI,CAAC,IAAK;AAAA,YACzB,OAAO,CAAC,EAAG,IAAI,CAAC,IAAK;AAAA,YACrB,OAAO,IAAI,CAAC,EAAG,CAAC,IAAK;AAAA,UAAA;AAAA,QAEzB;AAAA,MACF;AAAA,IACF;AACA,WAAO,OAAO,EAAE,MAAM,EAAG,EAAE,MAAM;AAAA,EACnC;AAtBOA,eAAS,sBAAA;AAwBT,WAAS,WAAW,GAAW,GAAmB;AACvD,QAAI,QAAQ,CAAC,KAAK,QAAQ,CAAC,EAAG,QAAO;AACrC,QAAI,QAAQ,CAAC,KAAK,QAAQ,CAAC,EAAG,QAAO;AACrC,UAAM,WAAW,oBAAoB,GAAG,CAAC;AACzC,UAAM,YAAY,KAAK,IAAI,EAAE,QAAQ,EAAE,MAAM;AAC7C,WAAO,IAAI,WAAW;AAAA,EACxB;AANOA,eAAS,aAAA;AAQT,WAAS,WAAW,MAAc,SAAiB,YAAoB,KAAc;AAC1F,WAAO,WAAW,MAAM,OAAO,KAAK;AAAA,EACtC;AAFOA,eAAS,aAAA;AAIT,WAAS,OAAO,GAAW,GAAW,aAAsB,OAAgB;AACjF,QAAI,YAAY;AACd,cAAO,uBAAG,oBAAkB,uBAAG;AAAA,IACjC;AACA,WAAO,MAAM;AAAA,EACf;AALOA,eAAS,SAAA;AAOT,WAAS,iBAAiB,GAAW,GAAoB;AAC9D,WAAO,OAAO,GAAG,GAAG,IAAI;AAAA,EAC1B;AAFOA,eAAS,mBAAA;AAIT,WAAS,UAAU,OAAuB;AAC/C,QAAI,QAAQ,KAAK,EAAG,QAAO;AAC3B,WAAO,MAAM,OAAO,MAAM,KAAK,EAAE,OAAO,OAAO,EAAE;AAAA,EACnD;AAHOA,eAAS,YAAA;AAKT,WAAS,eAAe,OAAe,gBAAyB,MAAc;AACnF,QAAI,QAAQ,KAAK,EAAG,QAAO;AAC3B,WAAO,gBAAgB,MAAM,SAAS,MAAM,QAAQ,OAAO,EAAE,EAAE;AAAA,EACjE;AAHOA,eAAS,iBAAA;AAKT,WAAS,UAAU,OAAuB;AAC/C,QAAI,QAAQ,KAAK,EAAG,QAAO;AAC3B,WAAO,MAAM,MAAM,OAAO,EAAE;AAAA,EAC9B;AAHOA,eAAS,YAAA;AAKT,WAAS,WAAW,OAAyB;AAClD,QAAI,QAAQ,KAAK,EAAG,QAAO,CAAA;AAC3B,WAAO,MAAM,MAAM,OAAO;AAAA,EAC5B;AAHOA,eAAS,aAAA;AAKT,WAAS,MAAM,OAAyB;AAC7C,QAAI,QAAQ,KAAK,EAAG,QAAO,CAAA;AAC3B,WAAO,MAAM,OAAO,MAAM,KAAK,EAAE,OAAO,OAAO;AAAA,EACjD;AAHOA,eAAS,QAAA;AAKT,WAAS,OAAO,OAAe,OAAuB;AAC3D,YAAO,+BAAO,OAAO,WAAU;AAAA,EACjC;AAFOA,eAAS,SAAA;AAIT,WAAS,WAAW,OAAe,OAAuB;AAC/D,YAAO,+BAAO,WAAW,WAAU;AAAA,EACrC;AAFOA,eAAS,aAAA;AAIT,WAAS,gBAAgB,OAAyB;AACvD,WAAO,OAAO,aAAa,GAAG,KAAK;AAAA,EACrC;AAFOA,eAAS,eAAA;AAIT,WAAS,OAAO,OAAe,OAAe,aAA6B;AAChF,QAAI,QAAQ,KAAK,EAAG,QAAO;AAC3B,WAAO,MAAM,MAAM,GAAG,KAAK,IAAI,cAAc,MAAM,MAAM,KAAK;AAAA,EAChE;AAHOA,eAAS,SAAA;AAKT,WAAS,SAAS,OAAuB;AAC9C,YAAO,+BAAO,QAAQ,aAAa,CAAA,SAAQ;AACzC,aAAO,SAAS,KAAK,YAAA,IAAgB,KAAK,YAAA,IAAgB,KAAK,YAAA;AAAA,IACjE,OAAM;AAAA,EACR;AAJOA,eAAS,WAAA;AAMT,WAAS,SAAS,OAAe,SAAyB;AAC/D,WAAO,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO;AAAA,EACrC;AAFOA,eAAS,WAAA;AAIT,WAAS,MAAM,OAAe,YAAoB,KAAa;AACpE,WAAO,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS;AAAA,EACzC;AAFOA,eAAS,QAAA;AAIT,WAAS,QAAQ,OAAuB;AAC7C,QAAI,QAAQ,KAAK,EAAG,QAAO;AAC3B,QAAK,MAAM,WAAW,GAAG,KAAK,MAAM,SAAS,GAAG,KAC3C,MAAM,WAAW,GAAG,KAAK,MAAM,SAAS,GAAG,KAC3C,MAAM,WAAW,GAAG,KAAK,MAAM,SAAS,GAAG,GAAI;AAClD,aAAO,MAAM,MAAM,GAAG,EAAE;AAAA,IAC1B;AACA,WAAO;AAAA,EACT;AAROA,eAAS,UAAA;AAUT,WAAS,KAAK,OAAe,QAAgB,SAAiB,QAAgB;AACnF,WAAO,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM;AAAA,EACnC;AAFOA,eAAS,OAAA;AAIT,WAAS,OAAO,OAAe,QAAgB,SAAiB,QAAgB;AACrF,QAAI,QAAQ,KAAK,EAAG,QAAO;AAC3B,QAAI,MAAM,WAAW,MAAM,KAAK,MAAM,SAAS,MAAM,GAAG;AACtD,aAAO,MAAM,MAAM,OAAO,QAAQ,CAAC,OAAO,MAAM;AAAA,IAClD;AACA,WAAO;AAAA,EACT;AANOA,eAAS,SAAA;AAQT,WAAS,SAAS,aAAqB,QAAyC;AACrF,YAAO,2CAAa,QAAQ,kBAAkB,CAAC,GAAG,QAAQ,OAAO,OAAO,GAAG,KAAK,EAAE,OAAM;AAAA,EAC1F;AAFOA,eAAS,WAAA;AAIT,WAAS,YAAY,aAAqB,QAAyC;AACxF,WAAO,SAAS,aAAa,MAAM;AAAA,EACrC;AAFOA,eAAS,cAAA;AAIT,WAAS,OAAO,OAAuB;AAC5C,UAAM,QAAQ,MAAM,MAAM,IAAI;AAC9B,UAAM,YAAY,KAAK;AAAA,MACrB,GAAG,MAAM,OAAO,UAAQ,KAAK,KAAA,EAAO,SAAS,CAAC,EAAE,IAAI,CAAA,SAAA;AAtenD;AAse2D,2BAAK,MAAM,MAAM,MAAjB,mBAAqB,GAAG,WAAU;AAAA,OAAC;AAAA,IAAA;AAEjG,WAAO,MAAM,IAAI,CAAA,SAAQ,KAAK,MAAM,SAAS,CAAC,EAAE,KAAK,IAAI;AAAA,EAC3D;AANOA,eAAS,SAAA;AAQT,WAAS,OAAO,OAAe,SAAiB,GAAW;AAChE,UAAM,cAAc,IAAI,OAAO,MAAM;AACrC,WAAO,MAAM,MAAM,IAAI,EAAE,IAAI,UAAQ,cAAc,IAAI,EAAE,KAAK,IAAI;AAAA,EACpE;AAHOA,eAAS,SAAA;AAKT,WAAS,OAAO,OAAe,OAAe,UAAkB,KAAa;AAClF,QAAI,QAAQ,KAAK,KAAK,MAAM,UAAU,cAAc,SAAS;AAC7D,UAAM,UAAU,QAAQ,MAAM;AAC9B,UAAM,UAAU,KAAK,MAAM,UAAU,CAAC;AACtC,UAAM,WAAW,UAAU;AAC3B,WAAO,QAAQ,OAAO,OAAO,IAAI,QAAQ,QAAQ,OAAO,QAAQ;AAAA,EAClE;AANOA,eAAS,SAAA;AAQT,WAAS,UAAU,OAAe,OAAe,UAAkB,KAAa;AACrF,WAAO,OAAO,OAAO,OAAO,OAAO;AAAA,EACrC;AAFOA,eAAS,YAAA;AAIT,WAAS,WAAW,OAAe,OAAe,UAAkB,KAAa;AACtF,WAAO,SAAS,OAAO,OAAO,OAAO;AAAA,EACvC;AAFOA,eAAS,aAAA;AAIT,WAAS,YAAY,OAAe,OAAe,UAAkB,KAAa;AACvF,WAAO,OAAO,OAAO,OAAO,OAAO;AAAA,EACrC;AAFOA,eAAS,cAAA;AAIT,WAAS,UAAU,OAAwB;AAChD,UAAM,SAAS,CAAC,QAAQ,KAAK,OAAO,MAAM,GAAG;AAC7C,WAAO,OAAO,SAAS,+BAAO,cAAc,MAAM;AAAA,EACpD;AAHOA,eAAS,YAAA;AAKT,WAAS,SAAS,OAAe,eAAuB,GAAW;AACxE,UAAM,MAAM,WAAW,KAAK;AAC5B,WAAO,MAAM,GAAG,IAAI,eAAe;AAAA,EACrC;AAHOA,eAAS,WAAA;AAKT,WAAS,QAAQ,OAAe,YAA6B,KAAe;AACjF,WAAO,MAAM,OAAO,SAAS;AAAA,EAC/B;AAFOA,eAAS,UAAA;AAIT,WAAS,SAAS,OAAuB;AAC9C,QAAI,OAAO;AACX,aAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,YAAM,OAAO,MAAM,WAAW,CAAC;AAC/B,cAAS,QAAQ,KAAK,OAAQ;AAC9B,aAAO,OAAO;AAAA,IAChB;AACA,WAAO;AAAA,EACT;AAROA,eAAS,WAAA;AAUT,WAAS,aAAa,OAAwB;AACnD,UAAM,UAAU,MAAM,YAAA,EAAc,QAAQ,cAAc,EAAE;AAC5D,WAAO,YAAY,QAAQ,MAAM,EAAE,EAAE,QAAA,EAAU,KAAK,EAAE;AAAA,EACxD;AAHOA,eAAS,eAAA;AAKT,WAAS,UAAU,GAAW,GAAoB;AACvD,UAAM,YAAY,CAAC,MAAc,EAAE,YAAA,EAAc,QAAQ,cAAc,EAAE,EAAE,MAAM,EAAE,EAAE,KAAA,EAAO,KAAK,EAAE;AACnG,WAAO,UAAU,CAAC,MAAM,UAAU,CAAC;AAAA,EACrC;AAHOA,eAAS,YAAA;AAKT,WAAS,aAAa,OAAuB;AAClD,YAAO,+BAAO,MAAM,OAAO,UAAU,KAAK,SAAQ;AAAA,EACpD;AAFOA,eAAS,eAAA;AAIT,WAAS,eAAe,OAAuB;AACpD,YAAO,+BAAO,MAAM,IAAI,OAAO,KAAK,QAAO;AAAA,EAC7C;AAFOA,eAAS,iBAAA;AAIT,WAAS,iBAAiB,OAAuB;AACtD,WAAO,CAAC,GAAG,IAAI,IAAI,KAAK,CAAC,EAAE,KAAK,EAAE;AAAA,EACpC;AAFOA,eAAS,mBAAA;AAIT,WAAS,iBAAiB,OAAuB;AACtD,YAAO,+BAAO,MAAM,IAAI,OAAO,CAAC,MAAM,OAAO,QAAQ,IAAI,QAAQ,IAAI,MAAM,OAAO,KAAK,QAAO;AAAA,EAChG;AAFOA,eAAS,mBAAA;AAIT,WAAS,uBAAuB,GAAW,GAAmB;AACnE,QAAI,QAAQ,CAAC,KAAK,QAAQ,CAAC,EAAG,QAAO;AACrC,UAAM,SAAqB,MAAM,EAAE,SAAS,CAAC,EAAE,KAAK,IAAI,EAAE,IAAI,MAAM,MAAM,EAAE,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC;AAC/F,QAAI,YAAY;AAChB,QAAI,WAAW;AACf,aAAS,IAAI,GAAG,KAAK,EAAE,QAAQ,KAAK;AAClC,eAAS,IAAI,GAAG,KAAK,EAAE,QAAQ,KAAK;AAClC,YAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG;AACzB,iBAAO,CAAC,EAAG,CAAC,IAAI,OAAO,IAAI,CAAC,EAAG,IAAI,CAAC,IAAK;AACzC,cAAI,OAAO,CAAC,EAAG,CAAC,IAAK,WAAW;AAC9B,wBAAY,OAAO,CAAC,EAAG,CAAC;AACxB,uBAAW;AAAA,UACb;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA,WAAO,EAAE,MAAM,WAAW,WAAW,QAAQ;AAAA,EAC/C;AAjBOA,eAAS,yBAAA;AAmBT,WAAS,oBAAoB,SAA2B;AAC7D,QAAI,QAAQ,WAAW,EAAG,QAAO;AACjC,QAAI,QAAQ,WAAW,EAAG,QAAO,QAAQ,CAAC,KAAK;AAC/C,UAAM,SAAS,CAAC,GAAG,OAAO,EAAE,KAAA;AAC5B,UAAM,QAAQ,OAAO,CAAC,KAAK;AAC3B,UAAM,OAAO,OAAO,OAAO,SAAS,CAAC,KAAK;AAC1C,QAAI,IAAI;AACR,WAAO,IAAI,MAAM,UAAU,MAAM,CAAC,MAAM,KAAK,CAAC,GAAG;AAC/C;AAAA,IACF;AACA,WAAO,MAAM,MAAM,GAAG,CAAC;AAAA,EACzB;AAXOA,eAAS,sBAAA;AAaT,WAAS,oBAAoB,SAA2B;AAC7D,UAAM,WAAW,QAAQ,IAAI,CAAA,OAAK,uBAAG,MAAM,IAAI,UAAU,KAAK,QAAO,EAAE;AACvE,WAAO,oBAAoB,QAAQ,EAAE,MAAM,EAAE,EAAE,QAAA,EAAU,KAAK,EAAE;AAAA,EAClE;AAHOA,eAAS,sBAAA;AAKT,WAAS,eAAe,OAAe,WAAmB,YAAoB,OAAe;AAClG,QAAI,QAAQ,KAAK,KAAK,MAAM,UAAU,kBAAkB,SAAS;AACjE,UAAM,SAAS,UAAU;AACzB,UAAM,cAAc,YAAY;AAChC,UAAM,aAAa,KAAK,KAAK,cAAc,CAAC;AAC5C,UAAM,YAAY,KAAK,MAAM,cAAc,CAAC;AAC5C,WAAO,MAAM,MAAM,GAAG,UAAU,IAAI,YAAY,MAAM,MAAM,CAAC,SAAS;AAAA,EACxE;AAPOA,eAAS,iBAAA;AAST,WAAS,SAAS,OAAe,WAA2B;AACjE,WAAO,SAAS,OAAO,WAAW,KAAK;AAAA,EACzC;AAFOA,eAAS,WAAA;AAIT,WAAS,eAAe,OAAe,WAA2B;AACvE,WAAO,eAAe,OAAO,WAAW,KAAK;AAAA,EAC/C;AAFOA,eAAS,iBAAA;AAIT,WAAS,IAAI,OAAe,QAAgB,UAAkB,KAAa;AAChF,WAAO,OAAO,OAAO,QAAQ,OAAO;AAAA,EACtC;AAFOA,eAAS,MAAA;AAIT,WAAS,UAAU,OAAe,QAAgB,UAAkB,KAAa;AACtF,WAAO,OAAO,OAAO,QAAQ,OAAO;AAAA,EACtC;AAFOA,eAAS,YAAA;AAIT,WAAS,QAAQ,OAAwB;AAC9C,WAAO,iBAAiB,KAAK,KAAK;AAAA,EACpC;AAFOA,eAAS,UAAA;AAIT,WAAS,YAAY,OAAwB;AAClD,WAAO,UAAU,MAAM,YAAA;AAAA,EACzB;AAFOA,eAAS,cAAA;AAIT,WAAS,YAAY,OAAwB;AAClD,WAAO,UAAU,MAAM,YAAA;AAAA,EACzB;AAFOA,eAAS,cAAA;AAIT,WAAS,cAAc,OAAwB;AACpD,WAAO,MAAM,OAAO,CAAC,MAAM,MAAM,OAAO,CAAC,EAAE,YAAA;AAAA,EAC7C;AAFOA,eAAS,gBAAA;AAIT,WAAS,WAAW,OAAe,WAAmB,WAA2B;AACtF,QAAI,MAAM,WAAW,SAAS,GAAG;AAC/B,aAAO,YAAY,MAAM,MAAM,UAAU,MAAM;AAAA,IACjD;AACA,WAAO;AAAA,EACT;AALOA,eAAS,aAAA;AAOT,WAAS,WAAW,OAAe,WAAmB,WAA2B;AACtF,QAAI,MAAM,SAAS,SAAS,GAAG;AAC7B,aAAO,MAAM,MAAM,GAAG,CAAC,UAAU,MAAM,IAAI;AAAA,IAC7C;AACA,WAAO;AAAA,EACT;AALOA,eAAS,aAAA;AAOT,WAAS,aAAa,OAAe,QAAwB;AAClE,WAAO,MAAM,WAAW,MAAM,IAAI,QAAQ,SAAS;AAAA,EACrD;AAFOA,eAAS,eAAA;AAIT,WAAS,aAAa,OAAe,QAAwB;AAClE,WAAO,MAAM,SAAS,MAAM,IAAI,QAAQ,QAAQ;AAAA,EAClD;AAFOA,eAAS,eAAA;AAIT,WAAS,aAAa,OAAe,QAAwB;AAClE,WAAO,MAAM,WAAW,MAAM,IAAI,MAAM,MAAM,OAAO,MAAM,IAAI;AAAA,EACjE;AAFOA,eAAS,eAAA;AAIT,WAAS,aAAa,OAAe,QAAwB;AAClE,WAAO,MAAM,SAAS,MAAM,IAAI,MAAM,MAAM,GAAG,CAAC,OAAO,MAAM,IAAI;AAAA,EACnE;AAFOA,eAAS,eAAA;AAIT,WAAS,KAAK,OAAe,GAAmB;AACrD,YAAO,+BAAO,MAAM,GAAG,OAAM;AAAA,EAC/B;AAFOA,eAAS,OAAA;AAIT,WAAS,UAAU,OAAe,GAAmB;AAC1D,YAAO,+BAAO,MAAM,CAAC,OAAM;AAAA,EAC7B;AAFOA,eAAS,YAAA;AAIT,WAAS,UAAU,OAAe,WAA8C;AACrF,QAAI,SAAS;AACb,eAAW,QAAQ,SAAS,IAAI;AAC9B,UAAI,CAAC,UAAU,IAAI,EAAG;AACtB,gBAAU;AAAA,IACZ;AACA,WAAO;AAAA,EACT;AAPOA,eAAS,YAAA;AAST,WAAS,eAAe,OAAe,WAA8C;AAC1F,QAAI,SAAS;AACb,aAAS,MAAK,+BAAO,WAAU,KAAK,GAAG,KAAK,GAAG,KAAK;AAClD,YAAM,QAAO,+BAAO,OAAO,OAAM;AACjC,UAAI,CAAC,UAAU,IAAI,EAAG;AACtB,eAAS,OAAO;AAAA,IAClB;AACA,WAAO;AAAA,EACT;AAROA,eAAS,iBAAA;AAUT,WAAS,KAAK,OAAe,GAAmB;AACrD,YAAO,+BAAO,MAAM,OAAM;AAAA,EAC5B;AAFOA,eAAS,OAAA;AAIT,WAAS,UAAU,OAAe,GAAmB;AAC1D,YAAO,+BAAO,MAAM,GAAG,CAAC,OAAM;AAAA,EAChC;AAFOA,eAAS,YAAA;AAIT,WAAS,UAAU,OAAe,WAA8C;AACrF,QAAI,IAAI;AACR,eAAW,QAAQ,SAAS,IAAI;AAC9B,UAAI,CAAC,UAAU,IAAI,EAAG;AACtB;AAAA,IACF;AACA,YAAO,+BAAO,MAAM,OAAM;AAAA,EAC5B;AAPOA,eAAS,YAAA;AAST,WAAS,eAAe,OAAe,WAA8C;AAC1F,QAAI,MAAK,+BAAO,WAAU,KAAK;AAC/B,WAAO,KAAK,KAAK,WAAU,+BAAO,OAAO,OAAM,EAAE,GAAG;AAClD;AAAA,IACF;AACA,YAAO,+BAAO,MAAM,GAAG,IAAI,OAAM;AAAA,EACnC;AANOA,eAAS,iBAAA;AAQT,WAAS,WAAW,OAAuB;AAChD,WAAO,UAAU,KAAK;AAAA,EACxB;AAFOA,eAAS,aAAA;AAIT,WAAS,QAAQ,OAAe,YAA4B;AACjE,UAAM,QAAQ,WAAW,KAAK;AAC9B,WAAO,MAAM,UAAU,KAAK;AAAA,EAC9B;AAHOA,eAAS,UAAA;AAKT,WAAS,SAAS,OAAyB;AAChD,WAAO,WAAW,KAAK;AAAA,EACzB;AAFOA,eAAS,WAAA;AAIT,WAAS,aAAa,OAAwB;AACnD,WAAO,EAAC,+BAAO,SAAS;AAAA,EAC1B;AAFOA,eAAS,eAAA;AAIT,WAAS,YAAY,OAAwB;AAClD,YAAO,+BAAO,SAAS,UAAS;AAAA,EAClC;AAFOA,eAAS,cAAA;AAIT,WAAS,qBAAqB,OAAe,aAAmC,MAAc;AACnG,YAAO,+BAAO,QAAQ,eAAe,gBAAe;AAAA,EACtD;AAFOA,eAAS,uBAAA;AAIT,WAAS,YAAY,OAAuB;AACjD,WAAO,UAAU,KAAK;AAAA,EACxB;AAFOA,eAAS,cAAA;AAIT,WAAS,YAAY,OAAuB;AACjD,WAAO,UAAU,KAAK;AAAA,EACxB;AAFOA,eAAS,cAAA;AAIT,WAAS,YAAY,OAAuB;AACjD,WAAO,UAAU,KAAK;AAAA,EACxB;AAFOA,eAAS,cAAA;AAIT,WAAS,aAAa,OAAuB;AAClD,WAAO,WAAW,KAAK;AAAA,EACzB;AAFOA,eAAS,eAAA;AAIT,WAAS,eAAe,OAAuB;AACpD,WAAO,aAAa,KAAK;AAAA,EAC3B;AAFOA,eAAS,iBAAA;AAIT,WAAS,eAAe,OAAuB;AACpD,QAAI,QAAQ,KAAK,EAAG,QAAO;AAC3B,WAAO,MAAM,OAAO,CAAC,EAAE,gBAAgB,MAAM,MAAM,CAAC,EAAE,YAAA;AAAA,EACxD;AAHOA,eAAS,iBAAA;AAKT,WAAS,YAAY,OAAuB;AACjD,WAAO,gBAAgB,KAAK;AAAA,EAC9B;AAFOA,eAAS,cAAA;AAIT,WAAS,cAAc,OAAuB;AACnD,WAAO,gBAAgB,KAAK;AAAA,EAC9B;AAFOA,eAAS,gBAAA;AAIT,WAAS,UAAU,OAAuB;AAC/C,YAAO,+BAAO,QAAQ,mBAAmB,SAAS,QAAQ,YAAY,KAAK,kBAAiB;AAAA,EAC9F;AAFOA,eAAS,YAAA;AAIT,WAAS,WAAW,OAAuB;AAChD,YAAO,+BAAO,QAAQ,mBAAmB,SAAS,QAAQ,YAAY,KAAK,kBAAiB;AAAA,EAC9F;AAFOA,eAAS,aAAA;AAIT,WAAS,UAAU,OAAuB;AAC/C,YAAO,+BAAO,QAAQ,YAAY,QAAO;AAAA,EAC3C;AAFOA,eAAS,YAAA;AAIT,WAAS,aAAa,OAAuB;AAClD,YAAO,+BAAO,QAAQ,QAAQ,QAAO;AAAA,EACvC;AAFOA,eAAS,eAAA;AAIT,WAAS,gBAAgB,OAAuB;AACrD,YAAO,+BAAO,QAAQ,QAAQ,QAAO;AAAA,EACvC;AAFOA,eAAS,kBAAA;AAIT,WAAS,iBAAiB,OAAuB;AACtD,YAAO,+BAAO,QAAQ,YAAY,QAAO;AAAA,EAC3C;AAFOA,eAAS,mBAAA;AAIT,WAAS,oBAAoB,OAAuB;AACzD,YAAO,+BAAO,QAAQ,QAAQ,KAAK,WAAU;AAAA,EAC/C;AAFOA,eAAS,sBAAA;AAIT,WAAS,YAAY,OAAe,UAA6B;AACtE,WAAO,SAAS,MAAM,CAAA,YAAU,+BAAO,SAAS,YAAW,KAAK;AAAA,EAClE;AAFOA,eAAS,cAAA;AAIT,WAAS,YAAY,OAAe,UAA6B;AACtE,WAAO,SAAS,KAAK,CAAA,YAAU,+BAAO,SAAS,YAAW,KAAK;AAAA,EACjE;AAFOA,eAAS,cAAA;AAAA,GAryBD,gBAAA,cAAA,CAAA,EAAA;"}
|
|
1
|
+
{"version":3,"file":"string.js","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 '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\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 '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\",\n ''': \"'\",\n ''': \"'\"\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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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sdkwork/sdk-common",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2",
|
|
4
4
|
"description": "SDKwork SDK Common - High cohesion, low coupling SDK foundation library",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.cjs",
|
|
@@ -64,13 +64,12 @@
|
|
|
64
64
|
"license": "MIT",
|
|
65
65
|
"devDependencies": {
|
|
66
66
|
"@types/node": "^20.10.0",
|
|
67
|
-
"typescript": "^5.3.0",
|
|
68
|
-
"vite": "^5.0.0",
|
|
69
|
-
"eslint": "^8.55.0",
|
|
70
67
|
"@typescript-eslint/eslint-plugin": "^6.13.0",
|
|
71
|
-
"@typescript-eslint/parser": "^6.13.0"
|
|
68
|
+
"@typescript-eslint/parser": "^6.13.0",
|
|
69
|
+
"eslint": "^8.55.0",
|
|
70
|
+
"typescript": "^5.3.0",
|
|
71
|
+
"vite": "^5.0.0"
|
|
72
72
|
},
|
|
73
|
-
"peerDependencies": {},
|
|
74
73
|
"engines": {
|
|
75
74
|
"node": ">=18.0.0"
|
|
76
75
|
},
|