indusagi-coding-agent 0.1.22 → 0.1.24

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 (222) hide show
  1. package/CHANGELOG.md +72 -11
  2. package/README.md +2 -36
  3. package/dist/cli/args.d.ts +117 -1
  4. package/dist/cli/args.d.ts.map +1 -1
  5. package/dist/cli/args.js +231 -64
  6. package/dist/cli/args.js.map +1 -1
  7. package/dist/cli/config-selector.d.ts +58 -2
  8. package/dist/cli/config-selector.d.ts.map +1 -1
  9. package/dist/cli/config-selector.js +130 -12
  10. package/dist/cli/config-selector.js.map +1 -1
  11. package/dist/cli/file-processor.d.ts +70 -2
  12. package/dist/cli/file-processor.d.ts.map +1 -1
  13. package/dist/cli/file-processor.js +240 -15
  14. package/dist/cli/file-processor.js.map +1 -1
  15. package/dist/cli/list-models.d.ts +63 -3
  16. package/dist/cli/list-models.d.ts.map +1 -1
  17. package/dist/cli/list-models.js +202 -27
  18. package/dist/cli/list-models.js.map +1 -1
  19. package/dist/cli/login-handler.d.ts +82 -8
  20. package/dist/cli/login-handler.d.ts.map +1 -1
  21. package/dist/cli/login-handler.js +410 -77
  22. package/dist/cli/login-handler.js.map +1 -1
  23. package/dist/cli/session-picker.d.ts +74 -2
  24. package/dist/cli/session-picker.d.ts.map +1 -1
  25. package/dist/cli/session-picker.js +236 -12
  26. package/dist/cli/session-picker.js.map +1 -1
  27. package/dist/core/agent-session.d.ts +214 -9
  28. package/dist/core/agent-session.d.ts.map +1 -1
  29. package/dist/core/agent-session.js +214 -9
  30. package/dist/core/agent-session.js.map +1 -1
  31. package/dist/core/bash-executor.d.ts +302 -12
  32. package/dist/core/bash-executor.d.ts.map +1 -1
  33. package/dist/core/bash-executor.js +302 -12
  34. package/dist/core/bash-executor.js.map +1 -1
  35. package/dist/core/diagnostics.d.ts +191 -0
  36. package/dist/core/diagnostics.d.ts.map +1 -1
  37. package/dist/core/diagnostics.js +142 -0
  38. package/dist/core/diagnostics.js.map +1 -1
  39. package/dist/core/event-bus.d.ts +146 -0
  40. package/dist/core/event-bus.d.ts.map +1 -1
  41. package/dist/core/event-bus.js +93 -0
  42. package/dist/core/event-bus.js.map +1 -1
  43. package/dist/core/export-html/ansi-to-html.d.ts +4 -0
  44. package/dist/core/export-html/ansi-to-html.d.ts.map +1 -1
  45. package/dist/core/export-html/ansi-to-html.js +4 -0
  46. package/dist/core/export-html/ansi-to-html.js.map +1 -1
  47. package/dist/core/export-html/index.d.ts +128 -0
  48. package/dist/core/export-html/index.d.ts.map +1 -1
  49. package/dist/core/export-html/index.js +128 -0
  50. package/dist/core/export-html/index.js.map +1 -1
  51. package/dist/core/export-html/tool-renderer.d.ts +4 -0
  52. package/dist/core/export-html/tool-renderer.d.ts.map +1 -1
  53. package/dist/core/export-html/tool-renderer.js +4 -0
  54. package/dist/core/export-html/tool-renderer.js.map +1 -1
  55. package/dist/core/keybindings.d.ts +142 -0
  56. package/dist/core/keybindings.d.ts.map +1 -1
  57. package/dist/core/keybindings.js +142 -0
  58. package/dist/core/keybindings.js.map +1 -1
  59. package/dist/core/model-registry.d.ts +98 -1
  60. package/dist/core/model-registry.d.ts.map +1 -1
  61. package/dist/core/model-registry.js +98 -1
  62. package/dist/core/model-registry.js.map +1 -1
  63. package/dist/core/model-resolver.d.ts +99 -1
  64. package/dist/core/model-resolver.d.ts.map +1 -1
  65. package/dist/core/model-resolver.js +99 -1
  66. package/dist/core/model-resolver.js.map +1 -1
  67. package/dist/core/prompt-templates.js.map +1 -1
  68. package/dist/core/sdk.d.ts +1 -1
  69. package/dist/core/sdk.d.ts.map +1 -1
  70. package/dist/core/sdk.js +0 -2
  71. package/dist/core/sdk.js.map +1 -1
  72. package/dist/core/session-manager.d.ts +127 -0
  73. package/dist/core/session-manager.d.ts.map +1 -1
  74. package/dist/core/session-manager.js +125 -0
  75. package/dist/core/session-manager.js.map +1 -1
  76. package/dist/core/skills.js.map +1 -1
  77. package/dist/core/subagents.js.map +1 -1
  78. package/dist/core/tools/bash.d.ts +391 -11
  79. package/dist/core/tools/bash.d.ts.map +1 -1
  80. package/dist/core/tools/bash.js +269 -2
  81. package/dist/core/tools/bash.js.map +1 -1
  82. package/dist/core/tools/edit.d.ts +284 -6
  83. package/dist/core/tools/edit.d.ts.map +1 -1
  84. package/dist/core/tools/edit.js +238 -0
  85. package/dist/core/tools/edit.js.map +1 -1
  86. package/dist/core/tools/find.d.ts +169 -5
  87. package/dist/core/tools/find.d.ts.map +1 -1
  88. package/dist/core/tools/find.js +136 -0
  89. package/dist/core/tools/find.js.map +1 -1
  90. package/dist/core/tools/grep.d.ts +285 -5
  91. package/dist/core/tools/grep.d.ts.map +1 -1
  92. package/dist/core/tools/grep.js +247 -0
  93. package/dist/core/tools/grep.js.map +1 -1
  94. package/dist/core/tools/index.d.ts +0 -18
  95. package/dist/core/tools/index.d.ts.map +1 -1
  96. package/dist/core/tools/index.js +1 -23
  97. package/dist/core/tools/index.js.map +1 -1
  98. package/dist/core/tools/ls.d.ts +6 -0
  99. package/dist/core/tools/ls.d.ts.map +1 -1
  100. package/dist/core/tools/ls.js +6 -0
  101. package/dist/core/tools/ls.js.map +1 -1
  102. package/dist/core/tools/read.d.ts +308 -7
  103. package/dist/core/tools/read.d.ts.map +1 -1
  104. package/dist/core/tools/read.js +231 -0
  105. package/dist/core/tools/read.js.map +1 -1
  106. package/dist/core/tools/webfetch.d.ts +118 -3
  107. package/dist/core/tools/webfetch.d.ts.map +1 -1
  108. package/dist/core/tools/webfetch.js +118 -3
  109. package/dist/core/tools/webfetch.js.map +1 -1
  110. package/dist/core/tools/websearch.d.ts +130 -3
  111. package/dist/core/tools/websearch.d.ts.map +1 -1
  112. package/dist/core/tools/websearch.js +130 -3
  113. package/dist/core/tools/websearch.js.map +1 -1
  114. package/dist/core/tools/write.d.ts +251 -5
  115. package/dist/core/tools/write.d.ts.map +1 -1
  116. package/dist/core/tools/write.js +210 -0
  117. package/dist/core/tools/write.js.map +1 -1
  118. package/dist/modes/interactive/components/assistant-message.d.ts +164 -1
  119. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  120. package/dist/modes/interactive/components/assistant-message.js +164 -1
  121. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  122. package/dist/modes/interactive/components/bash-execution.d.ts +297 -1
  123. package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
  124. package/dist/modes/interactive/components/bash-execution.js +297 -1
  125. package/dist/modes/interactive/components/bash-execution.js.map +1 -1
  126. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  127. package/dist/modes/interactive/components/tool-execution.js +251 -1
  128. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  129. package/dist/modes/interactive/components/user-message.d.ts +186 -1
  130. package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
  131. package/dist/modes/interactive/components/user-message.js +186 -1
  132. package/dist/modes/interactive/components/user-message.js.map +1 -1
  133. package/dist/modes/interactive/interactive-mode.d.ts +1567 -13
  134. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  135. package/dist/modes/interactive/interactive-mode.js +1567 -13
  136. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  137. package/dist/modes/interactive/theme/theme.d.ts +422 -0
  138. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  139. package/dist/modes/interactive/theme/theme.js +422 -0
  140. package/dist/modes/interactive/theme/theme.js.map +1 -1
  141. package/dist/modes/print-mode.d.ts +538 -5
  142. package/dist/modes/print-mode.d.ts.map +1 -1
  143. package/dist/modes/print-mode.js +538 -5
  144. package/dist/modes/print-mode.js.map +1 -1
  145. package/dist/modes/rpc/rpc-client.d.ts +921 -8
  146. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  147. package/dist/modes/rpc/rpc-client.js +921 -8
  148. package/dist/modes/rpc/rpc-client.js.map +1 -1
  149. package/dist/modes/rpc/rpc-mode.d.ts +802 -9
  150. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  151. package/dist/modes/rpc/rpc-mode.js +802 -9
  152. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  153. package/dist/modes/rpc/rpc-types.d.ts +356 -3
  154. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  155. package/dist/modes/rpc/rpc-types.js +356 -3
  156. package/dist/modes/rpc/rpc-types.js.map +1 -1
  157. package/dist/modes/shared.d.ts +386 -0
  158. package/dist/modes/shared.d.ts.map +1 -0
  159. package/dist/modes/shared.js +543 -0
  160. package/dist/modes/shared.js.map +1 -0
  161. package/dist/utils/array.d.ts +389 -0
  162. package/dist/utils/array.d.ts.map +1 -0
  163. package/dist/utils/array.js +585 -0
  164. package/dist/utils/array.js.map +1 -0
  165. package/dist/utils/color-formatter.d.ts +318 -0
  166. package/dist/utils/color-formatter.d.ts.map +1 -0
  167. package/dist/utils/color-formatter.js +442 -0
  168. package/dist/utils/color-formatter.js.map +1 -0
  169. package/dist/utils/data-transformer.d.ts +326 -0
  170. package/dist/utils/data-transformer.d.ts.map +1 -0
  171. package/dist/utils/data-transformer.js +512 -0
  172. package/dist/utils/data-transformer.js.map +1 -0
  173. package/dist/utils/date-formatter.d.ts +281 -0
  174. package/dist/utils/date-formatter.d.ts.map +1 -0
  175. package/dist/utils/date-formatter.js +503 -0
  176. package/dist/utils/date-formatter.js.map +1 -0
  177. package/dist/utils/error-handler.d.ts +541 -0
  178. package/dist/utils/error-handler.d.ts.map +1 -0
  179. package/dist/utils/error-handler.js +726 -0
  180. package/dist/utils/error-handler.js.map +1 -0
  181. package/dist/utils/file-operations.d.ts +297 -0
  182. package/dist/utils/file-operations.d.ts.map +1 -0
  183. package/dist/utils/file-operations.js +505 -0
  184. package/dist/utils/file-operations.js.map +1 -0
  185. package/dist/utils/frontmatter.d.ts +268 -6
  186. package/dist/utils/frontmatter.d.ts.map +1 -1
  187. package/dist/utils/frontmatter.js +500 -21
  188. package/dist/utils/frontmatter.js.map +1 -1
  189. package/dist/utils/json-formatter.d.ts +259 -0
  190. package/dist/utils/json-formatter.d.ts.map +1 -0
  191. package/dist/utils/json-formatter.js +517 -0
  192. package/dist/utils/json-formatter.js.map +1 -0
  193. package/dist/utils/logger.d.ts +176 -0
  194. package/dist/utils/logger.d.ts.map +1 -0
  195. package/dist/utils/logger.js +346 -0
  196. package/dist/utils/logger.js.map +1 -0
  197. package/dist/utils/markdown-formatter.d.ts +211 -0
  198. package/dist/utils/markdown-formatter.d.ts.map +1 -0
  199. package/dist/utils/markdown-formatter.js +482 -0
  200. package/dist/utils/markdown-formatter.js.map +1 -0
  201. package/dist/utils/path-validator.d.ts +603 -0
  202. package/dist/utils/path-validator.d.ts.map +1 -0
  203. package/dist/utils/path-validator.js +870 -0
  204. package/dist/utils/path-validator.js.map +1 -0
  205. package/dist/utils/string-formatter.d.ts +609 -0
  206. package/dist/utils/string-formatter.d.ts.map +1 -0
  207. package/dist/utils/string-formatter.js +806 -0
  208. package/dist/utils/string-formatter.js.map +1 -0
  209. package/dist/utils/type-guards.d.ts +629 -0
  210. package/dist/utils/type-guards.d.ts.map +1 -0
  211. package/dist/utils/type-guards.js +662 -0
  212. package/dist/utils/type-guards.js.map +1 -0
  213. package/docs/COMPLETE-GUIDE.md +300 -0
  214. package/docs/MODES-ARCHITECTURE.md +565 -0
  215. package/docs/PRINT-MODE-GUIDE.md +456 -0
  216. package/docs/README.md +1 -2
  217. package/docs/RPC-GUIDE.md +705 -0
  218. package/docs/UTILS-IMPLEMENTATION-SUMMARY.md +647 -0
  219. package/docs/UTILS-MODULE-OVERVIEW.md +1480 -0
  220. package/docs/UTILS-QA-CHECKLIST.md +1061 -0
  221. package/docs/UTILS-USAGE-GUIDE.md +1419 -0
  222. package/package.json +3 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-validator.js","sourceRoot":"","sources":["../../src/utils/path-validator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,609 @@
1
+ /**
2
+ * @fileoverview String Formatter Utilities
3
+ *
4
+ * Comprehensive string manipulation and formatting utilities for text transformation,
5
+ * case conversion, truncation, padding, and other common string operations.
6
+ *
7
+ * This module provides type-safe, well-tested functions for:
8
+ * - Case conversion (camelCase, snake_case, kebab-case, Title Case)
9
+ * - String truncation and padding
10
+ * - Character manipulation (reverse, capitalize, decapitalize)
11
+ * - String searching and matching
12
+ * - String interpolation patterns
13
+ * - Multi-line text handling
14
+ *
15
+ * @example
16
+ * // Case conversion
17
+ * toTitleCase('hello world') // "Hello World"
18
+ * toCamelCase('hello-world') // "helloWorld"
19
+ * toSnakeCase('helloWorld') // "hello_world"
20
+ * toKebabCase('HelloWorld') // "hello-world"
21
+ *
22
+ * @example
23
+ * // String manipulation
24
+ * truncate('hello world', 8) // "hello..."
25
+ * capitalize('hello') // "Hello"
26
+ * reverse('hello') // "olleh"
27
+ * repeat('ab', 3) // "ababab"
28
+ *
29
+ * @example
30
+ * // Padding and spacing
31
+ * padStart('5', 3, '0') // "005"
32
+ * padEnd('5', 3, '0') // "500"
33
+ * repeat(' ', 4) // " "
34
+ */
35
+ /**
36
+ * Converts a string to Title Case (each word capitalized)
37
+ *
38
+ * Splits on spaces, hyphens, underscores, and camelCase boundaries.
39
+ * Properly handles multiple delimiters and preserves word order.
40
+ *
41
+ * @param str - The input string to convert
42
+ * @returns The title-cased string
43
+ *
44
+ * @example
45
+ * toTitleCase('hello world') // "Hello World"
46
+ * toTitleCase('hello-world') // "Hello World"
47
+ * toTitleCase('hello_world') // "Hello World"
48
+ * toTitleCase('helloWorld') // "Hello World"
49
+ * toTitleCase('HELLO WORLD') // "Hello World"
50
+ * toTitleCase('hello world') // "Hello World" (collapses spaces)
51
+ * toTitleCase('') // ""
52
+ * toTitleCase('a') // "A"
53
+ *
54
+ * @throws Does not throw; returns empty string for null/undefined
55
+ */
56
+ export declare function toTitleCase(str: string): string;
57
+ /**
58
+ * Converts a string to camelCase format
59
+ *
60
+ * Useful for JavaScript variable names and object properties.
61
+ * Handles multiple input formats and preserves acronyms intelligently.
62
+ *
63
+ * @param str - The input string to convert
64
+ * @returns The camelCased string
65
+ *
66
+ * @example
67
+ * toCamelCase('hello world') // "helloWorld"
68
+ * toCamelCase('hello-world') // "helloWorld"
69
+ * toCamelCase('hello_world') // "helloWorld"
70
+ * toCamelCase('HelloWorld') // "helloWorld"
71
+ * toCamelCase('HELLO_WORLD') // "helloWorld"
72
+ * toCamelCase('get-user-id') // "getUserId"
73
+ * toCamelCase('') // ""
74
+ * toCamelCase('x') // "x"
75
+ *
76
+ * @edge-cases
77
+ * - Empty strings return empty string
78
+ * - Single characters preserved as lowercase
79
+ * - Multiple consecutive delimiters treated as single
80
+ */
81
+ export declare function toCamelCase(str: string): string;
82
+ /**
83
+ * Converts a string to snake_case format
84
+ *
85
+ * Useful for Python variable names, database columns, and file names.
86
+ * Handles acronyms and consecutive uppercase letters.
87
+ *
88
+ * @param str - The input string to convert
89
+ * @returns The snake_cased string
90
+ *
91
+ * @example
92
+ * toSnakeCase('HelloWorld') // "hello_world"
93
+ * toSnakeCase('hello world') // "hello_world"
94
+ * toSnakeCase('hello-world') // "hello_world"
95
+ * toSnakeCase('helloWorld') // "hello_world"
96
+ * toSnakeCase('HTMLParser') // "html_parser"
97
+ * toSnakeCase('getHTTPResponseCode') // "get_http_response_code"
98
+ * toSnakeCase('') // ""
99
+ *
100
+ * @edge-cases
101
+ * - Consecutive uppercase letters treated as acronym
102
+ * - Preserves existing underscores
103
+ * - Collapses multiple delimiters
104
+ */
105
+ export declare function toSnakeCase(str: string): string;
106
+ /**
107
+ * Converts a string to kebab-case format
108
+ *
109
+ * Useful for URL slugs, CSS class names, and configuration keys.
110
+ * Similar to snake_case but uses hyphens instead of underscores.
111
+ *
112
+ * @param str - The input string to convert
113
+ * @returns The kebab-cased string
114
+ *
115
+ * @example
116
+ * toKebabCase('HelloWorld') // "hello-world"
117
+ * toKebabCase('hello world') // "hello-world"
118
+ * toKebabCase('hello_world') // "hello-world"
119
+ * toKebabCase('helloWorld') // "hello-world"
120
+ * toKebabCase('get-user-data') // "get-user-data"
121
+ * toKebabCase('GetUserData') // "get-user-data"
122
+ * toKebabCase('') // ""
123
+ *
124
+ * @edge-cases
125
+ * - URL-safe; suitable for web slugs
126
+ * - Collapses multiple delimiters
127
+ */
128
+ export declare function toKebabCase(str: string): string;
129
+ /**
130
+ * Truncates a string to a maximum length with optional ellipsis
131
+ *
132
+ * Intelligently handles word boundaries when requested.
133
+ * Preserves readability by truncating at word ends when possible.
134
+ *
135
+ * @param str - The input string to truncate
136
+ * @param maxLength - Maximum length of result (including ellipsis if added)
137
+ * @param ellipsis - String to append if truncated (default: '...')
138
+ * @param wordBoundary - If true, truncate at word boundary (default: false)
139
+ * @returns The truncated string
140
+ *
141
+ * @example
142
+ * truncate('hello world', 8) // "hello..."
143
+ * truncate('hello world', 11) // "hello world"
144
+ * truncate('hello world', 8, '…') // "hello…"
145
+ * truncate('hello world', 8, '...', true) // "hello..." (word boundary)
146
+ * truncate('supercalifragilisticexpialidocious', 10) // "supercali..."
147
+ * truncate('', 5) // ""
148
+ * truncate('hi', 10) // "hi"
149
+ *
150
+ * @edge-cases
151
+ * - If maxLength < ellipsis.length, returns ellipsis
152
+ * - Word boundary mode may result in shorter strings
153
+ * - Empty strings return empty string
154
+ */
155
+ export declare function truncate(str: string, maxLength: number, ellipsis?: string, wordBoundary?: boolean): string;
156
+ /**
157
+ * Pads the start of a string with a fill string
158
+ *
159
+ * Complements JavaScript's native padStart with custom handling.
160
+ * Useful for formatting numbers, codes, and aligned output.
161
+ *
162
+ * @param str - The input string to pad
163
+ * @param length - Target length
164
+ * @param fillStr - String to repeat for padding (default: ' ')
165
+ * @returns The padded string
166
+ *
167
+ * @example
168
+ * padStart('5', 3, '0') // "005"
169
+ * padStart('42', 4, '0') // "0042"
170
+ * padStart('hello', 10) // " hello"
171
+ * padStart('hello', 3) // "hello" (no padding if already longer)
172
+ * padStart('', 3, '-') // "---"
173
+ * padStart('a', 5, 'xy') // "xyxya"
174
+ *
175
+ * @edge-cases
176
+ * - If target length is less than string length, returns original
177
+ * - Multiple character fill strings repeat as needed
178
+ */
179
+ export declare function padStart(str: string, length: number, fillStr?: string): string;
180
+ /**
181
+ * Pads the end of a string with a fill string
182
+ *
183
+ * Opposite of padStart. Useful for right-aligned formatting.
184
+ *
185
+ * @param str - The input string to pad
186
+ * @param length - Target length
187
+ * @param fillStr - String to repeat for padding (default: ' ')
188
+ * @returns The padded string
189
+ *
190
+ * @example
191
+ * padEnd('5', 3, '0') // "500"
192
+ * padEnd('hello', 10) // "hello "
193
+ * padEnd('hello', 3) // "hello" (no padding if already longer)
194
+ * padEnd('', 3, '-') // "---"
195
+ * padEnd('a', 5, 'xy') // "axyxy"
196
+ *
197
+ * @edge-cases
198
+ * - If target length is less than string length, returns original
199
+ * - Multiple character fill strings repeat as needed
200
+ */
201
+ export declare function padEnd(str: string, length: number, fillStr?: string): string;
202
+ /**
203
+ * Repeats a string a specified number of times
204
+ *
205
+ * Native alternative with better error handling.
206
+ *
207
+ * @param str - The string to repeat
208
+ * @param count - Number of times to repeat (default: 1)
209
+ * @returns The repeated string
210
+ *
211
+ * @example
212
+ * repeat('ab', 3) // "ababab"
213
+ * repeat('x', 5) // "xxxxx"
214
+ * repeat(' ', 4) // " "
215
+ * repeat('hello', 0) // ""
216
+ * repeat('', 5) // ""
217
+ * repeat('-', 10) // "----------"
218
+ *
219
+ * @edge-cases
220
+ * - Zero or negative count returns empty string
221
+ * - Empty string repeated returns empty string
222
+ */
223
+ export declare function repeat(str: string, count?: number): string;
224
+ /**
225
+ * Capitalizes the first character of a string
226
+ *
227
+ * Leaves remaining characters unchanged (unlike toTitleCase).
228
+ *
229
+ * @param str - The input string
230
+ * @returns String with first character uppercase
231
+ *
232
+ * @example
233
+ * capitalize('hello') // "Hello"
234
+ * capitalize('HELLO') // "HELLO"
235
+ * capitalize('helloWorld') // "HelloWorld"
236
+ * capitalize('') // ""
237
+ * capitalize('a') // "A"
238
+ * capitalize('already Capitalized') // "Already Capitalized"
239
+ *
240
+ * @edge-cases
241
+ * - Empty string returns empty string
242
+ * - Doesn't change case of remaining characters
243
+ */
244
+ export declare function capitalize(str: string): string;
245
+ /**
246
+ * Decapitalizes the first character of a string
247
+ *
248
+ * Opposite of capitalize. Useful for variable naming.
249
+ *
250
+ * @param str - The input string
251
+ * @returns String with first character lowercase
252
+ *
253
+ * @example
254
+ * decapitalize('Hello') // "hello"
255
+ * decapitalize('HELLO') // "hELLO"
256
+ * decapitalize('hello') // "hello"
257
+ * decapitalize('') // ""
258
+ * decapitalize('A') // "a"
259
+ *
260
+ * @edge-cases
261
+ * - Empty string returns empty string
262
+ * - Doesn't change case of remaining characters
263
+ */
264
+ export declare function decapitalize(str: string): string;
265
+ /**
266
+ * Reverses a string character by character
267
+ *
268
+ * Properly handles Unicode and multi-byte characters.
269
+ *
270
+ * @param str - The input string to reverse
271
+ * @returns The reversed string
272
+ *
273
+ * @example
274
+ * reverse('hello') // "olleh"
275
+ * reverse('abc') // "cba"
276
+ * reverse('') // ""
277
+ * reverse('a') // "a"
278
+ * reverse('123') // "321"
279
+ * reverse('hello world') // "dlrow olleh"
280
+ *
281
+ * @edge-cases
282
+ * - Empty string returns empty string
283
+ * - Single character returns same character
284
+ */
285
+ export declare function reverse(str: string): string;
286
+ /**
287
+ * Checks if a string starts with a given prefix
288
+ *
289
+ * Case-sensitive by default. Wrapper with optional case-insensitivity.
290
+ *
291
+ * @param str - The string to search
292
+ * @param prefix - The prefix to check for
293
+ * @param caseSensitive - If false, comparison is case-insensitive (default: true)
294
+ * @returns true if string starts with prefix
295
+ *
296
+ * @example
297
+ * startsWith('hello world', 'hello') // true
298
+ * startsWith('hello world', 'world') // false
299
+ * startsWith('Hello World', 'hello', false) // true
300
+ * startsWith('', '') // true
301
+ * startsWith('a', 'abc') // false
302
+ * startsWith('test.js', '.js') // false
303
+ *
304
+ * @edge-cases
305
+ * - Empty prefix always returns true
306
+ * - Empty string only matches empty prefix
307
+ * - Case-insensitive comparison lowercases both sides
308
+ */
309
+ export declare function startsWith(str: string, prefix: string, caseSensitive?: boolean): boolean;
310
+ /**
311
+ * Checks if a string ends with a given suffix
312
+ *
313
+ * Case-sensitive by default. Wrapper with optional case-insensitivity.
314
+ *
315
+ * @param str - The string to search
316
+ * @param suffix - The suffix to check for
317
+ * @param caseSensitive - If false, comparison is case-insensitive (default: true)
318
+ * @returns true if string ends with suffix
319
+ *
320
+ * @example
321
+ * endsWith('hello world', 'world') // true
322
+ * endsWith('hello world', 'hello') // false
323
+ * endsWith('test.js', '.js') // true
324
+ * endsWith('Test.JS', '.js', false) // true
325
+ * endsWith('', '') // true
326
+ * endsWith('a', 'abc') // false
327
+ *
328
+ * @edge-cases
329
+ * - Empty suffix always returns true
330
+ * - Empty string only matches empty suffix
331
+ * - Case-insensitive comparison lowercases both sides
332
+ */
333
+ export declare function endsWith(str: string, suffix: string, caseSensitive?: boolean): boolean;
334
+ /**
335
+ * Checks if a string includes a given substring
336
+ *
337
+ * Case-sensitive by default. Wrapper with optional case-insensitivity.
338
+ *
339
+ * @param str - The string to search
340
+ * @param search - The substring to look for
341
+ * @param caseSensitive - If false, comparison is case-insensitive (default: true)
342
+ * @returns true if substring is found
343
+ *
344
+ * @example
345
+ * includes('hello world', 'lo wo') // true
346
+ * includes('hello world', 'xyz') // false
347
+ * includes('Hello World', 'world', false) // true
348
+ * includes('', '') // true
349
+ * includes('test', '') // true
350
+ * includes('JavaScript', 'Script', false) // true
351
+ *
352
+ * @edge-cases
353
+ * - Empty search string always returns true
354
+ * - Empty string only matches empty search
355
+ * - Case-insensitive comparison lowercases both sides
356
+ */
357
+ export declare function includes(str: string, search: string, caseSensitive?: boolean): boolean;
358
+ /**
359
+ * Replaces all occurrences of a string pattern
360
+ *
361
+ * Works with string or regex patterns. Simpler than native replace for all occurrences.
362
+ *
363
+ * @param str - The string to search in
364
+ * @param search - String or regex to search for
365
+ * @param replacement - String or function to replace with
366
+ * @returns The modified string
367
+ *
368
+ * @example
369
+ * replaceAll('hello hello', 'hello', 'hi') // "hi hi"
370
+ * replaceAll('a-b-c', '-', ' ') // "a b c"
371
+ * replaceAll('test test test', 'test', 'result') // "result result result"
372
+ * replaceAll('', 'x', 'y') // ""
373
+ * replaceAll('abc', 'x', 'y') // "abc"
374
+ * replaceAll('aaa', 'a', 'b') // "bbb"
375
+ *
376
+ * @edge-cases
377
+ * - Empty search string doesn't replace
378
+ * - Empty replacement removes the pattern
379
+ * - Can use regex with global flag
380
+ */
381
+ export declare function replaceAll(str: string, search: string | RegExp, replacement: string | ((match: string) => string)): string;
382
+ /**
383
+ * Splits a string by a delimiter with optional trimming
384
+ *
385
+ * Useful for parsing comma-separated values and other delimited data.
386
+ *
387
+ * @param str - The string to split
388
+ * @param delimiter - The delimiter to split on
389
+ * @param trim - If true, trim each part (default: false)
390
+ * @returns Array of string parts
391
+ *
392
+ * @example
393
+ * splitStr('a,b,c', ',') // ["a", "b", "c"]
394
+ * splitStr('a, b, c', ',', true) // ["a", "b", "c"]
395
+ * splitStr('a|b|c', '|') // ["a", "b", "c"]
396
+ * splitStr('', ',') // [""]
397
+ * splitStr('abc', ',') // ["abc"]
398
+ * splitStr('a b c', ' ') // ["a", "b", "c"]
399
+ *
400
+ * @edge-cases
401
+ * - Empty delimiter returns array with original string
402
+ * - Empty string returns array with empty string
403
+ * - Consecutive delimiters create empty elements
404
+ */
405
+ export declare function splitStr(str: string, delimiter: string, trim?: boolean): string[];
406
+ /**
407
+ * Joins an array of strings with a delimiter
408
+ *
409
+ * Enhanced version of Array.join with filtering options.
410
+ *
411
+ * @param parts - Array of strings to join
412
+ * @param delimiter - The delimiter to use
413
+ * @param filterEmpty - If true, remove empty strings (default: false)
414
+ * @returns The joined string
415
+ *
416
+ * @example
417
+ * joinStr(['a', 'b', 'c'], ',') // "a,b,c"
418
+ * joinStr(['a', '', 'c'], ',') // "a,,c"
419
+ * joinStr(['a', '', 'c'], ',', true) // "a,c"
420
+ * joinStr([], ',') // ""
421
+ * joinStr(['single'], ',') // "single"
422
+ * joinStr(['path', 'to', 'file'], '/') // "path/to/file"
423
+ *
424
+ * @edge-cases
425
+ * - Empty array returns empty string
426
+ * - Single element array returns that element
427
+ * - Filter empty removes all empty strings before joining
428
+ */
429
+ export declare function joinStr(parts: string[], delimiter: string, filterEmpty?: boolean): string;
430
+ /**
431
+ * Counts occurrences of a substring
432
+ *
433
+ * Useful for validation and analysis of string content.
434
+ *
435
+ * @param str - The string to search in
436
+ * @param search - The substring to count
437
+ * @param caseSensitive - If false, comparison is case-insensitive (default: true)
438
+ * @returns Number of occurrences
439
+ *
440
+ * @example
441
+ * countOccurrences('hello hello world', 'hello') // 2
442
+ * countOccurrences('aaa', 'a') // 3
443
+ * countOccurrences('test', 'x') // 0
444
+ * countOccurrences('', 'x') // 0
445
+ * countOccurrences('Hello HELLO hello', 'hello', false) // 3
446
+ * countOccurrences('ababab', 'ab') // 3
447
+ *
448
+ * @edge-cases
449
+ * - Empty search string returns 0
450
+ * - Empty string returns 0
451
+ * - Case-insensitive counts all variations
452
+ */
453
+ export declare function countOccurrences(str: string, search: string, caseSensitive?: boolean): number;
454
+ /**
455
+ * String interpolation helper
456
+ *
457
+ * Replaces {key} patterns with provided values.
458
+ * Useful for templates and dynamic strings.
459
+ *
460
+ * @param template - Template string with {key} placeholders
461
+ * @param values - Object with key-value pairs
462
+ * @returns The interpolated string
463
+ *
464
+ * @example
465
+ * interpolate('Hello {name}!', { name: 'World' }) // "Hello World!"
466
+ * interpolate('{x} + {y} = {z}', { x: '1', y: '2', z: '3' }) // "1 + 2 = 3"
467
+ * interpolate('No placeholders', {}) // "No placeholders"
468
+ * interpolate('Missing {value}', {}) // "Missing {value}"
469
+ * interpolate('', {}) // ""
470
+ *
471
+ * @edge-cases
472
+ * - Missing keys leave placeholder unchanged
473
+ * - Nested objects converted via toString()
474
+ * - Undefined values become "undefined"
475
+ */
476
+ export declare function interpolate(template: string, values: Record<string, string | number | boolean>): string;
477
+ /**
478
+ * Removes leading and trailing whitespace
479
+ *
480
+ * Enhanced trim with custom character removal.
481
+ *
482
+ * @param str - The string to trim
483
+ * @param chars - Characters to remove (default: whitespace)
484
+ * @returns The trimmed string
485
+ *
486
+ * @example
487
+ * trimStr(' hello ') // "hello"
488
+ * trimStr('xxxhelloxxx', 'x') // "hello"
489
+ * trimStr(' hello ') // "hello"
490
+ * trimStr('') // ""
491
+ * trimStr('---test---', '-') // "test"
492
+ *
493
+ * @edge-cases
494
+ * - Empty string returns empty string
495
+ * - Only specified characters are removed from edges
496
+ */
497
+ export declare function trimStr(str: string, chars?: string): string;
498
+ /**
499
+ * Configuration for text wrapping behavior
500
+ */
501
+ export interface WrapOptions {
502
+ /** Width to wrap at (default: 80) */
503
+ width?: number;
504
+ /** Text to use for line breaks (default: '\n') */
505
+ lineBreak?: string;
506
+ /** Indent subsequent lines (default: '') */
507
+ indent?: string;
508
+ /** Break at word boundaries when possible (default: true) */
509
+ wordBoundary?: boolean;
510
+ }
511
+ /**
512
+ * Wraps text to fit within a specified width
513
+ *
514
+ * Intelligently breaks long lines while preserving word integrity.
515
+ * Useful for terminal output and formatted text generation.
516
+ *
517
+ * @param str - The string to wrap
518
+ * @param options - Wrapping options
519
+ * @returns The wrapped string
520
+ *
521
+ * @example
522
+ * wrap('hello world this is a test', { width: 10 })
523
+ * // "hello\nworld this\nis a test"
524
+ *
525
+ * wrap('a very long line here', { width: 10, indent: ' ' })
526
+ * // "a very\n long line\n here"
527
+ *
528
+ * wrap('word1 word2 word3', { width: 10, wordBoundary: true })
529
+ * // "word1\nword2\nword3"
530
+ *
531
+ * @edge-cases
532
+ * - Words longer than width are broken
533
+ * - Existing line breaks are preserved
534
+ */
535
+ export declare function wrap(str: string, options?: WrapOptions): string;
536
+ /**
537
+ * Escapes special regex characters in a string
538
+ *
539
+ * Useful for creating regex patterns from user input.
540
+ *
541
+ * @param str - The string to escape
542
+ * @returns The escaped string safe for regex
543
+ *
544
+ * @example
545
+ * escapeRegex('(test)') // "\\(test\\)"
546
+ * escapeRegex('[a-z]') // "\\[a-z\\]"
547
+ * escapeRegex('price: $5.00') // "price: \\$5\\.00"
548
+ * escapeRegex('') // ""
549
+ *
550
+ * @edge-cases
551
+ * - All regex special characters are escaped
552
+ * - Empty string returns empty string
553
+ */
554
+ export declare function escapeRegex(str: string): string;
555
+ /**
556
+ * Strips HTML tags from a string
557
+ *
558
+ * Simple tag removal; for complex HTML use a proper parser.
559
+ *
560
+ * @param str - The string with HTML tags
561
+ * @returns The text content without tags
562
+ *
563
+ * @example
564
+ * stripHtml('<p>Hello <b>World</b></p>') // "Hello World"
565
+ * stripHtml('No tags here') // "No tags here"
566
+ * stripHtml('<script>alert("xss")</script>') // "alert("xss")"
567
+ * stripHtml('') // ""
568
+ *
569
+ * @edge-cases
570
+ * - Doesn't validate HTML
571
+ * - Removes content inside tags
572
+ * - For security-sensitive use, use htmlspecialchars
573
+ */
574
+ export declare function stripHtml(str: string): string;
575
+ /**
576
+ * Escapes HTML special characters
577
+ *
578
+ * Makes text safe for insertion into HTML.
579
+ *
580
+ * @param str - The string to escape
581
+ * @returns The escaped string
582
+ *
583
+ * @example
584
+ * escapeHtml('<script>') // "&lt;script&gt;"
585
+ * escapeHtml('Hello & Goodbye') // "Hello &amp; Goodbye"
586
+ * escapeHtml('Price: $5.00') // "Price: $5.00"
587
+ * escapeHtml('') // ""
588
+ * escapeHtml('"quoted"') // "&quot;quoted&quot;"
589
+ *
590
+ * @edge-cases
591
+ * - Critical for preventing XSS vulnerabilities
592
+ * - Converts &, <, >, ", '
593
+ */
594
+ export declare function escapeHtml(str: string): string;
595
+ /**
596
+ * Unescapes HTML special characters
597
+ *
598
+ * Reverses escapeHtml transformation.
599
+ *
600
+ * @param str - The escaped HTML string
601
+ * @returns The unescaped string
602
+ *
603
+ * @example
604
+ * unescapeHtml('&lt;script&gt;') // "<script>"
605
+ * unescapeHtml('Hello &amp; Goodbye') // "Hello & Goodbye"
606
+ * unescapeHtml('&quot;quoted&quot;') // ""quoted""
607
+ */
608
+ export declare function unescapeHtml(str: string): string;
609
+ //# sourceMappingURL=string-formatter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string-formatter.d.ts","sourceRoot":"","sources":["../../src/utils/string-formatter.ts"],"names":[],"mappings":"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"}