indusagi-coding-agent 0.1.23 → 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 (213) hide show
  1. package/CHANGELOG.md +65 -0
  2. package/README.md +2 -0
  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 +221 -52
  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/session-manager.d.ts +127 -0
  69. package/dist/core/session-manager.d.ts.map +1 -1
  70. package/dist/core/session-manager.js +125 -0
  71. package/dist/core/session-manager.js.map +1 -1
  72. package/dist/core/skills.js.map +1 -1
  73. package/dist/core/subagents.js.map +1 -1
  74. package/dist/core/tools/bash.d.ts +391 -11
  75. package/dist/core/tools/bash.d.ts.map +1 -1
  76. package/dist/core/tools/bash.js +269 -2
  77. package/dist/core/tools/bash.js.map +1 -1
  78. package/dist/core/tools/edit.d.ts +284 -6
  79. package/dist/core/tools/edit.d.ts.map +1 -1
  80. package/dist/core/tools/edit.js +238 -0
  81. package/dist/core/tools/edit.js.map +1 -1
  82. package/dist/core/tools/find.d.ts +169 -5
  83. package/dist/core/tools/find.d.ts.map +1 -1
  84. package/dist/core/tools/find.js +136 -0
  85. package/dist/core/tools/find.js.map +1 -1
  86. package/dist/core/tools/grep.d.ts +285 -5
  87. package/dist/core/tools/grep.d.ts.map +1 -1
  88. package/dist/core/tools/grep.js +247 -0
  89. package/dist/core/tools/grep.js.map +1 -1
  90. package/dist/core/tools/ls.d.ts +6 -0
  91. package/dist/core/tools/ls.d.ts.map +1 -1
  92. package/dist/core/tools/ls.js +6 -0
  93. package/dist/core/tools/ls.js.map +1 -1
  94. package/dist/core/tools/read.d.ts +308 -7
  95. package/dist/core/tools/read.d.ts.map +1 -1
  96. package/dist/core/tools/read.js +231 -0
  97. package/dist/core/tools/read.js.map +1 -1
  98. package/dist/core/tools/webfetch.d.ts +118 -3
  99. package/dist/core/tools/webfetch.d.ts.map +1 -1
  100. package/dist/core/tools/webfetch.js +118 -3
  101. package/dist/core/tools/webfetch.js.map +1 -1
  102. package/dist/core/tools/websearch.d.ts +130 -3
  103. package/dist/core/tools/websearch.d.ts.map +1 -1
  104. package/dist/core/tools/websearch.js +130 -3
  105. package/dist/core/tools/websearch.js.map +1 -1
  106. package/dist/core/tools/write.d.ts +251 -5
  107. package/dist/core/tools/write.d.ts.map +1 -1
  108. package/dist/core/tools/write.js +210 -0
  109. package/dist/core/tools/write.js.map +1 -1
  110. package/dist/modes/interactive/components/assistant-message.d.ts +164 -1
  111. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  112. package/dist/modes/interactive/components/assistant-message.js +164 -1
  113. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  114. package/dist/modes/interactive/components/bash-execution.d.ts +297 -1
  115. package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
  116. package/dist/modes/interactive/components/bash-execution.js +297 -1
  117. package/dist/modes/interactive/components/bash-execution.js.map +1 -1
  118. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  119. package/dist/modes/interactive/components/tool-execution.js +251 -1
  120. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  121. package/dist/modes/interactive/components/user-message.d.ts +186 -1
  122. package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
  123. package/dist/modes/interactive/components/user-message.js +186 -1
  124. package/dist/modes/interactive/components/user-message.js.map +1 -1
  125. package/dist/modes/interactive/interactive-mode.d.ts +1567 -13
  126. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  127. package/dist/modes/interactive/interactive-mode.js +1567 -13
  128. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  129. package/dist/modes/interactive/theme/theme.d.ts +422 -0
  130. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  131. package/dist/modes/interactive/theme/theme.js +422 -0
  132. package/dist/modes/interactive/theme/theme.js.map +1 -1
  133. package/dist/modes/print-mode.d.ts +538 -5
  134. package/dist/modes/print-mode.d.ts.map +1 -1
  135. package/dist/modes/print-mode.js +538 -5
  136. package/dist/modes/print-mode.js.map +1 -1
  137. package/dist/modes/rpc/rpc-client.d.ts +921 -8
  138. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  139. package/dist/modes/rpc/rpc-client.js +921 -8
  140. package/dist/modes/rpc/rpc-client.js.map +1 -1
  141. package/dist/modes/rpc/rpc-mode.d.ts +802 -9
  142. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  143. package/dist/modes/rpc/rpc-mode.js +802 -9
  144. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  145. package/dist/modes/rpc/rpc-types.d.ts +356 -3
  146. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  147. package/dist/modes/rpc/rpc-types.js +356 -3
  148. package/dist/modes/rpc/rpc-types.js.map +1 -1
  149. package/dist/modes/shared.d.ts +386 -0
  150. package/dist/modes/shared.d.ts.map +1 -0
  151. package/dist/modes/shared.js +543 -0
  152. package/dist/modes/shared.js.map +1 -0
  153. package/dist/utils/array.d.ts +389 -0
  154. package/dist/utils/array.d.ts.map +1 -0
  155. package/dist/utils/array.js +585 -0
  156. package/dist/utils/array.js.map +1 -0
  157. package/dist/utils/color-formatter.d.ts +318 -0
  158. package/dist/utils/color-formatter.d.ts.map +1 -0
  159. package/dist/utils/color-formatter.js +442 -0
  160. package/dist/utils/color-formatter.js.map +1 -0
  161. package/dist/utils/data-transformer.d.ts +326 -0
  162. package/dist/utils/data-transformer.d.ts.map +1 -0
  163. package/dist/utils/data-transformer.js +512 -0
  164. package/dist/utils/data-transformer.js.map +1 -0
  165. package/dist/utils/date-formatter.d.ts +281 -0
  166. package/dist/utils/date-formatter.d.ts.map +1 -0
  167. package/dist/utils/date-formatter.js +503 -0
  168. package/dist/utils/date-formatter.js.map +1 -0
  169. package/dist/utils/error-handler.d.ts +541 -0
  170. package/dist/utils/error-handler.d.ts.map +1 -0
  171. package/dist/utils/error-handler.js +726 -0
  172. package/dist/utils/error-handler.js.map +1 -0
  173. package/dist/utils/file-operations.d.ts +297 -0
  174. package/dist/utils/file-operations.d.ts.map +1 -0
  175. package/dist/utils/file-operations.js +505 -0
  176. package/dist/utils/file-operations.js.map +1 -0
  177. package/dist/utils/frontmatter.d.ts +268 -6
  178. package/dist/utils/frontmatter.d.ts.map +1 -1
  179. package/dist/utils/frontmatter.js +500 -21
  180. package/dist/utils/frontmatter.js.map +1 -1
  181. package/dist/utils/json-formatter.d.ts +259 -0
  182. package/dist/utils/json-formatter.d.ts.map +1 -0
  183. package/dist/utils/json-formatter.js +517 -0
  184. package/dist/utils/json-formatter.js.map +1 -0
  185. package/dist/utils/logger.d.ts +176 -0
  186. package/dist/utils/logger.d.ts.map +1 -0
  187. package/dist/utils/logger.js +346 -0
  188. package/dist/utils/logger.js.map +1 -0
  189. package/dist/utils/markdown-formatter.d.ts +211 -0
  190. package/dist/utils/markdown-formatter.d.ts.map +1 -0
  191. package/dist/utils/markdown-formatter.js +482 -0
  192. package/dist/utils/markdown-formatter.js.map +1 -0
  193. package/dist/utils/path-validator.d.ts +603 -0
  194. package/dist/utils/path-validator.d.ts.map +1 -0
  195. package/dist/utils/path-validator.js +870 -0
  196. package/dist/utils/path-validator.js.map +1 -0
  197. package/dist/utils/string-formatter.d.ts +609 -0
  198. package/dist/utils/string-formatter.d.ts.map +1 -0
  199. package/dist/utils/string-formatter.js +806 -0
  200. package/dist/utils/string-formatter.js.map +1 -0
  201. package/dist/utils/type-guards.d.ts +629 -0
  202. package/dist/utils/type-guards.d.ts.map +1 -0
  203. package/dist/utils/type-guards.js +662 -0
  204. package/dist/utils/type-guards.js.map +1 -0
  205. package/docs/COMPLETE-GUIDE.md +300 -0
  206. package/docs/MODES-ARCHITECTURE.md +565 -0
  207. package/docs/PRINT-MODE-GUIDE.md +456 -0
  208. package/docs/RPC-GUIDE.md +705 -0
  209. package/docs/UTILS-IMPLEMENTATION-SUMMARY.md +647 -0
  210. package/docs/UTILS-MODULE-OVERVIEW.md +1480 -0
  211. package/docs/UTILS-QA-CHECKLIST.md +1061 -0
  212. package/docs/UTILS-USAGE-GUIDE.md +1419 -0
  213. package/package.json +1 -1
@@ -0,0 +1,326 @@
1
+ /**
2
+ * @fileoverview Advanced data transformation utilities with immutability guarantees
3
+ *
4
+ * This module provides:
5
+ * - Deep merge and clone operations
6
+ * - Immutable object transformations
7
+ * - Data selection (pick, omit)
8
+ * - Data flattening and unflattening
9
+ * - Grouping and sorting utilities
10
+ * - Deduplication and unique operations
11
+ * - Value mapping and transformation
12
+ * - Performance-optimized operations with O(n) complexity notes
13
+ *
14
+ * @example
15
+ * import { deepMerge, deepClone, pick, groupBy } from './data-transformer';
16
+ *
17
+ * const obj1 = { a: 1, b: { c: 2 } };
18
+ * const obj2 = { b: { d: 3 }, e: 4 };
19
+ * const merged = deepMerge(obj1, obj2);
20
+ *
21
+ * @author indusagi
22
+ * @version 1.0.0
23
+ */
24
+ /**
25
+ * Deep clone an object with full immutability
26
+ * @param obj - Object to clone
27
+ * @returns Deep cloned copy
28
+ *
29
+ * Performance: O(n) where n = total properties at all levels
30
+ * Space: O(n) for new object allocation
31
+ *
32
+ * @example
33
+ * const original = { a: 1, b: { c: [1, 2, 3] } };
34
+ * const clone = deepClone(original);
35
+ * clone.b.c.push(4);
36
+ * console.log(original.b.c); // [1, 2, 3]
37
+ * console.log(clone.b.c); // [1, 2, 3, 4]
38
+ *
39
+ * @example
40
+ * // Handle circular references gracefully
41
+ * const circular: any = { a: 1 };
42
+ * circular.self = circular;
43
+ * const cloned = deepClone(circular); // Creates shallow copy for circular ref
44
+ */
45
+ export declare function deepClone<T>(obj: T): T;
46
+ /**
47
+ * Deep merge multiple objects
48
+ * @param target - Target object
49
+ * @param sources - Source objects to merge
50
+ * @returns Merged object (new instance)
51
+ *
52
+ * Performance: O(n) for each source object
53
+ * Later values override earlier ones
54
+ * Creates new object, does not mutate originals
55
+ *
56
+ * @example
57
+ * const base = { api: { host: 'localhost', port: 3000 } };
58
+ * const prod = { api: { host: 'api.example.com' } };
59
+ * const merged = deepMerge(base, prod);
60
+ * // { api: { host: 'api.example.com', port: 3000 } }
61
+ *
62
+ * @example
63
+ * const config1 = { db: { user: 'root' } };
64
+ * const config2 = { db: { password: 'secret' } };
65
+ * const config3 = { api: { timeout: 5000 } };
66
+ * const final = deepMerge(config1, config2, config3);
67
+ */
68
+ export declare function deepMerge<T extends Record<string, any>>(target: T, ...sources: T[]): T;
69
+ /**
70
+ * Pick specific keys from object
71
+ * @param obj - Source object
72
+ * @param keys - Keys to pick
73
+ * @returns New object with only specified keys
74
+ *
75
+ * Performance: O(k) where k = number of keys to pick
76
+ * Immutable: creates new object
77
+ *
78
+ * @example
79
+ * const user = { id: 1, name: 'John', email: 'john@example.com', password: 'secret' };
80
+ * const safe = pick(user, ['id', 'name', 'email']);
81
+ * // { id: 1, name: 'John', email: 'john@example.com' }
82
+ *
83
+ * @example
84
+ * const data = { a: 1, b: 2, c: 3, d: 4 };
85
+ * const subset = pick(data, ['a', 'c']);
86
+ * // { a: 1, c: 3 }
87
+ */
88
+ export declare function pick<T extends Record<string, any>, K extends keyof T>(obj: T, keys: K[]): Partial<T>;
89
+ /**
90
+ * Omit specific keys from object
91
+ * @param obj - Source object
92
+ * @param keys - Keys to omit
93
+ * @returns New object without specified keys
94
+ *
95
+ * Performance: O(n) where n = total properties
96
+ * Immutable: creates new object
97
+ *
98
+ * @example
99
+ * const user = { id: 1, name: 'John', email: 'john@example.com', password: 'secret' };
100
+ * const safe = omit(user, ['password']);
101
+ * // { id: 1, name: 'John', email: 'john@example.com' }
102
+ *
103
+ * @example
104
+ * const config = { dev: true, test: false, prod: true, internal: 'value' };
105
+ * const public_ = omit(config, ['internal']);
106
+ */
107
+ export declare function omit<T extends Record<string, any>, K extends keyof T>(obj: T, keys: K[]): Partial<T>;
108
+ /**
109
+ * Flatten nested object to single level
110
+ * @param obj - Nested object
111
+ * @param prefix - Key prefix for nested keys
112
+ * @returns Flattened object
113
+ *
114
+ * Performance: O(n) where n = total nested properties
115
+ *
116
+ * @example
117
+ * const nested = {
118
+ * user: { name: 'John', age: 30 },
119
+ * settings: { theme: 'dark', lang: 'en' }
120
+ * };
121
+ * const flat = flatten(nested);
122
+ * // {
123
+ * // 'user.name': 'John',
124
+ * // 'user.age': 30,
125
+ * // 'settings.theme': 'dark',
126
+ * // 'settings.lang': 'en'
127
+ * // }
128
+ *
129
+ * @example
130
+ * const deep = { a: { b: { c: { d: 1 } } } };
131
+ * const flat = flatten(deep);
132
+ * // { 'a.b.c.d': 1 }
133
+ */
134
+ export declare function flatten(obj: any, prefix?: string): Record<string, any>;
135
+ /**
136
+ * Unflatten object from dotted keys
137
+ * @param obj - Flattened object
138
+ * @returns Nested object
139
+ *
140
+ * Performance: O(n) where n = number of keys
141
+ *
142
+ * @example
143
+ * const flat = {
144
+ * 'user.name': 'John',
145
+ * 'user.age': 30,
146
+ * 'settings.theme': 'dark'
147
+ * };
148
+ * const nested = unflatten(flat);
149
+ * // { user: { name: 'John', age: 30 }, settings: { theme: 'dark' } }
150
+ */
151
+ export declare function unflatten(obj: Record<string, any>): any;
152
+ /**
153
+ * Group array by key function
154
+ * @param items - Array to group
155
+ * @param keyFn - Function to determine grouping key
156
+ * @returns Object with grouped arrays
157
+ *
158
+ * Performance: O(n) where n = array length
159
+ *
160
+ * @example
161
+ * const users = [
162
+ * { id: 1, role: 'admin' },
163
+ * { id: 2, role: 'user' },
164
+ * { id: 3, role: 'admin' }
165
+ * ];
166
+ * const byRole = groupBy(users, u => u.role);
167
+ * // { admin: [{id: 1, role: 'admin'}, {id: 3, role: 'admin'}], user: [{id: 2, role: 'user'}] }
168
+ *
169
+ * @example
170
+ * const words = ['apple', 'apricot', 'banana', 'blueberry'];
171
+ * const byFirstLetter = groupBy(words, w => w[0]);
172
+ * // { a: ['apple', 'apricot'], b: ['banana', 'blueberry'] }
173
+ */
174
+ export declare function groupBy<T, K extends string | number | symbol>(items: T[], keyFn: (item: T, index: number) => K): Record<K, T[]>;
175
+ /**
176
+ * Sort array by multiple criteria
177
+ * @param items - Array to sort
178
+ * @param compareFn - Comparison function
179
+ * @returns Sorted array (new instance)
180
+ *
181
+ * Performance: O(n log n) typical case
182
+ * Immutable: returns new array
183
+ *
184
+ * @example
185
+ * const users = [
186
+ * { name: 'Charlie', age: 30 },
187
+ * { name: 'Alice', age: 25 },
188
+ * { name: 'Bob', age: 25 }
189
+ * ];
190
+ * const sorted = sortBy(users, (a, b) => {
191
+ * if (a.age !== b.age) return a.age - b.age;
192
+ * return a.name.localeCompare(b.name);
193
+ * });
194
+ *
195
+ * @example
196
+ * const numbers = [3, 1, 4, 1, 5, 9, 2, 6];
197
+ * const sorted = sortBy(numbers, (a, b) => a - b);
198
+ */
199
+ export declare function sortBy<T>(items: T[], compareFn: (a: T, b: T) => number): T[];
200
+ /**
201
+ * Get unique items from array
202
+ * @param items - Array with potential duplicates
203
+ * @param keyFn - Optional function to determine uniqueness
204
+ * @returns Array with unique items
205
+ *
206
+ * Performance: O(n) with Set, O(n log n) without
207
+ *
208
+ * @example
209
+ * const numbers = [1, 2, 2, 3, 3, 3, 4];
210
+ * const unique = uniqueBy(numbers);
211
+ * // [1, 2, 3, 4]
212
+ *
213
+ * @example
214
+ * const users = [
215
+ * { id: 1, name: 'John' },
216
+ * { id: 2, name: 'Jane' },
217
+ * { id: 1, name: 'John' }
218
+ * ];
219
+ * const unique = uniqueBy(users, u => u.id);
220
+ * // [{ id: 1, name: 'John' }, { id: 2, name: 'Jane' }]
221
+ */
222
+ export declare function uniqueBy<T, K = T>(items: T[], keyFn?: (item: T) => K): T[];
223
+ /**
224
+ * Map object values to new values
225
+ * @param obj - Source object
226
+ * @param mapFn - Mapping function
227
+ * @returns New object with mapped values
228
+ *
229
+ * Performance: O(n) where n = number of properties
230
+ * Keys are preserved, only values transform
231
+ *
232
+ * @example
233
+ * const scores = { math: 85, english: 90, science: 88 };
234
+ * const percentages = mapValues(scores, v => `${v}%`);
235
+ * // { math: '85%', english: '90%', science: '88%' }
236
+ *
237
+ * @example
238
+ * const prices = { apple: 0.5, banana: 0.3 };
239
+ * const taxed = mapValues(prices, v => v * 1.1);
240
+ * // { apple: 0.55, banana: 0.33 }
241
+ */
242
+ export declare function mapValues<T extends Record<string, any>, V>(obj: T, mapFn: (value: T[keyof T], key: string) => V): Record<keyof T, V>;
243
+ /**
244
+ * Transform object keys
245
+ * @param obj - Source object
246
+ * @param transformFn - Key transformation function
247
+ * @returns New object with transformed keys
248
+ *
249
+ * @example
250
+ * const obj = { firstName: 'John', lastName: 'Doe' };
251
+ * const snake = transformKeys(obj, k => k.replace(/([A-Z])/g, '_$1').toLowerCase());
252
+ * // { first_name: 'John', last_name: 'Doe' }
253
+ */
254
+ export declare function transformKeys<T extends Record<string, any>>(obj: T, transformFn: (key: string) => string): Record<string, any>;
255
+ /**
256
+ * Filter object by predicate
257
+ * @param obj - Source object
258
+ * @param predicate - Filter function
259
+ * @returns New object with filtered entries
260
+ *
261
+ * Performance: O(n) where n = number of properties
262
+ *
263
+ * @example
264
+ * const config = { debug: true, prod: false, test: true, verbose: false };
265
+ * const enabled = filterObject(config, (v) => v === true);
266
+ * // { debug: true, test: true }
267
+ */
268
+ export declare function filterObject<T extends Record<string, any>>(obj: T, predicate: (value: T[keyof T], key: string) => boolean): Partial<T>;
269
+ /**
270
+ * Invert object keys and values
271
+ * @param obj - Object to invert
272
+ * @returns Inverted object
273
+ *
274
+ * @example
275
+ * const mapping = { en: 'English', es: 'Spanish', fr: 'French' };
276
+ * const inverted = invertObject(mapping);
277
+ * // { English: 'en', Spanish: 'es', French: 'fr' }
278
+ */
279
+ export declare function invertObject(obj: Record<string, string>): Record<string, string>;
280
+ /**
281
+ * Check if value is empty (null, undefined, empty string, empty array, empty object)
282
+ * @param value - Value to check
283
+ * @returns True if empty
284
+ *
285
+ * @example
286
+ * isEmpty(null); // true
287
+ * isEmpty(undefined); // true
288
+ * isEmpty(''); // true
289
+ * isEmpty([]); // true
290
+ * isEmpty({}); // true
291
+ * isEmpty(0); // false
292
+ */
293
+ export declare function isEmpty(value: any): boolean;
294
+ /**
295
+ * Get value from object using dot notation path
296
+ * @param obj - Source object
297
+ * @param path - Dot notation path (e.g., 'user.profile.age')
298
+ * @param defaultValue - Default if not found
299
+ * @returns Value at path or default
300
+ *
301
+ * Performance: O(k) where k = path depth
302
+ *
303
+ * @example
304
+ * const user = { profile: { address: { city: 'New York' } } };
305
+ * const city = getPath(user, 'profile.address.city');
306
+ * // 'New York'
307
+ *
308
+ * @example
309
+ * const city = getPath(user, 'profile.country', 'Unknown');
310
+ * // 'Unknown'
311
+ */
312
+ export declare function getPath<T = any>(obj: any, path: string, defaultValue?: T): T | undefined;
313
+ /**
314
+ * Set value in object using dot notation path
315
+ * @param obj - Target object
316
+ * @param path - Dot notation path
317
+ * @param value - Value to set
318
+ * @returns New object with value set (immutable)
319
+ *
320
+ * @example
321
+ * const user = { profile: { name: 'John' } };
322
+ * const updated = setPath(user, 'profile.age', 30);
323
+ * // { profile: { name: 'John', age: 30 } }
324
+ */
325
+ export declare function setPath(obj: any, path: string, value: any): any;
326
+ //# sourceMappingURL=data-transformer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-transformer.d.ts","sourceRoot":"","sources":["../../src/utils/data-transformer.ts"],"names":[],"mappings":"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"}