@zengrid/shared 1.0.2 → 1.0.3

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 (154) hide show
  1. package/package.json +1 -1
  2. package/dist/README.md +0 -44
  3. package/dist/index.cjs.default.js +0 -1
  4. package/dist/index.cjs.js +0 -6250
  5. package/dist/index.cjs.mjs +0 -2
  6. package/dist/index.d.ts +0 -1
  7. package/dist/index.esm.js +0 -6207
  8. package/dist/package.json +0 -54
  9. package/dist/src/algorithms/filter/bloom-filter.d.ts +0 -120
  10. package/dist/src/algorithms/filter/bloom-filter.d.ts.map +0 -1
  11. package/dist/src/algorithms/filter/index.d.ts +0 -7
  12. package/dist/src/algorithms/filter/index.d.ts.map +0 -1
  13. package/dist/src/algorithms/graph/bfs.d.ts +0 -71
  14. package/dist/src/algorithms/graph/bfs.d.ts.map +0 -1
  15. package/dist/src/algorithms/graph/dfs.d.ts +0 -62
  16. package/dist/src/algorithms/graph/dfs.d.ts.map +0 -1
  17. package/dist/src/algorithms/graph/graph.interface.d.ts +0 -63
  18. package/dist/src/algorithms/graph/graph.interface.d.ts.map +0 -1
  19. package/dist/src/algorithms/graph/index.d.ts +0 -9
  20. package/dist/src/algorithms/graph/index.d.ts.map +0 -1
  21. package/dist/src/algorithms/index.d.ts +0 -11
  22. package/dist/src/algorithms/index.d.ts.map +0 -1
  23. package/dist/src/algorithms/pattern/index.d.ts +0 -8
  24. package/dist/src/algorithms/pattern/index.d.ts.map +0 -1
  25. package/dist/src/algorithms/pattern/sequence-detector.d.ts +0 -62
  26. package/dist/src/algorithms/pattern/sequence-detector.d.ts.map +0 -1
  27. package/dist/src/algorithms/search/binary-search.d.ts +0 -86
  28. package/dist/src/algorithms/search/binary-search.d.ts.map +0 -1
  29. package/dist/src/algorithms/search/index.d.ts +0 -6
  30. package/dist/src/algorithms/search/index.d.ts.map +0 -1
  31. package/dist/src/algorithms/sorting/comparators.d.ts +0 -126
  32. package/dist/src/algorithms/sorting/comparators.d.ts.map +0 -1
  33. package/dist/src/algorithms/sorting/index.d.ts +0 -9
  34. package/dist/src/algorithms/sorting/index.d.ts.map +0 -1
  35. package/dist/src/algorithms/sorting/sorting.interface.d.ts +0 -38
  36. package/dist/src/algorithms/sorting/sorting.interface.d.ts.map +0 -1
  37. package/dist/src/algorithms/sorting/timsort.d.ts +0 -55
  38. package/dist/src/algorithms/sorting/timsort.d.ts.map +0 -1
  39. package/dist/src/data-structures/column-store/column-store.d.ts +0 -52
  40. package/dist/src/data-structures/column-store/column-store.d.ts.map +0 -1
  41. package/dist/src/data-structures/column-store/column-store.interface.d.ts +0 -155
  42. package/dist/src/data-structures/column-store/column-store.interface.d.ts.map +0 -1
  43. package/dist/src/data-structures/column-store/index.d.ts +0 -6
  44. package/dist/src/data-structures/column-store/index.d.ts.map +0 -1
  45. package/dist/src/data-structures/command-stack/command-stack.d.ts +0 -61
  46. package/dist/src/data-structures/command-stack/command-stack.d.ts.map +0 -1
  47. package/dist/src/data-structures/command-stack/command-stack.interface.d.ts +0 -80
  48. package/dist/src/data-structures/command-stack/command-stack.interface.d.ts.map +0 -1
  49. package/dist/src/data-structures/command-stack/index.d.ts +0 -3
  50. package/dist/src/data-structures/command-stack/index.d.ts.map +0 -1
  51. package/dist/src/data-structures/dependency-graph/dependency-graph.d.ts +0 -147
  52. package/dist/src/data-structures/dependency-graph/dependency-graph.d.ts.map +0 -1
  53. package/dist/src/data-structures/dependency-graph/dependency-graph.interface.d.ts +0 -161
  54. package/dist/src/data-structures/dependency-graph/dependency-graph.interface.d.ts.map +0 -1
  55. package/dist/src/data-structures/dependency-graph/index.d.ts +0 -8
  56. package/dist/src/data-structures/dependency-graph/index.d.ts.map +0 -1
  57. package/dist/src/data-structures/disjoint-set/disjoint-set.d.ts +0 -84
  58. package/dist/src/data-structures/disjoint-set/disjoint-set.d.ts.map +0 -1
  59. package/dist/src/data-structures/disjoint-set/disjoint-set.interface.d.ts +0 -185
  60. package/dist/src/data-structures/disjoint-set/disjoint-set.interface.d.ts.map +0 -1
  61. package/dist/src/data-structures/disjoint-set/index.d.ts +0 -7
  62. package/dist/src/data-structures/disjoint-set/index.d.ts.map +0 -1
  63. package/dist/src/data-structures/index-map/index-map.d.ts +0 -150
  64. package/dist/src/data-structures/index-map/index-map.d.ts.map +0 -1
  65. package/dist/src/data-structures/index-map/index-map.interface.d.ts +0 -186
  66. package/dist/src/data-structures/index-map/index-map.interface.d.ts.map +0 -1
  67. package/dist/src/data-structures/index-map/index.d.ts +0 -6
  68. package/dist/src/data-structures/index-map/index.d.ts.map +0 -1
  69. package/dist/src/data-structures/index.d.ts +0 -36
  70. package/dist/src/data-structures/index.d.ts.map +0 -1
  71. package/dist/src/data-structures/interval-tree/index.d.ts +0 -7
  72. package/dist/src/data-structures/interval-tree/index.d.ts.map +0 -1
  73. package/dist/src/data-structures/interval-tree/interval-tree.d.ts +0 -141
  74. package/dist/src/data-structures/interval-tree/interval-tree.d.ts.map +0 -1
  75. package/dist/src/data-structures/interval-tree/interval-tree.interface.d.ts +0 -212
  76. package/dist/src/data-structures/interval-tree/interval-tree.interface.d.ts.map +0 -1
  77. package/dist/src/data-structures/lru-cache/index.d.ts +0 -3
  78. package/dist/src/data-structures/lru-cache/index.d.ts.map +0 -1
  79. package/dist/src/data-structures/lru-cache/lru-cache.d.ts +0 -134
  80. package/dist/src/data-structures/lru-cache/lru-cache.d.ts.map +0 -1
  81. package/dist/src/data-structures/lru-cache/lru-cache.interface.d.ts +0 -173
  82. package/dist/src/data-structures/lru-cache/lru-cache.interface.d.ts.map +0 -1
  83. package/dist/src/data-structures/prefix-sum-array/index.d.ts +0 -6
  84. package/dist/src/data-structures/prefix-sum-array/index.d.ts.map +0 -1
  85. package/dist/src/data-structures/prefix-sum-array/prefix-sum-array.d.ts +0 -63
  86. package/dist/src/data-structures/prefix-sum-array/prefix-sum-array.d.ts.map +0 -1
  87. package/dist/src/data-structures/prefix-sum-array/prefix-sum-array.interface.d.ts +0 -80
  88. package/dist/src/data-structures/prefix-sum-array/prefix-sum-array.interface.d.ts.map +0 -1
  89. package/dist/src/data-structures/rtree/index.d.ts +0 -8
  90. package/dist/src/data-structures/rtree/index.d.ts.map +0 -1
  91. package/dist/src/data-structures/rtree/rtree.d.ts +0 -81
  92. package/dist/src/data-structures/rtree/rtree.d.ts.map +0 -1
  93. package/dist/src/data-structures/rtree/rtree.interface.d.ts +0 -143
  94. package/dist/src/data-structures/rtree/rtree.interface.d.ts.map +0 -1
  95. package/dist/src/data-structures/segment-tree/index.d.ts +0 -4
  96. package/dist/src/data-structures/segment-tree/index.d.ts.map +0 -1
  97. package/dist/src/data-structures/segment-tree/segment-tree.d.ts +0 -134
  98. package/dist/src/data-structures/segment-tree/segment-tree.d.ts.map +0 -1
  99. package/dist/src/data-structures/segment-tree/segment-tree.interface.d.ts +0 -202
  100. package/dist/src/data-structures/segment-tree/segment-tree.interface.d.ts.map +0 -1
  101. package/dist/src/data-structures/skip-list/index.d.ts +0 -4
  102. package/dist/src/data-structures/skip-list/index.d.ts.map +0 -1
  103. package/dist/src/data-structures/skip-list/skip-list.d.ts +0 -137
  104. package/dist/src/data-structures/skip-list/skip-list.d.ts.map +0 -1
  105. package/dist/src/data-structures/skip-list/skip-list.interface.d.ts +0 -223
  106. package/dist/src/data-structures/skip-list/skip-list.interface.d.ts.map +0 -1
  107. package/dist/src/data-structures/sparse-matrix/index.d.ts +0 -6
  108. package/dist/src/data-structures/sparse-matrix/index.d.ts.map +0 -1
  109. package/dist/src/data-structures/sparse-matrix/sparse-matrix.d.ts +0 -44
  110. package/dist/src/data-structures/sparse-matrix/sparse-matrix.d.ts.map +0 -1
  111. package/dist/src/data-structures/sparse-matrix/sparse-matrix.interface.d.ts +0 -105
  112. package/dist/src/data-structures/sparse-matrix/sparse-matrix.interface.d.ts.map +0 -1
  113. package/dist/src/data-structures/suffix-array/index.d.ts +0 -3
  114. package/dist/src/data-structures/suffix-array/index.d.ts.map +0 -1
  115. package/dist/src/data-structures/suffix-array/suffix-array.d.ts +0 -102
  116. package/dist/src/data-structures/suffix-array/suffix-array.d.ts.map +0 -1
  117. package/dist/src/data-structures/suffix-array/suffix-array.interface.d.ts +0 -117
  118. package/dist/src/data-structures/suffix-array/suffix-array.interface.d.ts.map +0 -1
  119. package/dist/src/data-structures/trie/index.d.ts +0 -8
  120. package/dist/src/data-structures/trie/index.d.ts.map +0 -1
  121. package/dist/src/data-structures/trie/trie.d.ts +0 -205
  122. package/dist/src/data-structures/trie/trie.d.ts.map +0 -1
  123. package/dist/src/data-structures/trie/trie.interface.d.ts +0 -117
  124. package/dist/src/data-structures/trie/trie.interface.d.ts.map +0 -1
  125. package/dist/src/index.d.ts +0 -47
  126. package/dist/src/index.d.ts.map +0 -1
  127. package/dist/src/patterns/coordinator.d.ts +0 -90
  128. package/dist/src/patterns/coordinator.d.ts.map +0 -1
  129. package/dist/src/patterns/event-emitter.d.ts +0 -106
  130. package/dist/src/patterns/event-emitter.d.ts.map +0 -1
  131. package/dist/src/patterns/factory.d.ts +0 -120
  132. package/dist/src/patterns/factory.d.ts.map +0 -1
  133. package/dist/src/patterns/index.d.ts +0 -21
  134. package/dist/src/patterns/index.d.ts.map +0 -1
  135. package/dist/src/patterns/mediator.d.ts +0 -116
  136. package/dist/src/patterns/mediator.d.ts.map +0 -1
  137. package/dist/src/patterns/object-pool.d.ts +0 -178
  138. package/dist/src/patterns/object-pool.d.ts.map +0 -1
  139. package/dist/src/patterns/observer.d.ts +0 -89
  140. package/dist/src/patterns/observer.d.ts.map +0 -1
  141. package/dist/src/patterns/operation-mode.d.ts +0 -75
  142. package/dist/src/patterns/operation-mode.d.ts.map +0 -1
  143. package/dist/src/patterns/state-machine.d.ts +0 -122
  144. package/dist/src/patterns/state-machine.d.ts.map +0 -1
  145. package/dist/src/types/common.d.ts +0 -56
  146. package/dist/src/types/common.d.ts.map +0 -1
  147. package/dist/src/types/index.d.ts +0 -5
  148. package/dist/src/types/index.d.ts.map +0 -1
  149. package/dist/src/utils/index.d.ts +0 -7
  150. package/dist/src/utils/index.d.ts.map +0 -1
  151. package/dist/src/utils/timing.d.ts +0 -104
  152. package/dist/src/utils/timing.d.ts.map +0 -1
  153. package/dist/src/utils/timing.interface.d.ts +0 -96
  154. package/dist/src/utils/timing.interface.d.ts.map +0 -1
@@ -1,106 +0,0 @@
1
- /**
2
- * Type-safe event emitter pattern
3
- *
4
- * Provides a strongly-typed pub/sub system for events.
5
- * Supports both synchronous and asynchronous event handlers.
6
- *
7
- * @example
8
- * ```typescript
9
- * interface MyEvents {
10
- * 'user:login': { userId: string; timestamp: number };
11
- * 'user:logout': { userId: string };
12
- * 'data:update': { id: number; data: any };
13
- * }
14
- *
15
- * const emitter = new EventEmitter<MyEvents>();
16
- *
17
- * // Subscribe
18
- * emitter.on('user:login', (event) => {
19
- * console.log(`User ${event.userId} logged in at ${event.timestamp}`);
20
- * });
21
- *
22
- * // Emit
23
- * emitter.emit('user:login', {
24
- * userId: '123',
25
- * timestamp: Date.now(),
26
- * });
27
- *
28
- * // Unsubscribe
29
- * emitter.off('user:login', handler);
30
- * ```
31
- */
32
- export interface IEventEmitter<TEvents extends Record<string, any>> {
33
- on<K extends keyof TEvents>(event: K, handler: (data: TEvents[K]) => void): () => void;
34
- once<K extends keyof TEvents>(event: K, handler: (data: TEvents[K]) => void): () => void;
35
- off<K extends keyof TEvents>(event: K, handler: (data: TEvents[K]) => void): void;
36
- emit<K extends keyof TEvents>(event: K, data: TEvents[K]): void;
37
- removeAllListeners<K extends keyof TEvents>(event?: K): void;
38
- listenerCount<K extends keyof TEvents>(event: K): number;
39
- eventNames(): Array<keyof TEvents>;
40
- setMaxListeners(n: number): void;
41
- getMaxListeners(): number;
42
- }
43
- export declare class EventEmitter<TEvents extends Record<string, any>> implements IEventEmitter<TEvents> {
44
- private listeners;
45
- private onceListeners;
46
- private maxListeners;
47
- /**
48
- * Subscribe to an event
49
- * @param event - Event name
50
- * @param handler - Event handler function
51
- * @returns Unsubscribe function
52
- */
53
- on<K extends keyof TEvents>(event: K, handler: (data: TEvents[K]) => void): () => void;
54
- /**
55
- * Subscribe to an event (fires only once)
56
- * @param event - Event name
57
- * @param handler - Event handler function
58
- * @returns Unsubscribe function
59
- */
60
- once<K extends keyof TEvents>(event: K, handler: (data: TEvents[K]) => void): () => void;
61
- /**
62
- * Unsubscribe from an event
63
- * @param event - Event name
64
- * @param handler - Event handler function to remove
65
- */
66
- off<K extends keyof TEvents>(event: K, handler: (data: TEvents[K]) => void): void;
67
- /**
68
- * Remove a once listener
69
- * @param event - Event name
70
- * @param handler - Event handler function to remove
71
- */
72
- private offOnce;
73
- /**
74
- * Emit an event
75
- * @param event - Event name
76
- * @param data - Event data
77
- */
78
- emit<K extends keyof TEvents>(event: K, data: TEvents[K]): void;
79
- /**
80
- * Remove all listeners for an event (or all events if no event specified)
81
- * @param event - Optional event name
82
- */
83
- removeAllListeners<K extends keyof TEvents>(event?: K): void;
84
- /**
85
- * Get the number of listeners for an event
86
- * @param event - Event name
87
- * @returns Number of listeners
88
- */
89
- listenerCount<K extends keyof TEvents>(event: K): number;
90
- /**
91
- * Get all event names that have listeners
92
- * @returns Array of event names
93
- */
94
- eventNames(): Array<keyof TEvents>;
95
- /**
96
- * Set the maximum number of listeners per event
97
- * @param n - Maximum number of listeners
98
- */
99
- setMaxListeners(n: number): void;
100
- /**
101
- * Get the maximum number of listeners per event
102
- * @returns Maximum number of listeners
103
- */
104
- getMaxListeners(): number;
105
- }
106
- //# sourceMappingURL=event-emitter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"event-emitter.d.ts","sourceRoot":"","sources":["../../../../../packages/shared/src/patterns/event-emitter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,MAAM,WAAW,aAAa,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAChE,EAAE,CAAC,CAAC,SAAS,MAAM,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IACvF,IAAI,CAAC,CAAC,SAAS,MAAM,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IACzF,GAAG,CAAC,CAAC,SAAS,MAAM,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC;IAClF,IAAI,CAAC,CAAC,SAAS,MAAM,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAChE,kBAAkB,CAAC,CAAC,SAAS,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;IAC7D,aAAa,CAAC,CAAC,SAAS,MAAM,OAAO,EAAE,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC;IACzD,UAAU,IAAI,KAAK,CAAC,MAAM,OAAO,CAAC,CAAC;IACnC,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,eAAe,IAAI,MAAM,CAAC;CAC3B;AAED,qBAAa,YAAY,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAE,YAAW,aAAa,CAAC,OAAO,CAAC;IAC9F,OAAO,CAAC,SAAS,CAAgD;IACjE,OAAO,CAAC,aAAa,CAAgD;IACrE,OAAO,CAAC,YAAY,CAAO;IAE3B;;;;;OAKG;IACH,EAAE,CAAC,CAAC,SAAS,MAAM,OAAO,EACxB,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,GAClC,MAAM,IAAI;IAmBb;;;;;OAKG;IACH,IAAI,CAAC,CAAC,SAAS,MAAM,OAAO,EAC1B,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,GAClC,MAAM,IAAI;IAWb;;;;OAIG;IACH,GAAG,CAAC,CAAC,SAAS,MAAM,OAAO,EACzB,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,GAClC,IAAI;IAUP;;;;OAIG;IACH,OAAO,CAAC,OAAO;IAaf;;;;OAIG;IACH,IAAI,CAAC,CAAC,SAAS,MAAM,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI;IA4B/D;;;OAGG;IACH,kBAAkB,CAAC,CAAC,SAAS,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI;IAU5D;;;;OAIG;IACH,aAAa,CAAC,CAAC,SAAS,MAAM,OAAO,EAAE,KAAK,EAAE,CAAC,GAAG,MAAM;IAMxD;;;OAGG;IACH,UAAU,IAAI,KAAK,CAAC,MAAM,OAAO,CAAC;IAWlC;;;OAGG;IACH,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAOhC;;;OAGG;IACH,eAAe,IAAI,MAAM;CAG1B"}
@@ -1,120 +0,0 @@
1
- /**
2
- * Factory Pattern
3
- *
4
- * Provides an interface for creating objects, allowing subclasses
5
- * to decide which class to instantiate.
6
- *
7
- * @example
8
- * ```typescript
9
- * interface Renderer {
10
- * render(value: any): string;
11
- * }
12
- *
13
- * const rendererFactory = new Factory<Renderer>();
14
- *
15
- * // Register factories
16
- * rendererFactory.register('text', () => ({
17
- * render: (v) => String(v)
18
- * }));
19
- *
20
- * rendererFactory.register('number', () => ({
21
- * render: (v) => v.toLocaleString()
22
- * }));
23
- *
24
- * // Create instances
25
- * const textRenderer = rendererFactory.create('text');
26
- * const numberRenderer = rendererFactory.create('number');
27
- * ```
28
- */
29
- export interface IFactory<T, K = string> {
30
- /** Register a creator function for a key */
31
- register(key: K, creator: () => T): void;
32
- /** Create an instance using the registered creator */
33
- create(key: K): T | undefined;
34
- /** Check if a creator is registered */
35
- has(key: K): boolean;
36
- /** Unregister a creator */
37
- unregister(key: K): boolean;
38
- /** Get all registered keys */
39
- keys(): K[];
40
- }
41
- /**
42
- * Factory implementation
43
- *
44
- * @typeParam T - The type of objects to create
45
- * @typeParam K - The type of keys (defaults to string)
46
- */
47
- export declare class Factory<T, K = string> implements IFactory<T, K> {
48
- private creators;
49
- /**
50
- * Register a creator function
51
- *
52
- * @param key - Unique identifier for this creator
53
- * @param creator - Function that creates instances
54
- */
55
- register(key: K, creator: () => T): void;
56
- /**
57
- * Create an instance
58
- *
59
- * @param key - The key of the creator to use
60
- * @returns A new instance, or undefined if key not found
61
- */
62
- create(key: K): T | undefined;
63
- /**
64
- * Check if a creator is registered
65
- */
66
- has(key: K): boolean;
67
- /**
68
- * Unregister a creator
69
- *
70
- * @returns true if the creator was removed, false if it didn't exist
71
- */
72
- unregister(key: K): boolean;
73
- /**
74
- * Get all registered keys
75
- */
76
- keys(): K[];
77
- /**
78
- * Clear all registered creators
79
- */
80
- clear(): void;
81
- /**
82
- * Get the number of registered creators
83
- */
84
- get size(): number;
85
- }
86
- /**
87
- * Singleton Factory
88
- *
89
- * Creates a single instance per key and reuses it on subsequent calls.
90
- *
91
- * @example
92
- * ```typescript
93
- * const singletonFactory = new SingletonFactory<Renderer>();
94
- *
95
- * singletonFactory.register('text', () => new TextRenderer());
96
- *
97
- * const r1 = singletonFactory.create('text');
98
- * const r2 = singletonFactory.create('text');
99
- * console.log(r1 === r2); // true - same instance
100
- * ```
101
- */
102
- export declare class SingletonFactory<T, K = string> implements IFactory<T, K> {
103
- private creators;
104
- private instances;
105
- register(key: K, creator: () => T): void;
106
- create(key: K): T | undefined;
107
- has(key: K): boolean;
108
- unregister(key: K): boolean;
109
- keys(): K[];
110
- /**
111
- * Clear all instances but keep creators
112
- */
113
- clearInstances(): void;
114
- /**
115
- * Clear everything
116
- */
117
- clear(): void;
118
- get size(): number;
119
- }
120
- //# sourceMappingURL=factory.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../../../packages/shared/src/patterns/factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,MAAM,WAAW,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM;IACrC,4CAA4C;IAC5C,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IAEzC,sDAAsD;IACtD,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;IAE9B,uCAAuC;IACvC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC;IAErB,2BAA2B;IAC3B,UAAU,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC;IAE5B,8BAA8B;IAC9B,IAAI,IAAI,CAAC,EAAE,CAAC;CACb;AAED;;;;;GAKG;AACH,qBAAa,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAE,YAAW,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;IAC3D,OAAO,CAAC,QAAQ,CAAyB;IAEzC;;;;;OAKG;IACH,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,IAAI;IASxC;;;;;OAKG;IACH,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS;IAkB7B;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;IAIpB;;;;OAIG;IACH,UAAU,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;IAI3B;;OAEG;IACH,IAAI,IAAI,CAAC,EAAE;IAIX;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF;AAED;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,gBAAgB,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAE,YAAW,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;IACpE,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,SAAS,CAAmB;IAEpC,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,IAAI;IAWxC,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS;IA2B7B,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;IAIpB,UAAU,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;IAK3B,IAAI,IAAI,CAAC,EAAE;IAIX;;OAEG;IACH,cAAc,IAAI,IAAI;IAItB;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF"}
@@ -1,21 +0,0 @@
1
- /**
2
- * Common design patterns
3
- * @packageDocumentation
4
- */
5
- export { EventEmitter } from './event-emitter';
6
- export type { IEventEmitter } from './event-emitter';
7
- export { Subject } from './observer';
8
- export type { IObserver, ISubject } from './observer';
9
- export { StateMachine } from './state-machine';
10
- export type { IStateMachine, StateMachineOptions, TransitionHandler, } from './state-machine';
11
- export { BaseCoordinator } from './coordinator';
12
- export type { ICoordinator } from './coordinator';
13
- export { Factory, SingletonFactory } from './factory';
14
- export type { IFactory } from './factory';
15
- export { Mediator, MediatedComponent, EventMediator } from './mediator';
16
- export type { IMediator } from './mediator';
17
- export { ObjectPool, KeyedObjectPool } from './object-pool';
18
- export type { IObjectPool, ObjectPoolOptions, ObjectPoolStats, } from './object-pool';
19
- export { resolveOperationMode, OperationModeManager, } from './operation-mode';
20
- export type { OperationMode, ResolvedOperationMode, OperationModeConfig, } from './operation-mode';
21
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/shared/src/patterns/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGrD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGtD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,YAAY,EACV,aAAa,EACb,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAGlD,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AACtD,YAAY,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAG1C,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACxE,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAG5C,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAC5D,YAAY,EACV,WAAW,EACX,iBAAiB,EACjB,eAAe,GAChB,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,aAAa,EACb,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC"}
@@ -1,116 +0,0 @@
1
- /**
2
- * Mediator Pattern
3
- *
4
- * Defines an object that encapsulates how a set of objects interact.
5
- * Promotes loose coupling by keeping objects from referring to each other explicitly.
6
- *
7
- * @example
8
- * ```typescript
9
- * class GridMediator extends Mediator {
10
- * constructor(
11
- * private viewport: ViewportManager,
12
- * private renderer: RenderCoordinator,
13
- * private sortManager: SortManager
14
- * ) {
15
- * super();
16
- * }
17
- *
18
- * notify(sender: any, event: string, data?: any): void {
19
- * if (sender === this.viewport && event === 'scroll') {
20
- * // Viewport scrolled -> update renderer
21
- * this.renderer.update(data);
22
- * }
23
- *
24
- * if (sender === this.sortManager && event === 'sorted') {
25
- * // Data sorted -> refresh renderer
26
- * this.renderer.refresh();
27
- * }
28
- * }
29
- * }
30
- *
31
- * // Components notify mediator instead of each other
32
- * viewport.setMediator(mediator);
33
- * sortManager.setMediator(mediator);
34
- * ```
35
- */
36
- export interface IMediator {
37
- /**
38
- * Handle notifications from components
39
- *
40
- * @param sender - The component sending the notification
41
- * @param event - The event name
42
- * @param data - Optional event data
43
- */
44
- notify(sender: any, event: string, data?: any): void;
45
- }
46
- /**
47
- * Base mediator class
48
- */
49
- export declare abstract class Mediator implements IMediator {
50
- /**
51
- * Handle component notifications
52
- *
53
- * Subclasses should override this to implement mediation logic.
54
- */
55
- abstract notify(sender: any, event: string, data?: any): void;
56
- }
57
- /**
58
- * Component that can interact with a mediator
59
- */
60
- export declare abstract class MediatedComponent {
61
- protected mediator?: IMediator;
62
- /**
63
- * Set the mediator for this component
64
- */
65
- setMediator(mediator: IMediator | undefined): void;
66
- /**
67
- * Notify the mediator of an event
68
- */
69
- protected notifyMediator(event: string, data?: any): void;
70
- }
71
- /**
72
- * Event-based mediator
73
- *
74
- * Routes events between components without them knowing about each other.
75
- *
76
- * @example
77
- * ```typescript
78
- * const mediator = new EventMediator();
79
- *
80
- * // Register handlers
81
- * mediator.on('scroll', (data) => {
82
- * console.log('Scroll event:', data);
83
- * });
84
- *
85
- * // Send events
86
- * mediator.notify(viewport, 'scroll', { top: 100 });
87
- * ```
88
- */
89
- export declare class EventMediator extends Mediator {
90
- private handlers;
91
- /**
92
- * Register an event handler
93
- *
94
- * @param event - Event name to listen for
95
- * @param handler - Handler function
96
- * @returns Unsubscribe function
97
- */
98
- on(event: string, handler: (data?: any) => void): () => void;
99
- /**
100
- * Unregister an event handler
101
- */
102
- off(event: string, handler: (data?: any) => void): void;
103
- /**
104
- * Notify all handlers for an event
105
- */
106
- notify(_sender: any, event: string, data?: any): void;
107
- /**
108
- * Clear all handlers
109
- */
110
- clear(): void;
111
- /**
112
- * Clear handlers for a specific event
113
- */
114
- clearEvent(event: string): void;
115
- }
116
- //# sourceMappingURL=mediator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mediator.d.ts","sourceRoot":"","sources":["../../../../../packages/shared/src/patterns/mediator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,MAAM,WAAW,SAAS;IACxB;;;;;;OAMG;IACH,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC;CACtD;AAED;;GAEG;AACH,8BAAsB,QAAS,YAAW,SAAS;IACjD;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI;CAC9D;AAED;;GAEG;AACH,8BAAsB,iBAAiB;IACrC,SAAS,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;IAE/B;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,SAAS,GAAG,SAAS,GAAG,IAAI;IAIlD;;OAEG;IACH,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI;CAG1D;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,aAAc,SAAQ,QAAQ;IACzC,OAAO,CAAC,QAAQ,CAAgD;IAEhE;;;;;;OAMG;IACH,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,IAAI,GAAG,MAAM,IAAI;IAU5D;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI;IAIvD;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI;IAarD;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;CAGhC"}
@@ -1,178 +0,0 @@
1
- /**
2
- * Generic Object Pooling Pattern
3
- *
4
- * Maintains a pool of reusable objects to avoid expensive creation/destruction.
5
- * Useful for any frequently created/destroyed objects (DOM elements, data structures, etc.)
6
- *
7
- * @example
8
- * ```typescript
9
- * // Example 1: DOM Element Pool
10
- * const divPool = new ObjectPool(
11
- * () => document.createElement('div'),
12
- * (div) => {
13
- * div.innerHTML = '';
14
- * div.className = '';
15
- * div.removeAttribute('style');
16
- * },
17
- * { initialSize: 50, maxSize: 200 }
18
- * );
19
- *
20
- * const div = divPool.acquire();
21
- * div.textContent = 'Hello';
22
- * // ... use div ...
23
- * divPool.release(div);
24
- *
25
- * // Example 2: Data Structure Pool
26
- * const arrayPool = new ObjectPool(
27
- * () => [],
28
- * (arr) => arr.length = 0, // Reset
29
- * { initialSize: 10, maxSize: 100 }
30
- * );
31
- *
32
- * const arr = arrayPool.acquire();
33
- * arr.push(1, 2, 3);
34
- * // ... use arr ...
35
- * arrayPool.release(arr);
36
- * ```
37
- */
38
- export interface ObjectPoolOptions {
39
- /** Initial number of objects to create */
40
- initialSize?: number;
41
- /** Maximum number of objects to keep in pool */
42
- maxSize?: number;
43
- }
44
- export interface ObjectPoolStats {
45
- /** Number of objects currently in use */
46
- active: number;
47
- /** Number of objects available in pool */
48
- available: number;
49
- /** Total objects created (active + available) */
50
- total: number;
51
- /** Maximum pool size */
52
- maxSize: number;
53
- }
54
- export interface IObjectPool<T> {
55
- /** Acquire an object from the pool */
56
- acquire(): T;
57
- /** Release an object back to the pool */
58
- release(obj: T): void;
59
- /** Release all objects back to the pool */
60
- releaseAll(): void;
61
- /** Clear the pool and destroy all objects */
62
- clear(): void;
63
- /** Get pool statistics */
64
- readonly stats: ObjectPoolStats;
65
- }
66
- /**
67
- * Generic object pool implementation
68
- *
69
- * @typeParam T - The type of objects to pool
70
- */
71
- export declare class ObjectPool<T> implements IObjectPool<T> {
72
- private available;
73
- private active;
74
- private readonly maxSize;
75
- private readonly factory;
76
- private readonly reset;
77
- private readonly destroy?;
78
- /**
79
- * Create a new object pool
80
- *
81
- * @param factory - Function to create new objects
82
- * @param reset - Function to reset objects before releasing back to pool
83
- * @param options - Pool configuration options
84
- * @param destroy - Optional function to clean up objects when pool is cleared
85
- */
86
- constructor(factory: () => T, reset: (obj: T) => void, options?: ObjectPoolOptions, destroy?: (obj: T) => void);
87
- /**
88
- * Acquire an object from the pool
89
- *
90
- * If the pool is empty, a new object will be created.
91
- *
92
- * @returns An object from the pool
93
- */
94
- acquire(): T;
95
- /**
96
- * Release an object back to the pool
97
- *
98
- * The object will be reset before being returned to the pool.
99
- * If the pool is at max capacity, the object will be destroyed.
100
- *
101
- * @param obj - The object to release
102
- */
103
- release(obj: T): void;
104
- /**
105
- * Release all active objects back to the pool
106
- */
107
- releaseAll(): void;
108
- /**
109
- * Clear the pool and destroy all objects
110
- */
111
- clear(): void;
112
- /**
113
- * Get pool statistics
114
- */
115
- get stats(): ObjectPoolStats;
116
- }
117
- /**
118
- * Keyed object pool - maintains mapping of keys to pooled objects
119
- *
120
- * Useful when you need to track objects by a unique identifier.
121
- *
122
- * @example
123
- * ```typescript
124
- * const cellPool = new KeyedObjectPool(
125
- * () => document.createElement('div'),
126
- * (div) => { div.innerHTML = ''; },
127
- * { maxSize: 200 }
128
- * );
129
- *
130
- * const cell = cellPool.acquire('cell-0-0');
131
- * // ... use cell ...
132
- * cellPool.release('cell-0-0');
133
- * ```
134
- */
135
- export declare class KeyedObjectPool<T, K = string> {
136
- private pool;
137
- private keyMap;
138
- constructor(factory: () => T, reset: (obj: T) => void, options?: ObjectPoolOptions, destroy?: (obj: T) => void);
139
- /**
140
- * Acquire an object by key
141
- *
142
- * If an object with this key already exists, it will be returned.
143
- * Otherwise, a new object will be acquired from the pool.
144
- *
145
- * @param key - Unique identifier for the object
146
- * @returns The object associated with this key
147
- */
148
- acquire(key: K): T;
149
- /**
150
- * Release an object by key
151
- *
152
- * @param key - The key of the object to release
153
- */
154
- release(key: K): void;
155
- /**
156
- * Release all objects except those with the specified keys
157
- *
158
- * @param activeKeys - Set of keys to keep active
159
- */
160
- releaseExcept(activeKeys: Set<K>): void;
161
- /**
162
- * Check if a key exists in the active set
163
- */
164
- has(key: K): boolean;
165
- /**
166
- * Get an object by key without acquiring
167
- */
168
- get(key: K): T | undefined;
169
- /**
170
- * Get pool statistics
171
- */
172
- get stats(): ObjectPoolStats;
173
- /**
174
- * Clear the pool
175
- */
176
- clear(): void;
177
- }
178
- //# sourceMappingURL=object-pool.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"object-pool.d.ts","sourceRoot":"","sources":["../../../../../packages/shared/src/patterns/object-pool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,MAAM,WAAW,iBAAiB;IAChC,0CAA0C;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,yCAAyC;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,0CAA0C;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,wBAAwB;IACxB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,sCAAsC;IACtC,OAAO,IAAI,CAAC,CAAC;IACb,yCAAyC;IACzC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC;IACtB,2CAA2C;IAC3C,UAAU,IAAI,IAAI,CAAC;IACnB,6CAA6C;IAC7C,KAAK,IAAI,IAAI,CAAC;IACd,0BAA0B;IAC1B,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;CACjC;AAED;;;;GAIG;AACH,qBAAa,UAAU,CAAC,CAAC,CAAE,YAAW,WAAW,CAAC,CAAC,CAAC;IAClD,OAAO,CAAC,SAAS,CAAW;IAC5B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAmB;IACzC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAmB;IAE5C;;;;;;;OAOG;gBAED,OAAO,EAAE,MAAM,CAAC,EAChB,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,EACvB,OAAO,GAAE,iBAAsB,EAC/B,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI;IAc5B;;;;;;OAMG;IACH,OAAO,IAAI,CAAC;IAWZ;;;;;;;OAOG;IACH,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI;IAoBrB;;OAEG;IACH,UAAU,IAAI,IAAI;IAOlB;;OAEG;IACH,KAAK,IAAI,IAAI;IAcb;;OAEG;IACH,IAAI,KAAK,IAAI,eAAe,CAO3B;CACF;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,eAAe,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM;IACxC,OAAO,CAAC,IAAI,CAAgB;IAC5B,OAAO,CAAC,MAAM,CAAmB;gBAG/B,OAAO,EAAE,MAAM,CAAC,EAChB,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,EACvB,OAAO,GAAE,iBAAsB,EAC/B,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI;IAK5B;;;;;;;;OAQG;IACH,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC;IAYlB;;;;OAIG;IACH,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI;IAQrB;;;;OAIG;IACH,aAAa,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI;IAcvC;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;IAIpB;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS;IAI1B;;OAEG;IACH,IAAI,KAAK,IAAI,eAAe,CAE3B;IAED;;OAEG;IACH,KAAK,IAAI,IAAI;CAId"}
@@ -1,89 +0,0 @@
1
- /**
2
- * Observer Pattern
3
- *
4
- * Defines a one-to-many dependency between objects so that when one object changes state,
5
- * all its dependents are notified and updated automatically.
6
- *
7
- * @example
8
- * ```typescript
9
- * interface DataUpdate {
10
- * type: 'add' | 'update' | 'delete';
11
- * data: any;
12
- * }
13
- *
14
- * // Create a subject
15
- * class DataModel extends Subject<DataUpdate> {
16
- * updateData(data: any): void {
17
- * // Update internal state
18
- * // Notify observers
19
- * this.notify({ type: 'update', data });
20
- * }
21
- * }
22
- *
23
- * // Create an observer
24
- * class DataView implements IObserver<DataUpdate> {
25
- * update(data: DataUpdate): void {
26
- * console.log('Data changed:', data);
27
- * // Update UI
28
- * }
29
- * }
30
- *
31
- * // Use it
32
- * const model = new DataModel();
33
- * const view = new DataView();
34
- *
35
- * model.attach(view);
36
- * model.updateData({ id: 1, name: 'Test' }); // view.update() is called
37
- * ```
38
- */
39
- export interface IObserver<T> {
40
- /**
41
- * Called when the subject's state changes
42
- * @param data - The data from the subject
43
- */
44
- update(data: T): void;
45
- }
46
- export interface ISubject<T> {
47
- /**
48
- * Attach an observer to this subject
49
- * @param observer - The observer to attach
50
- */
51
- attach(observer: IObserver<T>): void;
52
- /**
53
- * Detach an observer from this subject
54
- * @param observer - The observer to detach
55
- */
56
- detach(observer: IObserver<T>): void;
57
- /**
58
- * Notify all attached observers
59
- * @param data - The data to send to observers
60
- */
61
- notify(data: T): void;
62
- }
63
- /**
64
- * Base implementation of the Subject interface
65
- */
66
- export declare class Subject<T> implements ISubject<T> {
67
- private observers;
68
- /**
69
- * Attach an observer to this subject
70
- */
71
- attach(observer: IObserver<T>): void;
72
- /**
73
- * Detach an observer from this subject
74
- */
75
- detach(observer: IObserver<T>): void;
76
- /**
77
- * Notify all attached observers
78
- */
79
- notify(data: T): void;
80
- /**
81
- * Get the number of attached observers
82
- */
83
- protected getObserverCount(): number;
84
- /**
85
- * Clear all observers
86
- */
87
- protected clearObservers(): void;
88
- }
89
- //# sourceMappingURL=observer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"observer.d.ts","sourceRoot":"","sources":["../../../../../packages/shared/src/patterns/observer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,MAAM,WAAW,SAAS,CAAC,CAAC;IAC1B;;;OAGG;IACH,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,QAAQ,CAAC,CAAC;IACzB;;;OAGG;IACH,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAErC;;;OAGG;IACH,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAErC;;;OAGG;IACH,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;CACvB;AAED;;GAEG;AACH,qBAAa,OAAO,CAAC,CAAC,CAAE,YAAW,QAAQ,CAAC,CAAC,CAAC;IAC5C,OAAO,CAAC,SAAS,CAA2B;IAE5C;;OAEG;IACH,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI;IAIpC;;OAEG;IACH,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI;IAIpC;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI;IAUrB;;OAEG;IACH,SAAS,CAAC,gBAAgB,IAAI,MAAM;IAIpC;;OAEG;IACH,SAAS,CAAC,cAAc,IAAI,IAAI;CAGjC"}