erosolar-cli 1.7.194 → 1.7.196
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/agent.d.ts +6 -0
- package/dist/core/agent.d.ts.map +1 -1
- package/dist/core/agent.js +10 -1
- package/dist/core/agent.js.map +1 -1
- package/dist/core/errors/errorUtils.d.ts +87 -0
- package/dist/core/errors/errorUtils.d.ts.map +1 -0
- package/dist/core/errors/errorUtils.js +158 -0
- package/dist/core/errors/errorUtils.js.map +1 -0
- package/dist/core/resultVerification.js.map +1 -1
- package/dist/core/toolValidation.d.ts +117 -0
- package/dist/core/toolValidation.d.ts.map +1 -0
- package/dist/core/toolValidation.js +282 -0
- package/dist/core/toolValidation.js.map +1 -0
- package/dist/core/types/utilityTypes.d.ts +192 -0
- package/dist/core/types/utilityTypes.d.ts.map +1 -0
- package/dist/core/types/utilityTypes.js +272 -0
- package/dist/core/types/utilityTypes.js.map +1 -0
- package/dist/shell/interactiveShell.d.ts +9 -0
- package/dist/shell/interactiveShell.d.ts.map +1 -1
- package/dist/shell/interactiveShell.js +69 -1
- package/dist/shell/interactiveShell.js.map +1 -1
- package/dist/shell/systemPrompt.d.ts.map +1 -1
- package/dist/shell/systemPrompt.js +5 -0
- package/dist/shell/systemPrompt.js.map +1 -1
- package/dist/shell/terminalInput.d.ts +1 -0
- package/dist/shell/terminalInput.d.ts.map +1 -1
- package/dist/shell/terminalInput.js +9 -2
- package/dist/shell/terminalInput.js.map +1 -1
- package/dist/shell/terminalInputAdapter.d.ts +4 -0
- package/dist/shell/terminalInputAdapter.d.ts.map +1 -1
- package/dist/shell/terminalInputAdapter.js +6 -0
- package/dist/shell/terminalInputAdapter.js.map +1 -1
- package/dist/tools/planningTools.d.ts +1 -0
- package/dist/tools/planningTools.d.ts.map +1 -1
- package/dist/tools/planningTools.js +48 -0
- package/dist/tools/planningTools.js.map +1 -1
- package/dist/ui/display.d.ts +5 -49
- package/dist/ui/display.d.ts.map +1 -1
- package/dist/ui/display.js +36 -335
- package/dist/ui/display.js.map +1 -1
- package/dist/ui/toolDisplay.d.ts.map +1 -1
- package/dist/ui/toolDisplay.js +17 -0
- package/dist/ui/toolDisplay.js.map +1 -1
- package/dist/utils/planFormatter.d.ts +34 -0
- package/dist/utils/planFormatter.d.ts.map +1 -0
- package/dist/utils/planFormatter.js +140 -0
- package/dist/utils/planFormatter.js.map +1 -0
- package/package.json +2 -2
- package/dist/shell/bracketedPasteManager.d.ts +0 -128
- package/dist/shell/bracketedPasteManager.d.ts.map +0 -1
- package/dist/shell/bracketedPasteManager.enhanced.d.ts +0 -2
- package/dist/shell/bracketedPasteManager.enhanced.d.ts.map +0 -1
- package/dist/shell/bracketedPasteManager.enhanced.js +0 -4
- package/dist/shell/bracketedPasteManager.enhanced.js.map +0 -1
- package/dist/shell/bracketedPasteManager.js +0 -372
- package/dist/shell/bracketedPasteManager.js.map +0 -1
- package/dist/shell/chatBox.d.ts +0 -228
- package/dist/shell/chatBox.d.ts.map +0 -1
- package/dist/shell/chatBox.js +0 -811
- package/dist/shell/chatBox.js.map +0 -1
- package/dist/shell/unifiedChatBox.d.ts +0 -194
- package/dist/shell/unifiedChatBox.d.ts.map +0 -1
- package/dist/shell/unifiedChatBox.js +0 -585
- package/dist/shell/unifiedChatBox.js.map +0 -1
- package/dist/ui/persistentPrompt.d.ts +0 -545
- package/dist/ui/persistentPrompt.d.ts.map +0 -1
- package/dist/ui/persistentPrompt.js +0 -1529
- package/dist/ui/persistentPrompt.js.map +0 -1
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Comprehensive Tool Validation System
|
|
3
|
+
*
|
|
4
|
+
* Provides proactive validation for AI tool usage with:
|
|
5
|
+
* - Pre-flight validation before tool execution
|
|
6
|
+
* - Real-time AI flow guidance
|
|
7
|
+
* - Pattern-based anti-pattern detection
|
|
8
|
+
* - Recovery suggestions for common failures
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Comprehensive tool validator
|
|
12
|
+
*/
|
|
13
|
+
export class ToolValidator {
|
|
14
|
+
patterns = [
|
|
15
|
+
{
|
|
16
|
+
pattern: 'edit_without_read',
|
|
17
|
+
description: 'Attempting Edit tool without first reading the file',
|
|
18
|
+
guidance: 'ALWAYS use Read tool before Edit tool to get exact text including whitespace and indentation',
|
|
19
|
+
examples: [
|
|
20
|
+
'Edit tool called without preceding Read tool',
|
|
21
|
+
'old_string contains guessed content instead of exact file content'
|
|
22
|
+
]
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
pattern: 'broad_search_pattern',
|
|
26
|
+
description: 'Using overly broad search patterns that may cause context overflow',
|
|
27
|
+
guidance: 'Use specific search patterns like "**/*.ts" or "src/**/*.js" instead of "*" or "."',
|
|
28
|
+
examples: [
|
|
29
|
+
'Glob(".") or Glob("*") without head_limit',
|
|
30
|
+
'Search patterns that could return thousands of files'
|
|
31
|
+
]
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
pattern: 'redundant_git_operations',
|
|
35
|
+
description: 'Running multiple git status calls or inefficient git command chains',
|
|
36
|
+
guidance: 'Use single combined commands: "git add -A && git commit -m msg && git push"',
|
|
37
|
+
examples: [
|
|
38
|
+
'git status → git add → git status → git commit → git push',
|
|
39
|
+
'Multiple git status calls in sequence'
|
|
40
|
+
]
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
pattern: 'incomplete_npm_publish',
|
|
44
|
+
description: 'Incomplete npm publish workflow',
|
|
45
|
+
guidance: 'Use npm_publish tool for complete workflow: version bump → build → publish → push',
|
|
46
|
+
examples: [
|
|
47
|
+
'Running npm publish without version bump',
|
|
48
|
+
'Manual publish without build step'
|
|
49
|
+
]
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
pattern: 'sequential_file_reads',
|
|
53
|
+
description: 'Reading files sequentially when parallel execution is possible',
|
|
54
|
+
guidance: 'Use parallel tool calls for independent file reads to improve performance',
|
|
55
|
+
examples: [
|
|
56
|
+
'Multiple Read calls in separate tool calls',
|
|
57
|
+
'Sequential file operations that could be parallelized'
|
|
58
|
+
]
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
pattern: 'validation_after_each_edit',
|
|
62
|
+
description: 'Running validation after each individual edit',
|
|
63
|
+
guidance: 'Complete ALL edits first, run ONE validation at the end only if needed',
|
|
64
|
+
examples: [
|
|
65
|
+
'Running type-check after each file edit',
|
|
66
|
+
'Running build/test after every small change'
|
|
67
|
+
]
|
|
68
|
+
}
|
|
69
|
+
];
|
|
70
|
+
/**
|
|
71
|
+
* Validate tool usage before execution
|
|
72
|
+
*/
|
|
73
|
+
validateToolUsage(tool, context) {
|
|
74
|
+
const warnings = [];
|
|
75
|
+
const suggestions = [];
|
|
76
|
+
const criticalErrors = [];
|
|
77
|
+
// Tool-specific validation
|
|
78
|
+
this.validateToolSpecific(tool, context, warnings, suggestions, criticalErrors);
|
|
79
|
+
// AI flow pattern validation
|
|
80
|
+
this.validateAIFlowPatterns(tool, context, warnings, suggestions);
|
|
81
|
+
// Performance optimization validation
|
|
82
|
+
this.validatePerformance(tool, context, warnings, suggestions);
|
|
83
|
+
return {
|
|
84
|
+
valid: criticalErrors.length === 0,
|
|
85
|
+
warnings,
|
|
86
|
+
suggestions,
|
|
87
|
+
criticalErrors
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Validate tool-specific patterns
|
|
92
|
+
*/
|
|
93
|
+
validateToolSpecific(tool, context, warnings, suggestions, criticalErrors) {
|
|
94
|
+
switch (tool.name) {
|
|
95
|
+
case 'Edit':
|
|
96
|
+
this.validateEditTool(tool, context, warnings, criticalErrors);
|
|
97
|
+
break;
|
|
98
|
+
case 'Glob':
|
|
99
|
+
case 'Grep':
|
|
100
|
+
this.validateSearchTools(tool, context, warnings, suggestions);
|
|
101
|
+
break;
|
|
102
|
+
case 'execute_bash':
|
|
103
|
+
this.validateBashCommands(tool, context, warnings, suggestions);
|
|
104
|
+
break;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Validate Edit tool usage
|
|
109
|
+
*/
|
|
110
|
+
validateEditTool(tool, context, warnings, criticalErrors) {
|
|
111
|
+
const params = tool.parameters;
|
|
112
|
+
// Check for placeholder patterns in old_string
|
|
113
|
+
if (params.old_string && this.containsPlaceholderPattern(params.old_string)) {
|
|
114
|
+
warnings.push({
|
|
115
|
+
code: 'EDIT_PLACEHOLDER_DETECTED',
|
|
116
|
+
message: 'Edit tool old_string contains placeholder patterns',
|
|
117
|
+
severity: 'high',
|
|
118
|
+
suggestion: 'Use Read tool first to get exact file content instead of guessing'
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
// Check for long single lines (likely guessed content)
|
|
122
|
+
if (params.old_string && this.isLongSingleLine(params.old_string)) {
|
|
123
|
+
warnings.push({
|
|
124
|
+
code: 'EDIT_LONG_SINGLE_LINE',
|
|
125
|
+
message: 'Edit tool old_string is a long single line (likely guessed content)',
|
|
126
|
+
severity: 'medium',
|
|
127
|
+
suggestion: 'Read the file first to get exact multi-line content'
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
// Check for indentation mismatches
|
|
131
|
+
if (params.old_string && params.new_string && this.hasIndentationMismatch(params.old_string, params.new_string)) {
|
|
132
|
+
warnings.push({
|
|
133
|
+
code: 'EDIT_INDENTATION_MISMATCH',
|
|
134
|
+
message: 'Edit tool old_string and new_string have indentation mismatches',
|
|
135
|
+
severity: 'high',
|
|
136
|
+
suggestion: 'Ensure exact whitespace matching between old and new strings'
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Validate search tools (Glob, Grep)
|
|
142
|
+
*/
|
|
143
|
+
validateSearchTools(tool, context, warnings, suggestions) {
|
|
144
|
+
const params = tool.parameters;
|
|
145
|
+
// Check for overly broad patterns
|
|
146
|
+
if (params.pattern && this.isOverlyBroadPattern(params.pattern)) {
|
|
147
|
+
warnings.push({
|
|
148
|
+
code: 'SEARCH_OVERLY_BROAD',
|
|
149
|
+
message: `Search pattern "${params.pattern}" is overly broad`,
|
|
150
|
+
severity: 'medium',
|
|
151
|
+
suggestion: 'Use specific patterns like "**/*.ts" or add head_limit parameter'
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
// Suggest head_limit for broad patterns
|
|
155
|
+
if (params.pattern && this.isBroadPattern(params.pattern) && !params.head_limit) {
|
|
156
|
+
suggestions.push({
|
|
157
|
+
code: 'SEARCH_SUGGEST_HEAD_LIMIT',
|
|
158
|
+
message: 'Broad search pattern detected without head_limit',
|
|
159
|
+
action: 'Add head_limit parameter to prevent context overflow'
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Validate bash commands
|
|
165
|
+
*/
|
|
166
|
+
validateBashCommands(tool, context, warnings, suggestions) {
|
|
167
|
+
const params = tool.parameters;
|
|
168
|
+
if (!params.command)
|
|
169
|
+
return;
|
|
170
|
+
// Check for redundant git operations
|
|
171
|
+
if (this.containsRedundantGitOperations(params.command)) {
|
|
172
|
+
warnings.push({
|
|
173
|
+
code: 'GIT_REDUNDANT_OPERATIONS',
|
|
174
|
+
message: 'Redundant git operations detected',
|
|
175
|
+
severity: 'low',
|
|
176
|
+
suggestion: 'Use combined git commands: "git add -A && git commit -m msg && git push"'
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
// Check for incomplete npm publish
|
|
180
|
+
if (this.isIncompleteNpmPublish(params.command)) {
|
|
181
|
+
suggestions.push({
|
|
182
|
+
code: 'NPM_INCOMPLETE_PUBLISH',
|
|
183
|
+
message: 'Incomplete npm publish workflow detected',
|
|
184
|
+
action: 'Use npm_publish tool for complete workflow automation'
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Validate AI flow patterns
|
|
190
|
+
*/
|
|
191
|
+
validateAIFlowPatterns(tool, context, warnings, suggestions) {
|
|
192
|
+
// Check for sequential file reads
|
|
193
|
+
if (tool.name === 'read_file' && context.workspaceContext?.recentOperations) {
|
|
194
|
+
const recentReads = context.workspaceContext.recentOperations
|
|
195
|
+
.filter(op => op === 'read_file')
|
|
196
|
+
.length;
|
|
197
|
+
if (recentReads > 2) {
|
|
198
|
+
suggestions.push({
|
|
199
|
+
code: 'PARALLEL_READ_SUGGESTION',
|
|
200
|
+
message: 'Multiple sequential file reads detected',
|
|
201
|
+
action: 'Use parallel tool calls for independent file reads to improve performance'
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Validate performance optimizations
|
|
208
|
+
*/
|
|
209
|
+
validatePerformance(tool, context, warnings, suggestions) {
|
|
210
|
+
// Add performance optimization suggestions
|
|
211
|
+
if (tool.name === 'execute_bash' && context.workspaceContext?.recentOperations) {
|
|
212
|
+
const recentValidations = context.workspaceContext.recentOperations
|
|
213
|
+
.filter(op => op.includes('validate') || op.includes('test') || op.includes('build'))
|
|
214
|
+
.length;
|
|
215
|
+
if (recentValidations > 1) {
|
|
216
|
+
warnings.push({
|
|
217
|
+
code: 'EXCESSIVE_VALIDATION',
|
|
218
|
+
message: 'Multiple validation operations detected',
|
|
219
|
+
severity: 'low',
|
|
220
|
+
suggestion: 'Complete ALL edits first, run ONE validation at the end only if needed'
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
// Helper methods
|
|
226
|
+
containsPlaceholderPattern(text) {
|
|
227
|
+
const patterns = [
|
|
228
|
+
/\.\.\./,
|
|
229
|
+
/\[.*\]/,
|
|
230
|
+
/\/\/.*\.\.\./,
|
|
231
|
+
/TODO/,
|
|
232
|
+
/FIXME/
|
|
233
|
+
];
|
|
234
|
+
return patterns.some(pattern => pattern.test(text));
|
|
235
|
+
}
|
|
236
|
+
isLongSingleLine(text) {
|
|
237
|
+
const lines = text.split('\n');
|
|
238
|
+
return lines.length === 1 && text.length > 100;
|
|
239
|
+
}
|
|
240
|
+
hasIndentationMismatch(oldString, newString) {
|
|
241
|
+
const oldIndent = this.detectIndentation(oldString);
|
|
242
|
+
const newIndent = this.detectIndentation(newString);
|
|
243
|
+
return oldIndent !== newIndent;
|
|
244
|
+
}
|
|
245
|
+
detectIndentation(text) {
|
|
246
|
+
const firstLine = text.split('\n')[0] || '';
|
|
247
|
+
const match = firstLine.match(/^(\s+)/);
|
|
248
|
+
return match?.[1] ?? '';
|
|
249
|
+
}
|
|
250
|
+
isOverlyBroadPattern(pattern) {
|
|
251
|
+
const broadPatterns = ['.', '*', '**'];
|
|
252
|
+
return broadPatterns.includes(pattern);
|
|
253
|
+
}
|
|
254
|
+
isBroadPattern(pattern) {
|
|
255
|
+
return pattern.includes('*') && !pattern.includes('.');
|
|
256
|
+
}
|
|
257
|
+
containsRedundantGitOperations(command) {
|
|
258
|
+
const gitStatusPattern = /git status/g;
|
|
259
|
+
const matches = command.match(gitStatusPattern);
|
|
260
|
+
return matches ? matches.length > 1 : false;
|
|
261
|
+
}
|
|
262
|
+
isIncompleteNpmPublish(command) {
|
|
263
|
+
return command.includes('npm publish') &&
|
|
264
|
+
!command.includes('npm version') &&
|
|
265
|
+
!command.includes('npm run build');
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Get AI flow guidance for a specific pattern
|
|
269
|
+
*/
|
|
270
|
+
getAIFlowGuidance(patternId) {
|
|
271
|
+
return this.patterns.find(p => p.pattern === patternId);
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* Get all AI flow patterns
|
|
275
|
+
*/
|
|
276
|
+
getAllAIFlowPatterns() {
|
|
277
|
+
return [...this.patterns];
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
// Global tool validator instance
|
|
281
|
+
export const globalToolValidator = new ToolValidator();
|
|
282
|
+
//# sourceMappingURL=toolValidation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toolValidation.js","sourceRoot":"","sources":["../../src/core/toolValidation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TypeScript Utility Types and Helper Functions
|
|
3
|
+
*
|
|
4
|
+
* Provides comprehensive TypeScript utilities for:
|
|
5
|
+
* - Advanced type manipulation
|
|
6
|
+
* - Functional programming patterns
|
|
7
|
+
* - Immutable data structures
|
|
8
|
+
* - Runtime type checking
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Deep Readonly type for complete immutability
|
|
12
|
+
*/
|
|
13
|
+
export type DeepReadonly<T> = {
|
|
14
|
+
readonly [P in keyof T]: T[P] extends object ? DeepReadonly<T[P]> : T[P];
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Make specific properties optional
|
|
18
|
+
*/
|
|
19
|
+
export type PartialBy<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;
|
|
20
|
+
/**
|
|
21
|
+
* Make specific properties required
|
|
22
|
+
*/
|
|
23
|
+
export type RequiredBy<T, K extends keyof T> = T & Required<Pick<T, K>>;
|
|
24
|
+
/**
|
|
25
|
+
* Extract only function properties from type
|
|
26
|
+
*/
|
|
27
|
+
export type FunctionProperties<T> = {
|
|
28
|
+
[K in keyof T]: T[K] extends (...args: unknown[]) => unknown ? T[K] : never;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Extract only data properties from type
|
|
32
|
+
*/
|
|
33
|
+
export type DataProperties<T> = {
|
|
34
|
+
[K in keyof T]: T[K] extends (...args: unknown[]) => unknown ? never : T[K];
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Branded type for nominal typing
|
|
38
|
+
*/
|
|
39
|
+
export type Brand<T, B> = T & {
|
|
40
|
+
readonly __brand: B;
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Union to intersection type
|
|
44
|
+
*/
|
|
45
|
+
export type UnionToIntersection<U> = (U extends unknown ? (x: U) => void : never) extends (x: infer I) => void ? I : never;
|
|
46
|
+
/**
|
|
47
|
+
* Async function return type
|
|
48
|
+
*/
|
|
49
|
+
export type AsyncReturnType<T extends (...args: unknown[]) => unknown> = T extends (...args: unknown[]) => Promise<infer R> ? R : never;
|
|
50
|
+
/**
|
|
51
|
+
* Constructor type
|
|
52
|
+
*/
|
|
53
|
+
export type Constructor<T = unknown> = new (...args: unknown[]) => T;
|
|
54
|
+
/**
|
|
55
|
+
* Instance type from constructor
|
|
56
|
+
*/
|
|
57
|
+
export type InstanceType<T extends Constructor> = T extends Constructor<infer R> ? R : never;
|
|
58
|
+
/**
|
|
59
|
+
* Runtime type checking utilities
|
|
60
|
+
*/
|
|
61
|
+
export declare class TypeGuards {
|
|
62
|
+
/**
|
|
63
|
+
* Check if value is a string
|
|
64
|
+
*/
|
|
65
|
+
static isString(value: unknown): value is string;
|
|
66
|
+
/**
|
|
67
|
+
* Check if value is a number
|
|
68
|
+
*/
|
|
69
|
+
static isNumber(value: unknown): value is number;
|
|
70
|
+
/**
|
|
71
|
+
* Check if value is a boolean
|
|
72
|
+
*/
|
|
73
|
+
static isBoolean(value: unknown): value is boolean;
|
|
74
|
+
/**
|
|
75
|
+
* Check if value is an object (not null, not array)
|
|
76
|
+
*/
|
|
77
|
+
static isObject(value: unknown): value is Record<string, unknown>;
|
|
78
|
+
/**
|
|
79
|
+
* Check if value is an array
|
|
80
|
+
*/
|
|
81
|
+
static isArray(value: unknown): value is unknown[];
|
|
82
|
+
/**
|
|
83
|
+
* Check if value is a function
|
|
84
|
+
*/
|
|
85
|
+
static isFunction(value: unknown): value is (...args: unknown[]) => unknown;
|
|
86
|
+
/**
|
|
87
|
+
* Check if value is null or undefined
|
|
88
|
+
*/
|
|
89
|
+
static isNil(value: unknown): value is null | undefined;
|
|
90
|
+
/**
|
|
91
|
+
* Check if value has a specific property
|
|
92
|
+
*/
|
|
93
|
+
static hasProperty<T extends string>(value: unknown, property: T): value is {
|
|
94
|
+
[K in T]: unknown;
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Functional programming utilities
|
|
99
|
+
*/
|
|
100
|
+
export declare class Functional {
|
|
101
|
+
/**
|
|
102
|
+
* Compose multiple functions
|
|
103
|
+
*/
|
|
104
|
+
static compose<T>(...fns: Array<(x: T) => T>): (x: T) => T;
|
|
105
|
+
/**
|
|
106
|
+
* Pipe value through multiple functions
|
|
107
|
+
*/
|
|
108
|
+
static pipe<T>(value: T, ...fns: Array<(x: T) => T>): T;
|
|
109
|
+
/**
|
|
110
|
+
* Memoize function with cache
|
|
111
|
+
*/
|
|
112
|
+
static memoize<T extends (...args: unknown[]) => unknown>(fn: T, cacheKey?: (...args: Parameters<T>) => string): T;
|
|
113
|
+
/**
|
|
114
|
+
* Debounce function execution
|
|
115
|
+
*/
|
|
116
|
+
static debounce<T extends (...args: unknown[]) => unknown>(fn: T, delay: number): (...args: Parameters<T>) => void;
|
|
117
|
+
/**
|
|
118
|
+
* Throttle function execution
|
|
119
|
+
*/
|
|
120
|
+
static throttle<T extends (...args: unknown[]) => unknown>(fn: T, delay: number): (...args: Parameters<T>) => void;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Immutable data utilities
|
|
124
|
+
*/
|
|
125
|
+
export declare class Immutable {
|
|
126
|
+
/**
|
|
127
|
+
* Deep freeze object
|
|
128
|
+
*/
|
|
129
|
+
static deepFreeze<T>(obj: T): DeepReadonly<T>;
|
|
130
|
+
/**
|
|
131
|
+
* Create immutable copy with updates
|
|
132
|
+
*/
|
|
133
|
+
static update<T extends Record<string, unknown>>(obj: T, updates: Partial<T>): T;
|
|
134
|
+
/**
|
|
135
|
+
* Create immutable copy with nested updates
|
|
136
|
+
*/
|
|
137
|
+
static updateIn<T extends Record<string, unknown>>(obj: T, path: string[], value: unknown): T;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Type-safe event emitter
|
|
141
|
+
*/
|
|
142
|
+
export declare class TypedEventEmitter<T extends Record<string, unknown[]>> {
|
|
143
|
+
private listeners;
|
|
144
|
+
/**
|
|
145
|
+
* Add event listener
|
|
146
|
+
*/
|
|
147
|
+
on<K extends keyof T>(event: K, listener: (...args: T[K]) => void): void;
|
|
148
|
+
/**
|
|
149
|
+
* Remove event listener
|
|
150
|
+
*/
|
|
151
|
+
off<K extends keyof T>(event: K, listener: (...args: T[K]) => void): void;
|
|
152
|
+
/**
|
|
153
|
+
* Emit event
|
|
154
|
+
*/
|
|
155
|
+
emit<K extends keyof T>(event: K, ...args: T[K]): void;
|
|
156
|
+
/**
|
|
157
|
+
* Remove all listeners
|
|
158
|
+
*/
|
|
159
|
+
removeAllListeners(): void;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Utility functions for common TypeScript patterns
|
|
163
|
+
*/
|
|
164
|
+
export declare class TypeScriptUtils {
|
|
165
|
+
/**
|
|
166
|
+
* Assert value is not null or undefined
|
|
167
|
+
*/
|
|
168
|
+
static assertDefined<T>(value: T | null | undefined, message?: string): asserts value is T;
|
|
169
|
+
/**
|
|
170
|
+
* Create type-safe enum from array
|
|
171
|
+
*/
|
|
172
|
+
static createStringEnum<T extends string>(values: readonly T[]): {
|
|
173
|
+
[K in T]: K;
|
|
174
|
+
};
|
|
175
|
+
/**
|
|
176
|
+
* Create branded type
|
|
177
|
+
*/
|
|
178
|
+
static createBranded<T, B>(value: T): Brand<T, B>;
|
|
179
|
+
/**
|
|
180
|
+
* Extract keys from type that match a condition
|
|
181
|
+
*/
|
|
182
|
+
static extractKeys<T extends object>(obj: T, predicate: (key: keyof T, value: T[keyof T]) => boolean): Array<keyof T>;
|
|
183
|
+
/**
|
|
184
|
+
* Pick properties from object
|
|
185
|
+
*/
|
|
186
|
+
static pick<T extends object, K extends keyof T>(obj: T, keys: K[]): Pick<T, K>;
|
|
187
|
+
/**
|
|
188
|
+
* Omit properties from object
|
|
189
|
+
*/
|
|
190
|
+
static omit<T, K extends keyof T>(obj: T, keys: K[]): Omit<T, K>;
|
|
191
|
+
}
|
|
192
|
+
//# sourceMappingURL=utilityTypes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utilityTypes.d.ts","sourceRoot":"","sources":["../../../src/core/types/utilityTypes.ts"],"names":[],"mappings":"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"}
|