@sdkwork/sdk-common 1.0.0

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.
Files changed (100) hide show
  1. package/README.md +89 -0
  2. package/dist/auth/index.d.ts +3 -0
  3. package/dist/auth/index.d.ts.map +1 -0
  4. package/dist/auth/token-manager.cjs +127 -0
  5. package/dist/auth/token-manager.cjs.map +1 -0
  6. package/dist/auth/token-manager.d.ts +80 -0
  7. package/dist/auth/token-manager.d.ts.map +1 -0
  8. package/dist/auth/token-manager.js +127 -0
  9. package/dist/auth/token-manager.js.map +1 -0
  10. package/dist/auth.cjs +9 -0
  11. package/dist/auth.cjs.map +1 -0
  12. package/dist/auth.js +9 -0
  13. package/dist/auth.js.map +1 -0
  14. package/dist/core/index.d.ts +3 -0
  15. package/dist/core/index.d.ts.map +1 -0
  16. package/dist/core/types.cjs +54 -0
  17. package/dist/core/types.cjs.map +1 -0
  18. package/dist/core/types.d.ts +187 -0
  19. package/dist/core/types.d.ts.map +1 -0
  20. package/dist/core/types.js +54 -0
  21. package/dist/core/types.js.map +1 -0
  22. package/dist/core.cjs +11 -0
  23. package/dist/core.cjs.map +1 -0
  24. package/dist/core.js +11 -0
  25. package/dist/core.js.map +1 -0
  26. package/dist/errors/index.d.ts +103 -0
  27. package/dist/errors/index.d.ts.map +1 -0
  28. package/dist/errors.cjs +286 -0
  29. package/dist/errors.cjs.map +1 -0
  30. package/dist/errors.js +286 -0
  31. package/dist/errors.js.map +1 -0
  32. package/dist/http/base-client.cjs +485 -0
  33. package/dist/http/base-client.cjs.map +1 -0
  34. package/dist/http/base-client.d.ts +98 -0
  35. package/dist/http/base-client.d.ts.map +1 -0
  36. package/dist/http/base-client.js +485 -0
  37. package/dist/http/base-client.js.map +1 -0
  38. package/dist/http/index.d.ts +2 -0
  39. package/dist/http/index.d.ts.map +1 -0
  40. package/dist/http.cjs +6 -0
  41. package/dist/http.cjs.map +1 -0
  42. package/dist/http.js +6 -0
  43. package/dist/http.js.map +1 -0
  44. package/dist/index.cjs +48 -0
  45. package/dist/index.cjs.map +1 -0
  46. package/dist/index.d.ts +11 -0
  47. package/dist/index.d.ts.map +1 -0
  48. package/dist/index.js +48 -0
  49. package/dist/index.js.map +1 -0
  50. package/dist/utils/array.d.ts +146 -0
  51. package/dist/utils/array.d.ts.map +1 -0
  52. package/dist/utils/cache.cjs +80 -0
  53. package/dist/utils/cache.cjs.map +1 -0
  54. package/dist/utils/cache.d.ts +25 -0
  55. package/dist/utils/cache.d.ts.map +1 -0
  56. package/dist/utils/cache.js +80 -0
  57. package/dist/utils/cache.js.map +1 -0
  58. package/dist/utils/date.cjs +25 -0
  59. package/dist/utils/date.cjs.map +1 -0
  60. package/dist/utils/date.d.ts +127 -0
  61. package/dist/utils/date.d.ts.map +1 -0
  62. package/dist/utils/date.js +25 -0
  63. package/dist/utils/date.js.map +1 -0
  64. package/dist/utils/encoding.cjs +678 -0
  65. package/dist/utils/encoding.cjs.map +1 -0
  66. package/dist/utils/encoding.d.ts +107 -0
  67. package/dist/utils/encoding.d.ts.map +1 -0
  68. package/dist/utils/encoding.js +679 -0
  69. package/dist/utils/encoding.js.map +1 -0
  70. package/dist/utils/index.d.ts +11 -0
  71. package/dist/utils/index.d.ts.map +1 -0
  72. package/dist/utils/logger.cjs +110 -0
  73. package/dist/utils/logger.cjs.map +1 -0
  74. package/dist/utils/logger.d.ts +28 -0
  75. package/dist/utils/logger.d.ts.map +1 -0
  76. package/dist/utils/logger.js +110 -0
  77. package/dist/utils/logger.js.map +1 -0
  78. package/dist/utils/object.d.ts +131 -0
  79. package/dist/utils/object.d.ts.map +1 -0
  80. package/dist/utils/retry.cjs +73 -0
  81. package/dist/utils/retry.cjs.map +1 -0
  82. package/dist/utils/retry.d.ts +9 -0
  83. package/dist/utils/retry.d.ts.map +1 -0
  84. package/dist/utils/retry.js +73 -0
  85. package/dist/utils/retry.js.map +1 -0
  86. package/dist/utils/string.cjs +820 -0
  87. package/dist/utils/string.cjs.map +1 -0
  88. package/dist/utils/string.d.ts +160 -0
  89. package/dist/utils/string.d.ts.map +1 -0
  90. package/dist/utils/string.js +821 -0
  91. package/dist/utils/string.js.map +1 -0
  92. package/dist/utils/url.d.ts +106 -0
  93. package/dist/utils/url.d.ts.map +1 -0
  94. package/dist/utils/validation.d.ts +157 -0
  95. package/dist/utils/validation.d.ts.map +1 -0
  96. package/dist/utils.cjs +52 -0
  97. package/dist/utils.cjs.map +1 -0
  98. package/dist/utils.js +46 -0
  99. package/dist/utils.js.map +1 -0
  100. package/package.json +80 -0
@@ -0,0 +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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"}
@@ -0,0 +1,160 @@
1
+ export declare const EMPTY_STRING = "";
2
+ export declare const SPACE = " ";
3
+ export declare const DASH = "-";
4
+ export declare const UNDERSCORE = "_";
5
+ export declare const DOT = ".";
6
+ export declare const SLASH = "/";
7
+ export declare const BACKSLASH = "\\";
8
+ export declare const NEWLINE = "\n";
9
+ export declare const CARRIAGE_RETURN = "\r";
10
+ export declare const TAB = "\t";
11
+ export declare namespace StringUtils {
12
+ function isEmpty(value: unknown): boolean;
13
+ function isNotEmpty(value: unknown): boolean;
14
+ function isBlank(value: unknown): boolean;
15
+ function isNotBlank(value: unknown): boolean;
16
+ function trim(value: string): string;
17
+ function trimStart(value: string): string;
18
+ function trimEnd(value: string): string;
19
+ function toLowerCase(value: string): string;
20
+ function toUpperCase(value: string): string;
21
+ function capitalize(value: string): string;
22
+ function capitalizeWords(value: string): string;
23
+ function camelCase(value: string): string;
24
+ function pascalCase(value: string): string;
25
+ function kebabCase(value: string): string;
26
+ function snakeCase(value: string): string;
27
+ function constantCase(value: string): string;
28
+ function truncate(value: string, length: number, suffix?: string): string;
29
+ function truncateWords(value: string, wordCount: number, suffix?: string): string;
30
+ function padStart(value: string, length: number, padChar?: string): string;
31
+ function padEnd(value: string, length: number, padChar?: string): string;
32
+ function repeat(value: string, count: number): string;
33
+ function reverse(value: string): string;
34
+ function startsWith(value: string, prefix: string): boolean;
35
+ function endsWith(value: string, suffix: string): boolean;
36
+ function contains(value: string, search: string): boolean;
37
+ function containsIgnoreCase(value: string, search: string): boolean;
38
+ function indexOf(value: string, search: string): number;
39
+ function lastIndexOf(value: string, search: string): number;
40
+ function substring(value: string, start: number, end?: number): string;
41
+ function slice(value: string, start: number, end?: number): string;
42
+ function split(value: string, separator: string | RegExp, limit?: number): string[];
43
+ function join(values: string[], separator?: string): string;
44
+ function replace(value: string, search: string | RegExp, replacement: string): string;
45
+ function replaceAll(value: string, search: string | RegExp, replacement: string): string;
46
+ function remove(value: string, search: string | RegExp): string;
47
+ function removeAll(value: string, search: string | RegExp): string;
48
+ function countOccurrences(value: string, search: string): number;
49
+ function escapeHtml(value: string): string;
50
+ function unescapeHtml(value: string): string;
51
+ function escapeRegex(value: string): string;
52
+ function isNumeric(value: string): boolean;
53
+ function isAlpha(value: string): boolean;
54
+ function isAlphanumeric(value: string): boolean;
55
+ function isHex(value: string): boolean;
56
+ function isUuid(value: string): boolean;
57
+ function isEmail(value: string): boolean;
58
+ function isUrl(value: string): boolean;
59
+ function isPhoneNumber(value: string): boolean;
60
+ function mask(value: string, start: number, end: number, maskChar?: string): string;
61
+ function maskEmail(value: string): string;
62
+ function maskPhone(value: string): string;
63
+ function maskCreditCard(value: string): string;
64
+ function formatNumber(value: number | string, options?: Intl.NumberFormatOptions): string;
65
+ function formatCurrency(value: number | string, currency?: string, locale?: string): string;
66
+ function formatPercentage(value: number | string, decimals?: number): string;
67
+ function formatBytes(bytes: number, decimals?: number): string;
68
+ function random(length?: number, charset?: string): string;
69
+ function uuid(): string;
70
+ function slugify(value: string): string;
71
+ function unslugify(value: string): string;
72
+ function levenshteinDistance(a: string, b: string): number;
73
+ function similarity(a: string, b: string): number;
74
+ function fuzzyMatch(text: string, pattern: string, threshold?: number): boolean;
75
+ function equals(a: string, b: string, ignoreCase?: boolean): boolean;
76
+ function equalsIgnoreCase(a: string, b: string): boolean;
77
+ function wordCount(value: string): number;
78
+ function characterCount(value: string, includeSpaces?: boolean): number;
79
+ function lineCount(value: string): number;
80
+ function splitLines(value: string): string[];
81
+ function words(value: string): string[];
82
+ function charAt(value: string, index: number): string;
83
+ function charCodeAt(value: string, index: number): number;
84
+ function fromCharCode(...codes: number[]): string;
85
+ function insert(value: string, index: number, insertValue: string): string;
86
+ function swapCase(value: string): string;
87
+ function surround(value: string, wrapper: string): string;
88
+ function quote(value: string, quoteChar?: string): string;
89
+ function unquote(value: string): string;
90
+ function wrap(value: string, prefix: string, suffix?: string): string;
91
+ function unwrap(value: string, prefix: string, suffix?: string): string;
92
+ function template(templateStr: string, values: Record<string, unknown>): string;
93
+ function interpolate(templateStr: string, values: Record<string, unknown>): string;
94
+ function dedent(value: string): string;
95
+ function indent(value: string, spaces?: number): string;
96
+ function center(value: string, width: number, padChar?: string): string;
97
+ function alignLeft(value: string, width: number, padChar?: string): string;
98
+ function alignRight(value: string, width: number, padChar?: string): string;
99
+ function alignCenter(value: string, width: number, padChar?: string): string;
100
+ function toBoolean(value: string): boolean;
101
+ function toNumber(value: string, defaultValue?: number): number;
102
+ function toArray(value: string, separator?: string | RegExp): string[];
103
+ function hashCode(value: string): number;
104
+ function isPalindrome(value: string): boolean;
105
+ function isAnagram(a: string, b: string): boolean;
106
+ function reverseWords(value: string): string;
107
+ function sortCharacters(value: string): string;
108
+ function uniqueCharacters(value: string): string;
109
+ function removeDuplicates(value: string): string;
110
+ function longestCommonSubstring(a: string, b: string): string;
111
+ function longestCommonPrefix(strings: string[]): string;
112
+ function longestCommonSuffix(strings: string[]): string;
113
+ function truncateMiddle(value: string, maxLength: number, separator?: string): string;
114
+ function ellipsis(value: string, maxLength: number): string;
115
+ function ellipsisMiddle(value: string, maxLength: number): string;
116
+ function pad(value: string, length: number, padChar?: string): string;
117
+ function padCenter(value: string, length: number, padChar?: string): string;
118
+ function isAscii(value: string): boolean;
119
+ function isLowerCase(value: string): boolean;
120
+ function isUpperCase(value: string): boolean;
121
+ function isCapitalized(value: string): boolean;
122
+ function swapPrefix(value: string, oldPrefix: string, newPrefix: string): string;
123
+ function swapSuffix(value: string, oldSuffix: string, newSuffix: string): string;
124
+ function ensurePrefix(value: string, prefix: string): string;
125
+ function ensureSuffix(value: string, suffix: string): string;
126
+ function removePrefix(value: string, prefix: string): string;
127
+ function removeSuffix(value: string, suffix: string): string;
128
+ function take(value: string, n: number): string;
129
+ function takeRight(value: string, n: number): string;
130
+ function takeWhile(value: string, predicate: (char: string) => boolean): string;
131
+ function takeRightWhile(value: string, predicate: (char: string) => boolean): string;
132
+ function drop(value: string, n: number): string;
133
+ function dropRight(value: string, n: number): string;
134
+ function dropWhile(value: string, predicate: (char: string) => boolean): string;
135
+ function dropRightWhile(value: string, predicate: (char: string) => boolean): string;
136
+ function countLines(value: string): number;
137
+ function getLine(value: string, lineNumber: number): string;
138
+ function getLines(value: string): string[];
139
+ function isSingleLine(value: string): boolean;
140
+ function isMultiLine(value: string): boolean;
141
+ function normalizeLineEndings(value: string, lineEnding?: '\n' | '\r\n' | '\r'): string;
142
+ function toCamelCase(value: string): string;
143
+ function toKebabCase(value: string): string;
144
+ function toSnakeCase(value: string): string;
145
+ function toPascalCase(value: string): string;
146
+ function toConstantCase(value: string): string;
147
+ function toSentenceCase(value: string): string;
148
+ function toTitleCase(value: string): string;
149
+ function toCapitalCase(value: string): string;
150
+ function toDotCase(value: string): string;
151
+ function toPathCase(value: string): string;
152
+ function stripTags(value: string): string;
153
+ function stripNumbers(value: string): string;
154
+ function stripWhitespace(value: string): string;
155
+ function stripPunctuation(value: string): string;
156
+ function normalizeWhitespace(value: string): string;
157
+ function includesAll(value: string, searches: string[]): boolean;
158
+ function includesAny(value: string, searches: string[]): boolean;
159
+ }
160
+ //# sourceMappingURL=string.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string.d.ts","sourceRoot":"","sources":["../../src/utils/string.ts"],"names":[],"mappings":"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"}