@zengrid/shared 1.0.4 → 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 (120) hide show
  1. package/README.md +4 -0
  2. package/dist/README.md +4 -0
  3. package/dist/index.cjs.js +3085 -1783
  4. package/dist/index.esm.js +3080 -1783
  5. package/dist/package.json +1 -1
  6. package/dist/src/algorithms/graph/bfs.d.ts.map +1 -1
  7. package/dist/src/algorithms/graph/dfs.d.ts.map +1 -1
  8. package/dist/src/algorithms/graph/index.d.ts +1 -1
  9. package/dist/src/algorithms/graph/index.d.ts.map +1 -1
  10. package/dist/src/algorithms/index.d.ts +5 -5
  11. package/dist/src/algorithms/index.d.ts.map +1 -1
  12. package/dist/src/algorithms/pattern/index.d.ts +2 -2
  13. package/dist/src/algorithms/pattern/index.d.ts.map +1 -1
  14. package/dist/src/algorithms/pattern/sequence-detector.d.ts.map +1 -1
  15. package/dist/src/algorithms/search/index.d.ts +2 -2
  16. package/dist/src/algorithms/search/index.d.ts.map +1 -1
  17. package/dist/src/algorithms/sorting/comparators.d.ts.map +1 -1
  18. package/dist/src/algorithms/sorting/index.d.ts +1 -1
  19. package/dist/src/algorithms/sorting/index.d.ts.map +1 -1
  20. package/dist/src/algorithms/sorting/timsort-gallop.d.ts +21 -0
  21. package/dist/src/algorithms/sorting/timsort-gallop.d.ts.map +1 -0
  22. package/dist/src/algorithms/sorting/timsort-merge.d.ts +6 -0
  23. package/dist/src/algorithms/sorting/timsort-merge.d.ts.map +1 -0
  24. package/dist/src/algorithms/sorting/timsort-run.d.ts +38 -0
  25. package/dist/src/algorithms/sorting/timsort-run.d.ts.map +1 -0
  26. package/dist/src/algorithms/sorting/timsort.d.ts.map +1 -1
  27. package/dist/src/algorithms/sorting/timsort.interface.d.ts +32 -0
  28. package/dist/src/algorithms/sorting/timsort.interface.d.ts.map +1 -0
  29. package/dist/src/data-structures/column-store/column-store.d.ts.map +1 -1
  30. package/dist/src/data-structures/column-store/column-store.interface.d.ts.map +1 -1
  31. package/dist/src/data-structures/command-stack/command-stack.d.ts.map +1 -1
  32. package/dist/src/data-structures/disjoint-set/disjoint-set.d.ts.map +1 -1
  33. package/dist/src/data-structures/disjoint-set/index.d.ts +1 -1
  34. package/dist/src/data-structures/disjoint-set/index.d.ts.map +1 -1
  35. package/dist/src/data-structures/index-map/index-map.d.ts.map +1 -1
  36. package/dist/src/data-structures/index-map/index.d.ts +1 -1
  37. package/dist/src/data-structures/index-map/index.d.ts.map +1 -1
  38. package/dist/src/data-structures/index.d.ts +8 -8
  39. package/dist/src/data-structures/index.d.ts.map +1 -1
  40. package/dist/src/data-structures/interval-tree/interval-tree.d.ts +0 -83
  41. package/dist/src/data-structures/interval-tree/interval-tree.d.ts.map +1 -1
  42. package/dist/src/data-structures/interval-tree/node.d.ts +34 -0
  43. package/dist/src/data-structures/interval-tree/node.d.ts.map +1 -0
  44. package/dist/src/data-structures/interval-tree/operations/balance.d.ts +34 -0
  45. package/dist/src/data-structures/interval-tree/operations/balance.d.ts.map +1 -0
  46. package/dist/src/data-structures/interval-tree/operations/delete.d.ts +26 -0
  47. package/dist/src/data-structures/interval-tree/operations/delete.d.ts.map +1 -0
  48. package/dist/src/data-structures/interval-tree/operations/insert.d.ts +19 -0
  49. package/dist/src/data-structures/interval-tree/operations/insert.d.ts.map +1 -0
  50. package/dist/src/data-structures/interval-tree/operations/search.d.ts +46 -0
  51. package/dist/src/data-structures/interval-tree/operations/search.d.ts.map +1 -0
  52. package/dist/src/data-structures/interval-tree/operations/traversal.d.ts +29 -0
  53. package/dist/src/data-structures/interval-tree/operations/traversal.d.ts.map +1 -0
  54. package/dist/src/data-structures/interval-tree/operations/utilities.d.ts +30 -0
  55. package/dist/src/data-structures/interval-tree/operations/utilities.d.ts.map +1 -0
  56. package/dist/src/data-structures/lru-cache/index.d.ts +1 -1
  57. package/dist/src/data-structures/lru-cache/index.d.ts.map +1 -1
  58. package/dist/src/data-structures/lru-cache/lru-cache.d.ts.map +1 -1
  59. package/dist/src/data-structures/prefix-sum-array/prefix-sum-array.d.ts.map +1 -1
  60. package/dist/src/data-structures/ring-buffer.d.ts +96 -0
  61. package/dist/src/data-structures/ring-buffer.d.ts.map +1 -0
  62. package/dist/src/data-structures/rtree/rtree.d.ts.map +1 -1
  63. package/dist/src/data-structures/segment-tree/aggregation-config.d.ts +6 -0
  64. package/dist/src/data-structures/segment-tree/aggregation-config.d.ts.map +1 -0
  65. package/dist/src/data-structures/segment-tree/index.d.ts +1 -1
  66. package/dist/src/data-structures/segment-tree/index.d.ts.map +1 -1
  67. package/dist/src/data-structures/segment-tree/lazy-propagation.d.ts +5 -0
  68. package/dist/src/data-structures/segment-tree/lazy-propagation.d.ts.map +1 -0
  69. package/dist/src/data-structures/segment-tree/segment-tree.d.ts +1 -105
  70. package/dist/src/data-structures/segment-tree/segment-tree.d.ts.map +1 -1
  71. package/dist/src/data-structures/segment-tree/segment-tree.interface.d.ts.map +1 -1
  72. package/dist/src/data-structures/segment-tree/tree-builder.d.ts +3 -0
  73. package/dist/src/data-structures/segment-tree/tree-builder.d.ts.map +1 -0
  74. package/dist/src/data-structures/segment-tree/tree-query.d.ts +3 -0
  75. package/dist/src/data-structures/segment-tree/tree-query.d.ts.map +1 -0
  76. package/dist/src/data-structures/segment-tree/tree-search.d.ts +2 -0
  77. package/dist/src/data-structures/segment-tree/tree-search.d.ts.map +1 -0
  78. package/dist/src/data-structures/segment-tree/tree-update.d.ts +4 -0
  79. package/dist/src/data-structures/segment-tree/tree-update.d.ts.map +1 -0
  80. package/dist/src/data-structures/segment-tree/tree-validation.d.ts +3 -0
  81. package/dist/src/data-structures/segment-tree/tree-validation.d.ts.map +1 -0
  82. package/dist/src/data-structures/skip-list/skip-list.d.ts.map +1 -1
  83. package/dist/src/data-structures/sparse-matrix/sparse-matrix.d.ts.map +1 -1
  84. package/dist/src/data-structures/suffix-array/suffix-array.d.ts.map +1 -1
  85. package/dist/src/data-structures/trie/index.d.ts +1 -1
  86. package/dist/src/data-structures/trie/index.d.ts.map +1 -1
  87. package/dist/src/data-structures/trie/trie.d.ts.map +1 -1
  88. package/dist/src/index.d.ts +13 -10
  89. package/dist/src/index.d.ts.map +1 -1
  90. package/dist/src/patterns/coordinator.d.ts.map +1 -1
  91. package/dist/src/patterns/event-emitter.d.ts.map +1 -1
  92. package/dist/src/patterns/factory.d.ts.map +1 -1
  93. package/dist/src/patterns/index.d.ts +4 -4
  94. package/dist/src/patterns/index.d.ts.map +1 -1
  95. package/dist/src/patterns/state-machine.d.ts.map +1 -1
  96. package/dist/src/reactive/batch-processor.d.ts +80 -0
  97. package/dist/src/reactive/batch-processor.d.ts.map +1 -0
  98. package/dist/src/reactive/core/batch-manager.d.ts +48 -0
  99. package/dist/src/reactive/core/batch-manager.d.ts.map +1 -0
  100. package/dist/src/reactive/core/batch-queue.d.ts +39 -0
  101. package/dist/src/reactive/core/batch-queue.d.ts.map +1 -0
  102. package/dist/src/reactive/core/event-handler-registry.d.ts +52 -0
  103. package/dist/src/reactive/core/event-handler-registry.d.ts.map +1 -0
  104. package/dist/src/reactive/core/event-mapper.d.ts +37 -0
  105. package/dist/src/reactive/core/event-mapper.d.ts.map +1 -0
  106. package/dist/src/reactive/core/pool-stats.d.ts +47 -0
  107. package/dist/src/reactive/core/pool-stats.d.ts.map +1 -0
  108. package/dist/src/reactive/core/subscription-manager.d.ts +46 -0
  109. package/dist/src/reactive/core/subscription-manager.d.ts.map +1 -0
  110. package/dist/src/reactive/event-delegator.d.ts +84 -0
  111. package/dist/src/reactive/event-delegator.d.ts.map +1 -0
  112. package/dist/src/reactive/index.d.ts +61 -0
  113. package/dist/src/reactive/index.d.ts.map +1 -0
  114. package/dist/src/reactive/interfaces.d.ts +207 -0
  115. package/dist/src/reactive/interfaces.d.ts.map +1 -0
  116. package/dist/src/reactive/object-pool.d.ts +97 -0
  117. package/dist/src/reactive/object-pool.d.ts.map +1 -0
  118. package/dist/src/reactive/reactive-state.d.ts +132 -0
  119. package/dist/src/reactive/reactive-state.d.ts.map +1 -0
  120. package/package.json +52 -52
@@ -0,0 +1,61 @@
1
+ /**
2
+ * @module reactive
3
+ *
4
+ * Reusable reactive primitives for high-performance grid features
5
+ *
6
+ * @description
7
+ * This module provides scalable patterns for building features with
8
+ * thousands of interactive elements (cells, rows, columns) without
9
+ * performance degradation.
10
+ *
11
+ * Now with:
12
+ * - Interface abstractions for loose coupling
13
+ * - Dependency injection support
14
+ * - Exposed helpers for composition
15
+ * - Event history for debugging
16
+ *
17
+ * @performance
18
+ * Designed for grids with 1000+ cells:
19
+ * - Event listeners: O(1) not O(n)
20
+ * - Notifications: Targeted, not broadcast
21
+ * - Memory: Constant overhead, pooled resources
22
+ * - GC pressure: Minimal (object reuse)
23
+ *
24
+ * @example
25
+ * ```typescript
26
+ * import {
27
+ * ReactiveState,
28
+ * EventDelegator,
29
+ * ObjectPool,
30
+ * BatchProcessor
31
+ * } from '@zengrid/shared/reactive';
32
+ *
33
+ * // 1. Reactive state with event history (new!)
34
+ * const state = new ReactiveState(undefined, undefined, 100); // 100 event history
35
+ *
36
+ * // 2. Composition with interfaces (new!)
37
+ * class ColumnModel {
38
+ * constructor(private state: IReactiveState<ColumnState, ColumnEvent>) {}
39
+ * }
40
+ *
41
+ * // 3. Use exposed helpers directly (new!)
42
+ * import { SubscriptionManager } from '@zengrid/shared/reactive';
43
+ * const subs = new SubscriptionManager();
44
+ * ```
45
+ *
46
+ * @packageDocumentation
47
+ */
48
+ export type { ISubscriber, IReactiveState, ISubscriptionManager, IBatchManager, IEventDelegator, IElementEventHandlers, IEventDelegatorOptions, IObjectPool, IObjectPoolOptions, IObjectPoolStats, IBatchProcessor, IBatchProcessorOptions, IEventHandlerRegistry, } from './interfaces';
49
+ export { ReactiveState, type StateSubscriber, } from './reactive-state';
50
+ export { EventDelegator, type ElementEventHandlers, // Backward compatible
51
+ type EventDelegatorOptions, } from './event-delegator';
52
+ export { ObjectPool, type ObjectPoolOptions, // Backward compatible
53
+ type ObjectPoolStats, } from './object-pool';
54
+ export { BatchProcessor, type BatchProcessorOptions, } from './batch-processor';
55
+ export { SubscriptionManager } from './core/subscription-manager';
56
+ export { BatchManager } from './core/batch-manager';
57
+ export { EventHandlerRegistry } from './core/event-handler-registry';
58
+ export { EventMapper } from './core/event-mapper';
59
+ export { PoolStatsTracker } from './core/pool-stats';
60
+ export { BatchQueue } from './core/batch-queue';
61
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/reactive/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AAMH,YAAY,EACV,WAAW,EACX,cAAc,EACd,oBAAoB,EACpB,aAAa,EACb,eAAe,EACf,qBAAqB,EACrB,sBAAsB,EACtB,WAAW,EACX,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,cAAc,CAAC;AAMtB,OAAO,EACL,aAAa,EACb,KAAK,eAAe,GACrB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,cAAc,EACd,KAAK,oBAAoB,EAAE,sBAAsB;AACjD,KAAK,qBAAqB,GAC3B,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,UAAU,EACV,KAAK,iBAAiB,EAAE,sBAAsB;AAC9C,KAAK,eAAe,GACrB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,cAAc,EACd,KAAK,qBAAqB,GAC3B,MAAM,mBAAmB,CAAC;AAM3B,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,207 @@
1
+ /**
2
+ * Reactive Primitives - Interface Abstractions
3
+ *
4
+ * @description
5
+ * Interface-based abstractions for loose coupling and testability.
6
+ * Enables dependency injection, mocking, and composition.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * // Use interfaces for loose coupling
11
+ * class ColumnModel {
12
+ * constructor(private state: IReactiveState<ColumnState, ColumnEvent>) {}
13
+ * }
14
+ *
15
+ * // Can inject real or mock implementation
16
+ * const model = new ColumnModel(new ReactiveState());
17
+ * const testModel = new ColumnModel(new MockReactiveState());
18
+ * ```
19
+ */
20
+ /**
21
+ * Subscriber for state changes
22
+ */
23
+ export interface ISubscriber<E> {
24
+ onChange(event: E): void;
25
+ onBatchChange?(events: E[]): void;
26
+ }
27
+ /**
28
+ * Reactive state container with targeted subscriptions
29
+ *
30
+ * @template T - State value type (not exposed in interface, used internally)
31
+ * @template E - Event type (used in subscriptions)
32
+ */
33
+ export interface IReactiveState<T, E> {
34
+ /**
35
+ * Subscribe to specific key changes (targeted O(m))
36
+ */
37
+ subscribeToKey(key: string, subscriber: ISubscriber<E>): () => void;
38
+ /**
39
+ * Subscribe to all state changes (global observer)
40
+ */
41
+ subscribeGlobal(subscriber: ISubscriber<E>): () => void;
42
+ /**
43
+ * Get subscriber count for debugging
44
+ */
45
+ getSubscriberCount(key: string): number;
46
+ /**
47
+ * Get global subscriber count
48
+ */
49
+ getGlobalSubscriberCount(): number;
50
+ /**
51
+ * Get event history (if enabled)
52
+ */
53
+ getEventHistory(): E[];
54
+ /**
55
+ * Get last N events from history
56
+ */
57
+ getLastEvents(count: number): E[];
58
+ /**
59
+ * Clear event history
60
+ */
61
+ clearEventHistory(): void;
62
+ /**
63
+ * Cleanup
64
+ */
65
+ destroy(): void;
66
+ __state?: T;
67
+ }
68
+ /**
69
+ * Manages subscriptions and notifications
70
+ */
71
+ export interface ISubscriptionManager<E> {
72
+ subscribeToKey(key: string, subscriber: ISubscriber<E>): () => void;
73
+ subscribeGlobal(subscriber: ISubscriber<E>): () => void;
74
+ notifyKey(key: string, event: E): void;
75
+ notifyBatch(eventsByKey: Map<string, E[]>): void;
76
+ getKeySubscriberCount(key: string): number;
77
+ getGlobalSubscriberCount(): number;
78
+ hasKeySubscribers(key: string): boolean;
79
+ clear(): void;
80
+ }
81
+ /**
82
+ * Manages batch mode and event queuing
83
+ */
84
+ export interface IBatchManager<E> {
85
+ isBatching(): boolean;
86
+ enterBatch(): void;
87
+ exitBatch(): void;
88
+ addEvent(key: string, event: E): void;
89
+ flushEvents(): Array<{
90
+ key: string;
91
+ event: E;
92
+ }>;
93
+ groupEventsByKey(events: Array<{
94
+ key: string;
95
+ event: E;
96
+ }>): Map<string, E[]>;
97
+ clear(): void;
98
+ }
99
+ /**
100
+ * Event handler types
101
+ */
102
+ export interface IElementEventHandlers {
103
+ onClick?: (event: MouseEvent) => void;
104
+ onDblClick?: (event: MouseEvent) => void;
105
+ onMouseDown?: (event: MouseEvent) => void;
106
+ onMouseUp?: (event: MouseEvent) => void;
107
+ onMouseEnter?: (event: MouseEvent) => void;
108
+ onMouseLeave?: (event: MouseEvent) => void;
109
+ onContextMenu?: (event: MouseEvent) => void;
110
+ onFocus?: (event: FocusEvent) => void;
111
+ onBlur?: (event: FocusEvent) => void;
112
+ }
113
+ /**
114
+ * Event delegator options
115
+ */
116
+ export interface IEventDelegatorOptions {
117
+ idAttribute?: string;
118
+ customEvents?: Record<string, {
119
+ domEvent: string;
120
+ useCapture: boolean;
121
+ }>;
122
+ }
123
+ /**
124
+ * Event delegation for thousands of elements
125
+ */
126
+ export interface IEventDelegator {
127
+ registerElement(elementId: string, handlers: IElementEventHandlers): void;
128
+ unregisterElement(elementId: string): void;
129
+ updateElement(elementId: string, handlers: IElementEventHandlers, merge?: boolean): void;
130
+ isRegistered(elementId: string): boolean;
131
+ getAllRegisteredIds(): string[];
132
+ getRegisteredCount(): number;
133
+ destroy(): void;
134
+ }
135
+ /**
136
+ * Object pool options
137
+ */
138
+ export interface IObjectPoolOptions<T> {
139
+ factory: () => T;
140
+ reset?: (obj: T) => void;
141
+ validate?: (obj: T) => boolean;
142
+ initialSize?: number;
143
+ maxSize?: number;
144
+ onAcquire?: (obj: T) => void;
145
+ onRelease?: (obj: T) => void;
146
+ onEvict?: (obj: T) => void;
147
+ }
148
+ /**
149
+ * Object pool statistics
150
+ */
151
+ export interface IObjectPoolStats {
152
+ available: number;
153
+ created: number;
154
+ acquired: number;
155
+ released: number;
156
+ hitRate: number;
157
+ maxSize: number;
158
+ }
159
+ /**
160
+ * Object pooling for virtual rendering
161
+ */
162
+ export interface IObjectPool<T> {
163
+ acquire(): T;
164
+ release(obj: T): void;
165
+ acquireMany(count: number): T[];
166
+ releaseMany(objects: T[]): void;
167
+ prewarm(count: number): void;
168
+ size(): number;
169
+ getStats(): IObjectPoolStats;
170
+ shrink(targetSize: number): void;
171
+ clear(): void;
172
+ destroy(): void;
173
+ }
174
+ /**
175
+ * Batch processor options
176
+ */
177
+ export interface IBatchProcessorOptions<T> {
178
+ process: (items: T[]) => void;
179
+ delay?: number;
180
+ maxBatchSize?: number;
181
+ deduplicate?: (items: T[]) => T[];
182
+ }
183
+ /**
184
+ * Batch processing for grouped operations
185
+ */
186
+ export interface IBatchProcessor<T> {
187
+ add(item: T): void;
188
+ addMany(items: T[]): void;
189
+ flush(): void;
190
+ clear(): void;
191
+ size(): number;
192
+ isIdle(): boolean;
193
+ destroy(): void;
194
+ }
195
+ /**
196
+ * Event handler storage and lookup
197
+ */
198
+ export interface IEventHandlerRegistry {
199
+ register(elementId: string, handlers: IElementEventHandlers): void;
200
+ unregister(elementId: string): void;
201
+ update(elementId: string, handlers: IElementEventHandlers, merge: boolean): void;
202
+ get(elementId: string): IElementEventHandlers | undefined;
203
+ getHandler(elementId: string, handlerName: keyof IElementEventHandlers): ((event: any) => void) | undefined;
204
+ size(): number;
205
+ clear(): void;
206
+ }
207
+ //# sourceMappingURL=interfaces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/reactive/interfaces.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * ObjectPool - Object pooling for virtual rendering
3
+ *
4
+ * @description
5
+ * Reuses objects instead of creating/destroying (10x faster scroll).
6
+ * Uses PoolStatsTracker for monitoring.
7
+ *
8
+ * @performance
9
+ * - Traditional: User scrolls → destroy 50 cells → create 50 new (10-15ms)
10
+ * - Pooling: User scrolls → release 50 → acquire 50 from pool (1-2ms)
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * const cellPool = new ObjectPool({
15
+ * factory: () => document.createElement('div'),
16
+ * reset: (div) => div.innerHTML = '',
17
+ * initialSize: 50,
18
+ * });
19
+ *
20
+ * const cell = cellPool.acquire();
21
+ * cell.textContent = 'Cell content';
22
+ * document.body.appendChild(cell);
23
+ *
24
+ * // Later: release back to pool
25
+ * document.body.removeChild(cell);
26
+ * cellPool.release(cell);
27
+ * ```
28
+ */
29
+ import { type ObjectPoolStats } from './core/pool-stats';
30
+ export type { ObjectPoolStats };
31
+ export interface ObjectPoolOptions<T> {
32
+ factory: () => T;
33
+ reset?: (obj: T) => void;
34
+ validate?: (obj: T) => boolean;
35
+ initialSize?: number;
36
+ maxSize?: number;
37
+ }
38
+ export declare class ObjectPool<T> {
39
+ private pool;
40
+ private factory;
41
+ private reset?;
42
+ private validate?;
43
+ private maxSize;
44
+ private stats;
45
+ constructor(options: ObjectPoolOptions<T>);
46
+ /**
47
+ * Acquire object from pool (reuse or create)
48
+ *
49
+ * @performance O(1) - pop from array
50
+ */
51
+ acquire(): T;
52
+ /**
53
+ * Release object back to pool
54
+ *
55
+ * @performance O(1) - push to array + O(reset)
56
+ */
57
+ release(obj: T): void;
58
+ /**
59
+ * Create new object
60
+ *
61
+ * @private
62
+ */
63
+ private createNew;
64
+ /**
65
+ * Acquire multiple objects from pool
66
+ */
67
+ acquireMany(count: number): T[];
68
+ /**
69
+ * Release multiple objects back to pool
70
+ */
71
+ releaseMany(objects: T[]): void;
72
+ /**
73
+ * Prewarm pool with objects
74
+ */
75
+ prewarm(count: number): void;
76
+ /**
77
+ * Get current pool size
78
+ */
79
+ size(): number;
80
+ /**
81
+ * Get pool statistics
82
+ */
83
+ getStats(): ObjectPoolStats;
84
+ /**
85
+ * Shrink pool to target size
86
+ */
87
+ shrink(targetSize: number): void;
88
+ /**
89
+ * Clear pool
90
+ */
91
+ clear(): void;
92
+ /**
93
+ * Destroy pool
94
+ */
95
+ destroy(): void;
96
+ }
97
+ //# sourceMappingURL=object-pool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object-pool.d.ts","sourceRoot":"","sources":["../../../src/reactive/object-pool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EAAoB,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAG3E,YAAY,EAAE,eAAe,EAAE,CAAC;AAEhC,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,OAAO,EAAE,MAAM,CAAC,CAAC;IACjB,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC;IACzB,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,UAAU,CAAC,CAAC;IACvB,OAAO,CAAC,IAAI,CAAW;IACvB,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,KAAK,CAAC,CAAmB;IACjC,OAAO,CAAC,QAAQ,CAAC,CAAsB;IACvC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,KAAK,CAA0B;gBAE3B,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAWzC;;;;OAIG;IACH,OAAO,IAAI,CAAC;IAqBZ;;;;OAIG;IACH,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI;IAqBrB;;;;OAIG;IACH,OAAO,CAAC,SAAS;IAUjB;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE;IAQ/B;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,CAAC,EAAE,GAAG,IAAI;IAI/B;;OAEG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAU5B;;OAEG;IACH,IAAI,IAAI,MAAM;IAId;;OAEG;IACH,QAAQ,IAAI,eAAe;IAI3B;;OAEG;IACH,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAMhC;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,OAAO,IAAI,IAAI;CAIhB"}
@@ -0,0 +1,132 @@
1
+ /**
2
+ * ReactiveState - Generic reactive state container
3
+ *
4
+ * @description
5
+ * Observable state with targeted subscriptions (O(m) vs O(n)).
6
+ * Supports dependency injection for testing and customization.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * // Inheritance (backward compatible)
11
+ * class ColumnModel extends ReactiveState<ColumnState, ColumnEvent> {
12
+ * setWidth(id: string, width: number): void {
13
+ * this.setState(id, { ...state, width }, event);
14
+ * }
15
+ * }
16
+ *
17
+ * // Composition with DI (new, flexible)
18
+ * class ColumnModel {
19
+ * constructor(private state: IReactiveState<ColumnState, ColumnEvent>) {}
20
+ * }
21
+ *
22
+ * // Can inject custom implementation
23
+ * const model = new ColumnModel(new ReactiveState());
24
+ * const testModel = new ColumnModel(mockState);
25
+ * ```
26
+ *
27
+ * @template T - State value type
28
+ * @template E - Event type
29
+ */
30
+ import type { IReactiveState, ISubscriber, ISubscriptionManager, IBatchManager } from './interfaces';
31
+ export declare class ReactiveState<T, E> implements IReactiveState<T, E> {
32
+ private state;
33
+ private subscriptions;
34
+ private batching;
35
+ private eventHistory?;
36
+ /**
37
+ * Create ReactiveState with optional dependency injection
38
+ *
39
+ * @param subscriptions - Custom subscription manager (default: SubscriptionManager)
40
+ * @param batching - Custom batch manager (default: BatchManager)
41
+ * @param historySize - Event history size for debugging (default: 0, disabled)
42
+ */
43
+ constructor(subscriptions?: ISubscriptionManager<E>, batching?: IBatchManager<E>, historySize?: number);
44
+ /**
45
+ * Subscribe to specific key changes (targeted O(m))
46
+ */
47
+ subscribeToKey(key: string, subscriber: ISubscriber<E>): () => void;
48
+ /**
49
+ * Subscribe to all state changes (global observer)
50
+ */
51
+ subscribeGlobal(subscriber: ISubscriber<E>): () => void;
52
+ /**
53
+ * Update state and notify subscribers
54
+ *
55
+ * @protected - For subclass use
56
+ */
57
+ protected setState(key: string, value: T, event: E): void;
58
+ /**
59
+ * Batch multiple updates (single notification)
60
+ *
61
+ * @example
62
+ * ```typescript
63
+ * columnModel.batch(() => {
64
+ * columnModel.setWidth('col-0', 150);
65
+ * columnModel.setWidth('col-1', 200);
66
+ * columnModel.setWidth('col-2', 180);
67
+ * });
68
+ * ```
69
+ */
70
+ protected batch(updates: () => void): void;
71
+ /**
72
+ * Flush batched events
73
+ *
74
+ * @private
75
+ */
76
+ private flushBatch;
77
+ /**
78
+ * Get state for key
79
+ */
80
+ protected getState(key: string): T | undefined;
81
+ /**
82
+ * Get all state
83
+ */
84
+ protected getAllState(): Map<string, T>;
85
+ /**
86
+ * Check if key has state
87
+ */
88
+ protected hasState(key: string): boolean;
89
+ /**
90
+ * Delete state for key and optionally notify
91
+ */
92
+ protected deleteState(key: string, event?: E): void;
93
+ /**
94
+ * Get all state keys
95
+ */
96
+ protected getKeys(): string[];
97
+ /**
98
+ * Get subscriber count for key
99
+ */
100
+ getSubscriberCount(key: string): number;
101
+ /**
102
+ * Get global subscriber count
103
+ */
104
+ getGlobalSubscriberCount(): number;
105
+ /**
106
+ * Get event history (if enabled)
107
+ * Returns [oldest, ..., newest]
108
+ */
109
+ getEventHistory(): E[];
110
+ /**
111
+ * Get last N events from history
112
+ */
113
+ getLastEvents(count: number): E[];
114
+ /**
115
+ * Clear event history
116
+ */
117
+ clearEventHistory(): void;
118
+ /**
119
+ * Clear all state and subscribers
120
+ */
121
+ destroy(): void;
122
+ }
123
+ /**
124
+ * Subscriber interface (backward compatible)
125
+ * @deprecated Use ISubscriber from interfaces.ts
126
+ */
127
+ export interface StateSubscriber<E> {
128
+ onChange(event: E): void;
129
+ onBatchChange?(events: E[]): void;
130
+ }
131
+ export type { ISubscriber, IReactiveState } from './interfaces';
132
+ //# sourceMappingURL=reactive-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reactive-state.d.ts","sourceRoot":"","sources":["../../../src/reactive/reactive-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,WAAW,EACX,oBAAoB,EACpB,aAAa,EACd,MAAM,cAAc,CAAC;AAKtB,qBAAa,aAAa,CAAC,CAAC,EAAE,CAAC,CAAE,YAAW,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC;IAC9D,OAAO,CAAC,KAAK,CAAwB;IACrC,OAAO,CAAC,aAAa,CAA0B;IAC/C,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,YAAY,CAAC,CAAgB;IAErC;;;;;;OAMG;gBAED,aAAa,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,EACvC,QAAQ,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAC3B,WAAW,GAAE,MAAU;IAUzB;;OAEG;IACH,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI;IAInE;;OAEG;IACH,eAAe,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI;IAIvD;;;;OAIG;IACH,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAezD;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI;IAiB1C;;;;OAIG;IACH,OAAO,CAAC,UAAU;IAQlB;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAI9C;;OAEG;IACH,SAAS,CAAC,WAAW,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IAIvC;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIxC;;OAEG;IACH,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI;IASnD;;OAEG;IACH,SAAS,CAAC,OAAO,IAAI,MAAM,EAAE;IAI7B;;OAEG;IACH,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAIvC;;OAEG;IACH,wBAAwB,IAAI,MAAM;IAIlC;;;OAGG;IACH,eAAe,IAAI,CAAC,EAAE;IAItB;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE;IAKjC;;OAEG;IACH,iBAAiB,IAAI,IAAI;IAIzB;;OAEG;IACH,OAAO,IAAI,IAAI;CAMhB;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IACzB,aAAa,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC;CACnC;AAGD,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC"}
package/package.json CHANGED
@@ -1,52 +1,52 @@
1
- {
2
- "name": "@zengrid/shared",
3
- "version": "1.0.4",
4
- "description": "14 advanced data structures and algorithms for high-performance grids",
5
- "main": "./dist/index.cjs",
6
- "module": "./dist/index.esm.js",
7
- "types": "./dist/index.d.ts",
8
- "sideEffects": false,
9
- "exports": {
10
- ".": {
11
- "types": "./dist/index.d.ts",
12
- "import": "./dist/index.esm.js",
13
- "require": "./dist/index.cjs"
14
- },
15
- "./algorithms/*": {
16
- "types": "./dist/algorithms/*/index.d.ts",
17
- "import": "./dist/algorithms/*/index.esm.js",
18
- "require": "./dist/algorithms/*/index.cjs"
19
- },
20
- "./data-structures/*": {
21
- "types": "./dist/data-structures/*/index.d.ts",
22
- "import": "./dist/data-structures/*/index.esm.js",
23
- "require": "./dist/data-structures/*/index.cjs"
24
- },
25
- "./types": {
26
- "types": "./dist/types/index.d.ts",
27
- "import": "./dist/types/index.esm.js",
28
- "require": "./dist/types/index.cjs"
29
- }
30
- },
31
- "files": [
32
- "dist",
33
- "README.md"
34
- ],
35
- "keywords": [
36
- "algorithms",
37
- "data-structures",
38
- "grid",
39
- "utilities"
40
- ],
41
- "author": "ZenGrid Team",
42
- "license": "MIT",
43
- "repository": {
44
- "type": "git",
45
- "url": "https://github.com/zengrid-dev/zengrid.git",
46
- "directory": "packages/shared"
47
- },
48
- "bugs": {
49
- "url": "https://github.com/zengrid-dev/zengrid/issues"
50
- },
51
- "homepage": "https://github.com/zengrid-dev/zengrid#readme"
52
- }
1
+ {
2
+ "name": "@zengrid/shared",
3
+ "version": "1.2.0",
4
+ "description": "14 advanced data structures and algorithms for high-performance grids",
5
+ "main": "./dist/index.cjs",
6
+ "module": "./dist/index.esm.js",
7
+ "types": "./dist/index.d.ts",
8
+ "sideEffects": false,
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "import": "./dist/index.esm.js",
13
+ "require": "./dist/index.cjs"
14
+ },
15
+ "./algorithms/*": {
16
+ "types": "./dist/algorithms/*/index.d.ts",
17
+ "import": "./dist/algorithms/*/index.esm.js",
18
+ "require": "./dist/algorithms/*/index.cjs"
19
+ },
20
+ "./data-structures/*": {
21
+ "types": "./dist/data-structures/*/index.d.ts",
22
+ "import": "./dist/data-structures/*/index.esm.js",
23
+ "require": "./dist/data-structures/*/index.cjs"
24
+ },
25
+ "./types": {
26
+ "types": "./dist/types/index.d.ts",
27
+ "import": "./dist/types/index.esm.js",
28
+ "require": "./dist/types/index.cjs"
29
+ }
30
+ },
31
+ "files": [
32
+ "dist",
33
+ "README.md"
34
+ ],
35
+ "keywords": [
36
+ "algorithms",
37
+ "data-structures",
38
+ "grid",
39
+ "utilities"
40
+ ],
41
+ "author": "ZenGrid Team",
42
+ "license": "MIT",
43
+ "repository": {
44
+ "type": "git",
45
+ "url": "https://github.com/zengrid-dev/zengrid.git",
46
+ "directory": "packages/shared"
47
+ },
48
+ "bugs": {
49
+ "url": "https://github.com/zengrid-dev/zengrid/issues"
50
+ },
51
+ "homepage": "https://github.com/zengrid-dev/zengrid#readme"
52
+ }