@danielsimonjr/memoryjs 1.0.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (300) hide show
  1. package/README.md +385 -113
  2. package/README.md.backup-1768084780988 +266 -0
  3. package/dist/index.cjs +24156 -0
  4. package/dist/index.cjs.map +1 -0
  5. package/dist/index.d.cts +16967 -0
  6. package/dist/index.d.ts +16963 -11
  7. package/dist/index.js +23887 -19
  8. package/dist/index.js.map +1 -1
  9. package/dist/workers/levenshteinWorker.cjs +102 -0
  10. package/dist/workers/levenshteinWorker.cjs.map +1 -0
  11. package/dist/workers/levenshteinWorker.js +57 -91
  12. package/dist/workers/levenshteinWorker.js.map +1 -1
  13. package/package.json +75 -69
  14. package/dist/core/EntityManager.d.ts +0 -268
  15. package/dist/core/EntityManager.d.ts.map +0 -1
  16. package/dist/core/EntityManager.js +0 -512
  17. package/dist/core/EntityManager.js.map +0 -1
  18. package/dist/core/GraphEventEmitter.d.ts +0 -202
  19. package/dist/core/GraphEventEmitter.d.ts.map +0 -1
  20. package/dist/core/GraphEventEmitter.js +0 -347
  21. package/dist/core/GraphEventEmitter.js.map +0 -1
  22. package/dist/core/GraphStorage.d.ts +0 -395
  23. package/dist/core/GraphStorage.d.ts.map +0 -1
  24. package/dist/core/GraphStorage.js +0 -786
  25. package/dist/core/GraphStorage.js.map +0 -1
  26. package/dist/core/GraphTraversal.d.ts +0 -141
  27. package/dist/core/GraphTraversal.d.ts.map +0 -1
  28. package/dist/core/GraphTraversal.js +0 -574
  29. package/dist/core/GraphTraversal.js.map +0 -1
  30. package/dist/core/HierarchyManager.d.ts +0 -111
  31. package/dist/core/HierarchyManager.d.ts.map +0 -1
  32. package/dist/core/HierarchyManager.js +0 -225
  33. package/dist/core/HierarchyManager.js.map +0 -1
  34. package/dist/core/ManagerContext.d.ts +0 -76
  35. package/dist/core/ManagerContext.d.ts.map +0 -1
  36. package/dist/core/ManagerContext.js +0 -129
  37. package/dist/core/ManagerContext.js.map +0 -1
  38. package/dist/core/ObservationManager.d.ts +0 -85
  39. package/dist/core/ObservationManager.d.ts.map +0 -1
  40. package/dist/core/ObservationManager.js +0 -124
  41. package/dist/core/ObservationManager.js.map +0 -1
  42. package/dist/core/RelationManager.d.ts +0 -131
  43. package/dist/core/RelationManager.d.ts.map +0 -1
  44. package/dist/core/RelationManager.js +0 -212
  45. package/dist/core/RelationManager.js.map +0 -1
  46. package/dist/core/SQLiteStorage.d.ts +0 -354
  47. package/dist/core/SQLiteStorage.d.ts.map +0 -1
  48. package/dist/core/SQLiteStorage.js +0 -919
  49. package/dist/core/SQLiteStorage.js.map +0 -1
  50. package/dist/core/StorageFactory.d.ts +0 -45
  51. package/dist/core/StorageFactory.d.ts.map +0 -1
  52. package/dist/core/StorageFactory.js +0 -65
  53. package/dist/core/StorageFactory.js.map +0 -1
  54. package/dist/core/TransactionManager.d.ts +0 -464
  55. package/dist/core/TransactionManager.d.ts.map +0 -1
  56. package/dist/core/TransactionManager.js +0 -869
  57. package/dist/core/TransactionManager.js.map +0 -1
  58. package/dist/core/index.d.ts +0 -17
  59. package/dist/core/index.d.ts.map +0 -1
  60. package/dist/core/index.js +0 -20
  61. package/dist/core/index.js.map +0 -1
  62. package/dist/features/AnalyticsManager.d.ts +0 -44
  63. package/dist/features/AnalyticsManager.d.ts.map +0 -1
  64. package/dist/features/AnalyticsManager.js +0 -224
  65. package/dist/features/AnalyticsManager.js.map +0 -1
  66. package/dist/features/ArchiveManager.d.ts +0 -133
  67. package/dist/features/ArchiveManager.d.ts.map +0 -1
  68. package/dist/features/ArchiveManager.js +0 -282
  69. package/dist/features/ArchiveManager.js.map +0 -1
  70. package/dist/features/CompressionManager.d.ts +0 -119
  71. package/dist/features/CompressionManager.d.ts.map +0 -1
  72. package/dist/features/CompressionManager.js +0 -470
  73. package/dist/features/CompressionManager.js.map +0 -1
  74. package/dist/features/IOManager.d.ts +0 -225
  75. package/dist/features/IOManager.d.ts.map +0 -1
  76. package/dist/features/IOManager.js +0 -1093
  77. package/dist/features/IOManager.js.map +0 -1
  78. package/dist/features/KeywordExtractor.d.ts +0 -61
  79. package/dist/features/KeywordExtractor.d.ts.map +0 -1
  80. package/dist/features/KeywordExtractor.js +0 -127
  81. package/dist/features/KeywordExtractor.js.map +0 -1
  82. package/dist/features/ObservationNormalizer.d.ts +0 -90
  83. package/dist/features/ObservationNormalizer.d.ts.map +0 -1
  84. package/dist/features/ObservationNormalizer.js +0 -194
  85. package/dist/features/ObservationNormalizer.js.map +0 -1
  86. package/dist/features/StreamingExporter.d.ts +0 -128
  87. package/dist/features/StreamingExporter.d.ts.map +0 -1
  88. package/dist/features/StreamingExporter.js +0 -212
  89. package/dist/features/StreamingExporter.js.map +0 -1
  90. package/dist/features/TagManager.d.ts +0 -147
  91. package/dist/features/TagManager.d.ts.map +0 -1
  92. package/dist/features/TagManager.js +0 -211
  93. package/dist/features/TagManager.js.map +0 -1
  94. package/dist/features/index.d.ts +0 -14
  95. package/dist/features/index.d.ts.map +0 -1
  96. package/dist/features/index.js +0 -15
  97. package/dist/features/index.js.map +0 -1
  98. package/dist/index.d.ts.map +0 -1
  99. package/dist/search/BM25Search.d.ts +0 -148
  100. package/dist/search/BM25Search.d.ts.map +0 -1
  101. package/dist/search/BM25Search.js +0 -340
  102. package/dist/search/BM25Search.js.map +0 -1
  103. package/dist/search/BasicSearch.d.ts +0 -51
  104. package/dist/search/BasicSearch.d.ts.map +0 -1
  105. package/dist/search/BasicSearch.js +0 -138
  106. package/dist/search/BasicSearch.js.map +0 -1
  107. package/dist/search/BooleanSearch.d.ts +0 -98
  108. package/dist/search/BooleanSearch.d.ts.map +0 -1
  109. package/dist/search/BooleanSearch.js +0 -431
  110. package/dist/search/BooleanSearch.js.map +0 -1
  111. package/dist/search/EarlyTerminationManager.d.ts +0 -140
  112. package/dist/search/EarlyTerminationManager.d.ts.map +0 -1
  113. package/dist/search/EarlyTerminationManager.js +0 -280
  114. package/dist/search/EarlyTerminationManager.js.map +0 -1
  115. package/dist/search/EmbeddingCache.d.ts +0 -175
  116. package/dist/search/EmbeddingCache.d.ts.map +0 -1
  117. package/dist/search/EmbeddingCache.js +0 -247
  118. package/dist/search/EmbeddingCache.js.map +0 -1
  119. package/dist/search/EmbeddingService.d.ts +0 -277
  120. package/dist/search/EmbeddingService.d.ts.map +0 -1
  121. package/dist/search/EmbeddingService.js +0 -531
  122. package/dist/search/EmbeddingService.js.map +0 -1
  123. package/dist/search/FuzzySearch.d.ts +0 -118
  124. package/dist/search/FuzzySearch.d.ts.map +0 -1
  125. package/dist/search/FuzzySearch.js +0 -313
  126. package/dist/search/FuzzySearch.js.map +0 -1
  127. package/dist/search/HybridScorer.d.ts +0 -181
  128. package/dist/search/HybridScorer.d.ts.map +0 -1
  129. package/dist/search/HybridScorer.js +0 -258
  130. package/dist/search/HybridScorer.js.map +0 -1
  131. package/dist/search/HybridSearchManager.d.ts +0 -80
  132. package/dist/search/HybridSearchManager.d.ts.map +0 -1
  133. package/dist/search/HybridSearchManager.js +0 -188
  134. package/dist/search/HybridSearchManager.js.map +0 -1
  135. package/dist/search/IncrementalIndexer.d.ts +0 -201
  136. package/dist/search/IncrementalIndexer.d.ts.map +0 -1
  137. package/dist/search/IncrementalIndexer.js +0 -343
  138. package/dist/search/IncrementalIndexer.js.map +0 -1
  139. package/dist/search/OptimizedInvertedIndex.d.ts +0 -163
  140. package/dist/search/OptimizedInvertedIndex.d.ts.map +0 -1
  141. package/dist/search/OptimizedInvertedIndex.js +0 -359
  142. package/dist/search/OptimizedInvertedIndex.js.map +0 -1
  143. package/dist/search/ParallelSearchExecutor.d.ts +0 -172
  144. package/dist/search/ParallelSearchExecutor.d.ts.map +0 -1
  145. package/dist/search/ParallelSearchExecutor.js +0 -310
  146. package/dist/search/ParallelSearchExecutor.js.map +0 -1
  147. package/dist/search/QuantizedVectorStore.d.ts +0 -171
  148. package/dist/search/QuantizedVectorStore.d.ts.map +0 -1
  149. package/dist/search/QuantizedVectorStore.js +0 -308
  150. package/dist/search/QuantizedVectorStore.js.map +0 -1
  151. package/dist/search/QueryAnalyzer.d.ts +0 -76
  152. package/dist/search/QueryAnalyzer.d.ts.map +0 -1
  153. package/dist/search/QueryAnalyzer.js +0 -228
  154. package/dist/search/QueryAnalyzer.js.map +0 -1
  155. package/dist/search/QueryCostEstimator.d.ts +0 -244
  156. package/dist/search/QueryCostEstimator.d.ts.map +0 -1
  157. package/dist/search/QueryCostEstimator.js +0 -653
  158. package/dist/search/QueryCostEstimator.js.map +0 -1
  159. package/dist/search/QueryPlanCache.d.ts +0 -220
  160. package/dist/search/QueryPlanCache.d.ts.map +0 -1
  161. package/dist/search/QueryPlanCache.js +0 -380
  162. package/dist/search/QueryPlanCache.js.map +0 -1
  163. package/dist/search/QueryPlanner.d.ts +0 -58
  164. package/dist/search/QueryPlanner.d.ts.map +0 -1
  165. package/dist/search/QueryPlanner.js +0 -138
  166. package/dist/search/QueryPlanner.js.map +0 -1
  167. package/dist/search/RankedSearch.d.ts +0 -71
  168. package/dist/search/RankedSearch.d.ts.map +0 -1
  169. package/dist/search/RankedSearch.js +0 -239
  170. package/dist/search/RankedSearch.js.map +0 -1
  171. package/dist/search/ReflectionManager.d.ts +0 -120
  172. package/dist/search/ReflectionManager.d.ts.map +0 -1
  173. package/dist/search/ReflectionManager.js +0 -232
  174. package/dist/search/ReflectionManager.js.map +0 -1
  175. package/dist/search/SavedSearchManager.d.ts +0 -79
  176. package/dist/search/SavedSearchManager.d.ts.map +0 -1
  177. package/dist/search/SavedSearchManager.js +0 -147
  178. package/dist/search/SavedSearchManager.js.map +0 -1
  179. package/dist/search/SearchFilterChain.d.ts +0 -120
  180. package/dist/search/SearchFilterChain.d.ts.map +0 -1
  181. package/dist/search/SearchFilterChain.js +0 -186
  182. package/dist/search/SearchFilterChain.js.map +0 -1
  183. package/dist/search/SearchManager.d.ts +0 -326
  184. package/dist/search/SearchManager.d.ts.map +0 -1
  185. package/dist/search/SearchManager.js +0 -454
  186. package/dist/search/SearchManager.js.map +0 -1
  187. package/dist/search/SearchSuggestions.d.ts +0 -27
  188. package/dist/search/SearchSuggestions.d.ts.map +0 -1
  189. package/dist/search/SearchSuggestions.js +0 -58
  190. package/dist/search/SearchSuggestions.js.map +0 -1
  191. package/dist/search/SemanticSearch.d.ts +0 -149
  192. package/dist/search/SemanticSearch.d.ts.map +0 -1
  193. package/dist/search/SemanticSearch.js +0 -324
  194. package/dist/search/SemanticSearch.js.map +0 -1
  195. package/dist/search/SymbolicSearch.d.ts +0 -61
  196. package/dist/search/SymbolicSearch.d.ts.map +0 -1
  197. package/dist/search/SymbolicSearch.js +0 -164
  198. package/dist/search/SymbolicSearch.js.map +0 -1
  199. package/dist/search/TFIDFEventSync.d.ts +0 -85
  200. package/dist/search/TFIDFEventSync.d.ts.map +0 -1
  201. package/dist/search/TFIDFEventSync.js +0 -134
  202. package/dist/search/TFIDFEventSync.js.map +0 -1
  203. package/dist/search/TFIDFIndexManager.d.ts +0 -151
  204. package/dist/search/TFIDFIndexManager.d.ts.map +0 -1
  205. package/dist/search/TFIDFIndexManager.js +0 -433
  206. package/dist/search/TFIDFIndexManager.js.map +0 -1
  207. package/dist/search/VectorStore.d.ts +0 -235
  208. package/dist/search/VectorStore.d.ts.map +0 -1
  209. package/dist/search/VectorStore.js +0 -312
  210. package/dist/search/VectorStore.js.map +0 -1
  211. package/dist/search/index.d.ts +0 -35
  212. package/dist/search/index.d.ts.map +0 -1
  213. package/dist/search/index.js +0 -53
  214. package/dist/search/index.js.map +0 -1
  215. package/dist/types/index.d.ts +0 -13
  216. package/dist/types/index.d.ts.map +0 -1
  217. package/dist/types/index.js +0 -13
  218. package/dist/types/index.js.map +0 -1
  219. package/dist/types/types.d.ts +0 -1811
  220. package/dist/types/types.d.ts.map +0 -1
  221. package/dist/types/types.js +0 -10
  222. package/dist/types/types.js.map +0 -1
  223. package/dist/utils/BatchProcessor.d.ts +0 -271
  224. package/dist/utils/BatchProcessor.d.ts.map +0 -1
  225. package/dist/utils/BatchProcessor.js +0 -377
  226. package/dist/utils/BatchProcessor.js.map +0 -1
  227. package/dist/utils/MemoryMonitor.d.ts +0 -176
  228. package/dist/utils/MemoryMonitor.d.ts.map +0 -1
  229. package/dist/utils/MemoryMonitor.js +0 -306
  230. package/dist/utils/MemoryMonitor.js.map +0 -1
  231. package/dist/utils/WorkerPoolManager.d.ts +0 -233
  232. package/dist/utils/WorkerPoolManager.d.ts.map +0 -1
  233. package/dist/utils/WorkerPoolManager.js +0 -421
  234. package/dist/utils/WorkerPoolManager.js.map +0 -1
  235. package/dist/utils/compressedCache.d.ts +0 -221
  236. package/dist/utils/compressedCache.d.ts.map +0 -1
  237. package/dist/utils/compressedCache.js +0 -349
  238. package/dist/utils/compressedCache.js.map +0 -1
  239. package/dist/utils/compressionUtil.d.ts +0 -214
  240. package/dist/utils/compressionUtil.d.ts.map +0 -1
  241. package/dist/utils/compressionUtil.js +0 -248
  242. package/dist/utils/compressionUtil.js.map +0 -1
  243. package/dist/utils/constants.d.ts +0 -245
  244. package/dist/utils/constants.d.ts.map +0 -1
  245. package/dist/utils/constants.js +0 -253
  246. package/dist/utils/constants.js.map +0 -1
  247. package/dist/utils/entityUtils.d.ts +0 -379
  248. package/dist/utils/entityUtils.d.ts.map +0 -1
  249. package/dist/utils/entityUtils.js +0 -649
  250. package/dist/utils/entityUtils.js.map +0 -1
  251. package/dist/utils/errors.d.ts +0 -95
  252. package/dist/utils/errors.d.ts.map +0 -1
  253. package/dist/utils/errors.js +0 -146
  254. package/dist/utils/errors.js.map +0 -1
  255. package/dist/utils/formatters.d.ts +0 -145
  256. package/dist/utils/formatters.d.ts.map +0 -1
  257. package/dist/utils/formatters.js +0 -133
  258. package/dist/utils/formatters.js.map +0 -1
  259. package/dist/utils/index.d.ts +0 -26
  260. package/dist/utils/index.d.ts.map +0 -1
  261. package/dist/utils/index.js +0 -88
  262. package/dist/utils/index.js.map +0 -1
  263. package/dist/utils/indexes.d.ts +0 -270
  264. package/dist/utils/indexes.d.ts.map +0 -1
  265. package/dist/utils/indexes.js +0 -527
  266. package/dist/utils/indexes.js.map +0 -1
  267. package/dist/utils/logger.d.ts +0 -31
  268. package/dist/utils/logger.d.ts.map +0 -1
  269. package/dist/utils/logger.js +0 -41
  270. package/dist/utils/logger.js.map +0 -1
  271. package/dist/utils/operationUtils.d.ts +0 -124
  272. package/dist/utils/operationUtils.d.ts.map +0 -1
  273. package/dist/utils/operationUtils.js +0 -176
  274. package/dist/utils/operationUtils.js.map +0 -1
  275. package/dist/utils/parallelUtils.d.ts +0 -76
  276. package/dist/utils/parallelUtils.d.ts.map +0 -1
  277. package/dist/utils/parallelUtils.js +0 -192
  278. package/dist/utils/parallelUtils.js.map +0 -1
  279. package/dist/utils/schemas.d.ts +0 -556
  280. package/dist/utils/schemas.d.ts.map +0 -1
  281. package/dist/utils/schemas.js +0 -485
  282. package/dist/utils/schemas.js.map +0 -1
  283. package/dist/utils/searchAlgorithms.d.ts +0 -99
  284. package/dist/utils/searchAlgorithms.d.ts.map +0 -1
  285. package/dist/utils/searchAlgorithms.js +0 -168
  286. package/dist/utils/searchAlgorithms.js.map +0 -1
  287. package/dist/utils/searchCache.d.ts +0 -108
  288. package/dist/utils/searchCache.d.ts.map +0 -1
  289. package/dist/utils/searchCache.js +0 -210
  290. package/dist/utils/searchCache.js.map +0 -1
  291. package/dist/utils/taskScheduler.d.ts +0 -294
  292. package/dist/utils/taskScheduler.d.ts.map +0 -1
  293. package/dist/utils/taskScheduler.js +0 -487
  294. package/dist/utils/taskScheduler.js.map +0 -1
  295. package/dist/workers/index.d.ts +0 -12
  296. package/dist/workers/index.d.ts.map +0 -1
  297. package/dist/workers/index.js +0 -10
  298. package/dist/workers/index.js.map +0 -1
  299. package/dist/workers/levenshteinWorker.d.ts +0 -60
  300. package/dist/workers/levenshteinWorker.d.ts.map +0 -1
@@ -1,202 +0,0 @@
1
- /**
2
- * Graph Event Emitter
3
- *
4
- * Phase 10 Sprint 2: Provides event-based notifications for graph changes.
5
- * Enables loose coupling between graph operations and dependent systems
6
- * like search indexes, analytics, and external integrations.
7
- *
8
- * @module core/GraphEventEmitter
9
- */
10
- import type { GraphEventType, GraphEvent, GraphEventListener, GraphEventMap, Entity, Relation } from '../types/index.js';
11
- /**
12
- * Phase 10 Sprint 2: Event emitter for graph change notifications.
13
- *
14
- * Provides a type-safe event system for subscribing to and emitting
15
- * graph change events. Supports wildcard listeners for all events.
16
- *
17
- * @example
18
- * ```typescript
19
- * const emitter = new GraphEventEmitter();
20
- *
21
- * // Listen to specific event types
22
- * emitter.on('entity:created', (event) => {
23
- * console.log(`Entity ${event.entity.name} created`);
24
- * });
25
- *
26
- * // Listen to all events
27
- * emitter.onAny((event) => {
28
- * console.log(`Event: ${event.type}`);
29
- * });
30
- *
31
- * // Emit an event
32
- * emitter.emitEntityCreated(entity);
33
- *
34
- * // Remove listener
35
- * const unsubscribe = emitter.on('entity:deleted', handler);
36
- * unsubscribe();
37
- * ```
38
- */
39
- export declare class GraphEventEmitter {
40
- /**
41
- * Map of event types to their registered listeners.
42
- */
43
- private listeners;
44
- /**
45
- * Listeners that receive all events regardless of type.
46
- */
47
- private wildcardListeners;
48
- /**
49
- * Whether to suppress errors from listeners (default: true).
50
- * When true, listener errors are logged but don't stop event propagation.
51
- */
52
- private suppressListenerErrors;
53
- /**
54
- * Create a new GraphEventEmitter instance.
55
- *
56
- * @param options - Optional configuration
57
- */
58
- constructor(options?: {
59
- suppressListenerErrors?: boolean;
60
- });
61
- /**
62
- * Subscribe to a specific event type.
63
- *
64
- * @template K - The event type key
65
- * @param eventType - The event type to listen for
66
- * @param listener - Callback function to invoke when event occurs
67
- * @returns Unsubscribe function to remove the listener
68
- *
69
- * @example
70
- * ```typescript
71
- * const unsubscribe = emitter.on('entity:created', (event) => {
72
- * console.log(`Created: ${event.entity.name}`);
73
- * });
74
- *
75
- * // Later: unsubscribe();
76
- * ```
77
- */
78
- on<K extends GraphEventType>(eventType: K, listener: GraphEventListener<GraphEventMap[K]>): () => void;
79
- /**
80
- * Unsubscribe from a specific event type.
81
- *
82
- * @template K - The event type key
83
- * @param eventType - The event type to unsubscribe from
84
- * @param listener - The listener function to remove
85
- */
86
- off<K extends GraphEventType>(eventType: K, listener: GraphEventListener<GraphEventMap[K]>): void;
87
- /**
88
- * Subscribe to all event types.
89
- *
90
- * @param listener - Callback function to invoke for any event
91
- * @returns Unsubscribe function to remove the listener
92
- *
93
- * @example
94
- * ```typescript
95
- * emitter.onAny((event) => {
96
- * console.log(`Event: ${event.type} at ${event.timestamp}`);
97
- * });
98
- * ```
99
- */
100
- onAny(listener: GraphEventListener<GraphEvent>): () => void;
101
- /**
102
- * Unsubscribe from all events.
103
- *
104
- * @param listener - The listener function to remove
105
- */
106
- offAny(listener: GraphEventListener<GraphEvent>): void;
107
- /**
108
- * Subscribe to an event type, but only receive the first occurrence.
109
- *
110
- * @template K - The event type key
111
- * @param eventType - The event type to listen for once
112
- * @param listener - Callback function to invoke once
113
- * @returns Unsubscribe function to cancel before event occurs
114
- */
115
- once<K extends GraphEventType>(eventType: K, listener: GraphEventListener<GraphEventMap[K]>): () => void;
116
- /**
117
- * Remove all listeners for all event types.
118
- */
119
- removeAllListeners(): void;
120
- /**
121
- * Get the count of listeners for a specific event type.
122
- *
123
- * @param eventType - The event type to count listeners for
124
- * @returns Number of listeners registered
125
- */
126
- listenerCount(eventType?: GraphEventType): number;
127
- /**
128
- * Emit an event to all registered listeners.
129
- *
130
- * @param event - The event to emit
131
- */
132
- emit(event: GraphEvent): void;
133
- /**
134
- * Emit an entity:created event.
135
- *
136
- * @param entity - The entity that was created
137
- */
138
- emitEntityCreated(entity: Entity): void;
139
- /**
140
- * Emit an entity:updated event.
141
- *
142
- * @param entityName - Name of the updated entity
143
- * @param changes - The changes that were applied
144
- * @param previousValues - Optional previous values before update
145
- */
146
- emitEntityUpdated(entityName: string, changes: Partial<Entity>, previousValues?: Partial<Entity>): void;
147
- /**
148
- * Emit an entity:deleted event.
149
- *
150
- * @param entityName - Name of the deleted entity
151
- * @param entity - Optional entity data before deletion
152
- */
153
- emitEntityDeleted(entityName: string, entity?: Entity): void;
154
- /**
155
- * Emit a relation:created event.
156
- *
157
- * @param relation - The relation that was created
158
- */
159
- emitRelationCreated(relation: Relation): void;
160
- /**
161
- * Emit a relation:deleted event.
162
- *
163
- * @param from - Source entity name
164
- * @param to - Target entity name
165
- * @param relationType - Type of the deleted relation
166
- */
167
- emitRelationDeleted(from: string, to: string, relationType: string): void;
168
- /**
169
- * Emit an observation:added event.
170
- *
171
- * @param entityName - Name of the entity
172
- * @param observations - Observations that were added
173
- */
174
- emitObservationAdded(entityName: string, observations: string[]): void;
175
- /**
176
- * Emit an observation:deleted event.
177
- *
178
- * @param entityName - Name of the entity
179
- * @param observations - Observations that were deleted
180
- */
181
- emitObservationDeleted(entityName: string, observations: string[]): void;
182
- /**
183
- * Emit a graph:saved event.
184
- *
185
- * @param entityCount - Number of entities in the saved graph
186
- * @param relationCount - Number of relations in the saved graph
187
- */
188
- emitGraphSaved(entityCount: number, relationCount: number): void;
189
- /**
190
- * Emit a graph:loaded event.
191
- *
192
- * @param entityCount - Number of entities in the loaded graph
193
- * @param relationCount - Number of relations in the loaded graph
194
- */
195
- emitGraphLoaded(entityCount: number, relationCount: number): void;
196
- /**
197
- * Safely invoke a listener, optionally catching errors.
198
- * @private
199
- */
200
- private invokeListener;
201
- }
202
- //# sourceMappingURL=GraphEventEmitter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"GraphEventEmitter.d.ts","sourceRoot":"","sources":["../../src/core/GraphEventEmitter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,aAAa,EACb,MAAM,EACN,QAAQ,EAUT,MAAM,mBAAmB,CAAC;AAE3B;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,iBAAiB;IAC5B;;OAEG;IACH,OAAO,CAAC,SAAS,CAAgE;IAEjF;;OAEG;IACH,OAAO,CAAC,iBAAiB,CAAkD;IAE3E;;;OAGG;IACH,OAAO,CAAC,sBAAsB,CAAiB;IAE/C;;;;OAIG;gBACS,OAAO,CAAC,EAAE;QAAE,sBAAsB,CAAC,EAAE,OAAO,CAAA;KAAE;IAQ1D;;;;;;;;;;;;;;;;OAgBG;IACH,EAAE,CAAC,CAAC,SAAS,cAAc,EACzB,SAAS,EAAE,CAAC,EACZ,QAAQ,EAAE,kBAAkB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,GAC7C,MAAM,IAAI;IAYb;;;;;;OAMG;IACH,GAAG,CAAC,CAAC,SAAS,cAAc,EAC1B,SAAS,EAAE,CAAC,EACZ,QAAQ,EAAE,kBAAkB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,GAC7C,IAAI;IAOP;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,QAAQ,EAAE,kBAAkB,CAAC,UAAU,CAAC,GAAG,MAAM,IAAI;IAO3D;;;;OAIG;IACH,MAAM,CAAC,QAAQ,EAAE,kBAAkB,CAAC,UAAU,CAAC,GAAG,IAAI;IAItD;;;;;;;OAOG;IACH,IAAI,CAAC,CAAC,SAAS,cAAc,EAC3B,SAAS,EAAE,CAAC,EACZ,QAAQ,EAAE,kBAAkB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,GAC7C,MAAM,IAAI;IASb;;OAEG;IACH,kBAAkB,IAAI,IAAI;IAK1B;;;;;OAKG;IACH,aAAa,CAAC,SAAS,CAAC,EAAE,cAAc,GAAG,MAAM;IAcjD;;;;OAIG;IACH,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAe7B;;;;OAIG;IACH,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IASvC;;;;;;OAMG;IACH,iBAAiB,CACf,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,EACxB,cAAc,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,GAC/B,IAAI;IAWP;;;;;OAKG;IACH,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAU5D;;;;OAIG;IACH,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAS7C;;;;;;OAMG;IACH,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI;IAWzE;;;;;OAKG;IACH,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,IAAI;IAYtE;;;;;OAKG;IACH,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,IAAI;IAYxE;;;;;OAKG;IACH,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI;IAUhE;;;;;OAKG;IACH,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI;IAYjE;;;OAGG;IACH,OAAO,CAAC,cAAc;CAYvB"}
@@ -1,347 +0,0 @@
1
- /**
2
- * Graph Event Emitter
3
- *
4
- * Phase 10 Sprint 2: Provides event-based notifications for graph changes.
5
- * Enables loose coupling between graph operations and dependent systems
6
- * like search indexes, analytics, and external integrations.
7
- *
8
- * @module core/GraphEventEmitter
9
- */
10
- /**
11
- * Phase 10 Sprint 2: Event emitter for graph change notifications.
12
- *
13
- * Provides a type-safe event system for subscribing to and emitting
14
- * graph change events. Supports wildcard listeners for all events.
15
- *
16
- * @example
17
- * ```typescript
18
- * const emitter = new GraphEventEmitter();
19
- *
20
- * // Listen to specific event types
21
- * emitter.on('entity:created', (event) => {
22
- * console.log(`Entity ${event.entity.name} created`);
23
- * });
24
- *
25
- * // Listen to all events
26
- * emitter.onAny((event) => {
27
- * console.log(`Event: ${event.type}`);
28
- * });
29
- *
30
- * // Emit an event
31
- * emitter.emitEntityCreated(entity);
32
- *
33
- * // Remove listener
34
- * const unsubscribe = emitter.on('entity:deleted', handler);
35
- * unsubscribe();
36
- * ```
37
- */
38
- export class GraphEventEmitter {
39
- /**
40
- * Map of event types to their registered listeners.
41
- */
42
- listeners = new Map();
43
- /**
44
- * Listeners that receive all events regardless of type.
45
- */
46
- wildcardListeners = new Set();
47
- /**
48
- * Whether to suppress errors from listeners (default: true).
49
- * When true, listener errors are logged but don't stop event propagation.
50
- */
51
- suppressListenerErrors = true;
52
- /**
53
- * Create a new GraphEventEmitter instance.
54
- *
55
- * @param options - Optional configuration
56
- */
57
- constructor(options) {
58
- if (options?.suppressListenerErrors !== undefined) {
59
- this.suppressListenerErrors = options.suppressListenerErrors;
60
- }
61
- }
62
- // ==================== Subscription Methods ====================
63
- /**
64
- * Subscribe to a specific event type.
65
- *
66
- * @template K - The event type key
67
- * @param eventType - The event type to listen for
68
- * @param listener - Callback function to invoke when event occurs
69
- * @returns Unsubscribe function to remove the listener
70
- *
71
- * @example
72
- * ```typescript
73
- * const unsubscribe = emitter.on('entity:created', (event) => {
74
- * console.log(`Created: ${event.entity.name}`);
75
- * });
76
- *
77
- * // Later: unsubscribe();
78
- * ```
79
- */
80
- on(eventType, listener) {
81
- if (!this.listeners.has(eventType)) {
82
- this.listeners.set(eventType, new Set());
83
- }
84
- this.listeners.get(eventType).add(listener);
85
- // Return unsubscribe function
86
- return () => {
87
- this.off(eventType, listener);
88
- };
89
- }
90
- /**
91
- * Unsubscribe from a specific event type.
92
- *
93
- * @template K - The event type key
94
- * @param eventType - The event type to unsubscribe from
95
- * @param listener - The listener function to remove
96
- */
97
- off(eventType, listener) {
98
- const listeners = this.listeners.get(eventType);
99
- if (listeners) {
100
- listeners.delete(listener);
101
- }
102
- }
103
- /**
104
- * Subscribe to all event types.
105
- *
106
- * @param listener - Callback function to invoke for any event
107
- * @returns Unsubscribe function to remove the listener
108
- *
109
- * @example
110
- * ```typescript
111
- * emitter.onAny((event) => {
112
- * console.log(`Event: ${event.type} at ${event.timestamp}`);
113
- * });
114
- * ```
115
- */
116
- onAny(listener) {
117
- this.wildcardListeners.add(listener);
118
- return () => {
119
- this.offAny(listener);
120
- };
121
- }
122
- /**
123
- * Unsubscribe from all events.
124
- *
125
- * @param listener - The listener function to remove
126
- */
127
- offAny(listener) {
128
- this.wildcardListeners.delete(listener);
129
- }
130
- /**
131
- * Subscribe to an event type, but only receive the first occurrence.
132
- *
133
- * @template K - The event type key
134
- * @param eventType - The event type to listen for once
135
- * @param listener - Callback function to invoke once
136
- * @returns Unsubscribe function to cancel before event occurs
137
- */
138
- once(eventType, listener) {
139
- const wrappedListener = ((event) => {
140
- this.off(eventType, wrappedListener);
141
- listener(event);
142
- });
143
- return this.on(eventType, wrappedListener);
144
- }
145
- /**
146
- * Remove all listeners for all event types.
147
- */
148
- removeAllListeners() {
149
- this.listeners.clear();
150
- this.wildcardListeners.clear();
151
- }
152
- /**
153
- * Get the count of listeners for a specific event type.
154
- *
155
- * @param eventType - The event type to count listeners for
156
- * @returns Number of listeners registered
157
- */
158
- listenerCount(eventType) {
159
- if (eventType) {
160
- return (this.listeners.get(eventType)?.size ?? 0) + this.wildcardListeners.size;
161
- }
162
- // Count all listeners
163
- let count = this.wildcardListeners.size;
164
- for (const listeners of this.listeners.values()) {
165
- count += listeners.size;
166
- }
167
- return count;
168
- }
169
- // ==================== Emit Methods ====================
170
- /**
171
- * Emit an event to all registered listeners.
172
- *
173
- * @param event - The event to emit
174
- */
175
- emit(event) {
176
- // Notify type-specific listeners
177
- const typeListeners = this.listeners.get(event.type);
178
- if (typeListeners) {
179
- for (const listener of typeListeners) {
180
- this.invokeListener(listener, event);
181
- }
182
- }
183
- // Notify wildcard listeners
184
- for (const listener of this.wildcardListeners) {
185
- this.invokeListener(listener, event);
186
- }
187
- }
188
- /**
189
- * Emit an entity:created event.
190
- *
191
- * @param entity - The entity that was created
192
- */
193
- emitEntityCreated(entity) {
194
- const event = {
195
- type: 'entity:created',
196
- timestamp: new Date().toISOString(),
197
- entity,
198
- };
199
- this.emit(event);
200
- }
201
- /**
202
- * Emit an entity:updated event.
203
- *
204
- * @param entityName - Name of the updated entity
205
- * @param changes - The changes that were applied
206
- * @param previousValues - Optional previous values before update
207
- */
208
- emitEntityUpdated(entityName, changes, previousValues) {
209
- const event = {
210
- type: 'entity:updated',
211
- timestamp: new Date().toISOString(),
212
- entityName,
213
- changes,
214
- previousValues,
215
- };
216
- this.emit(event);
217
- }
218
- /**
219
- * Emit an entity:deleted event.
220
- *
221
- * @param entityName - Name of the deleted entity
222
- * @param entity - Optional entity data before deletion
223
- */
224
- emitEntityDeleted(entityName, entity) {
225
- const event = {
226
- type: 'entity:deleted',
227
- timestamp: new Date().toISOString(),
228
- entityName,
229
- entity,
230
- };
231
- this.emit(event);
232
- }
233
- /**
234
- * Emit a relation:created event.
235
- *
236
- * @param relation - The relation that was created
237
- */
238
- emitRelationCreated(relation) {
239
- const event = {
240
- type: 'relation:created',
241
- timestamp: new Date().toISOString(),
242
- relation,
243
- };
244
- this.emit(event);
245
- }
246
- /**
247
- * Emit a relation:deleted event.
248
- *
249
- * @param from - Source entity name
250
- * @param to - Target entity name
251
- * @param relationType - Type of the deleted relation
252
- */
253
- emitRelationDeleted(from, to, relationType) {
254
- const event = {
255
- type: 'relation:deleted',
256
- timestamp: new Date().toISOString(),
257
- from,
258
- to,
259
- relationType,
260
- };
261
- this.emit(event);
262
- }
263
- /**
264
- * Emit an observation:added event.
265
- *
266
- * @param entityName - Name of the entity
267
- * @param observations - Observations that were added
268
- */
269
- emitObservationAdded(entityName, observations) {
270
- if (observations.length === 0)
271
- return;
272
- const event = {
273
- type: 'observation:added',
274
- timestamp: new Date().toISOString(),
275
- entityName,
276
- observations,
277
- };
278
- this.emit(event);
279
- }
280
- /**
281
- * Emit an observation:deleted event.
282
- *
283
- * @param entityName - Name of the entity
284
- * @param observations - Observations that were deleted
285
- */
286
- emitObservationDeleted(entityName, observations) {
287
- if (observations.length === 0)
288
- return;
289
- const event = {
290
- type: 'observation:deleted',
291
- timestamp: new Date().toISOString(),
292
- entityName,
293
- observations,
294
- };
295
- this.emit(event);
296
- }
297
- /**
298
- * Emit a graph:saved event.
299
- *
300
- * @param entityCount - Number of entities in the saved graph
301
- * @param relationCount - Number of relations in the saved graph
302
- */
303
- emitGraphSaved(entityCount, relationCount) {
304
- const event = {
305
- type: 'graph:saved',
306
- timestamp: new Date().toISOString(),
307
- entityCount,
308
- relationCount,
309
- };
310
- this.emit(event);
311
- }
312
- /**
313
- * Emit a graph:loaded event.
314
- *
315
- * @param entityCount - Number of entities in the loaded graph
316
- * @param relationCount - Number of relations in the loaded graph
317
- */
318
- emitGraphLoaded(entityCount, relationCount) {
319
- const event = {
320
- type: 'graph:loaded',
321
- timestamp: new Date().toISOString(),
322
- entityCount,
323
- relationCount,
324
- };
325
- this.emit(event);
326
- }
327
- // ==================== Helper Methods ====================
328
- /**
329
- * Safely invoke a listener, optionally catching errors.
330
- * @private
331
- */
332
- invokeListener(listener, event) {
333
- if (this.suppressListenerErrors) {
334
- try {
335
- listener(event);
336
- }
337
- catch (error) {
338
- // Log but don't propagate errors from listeners
339
- console.error(`GraphEventEmitter: Listener error for ${event.type}:`, error);
340
- }
341
- }
342
- else {
343
- listener(event);
344
- }
345
- }
346
- }
347
- //# sourceMappingURL=GraphEventEmitter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"GraphEventEmitter.js","sourceRoot":"","sources":["../../src/core/GraphEventEmitter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAoBH;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,OAAO,iBAAiB;IAC5B;;OAEG;IACK,SAAS,GAAsD,IAAI,GAAG,EAAE,CAAC;IAEjF;;OAEG;IACK,iBAAiB,GAAwC,IAAI,GAAG,EAAE,CAAC;IAE3E;;;OAGG;IACK,sBAAsB,GAAY,IAAI,CAAC;IAE/C;;;;OAIG;IACH,YAAY,OAA8C;QACxD,IAAI,OAAO,EAAE,sBAAsB,KAAK,SAAS,EAAE,CAAC;YAClD,IAAI,CAAC,sBAAsB,GAAG,OAAO,CAAC,sBAAsB,CAAC;QAC/D,CAAC;IACH,CAAC;IAED,iEAAiE;IAEjE;;;;;;;;;;;;;;;;OAgBG;IACH,EAAE,CACA,SAAY,EACZ,QAA8C;QAE9C,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAE7C,8BAA8B;QAC9B,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAChC,CAAC,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,GAAG,CACD,SAAY,EACZ,QAA8C;QAE9C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAChD,IAAI,SAAS,EAAE,CAAC;YACd,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,QAAwC;QAC5C,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACrC,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACxB,CAAC,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,QAAwC;QAC7C,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAED;;;;;;;OAOG;IACH,IAAI,CACF,SAAY,EACZ,QAA8C;QAE9C,MAAM,eAAe,GAAG,CAAC,CAAC,KAAuB,EAAE,EAAE;YACnD,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;YACrC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC,CAAyC,CAAC;QAE3C,OAAO,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,kBAAkB;QAChB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;IACjC,CAAC;IAED;;;;;OAKG;IACH,aAAa,CAAC,SAA0B;QACtC,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;QAClF,CAAC;QACD,sBAAsB;QACtB,IAAI,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;QACxC,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;YAChD,KAAK,IAAI,SAAS,CAAC,IAAI,CAAC;QAC1B,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,yDAAyD;IAEzD;;;;OAIG;IACH,IAAI,CAAC,KAAiB;QACpB,iCAAiC;QACjC,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACrD,IAAI,aAAa,EAAE,CAAC;YAClB,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE,CAAC;gBACrC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;QAED,4BAA4B;QAC5B,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC9C,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,iBAAiB,CAAC,MAAc;QAC9B,MAAM,KAAK,GAAuB;YAChC,IAAI,EAAE,gBAAgB;YACtB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,MAAM;SACP,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC;IAED;;;;;;OAMG;IACH,iBAAiB,CACf,UAAkB,EAClB,OAAwB,EACxB,cAAgC;QAEhC,MAAM,KAAK,GAAuB;YAChC,IAAI,EAAE,gBAAgB;YACtB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,UAAU;YACV,OAAO;YACP,cAAc;SACf,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC;IAED;;;;;OAKG;IACH,iBAAiB,CAAC,UAAkB,EAAE,MAAe;QACnD,MAAM,KAAK,GAAuB;YAChC,IAAI,EAAE,gBAAgB;YACtB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,UAAU;YACV,MAAM;SACP,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC;IAED;;;;OAIG;IACH,mBAAmB,CAAC,QAAkB;QACpC,MAAM,KAAK,GAAyB;YAClC,IAAI,EAAE,kBAAkB;YACxB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,QAAQ;SACT,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC;IAED;;;;;;OAMG;IACH,mBAAmB,CAAC,IAAY,EAAE,EAAU,EAAE,YAAoB;QAChE,MAAM,KAAK,GAAyB;YAClC,IAAI,EAAE,kBAAkB;YACxB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,IAAI;YACJ,EAAE;YACF,YAAY;SACb,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC;IAED;;;;;OAKG;IACH,oBAAoB,CAAC,UAAkB,EAAE,YAAsB;QAC7D,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAEtC,MAAM,KAAK,GAA0B;YACnC,IAAI,EAAE,mBAAmB;YACzB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,UAAU;YACV,YAAY;SACb,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC;IAED;;;;;OAKG;IACH,sBAAsB,CAAC,UAAkB,EAAE,YAAsB;QAC/D,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAEtC,MAAM,KAAK,GAA4B;YACrC,IAAI,EAAE,qBAAqB;YAC3B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,UAAU;YACV,YAAY;SACb,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC;IAED;;;;;OAKG;IACH,cAAc,CAAC,WAAmB,EAAE,aAAqB;QACvD,MAAM,KAAK,GAAoB;YAC7B,IAAI,EAAE,aAAa;YACnB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,WAAW;YACX,aAAa;SACd,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC;IAED;;;;;OAKG;IACH,eAAe,CAAC,WAAmB,EAAE,aAAqB;QACxD,MAAM,KAAK,GAAqB;YAC9B,IAAI,EAAE,cAAc;YACpB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,WAAW;YACX,aAAa;SACd,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC;IAED,2DAA2D;IAE3D;;;OAGG;IACK,cAAc,CAAC,QAAiC,EAAE,KAAiB;QACzE,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAChC,IAAI,CAAC;gBACH,QAAQ,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,gDAAgD;gBAChD,OAAO,CAAC,KAAK,CAAC,yCAAyC,KAAK,CAAC,IAAI,GAAG,EAAE,KAAK,CAAC,CAAC;YAC/E,CAAC;QACH,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;CACF"}