cmp-standards 2.8.0-alpha → 2.8.1
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/cache/EmbeddingCache.d.ts +2 -1
- package/dist/cache/EmbeddingCache.d.ts.map +1 -1
- package/dist/cache/EmbeddingCache.js +12 -12
- package/dist/cache/EmbeddingCache.js.map +1 -1
- package/dist/db/cloud.d.ts +1 -0
- package/dist/db/cloud.d.ts.map +1 -1
- package/dist/db/drizzle-client.d.ts +10 -1
- package/dist/db/drizzle-client.d.ts.map +1 -1
- package/dist/db/drizzle-client.js +57 -3
- package/dist/db/drizzle-client.js.map +1 -1
- package/dist/db/errors.d.ts +13 -1
- package/dist/db/errors.d.ts.map +1 -1
- package/dist/db/errors.js +49 -5
- package/dist/db/errors.js.map +1 -1
- package/dist/db/migrations.d.ts +42 -0
- package/dist/db/migrations.d.ts.map +1 -0
- package/dist/db/migrations.js +173 -0
- package/dist/db/migrations.js.map +1 -0
- package/dist/db/turso-client.d.ts +15 -3
- package/dist/db/turso-client.d.ts.map +1 -1
- package/dist/db/turso-client.js +49 -38
- package/dist/db/turso-client.js.map +1 -1
- package/dist/events/EventBus.d.ts +10 -0
- package/dist/events/EventBus.d.ts.map +1 -1
- package/dist/events/EventBus.js +57 -1
- package/dist/events/EventBus.js.map +1 -1
- package/dist/experts/ExpertVotePersistence.d.ts +86 -0
- package/dist/experts/ExpertVotePersistence.d.ts.map +1 -0
- package/dist/experts/ExpertVotePersistence.js +234 -0
- package/dist/experts/ExpertVotePersistence.js.map +1 -0
- package/dist/experts/index.d.ts +1 -0
- package/dist/experts/index.d.ts.map +1 -1
- package/dist/experts/index.js +2 -0
- package/dist/experts/index.js.map +1 -1
- package/dist/hooks/cloud-post-tool-use.d.ts +5 -0
- package/dist/hooks/cloud-post-tool-use.d.ts.map +1 -1
- package/dist/hooks/cloud-post-tool-use.js +43 -10
- package/dist/hooks/cloud-post-tool-use.js.map +1 -1
- package/dist/hooks/cloud-session-start.d.ts.map +1 -1
- package/dist/hooks/cloud-session-start.js +64 -0
- package/dist/hooks/cloud-session-start.js.map +1 -1
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +2 -0
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/session-end.d.ts +67 -0
- package/dist/hooks/session-end.d.ts.map +1 -0
- package/dist/hooks/session-end.js +268 -0
- package/dist/hooks/session-end.js.map +1 -0
- package/dist/interfaces/index.d.ts +450 -0
- package/dist/interfaces/index.d.ts.map +1 -0
- package/dist/interfaces/index.js +50 -0
- package/dist/interfaces/index.js.map +1 -0
- package/dist/mcp/schemas.d.ts +278 -0
- package/dist/mcp/schemas.d.ts.map +1 -0
- package/dist/mcp/schemas.js +166 -0
- package/dist/mcp/schemas.js.map +1 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +14 -3
- package/dist/mcp/server.js.map +1 -1
- package/dist/patterns/feedback-loop.d.ts +264 -0
- package/dist/patterns/feedback-loop.d.ts.map +1 -0
- package/dist/patterns/feedback-loop.js +329 -0
- package/dist/patterns/feedback-loop.js.map +1 -0
- package/dist/patterns/index.d.ts +9 -0
- package/dist/patterns/index.d.ts.map +1 -0
- package/dist/patterns/index.js +9 -0
- package/dist/patterns/index.js.map +1 -0
- package/dist/patterns/lifecycle.d.ts +88 -0
- package/dist/patterns/lifecycle.d.ts.map +1 -0
- package/dist/patterns/lifecycle.js +284 -0
- package/dist/patterns/lifecycle.js.map +1 -0
- package/dist/patterns/registry.d.ts +142 -0
- package/dist/patterns/registry.d.ts.map +1 -0
- package/dist/patterns/registry.js +442 -0
- package/dist/patterns/registry.js.map +1 -0
- package/dist/performance/Debouncer.d.ts +57 -0
- package/dist/performance/Debouncer.d.ts.map +1 -1
- package/dist/performance/Debouncer.js +149 -0
- package/dist/performance/Debouncer.js.map +1 -1
- package/dist/performance/index.d.ts +1 -1
- package/dist/performance/index.d.ts.map +1 -1
- package/dist/performance/index.js +3 -1
- package/dist/performance/index.js.map +1 -1
- package/dist/schema/expert-types.d.ts +2 -2
- package/dist/services/FeedbackCollector.d.ts +63 -0
- package/dist/services/FeedbackCollector.d.ts.map +1 -0
- package/dist/services/FeedbackCollector.js +219 -0
- package/dist/services/FeedbackCollector.js.map +1 -0
- package/dist/services/PlanManager.d.ts +1 -1
- package/dist/services/PlanManager.d.ts.map +1 -1
- package/dist/services/PlanManager.js +26 -6
- package/dist/services/PlanManager.js.map +1 -1
- package/dist/services/index.d.ts +2 -1
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +3 -1
- package/dist/services/index.js.map +1 -1
- package/dist/services/pattern-tracker.d.ts +50 -0
- package/dist/services/pattern-tracker.d.ts.map +1 -1
- package/dist/services/pattern-tracker.js +148 -0
- package/dist/services/pattern-tracker.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,450 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Core Interfaces
|
|
3
|
+
* @description Abstract interfaces for dependency injection and testing
|
|
4
|
+
*
|
|
5
|
+
* These interfaces define contracts for core services, enabling:
|
|
6
|
+
* - Dependency injection for loose coupling
|
|
7
|
+
* - Easy mocking in unit tests
|
|
8
|
+
* - Clear documentation of service capabilities
|
|
9
|
+
*
|
|
10
|
+
* @version 2.8.0
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Event metadata attached to all events
|
|
14
|
+
*/
|
|
15
|
+
export interface IEventMetadata {
|
|
16
|
+
timestamp: string;
|
|
17
|
+
source: string;
|
|
18
|
+
correlationId?: string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Base event structure
|
|
22
|
+
*/
|
|
23
|
+
export interface IEvent {
|
|
24
|
+
type: string;
|
|
25
|
+
data: unknown;
|
|
26
|
+
metadata: IEventMetadata;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Event handler function signature
|
|
30
|
+
*/
|
|
31
|
+
export type IEventHandler<T extends IEvent = IEvent> = (event: T) => void | Promise<void>;
|
|
32
|
+
/**
|
|
33
|
+
* EventBus interface for pub/sub messaging
|
|
34
|
+
*/
|
|
35
|
+
export interface IEventBus {
|
|
36
|
+
/**
|
|
37
|
+
* Subscribe to an event type
|
|
38
|
+
* @returns Unsubscribe function
|
|
39
|
+
*/
|
|
40
|
+
subscribe<T extends IEvent>(eventType: string, handler: IEventHandler<T>): () => void;
|
|
41
|
+
/**
|
|
42
|
+
* Publish an event to all subscribers
|
|
43
|
+
*/
|
|
44
|
+
publish<T extends IEvent>(event: T): Promise<{
|
|
45
|
+
success: boolean;
|
|
46
|
+
handlerResults: PromiseSettledResult<void>[];
|
|
47
|
+
duration: number;
|
|
48
|
+
}>;
|
|
49
|
+
/**
|
|
50
|
+
* Publish and throw on any handler failure
|
|
51
|
+
*/
|
|
52
|
+
publishStrict<T extends IEvent>(event: T): Promise<void>;
|
|
53
|
+
/**
|
|
54
|
+
* Get event history
|
|
55
|
+
*/
|
|
56
|
+
getHistory(type?: string): IEvent[];
|
|
57
|
+
/**
|
|
58
|
+
* Get events by correlation ID
|
|
59
|
+
*/
|
|
60
|
+
getByCorrelationId(correlationId: string): IEvent[];
|
|
61
|
+
/**
|
|
62
|
+
* Clear all handlers and history
|
|
63
|
+
*/
|
|
64
|
+
clear(): void;
|
|
65
|
+
/**
|
|
66
|
+
* Get handler count for event type
|
|
67
|
+
*/
|
|
68
|
+
getHandlerCount(type: string): number;
|
|
69
|
+
/**
|
|
70
|
+
* Check if event type has handlers
|
|
71
|
+
*/
|
|
72
|
+
hasHandlers(type: string): boolean;
|
|
73
|
+
/**
|
|
74
|
+
* Clean up resources
|
|
75
|
+
*/
|
|
76
|
+
destroy(): void;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Cache entry with metadata
|
|
80
|
+
*/
|
|
81
|
+
export interface ICacheEntry<T> {
|
|
82
|
+
value: T;
|
|
83
|
+
expires: number;
|
|
84
|
+
hits: number;
|
|
85
|
+
createdAt: number;
|
|
86
|
+
lastAccessedAt: number;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Cache statistics
|
|
90
|
+
*/
|
|
91
|
+
export interface ICacheStats {
|
|
92
|
+
size: number;
|
|
93
|
+
hits: number;
|
|
94
|
+
misses: number;
|
|
95
|
+
hitRate: number;
|
|
96
|
+
memoryEstimate: number;
|
|
97
|
+
avgAge: number;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Generic cache interface
|
|
101
|
+
*/
|
|
102
|
+
export interface ICache<T> {
|
|
103
|
+
/**
|
|
104
|
+
* Get value from cache
|
|
105
|
+
*/
|
|
106
|
+
get(key: string): T | null;
|
|
107
|
+
/**
|
|
108
|
+
* Store value in cache
|
|
109
|
+
*/
|
|
110
|
+
set(key: string, value: T): void;
|
|
111
|
+
/**
|
|
112
|
+
* Check if key exists
|
|
113
|
+
*/
|
|
114
|
+
has(key: string): boolean;
|
|
115
|
+
/**
|
|
116
|
+
* Remove expired entries
|
|
117
|
+
*/
|
|
118
|
+
cleanup(): number;
|
|
119
|
+
/**
|
|
120
|
+
* Get cache statistics
|
|
121
|
+
*/
|
|
122
|
+
getStats(): ICacheStats;
|
|
123
|
+
/**
|
|
124
|
+
* Clear all entries
|
|
125
|
+
*/
|
|
126
|
+
clear(): void;
|
|
127
|
+
/**
|
|
128
|
+
* Get current size
|
|
129
|
+
*/
|
|
130
|
+
readonly size: number;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Embedding cache interface with vector-specific operations
|
|
134
|
+
*/
|
|
135
|
+
export interface IEmbeddingCache extends ICache<number[]> {
|
|
136
|
+
/**
|
|
137
|
+
* Get all cached keys
|
|
138
|
+
*/
|
|
139
|
+
keys(): string[];
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Pattern severity levels
|
|
143
|
+
*/
|
|
144
|
+
export type IPatternSeverity = 'critical' | 'high' | 'medium' | 'low';
|
|
145
|
+
/**
|
|
146
|
+
* Pattern lifecycle status
|
|
147
|
+
*/
|
|
148
|
+
export type IPatternStatus = 'active' | 'triggered' | 'implemented' | 'retired';
|
|
149
|
+
/**
|
|
150
|
+
* Pattern definition
|
|
151
|
+
*/
|
|
152
|
+
export interface IPattern {
|
|
153
|
+
id: string;
|
|
154
|
+
name: string;
|
|
155
|
+
description: string;
|
|
156
|
+
severity: IPatternSeverity;
|
|
157
|
+
status: IPatternStatus;
|
|
158
|
+
threshold: number;
|
|
159
|
+
regex?: string;
|
|
160
|
+
eslintRuleName?: string;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Pattern occurrence record
|
|
164
|
+
*/
|
|
165
|
+
export interface IPatternOccurrence {
|
|
166
|
+
patternId: string;
|
|
167
|
+
file: string;
|
|
168
|
+
line?: number;
|
|
169
|
+
code?: string;
|
|
170
|
+
severity?: IPatternSeverity;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Pattern registry interface
|
|
174
|
+
*/
|
|
175
|
+
export interface IPatternRegistry {
|
|
176
|
+
/**
|
|
177
|
+
* Get pattern by ID
|
|
178
|
+
*/
|
|
179
|
+
get(patternId: string): IPattern | undefined;
|
|
180
|
+
/**
|
|
181
|
+
* Get all active patterns
|
|
182
|
+
*/
|
|
183
|
+
getActive(): IPattern[];
|
|
184
|
+
/**
|
|
185
|
+
* Get all patterns
|
|
186
|
+
*/
|
|
187
|
+
getAll(): IPattern[];
|
|
188
|
+
/**
|
|
189
|
+
* Register a new pattern
|
|
190
|
+
*/
|
|
191
|
+
register(pattern: IPattern): void;
|
|
192
|
+
/**
|
|
193
|
+
* Update pattern status
|
|
194
|
+
*/
|
|
195
|
+
updateStatus(patternId: string, status: IPatternStatus, reason?: string): void;
|
|
196
|
+
/**
|
|
197
|
+
* Record feedback for pattern
|
|
198
|
+
*/
|
|
199
|
+
recordFeedback(patternId: string, type: 'confirmed' | 'false_positive'): void;
|
|
200
|
+
/**
|
|
201
|
+
* Detect patterns in content
|
|
202
|
+
*/
|
|
203
|
+
detect(content: string, filePath: string): Array<{
|
|
204
|
+
pattern: IPattern;
|
|
205
|
+
matches: RegExpMatchArray[];
|
|
206
|
+
}>;
|
|
207
|
+
/**
|
|
208
|
+
* Generate ESLint rule for pattern
|
|
209
|
+
*/
|
|
210
|
+
generateEslintRule(patternId: string): string | null;
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Pattern lifecycle service interface
|
|
214
|
+
*/
|
|
215
|
+
export interface IPatternLifecycle {
|
|
216
|
+
/**
|
|
217
|
+
* Track a pattern occurrence
|
|
218
|
+
*/
|
|
219
|
+
track(occurrence: IPatternOccurrence): Promise<{
|
|
220
|
+
count: number;
|
|
221
|
+
triggered: boolean;
|
|
222
|
+
rule?: string;
|
|
223
|
+
}>;
|
|
224
|
+
/**
|
|
225
|
+
* Confirm a pattern detection
|
|
226
|
+
*/
|
|
227
|
+
confirmPattern(patternId: string): Promise<void>;
|
|
228
|
+
/**
|
|
229
|
+
* Mark pattern as false positive
|
|
230
|
+
*/
|
|
231
|
+
markFalsePositive(patternId: string): Promise<void>;
|
|
232
|
+
/**
|
|
233
|
+
* Promote pattern to implemented
|
|
234
|
+
*/
|
|
235
|
+
promotePattern(patternId: string): Promise<void>;
|
|
236
|
+
/**
|
|
237
|
+
* Retire a pattern
|
|
238
|
+
*/
|
|
239
|
+
retirePattern(patternId: string, reason: string): Promise<void>;
|
|
240
|
+
/**
|
|
241
|
+
* Detect regression
|
|
242
|
+
*/
|
|
243
|
+
detectRegression(patternId: string): Promise<{
|
|
244
|
+
patternId: string;
|
|
245
|
+
message: string;
|
|
246
|
+
severity: IPatternSeverity;
|
|
247
|
+
} | null>;
|
|
248
|
+
/**
|
|
249
|
+
* Adjust pattern sensitivity
|
|
250
|
+
*/
|
|
251
|
+
adjustSensitivity(patternId: string, feedback: 'too_sensitive' | 'not_sensitive_enough'): Promise<void>;
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Query options for database operations
|
|
255
|
+
*/
|
|
256
|
+
export interface IQueryOptions {
|
|
257
|
+
system?: string;
|
|
258
|
+
type?: string;
|
|
259
|
+
status?: string;
|
|
260
|
+
limit?: number;
|
|
261
|
+
orderBy?: string;
|
|
262
|
+
orderDir?: 'ASC' | 'DESC';
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* Database client interface
|
|
266
|
+
*/
|
|
267
|
+
export interface IDatabaseClient {
|
|
268
|
+
/**
|
|
269
|
+
* Create a new item
|
|
270
|
+
*/
|
|
271
|
+
create<T extends object>(type: string, system: string, content: T, status?: string): Promise<string>;
|
|
272
|
+
/**
|
|
273
|
+
* Get item by ID
|
|
274
|
+
*/
|
|
275
|
+
get<T>(id: string): Promise<{
|
|
276
|
+
id: string;
|
|
277
|
+
type: string;
|
|
278
|
+
status: string;
|
|
279
|
+
system: string;
|
|
280
|
+
content: T;
|
|
281
|
+
} | null>;
|
|
282
|
+
/**
|
|
283
|
+
* Update an item
|
|
284
|
+
*/
|
|
285
|
+
update<T extends object>(id: string, updates: Partial<{
|
|
286
|
+
status: string;
|
|
287
|
+
content: T;
|
|
288
|
+
}>): Promise<void>;
|
|
289
|
+
/**
|
|
290
|
+
* Query items
|
|
291
|
+
*/
|
|
292
|
+
query<T>(options: IQueryOptions): Promise<Array<{
|
|
293
|
+
id: string;
|
|
294
|
+
type: string;
|
|
295
|
+
status: string;
|
|
296
|
+
system: string;
|
|
297
|
+
content: T;
|
|
298
|
+
}>>;
|
|
299
|
+
/**
|
|
300
|
+
* Delete an item
|
|
301
|
+
*/
|
|
302
|
+
remove(id: string): Promise<void>;
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Transaction statement
|
|
306
|
+
*/
|
|
307
|
+
export interface ITransactionStatement {
|
|
308
|
+
sql: string;
|
|
309
|
+
args: unknown[];
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* Transactional database client interface
|
|
313
|
+
*/
|
|
314
|
+
export interface ITransactionalDatabase extends IDatabaseClient {
|
|
315
|
+
/**
|
|
316
|
+
* Execute statements in atomic transaction
|
|
317
|
+
*/
|
|
318
|
+
transaction(statements: ITransactionStatement[]): Promise<void>;
|
|
319
|
+
}
|
|
320
|
+
/**
|
|
321
|
+
* Expert vote types
|
|
322
|
+
*/
|
|
323
|
+
export type IExpertVote = 'APPROVE' | 'REJECT' | 'WARN' | 'ABSTAIN';
|
|
324
|
+
/**
|
|
325
|
+
* Expert finding
|
|
326
|
+
*/
|
|
327
|
+
export interface IExpertFinding {
|
|
328
|
+
patternId: string;
|
|
329
|
+
filePath: string;
|
|
330
|
+
line?: number;
|
|
331
|
+
code?: string;
|
|
332
|
+
severity: IPatternSeverity;
|
|
333
|
+
description: string;
|
|
334
|
+
expertType: string;
|
|
335
|
+
}
|
|
336
|
+
/**
|
|
337
|
+
* Expert review result
|
|
338
|
+
*/
|
|
339
|
+
export interface IExpertReviewResult {
|
|
340
|
+
expertType: string;
|
|
341
|
+
vote: IExpertVote;
|
|
342
|
+
findings: IExpertFinding[];
|
|
343
|
+
reasoning?: string;
|
|
344
|
+
timestamp: string;
|
|
345
|
+
}
|
|
346
|
+
/**
|
|
347
|
+
* Expert panel consensus
|
|
348
|
+
*/
|
|
349
|
+
export interface IPanelConsensus {
|
|
350
|
+
approved: boolean;
|
|
351
|
+
votes: Record<string, IExpertVote>;
|
|
352
|
+
allFindings: IExpertFinding[];
|
|
353
|
+
correlationId: string;
|
|
354
|
+
filesReviewed: string[];
|
|
355
|
+
isCritical: boolean;
|
|
356
|
+
}
|
|
357
|
+
/**
|
|
358
|
+
* Expert router interface
|
|
359
|
+
*/
|
|
360
|
+
export interface IExpertRouter {
|
|
361
|
+
/**
|
|
362
|
+
* Route files to appropriate experts
|
|
363
|
+
*/
|
|
364
|
+
route(files: string[]): Promise<string[]>;
|
|
365
|
+
/**
|
|
366
|
+
* Get expert by type
|
|
367
|
+
*/
|
|
368
|
+
getExpert(type: string): IExpert | undefined;
|
|
369
|
+
/**
|
|
370
|
+
* Check if code is critical
|
|
371
|
+
*/
|
|
372
|
+
isCriticalCode(files: string[]): boolean;
|
|
373
|
+
}
|
|
374
|
+
/**
|
|
375
|
+
* Individual expert interface
|
|
376
|
+
*/
|
|
377
|
+
export interface IExpert {
|
|
378
|
+
/**
|
|
379
|
+
* Expert type identifier
|
|
380
|
+
*/
|
|
381
|
+
readonly type: string;
|
|
382
|
+
/**
|
|
383
|
+
* Expert display name
|
|
384
|
+
*/
|
|
385
|
+
readonly name: string;
|
|
386
|
+
/**
|
|
387
|
+
* Review files and return findings
|
|
388
|
+
*/
|
|
389
|
+
review(files: string[], context?: unknown): Promise<IExpertReviewResult>;
|
|
390
|
+
}
|
|
391
|
+
/**
|
|
392
|
+
* Consensus engine interface
|
|
393
|
+
*/
|
|
394
|
+
export interface IConsensusEngine {
|
|
395
|
+
/**
|
|
396
|
+
* Calculate consensus from expert votes
|
|
397
|
+
*/
|
|
398
|
+
calculateConsensus(results: IExpertReviewResult[], isCritical: boolean): IPanelConsensus;
|
|
399
|
+
}
|
|
400
|
+
/**
|
|
401
|
+
* Vote collector interface
|
|
402
|
+
*/
|
|
403
|
+
export interface IVoteCollector {
|
|
404
|
+
/**
|
|
405
|
+
* Collect vote from expert
|
|
406
|
+
*/
|
|
407
|
+
collect(result: IExpertReviewResult): void;
|
|
408
|
+
/**
|
|
409
|
+
* Get all collected votes
|
|
410
|
+
*/
|
|
411
|
+
getVotes(): IExpertReviewResult[];
|
|
412
|
+
/**
|
|
413
|
+
* Check if all expected votes collected
|
|
414
|
+
*/
|
|
415
|
+
isComplete(expectedCount: number): boolean;
|
|
416
|
+
/**
|
|
417
|
+
* Clear collected votes
|
|
418
|
+
*/
|
|
419
|
+
clear(): void;
|
|
420
|
+
}
|
|
421
|
+
/**
|
|
422
|
+
* Service locator for dependency injection
|
|
423
|
+
*/
|
|
424
|
+
export interface IServiceLocator {
|
|
425
|
+
/**
|
|
426
|
+
* Register a service
|
|
427
|
+
*/
|
|
428
|
+
register<T>(name: string, service: T): void;
|
|
429
|
+
/**
|
|
430
|
+
* Get a service
|
|
431
|
+
*/
|
|
432
|
+
get<T>(name: string): T | undefined;
|
|
433
|
+
/**
|
|
434
|
+
* Check if service exists
|
|
435
|
+
*/
|
|
436
|
+
has(name: string): boolean;
|
|
437
|
+
/**
|
|
438
|
+
* Clear all services
|
|
439
|
+
*/
|
|
440
|
+
clear(): void;
|
|
441
|
+
}
|
|
442
|
+
/**
|
|
443
|
+
* Get global service locator
|
|
444
|
+
*/
|
|
445
|
+
export declare function getServiceLocator(): IServiceLocator;
|
|
446
|
+
/**
|
|
447
|
+
* Reset service locator (for testing)
|
|
448
|
+
*/
|
|
449
|
+
export declare function resetServiceLocator(): void;
|
|
450
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/interfaces/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Core Interfaces
|
|
3
|
+
* @description Abstract interfaces for dependency injection and testing
|
|
4
|
+
*
|
|
5
|
+
* These interfaces define contracts for core services, enabling:
|
|
6
|
+
* - Dependency injection for loose coupling
|
|
7
|
+
* - Easy mocking in unit tests
|
|
8
|
+
* - Clear documentation of service capabilities
|
|
9
|
+
*
|
|
10
|
+
* @version 2.8.0
|
|
11
|
+
*/
|
|
12
|
+
// =============================================================================
|
|
13
|
+
// Simple Service Locator Implementation
|
|
14
|
+
// =============================================================================
|
|
15
|
+
class ServiceLocator {
|
|
16
|
+
services = new Map();
|
|
17
|
+
register(name, service) {
|
|
18
|
+
this.services.set(name, service);
|
|
19
|
+
}
|
|
20
|
+
get(name) {
|
|
21
|
+
return this.services.get(name);
|
|
22
|
+
}
|
|
23
|
+
has(name) {
|
|
24
|
+
return this.services.has(name);
|
|
25
|
+
}
|
|
26
|
+
clear() {
|
|
27
|
+
this.services.clear();
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
// Global service locator instance
|
|
31
|
+
let globalServiceLocator = null;
|
|
32
|
+
/**
|
|
33
|
+
* Get global service locator
|
|
34
|
+
*/
|
|
35
|
+
export function getServiceLocator() {
|
|
36
|
+
if (!globalServiceLocator) {
|
|
37
|
+
globalServiceLocator = new ServiceLocator();
|
|
38
|
+
}
|
|
39
|
+
return globalServiceLocator;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Reset service locator (for testing)
|
|
43
|
+
*/
|
|
44
|
+
export function resetServiceLocator() {
|
|
45
|
+
if (globalServiceLocator) {
|
|
46
|
+
globalServiceLocator.clear();
|
|
47
|
+
}
|
|
48
|
+
globalServiceLocator = null;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/interfaces/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AA4hBH,gFAAgF;AAChF,wCAAwC;AACxC,gFAAgF;AAEhF,MAAM,cAAc;IACV,QAAQ,GAAG,IAAI,GAAG,EAAmB,CAAA;IAE7C,QAAQ,CAAI,IAAY,EAAE,OAAU;QAClC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IAClC,CAAC;IAED,GAAG,CAAI,IAAY;QACjB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAkB,CAAA;IACjD,CAAC;IAED,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAChC,CAAC;IAED,KAAK;QACH,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAA;IACvB,CAAC;CACF;AAED,kCAAkC;AAClC,IAAI,oBAAoB,GAA2B,IAAI,CAAA;AAEvD;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC1B,oBAAoB,GAAG,IAAI,cAAc,EAAE,CAAA;IAC7C,CAAC;IACD,OAAO,oBAAoB,CAAA;AAC7B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB;IACjC,IAAI,oBAAoB,EAAE,CAAC;QACzB,oBAAoB,CAAC,KAAK,EAAE,CAAA;IAC9B,CAAC;IACD,oBAAoB,GAAG,IAAI,CAAA;AAC7B,CAAC"}
|