@blac/core 2.0.0-rc-14 → 2.0.0-rc.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 (162) hide show
  1. package/dist/.tsbuildinfo +1 -0
  2. package/dist/Blac.d.ts +246 -0
  3. package/dist/Blac.d.ts.map +1 -0
  4. package/dist/Blac.js +625 -0
  5. package/dist/Blac.js.map +1 -0
  6. package/dist/Bloc.d.ts +41 -0
  7. package/dist/Bloc.d.ts.map +1 -0
  8. package/dist/Bloc.js +140 -0
  9. package/dist/Bloc.js.map +1 -0
  10. package/dist/BlocBase.d.ts +110 -0
  11. package/dist/BlocBase.d.ts.map +1 -0
  12. package/dist/BlocBase.js +287 -0
  13. package/dist/BlocBase.js.map +1 -0
  14. package/dist/Cubit.d.ts +25 -0
  15. package/dist/Cubit.d.ts.map +1 -0
  16. package/dist/Cubit.js +64 -0
  17. package/dist/Cubit.js.map +1 -0
  18. package/dist/adapter/BlacAdapter.d.ts +71 -0
  19. package/dist/adapter/BlacAdapter.d.ts.map +1 -0
  20. package/dist/adapter/BlacAdapter.js +373 -0
  21. package/dist/adapter/BlacAdapter.js.map +1 -0
  22. package/dist/adapter/ProxyFactory.d.ts +50 -0
  23. package/dist/adapter/ProxyFactory.d.ts.map +1 -0
  24. package/dist/adapter/ProxyFactory.js +150 -0
  25. package/dist/adapter/ProxyFactory.js.map +1 -0
  26. package/{src/adapter/index.ts → dist/adapter/index.d.ts} +1 -0
  27. package/dist/adapter/index.d.ts.map +1 -0
  28. package/dist/adapter/index.js +19 -0
  29. package/dist/adapter/index.js.map +1 -0
  30. package/dist/errors/BlacError.d.ts +38 -0
  31. package/dist/errors/BlacError.d.ts.map +1 -0
  32. package/dist/errors/BlacError.js +55 -0
  33. package/dist/errors/BlacError.js.map +1 -0
  34. package/dist/errors/ErrorManager.d.ts +39 -0
  35. package/dist/errors/ErrorManager.d.ts.map +1 -0
  36. package/dist/errors/ErrorManager.js +91 -0
  37. package/dist/errors/ErrorManager.js.map +1 -0
  38. package/dist/errors/handleError.d.ts +24 -0
  39. package/dist/errors/handleError.d.ts.map +1 -0
  40. package/dist/errors/handleError.js +62 -0
  41. package/dist/errors/handleError.js.map +1 -0
  42. package/dist/errors/index.d.ts +5 -0
  43. package/dist/errors/index.d.ts.map +1 -0
  44. package/dist/errors/index.js +13 -0
  45. package/dist/errors/index.js.map +1 -0
  46. package/{src/events.ts → dist/events.d.ts} +4 -2
  47. package/dist/events.d.ts.map +1 -0
  48. package/dist/events.js +17 -0
  49. package/dist/events.js.map +1 -0
  50. package/dist/index.cjs +38 -0
  51. package/dist/index.d.ts +17 -1303
  52. package/dist/index.d.ts.map +1 -0
  53. package/dist/index.js +38 -0
  54. package/dist/index.js.map +1 -0
  55. package/dist/lifecycle/BlocLifecycle.d.ts +51 -0
  56. package/dist/lifecycle/BlocLifecycle.d.ts.map +1 -0
  57. package/dist/lifecycle/BlocLifecycle.js +123 -0
  58. package/dist/lifecycle/BlocLifecycle.js.map +1 -0
  59. package/dist/lifecycle/index.d.ts +2 -0
  60. package/dist/lifecycle/index.d.ts.map +1 -0
  61. package/dist/lifecycle/index.js +18 -0
  62. package/dist/lifecycle/index.js.map +1 -0
  63. package/dist/plugins/BlocPluginRegistry.d.ts +58 -0
  64. package/dist/plugins/BlocPluginRegistry.d.ts.map +1 -0
  65. package/dist/plugins/BlocPluginRegistry.js +201 -0
  66. package/dist/plugins/BlocPluginRegistry.js.map +1 -0
  67. package/dist/plugins/SystemPluginRegistry.d.ts +79 -0
  68. package/dist/plugins/SystemPluginRegistry.d.ts.map +1 -0
  69. package/dist/plugins/SystemPluginRegistry.js +184 -0
  70. package/dist/plugins/SystemPluginRegistry.js.map +1 -0
  71. package/{src/plugins/index.ts → dist/plugins/index.d.ts} +1 -5
  72. package/dist/plugins/index.d.ts.map +1 -0
  73. package/dist/plugins/index.js +26 -0
  74. package/dist/plugins/index.js.map +1 -0
  75. package/dist/plugins/types.d.ts +103 -0
  76. package/dist/plugins/types.d.ts.map +1 -0
  77. package/dist/plugins/types.js +3 -0
  78. package/dist/plugins/types.js.map +1 -0
  79. package/dist/subscription/SubscriptionManager.d.ts +67 -0
  80. package/dist/subscription/SubscriptionManager.d.ts.map +1 -0
  81. package/dist/subscription/SubscriptionManager.js +317 -0
  82. package/dist/subscription/SubscriptionManager.js.map +1 -0
  83. package/{src/subscription/index.ts → dist/subscription/index.d.ts} +1 -0
  84. package/dist/subscription/index.d.ts.map +1 -0
  85. package/dist/subscription/index.js +19 -0
  86. package/dist/subscription/index.js.map +1 -0
  87. package/dist/subscription/types.d.ts +65 -0
  88. package/dist/subscription/types.d.ts.map +1 -0
  89. package/dist/subscription/types.js +3 -0
  90. package/dist/subscription/types.js.map +1 -0
  91. package/dist/testing.d.ts +85 -0
  92. package/dist/testing.d.ts.map +1 -0
  93. package/dist/testing.js +186 -0
  94. package/dist/testing.js.map +1 -0
  95. package/{src/types.ts → dist/types.d.ts} +11 -28
  96. package/dist/types.d.ts.map +1 -0
  97. package/dist/types.js +3 -0
  98. package/dist/types.js.map +1 -0
  99. package/dist/utils/BatchingManager.d.ts +28 -0
  100. package/dist/utils/BatchingManager.d.ts.map +1 -0
  101. package/dist/utils/BatchingManager.js +48 -0
  102. package/dist/utils/BatchingManager.js.map +1 -0
  103. package/dist/utils/RerenderLogger.d.ts +60 -0
  104. package/dist/utils/RerenderLogger.d.ts.map +1 -0
  105. package/dist/utils/RerenderLogger.js +205 -0
  106. package/dist/utils/RerenderLogger.js.map +1 -0
  107. package/dist/utils/generateInstanceId.d.ts +11 -0
  108. package/dist/utils/generateInstanceId.d.ts.map +1 -0
  109. package/dist/utils/generateInstanceId.js +50 -0
  110. package/dist/utils/generateInstanceId.js.map +1 -0
  111. package/dist/utils/shallowEqual.d.ts +9 -0
  112. package/dist/utils/shallowEqual.d.ts.map +1 -0
  113. package/dist/utils/shallowEqual.js +35 -0
  114. package/dist/utils/shallowEqual.js.map +1 -0
  115. package/dist/utils/uuid.d.ts +10 -0
  116. package/dist/utils/uuid.d.ts.map +1 -0
  117. package/dist/utils/uuid.js +24 -0
  118. package/dist/utils/uuid.js.map +1 -0
  119. package/package.json +17 -10
  120. package/dist/index.cjs.js +0 -11
  121. package/dist/index.cjs.js.map +0 -1
  122. package/dist/index.es.js +0 -2275
  123. package/dist/index.es.js.map +0 -1
  124. package/src/Blac.ts +0 -802
  125. package/src/Bloc.ts +0 -180
  126. package/src/BlocBase.ts +0 -398
  127. package/src/Cubit.ts +0 -68
  128. package/src/__tests__/Blac.config.test.ts +0 -79
  129. package/src/__tests__/Bloc.event.test.ts +0 -394
  130. package/src/__tests__/BlocBase.subscription.test.ts +0 -349
  131. package/src/__tests__/Cubit.test.ts +0 -462
  132. package/src/__tests__/memory-leaks.test.ts +0 -383
  133. package/src/__tests__/plugins.test.ts +0 -464
  134. package/src/adapter/BlacAdapter.ts +0 -467
  135. package/src/adapter/ProxyFactory.ts +0 -249
  136. package/src/adapter/__tests__/BlacAdapter.test.ts +0 -555
  137. package/src/adapter/__tests__/ProxyFactory.test.ts +0 -655
  138. package/src/errors/BlacError.ts +0 -69
  139. package/src/errors/ErrorManager.ts +0 -101
  140. package/src/errors/handleError.ts +0 -114
  141. package/src/errors/index.ts +0 -13
  142. package/src/index.ts +0 -26
  143. package/src/lifecycle/BlocLifecycle.ts +0 -156
  144. package/src/lifecycle/index.ts +0 -1
  145. package/src/plugins/BlocPluginRegistry.ts +0 -240
  146. package/src/plugins/SystemPluginRegistry.ts +0 -242
  147. package/src/plugins/__tests__/BlocPluginRegistry.test.ts +0 -450
  148. package/src/plugins/__tests__/SystemPluginRegistry.test.ts +0 -404
  149. package/src/plugins/types.ts +0 -129
  150. package/src/subscription/README.md +0 -132
  151. package/src/subscription/SubscriptionManager.ts +0 -395
  152. package/src/subscription/__tests__/SubscriptionManager.test.ts +0 -355
  153. package/src/subscription/types.ts +0 -90
  154. package/src/testing.ts +0 -246
  155. package/src/utils/BatchingManager.ts +0 -59
  156. package/src/utils/RerenderLogger.ts +0 -265
  157. package/src/utils/__tests__/generateInstanceId.test.ts +0 -104
  158. package/src/utils/__tests__/shallowEqual.test.ts +0 -171
  159. package/src/utils/__tests__/uuid.test.ts +0 -144
  160. package/src/utils/generateInstanceId.ts +0 -54
  161. package/src/utils/shallowEqual.ts +0 -40
  162. package/src/utils/uuid.ts +0 -22
@@ -0,0 +1,184 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SystemPluginRegistry = void 0;
4
+ /**
5
+ * Registry for system-wide plugins
6
+ */
7
+ class SystemPluginRegistry {
8
+ plugins = new Map();
9
+ metrics = new Map();
10
+ executionOrder = [];
11
+ /**
12
+ * Add a system plugin
13
+ */
14
+ add(plugin) {
15
+ if (this.plugins.has(plugin.name)) {
16
+ throw new Error(`Plugin '${plugin.name}' is already registered`);
17
+ }
18
+ this.plugins.set(plugin.name, plugin);
19
+ this.executionOrder.push(plugin.name);
20
+ this.initializeMetrics(plugin.name);
21
+ }
22
+ /**
23
+ * Remove a system plugin
24
+ */
25
+ remove(pluginName) {
26
+ const plugin = this.plugins.get(pluginName);
27
+ if (!plugin)
28
+ return false;
29
+ this.plugins.delete(pluginName);
30
+ this.metrics.delete(pluginName);
31
+ this.executionOrder = this.executionOrder.filter((name) => name !== pluginName);
32
+ return true;
33
+ }
34
+ /**
35
+ * Get a plugin by name
36
+ */
37
+ get(pluginName) {
38
+ return this.plugins.get(pluginName);
39
+ }
40
+ /**
41
+ * Get all plugins in execution order
42
+ */
43
+ getAll() {
44
+ return this.executionOrder.map((name) => this.plugins.get(name));
45
+ }
46
+ /**
47
+ * Clear all plugins
48
+ */
49
+ clear() {
50
+ this.plugins.clear();
51
+ this.metrics.clear();
52
+ this.executionOrder = [];
53
+ }
54
+ /**
55
+ * Execute a hook on all plugins
56
+ */
57
+ executeHook(hookName, args, errorHandler) {
58
+ for (const pluginName of this.executionOrder) {
59
+ const plugin = this.plugins.get(pluginName);
60
+ const hook = plugin[hookName];
61
+ if (typeof hook !== 'function')
62
+ continue;
63
+ const startTime = performance.now();
64
+ try {
65
+ hook.apply(plugin, args);
66
+ this.recordSuccess(pluginName, hookName, startTime);
67
+ }
68
+ catch (error) {
69
+ this.recordError(pluginName, hookName, error);
70
+ if (errorHandler) {
71
+ errorHandler(error, plugin);
72
+ }
73
+ else {
74
+ // Default: log and continue
75
+ console.error(`Plugin '${pluginName}' error in hook '${hookName}':`, error);
76
+ }
77
+ }
78
+ }
79
+ }
80
+ /**
81
+ * Bootstrap all plugins
82
+ */
83
+ bootstrap() {
84
+ this.executeHook('beforeBootstrap', []);
85
+ this.executeHook('afterBootstrap', []);
86
+ }
87
+ /**
88
+ * Shutdown all plugins
89
+ */
90
+ shutdown() {
91
+ this.executeHook('beforeShutdown', []);
92
+ this.executeHook('afterShutdown', []);
93
+ }
94
+ /**
95
+ * Notify plugins of bloc creation
96
+ */
97
+ notifyBlocCreated(bloc) {
98
+ this.executeHook('onBlocCreated', [bloc]);
99
+ }
100
+ /**
101
+ * Notify plugins of bloc disposal
102
+ */
103
+ notifyBlocDisposed(bloc) {
104
+ this.executeHook('onBlocDisposed', [bloc]);
105
+ }
106
+ /**
107
+ * Notify plugins of state change
108
+ */
109
+ notifyStateChanged(bloc, previousState, currentState) {
110
+ this.executeHook('onStateChanged', [bloc, previousState, currentState]);
111
+ }
112
+ /**
113
+ * Notify plugins of event addition
114
+ */
115
+ notifyEventAdded(bloc, event) {
116
+ this.executeHook('onEventAdded', [bloc, event]);
117
+ }
118
+ /**
119
+ * Notify plugins of errors
120
+ */
121
+ notifyError(error, bloc, context) {
122
+ this.executeHook('onError', [error, bloc, context], (hookError, plugin) => {
123
+ // Double fault protection - if error handler fails, just log
124
+ console.error(`Plugin '${plugin.name}' error handler failed:`, hookError);
125
+ });
126
+ }
127
+ /**
128
+ * Notify plugins of adapter lifecycle events
129
+ */
130
+ notifyAdapterCreated(adapter, metadata) {
131
+ this.executeHook('onAdapterCreated', [adapter, metadata]);
132
+ }
133
+ notifyAdapterMount(adapter, metadata) {
134
+ this.executeHook('onAdapterMount', [adapter, metadata]);
135
+ }
136
+ notifyAdapterUnmount(adapter, metadata) {
137
+ this.executeHook('onAdapterUnmount', [adapter, metadata]);
138
+ }
139
+ notifyAdapterRender(adapter, metadata) {
140
+ this.executeHook('onAdapterRender', [adapter, metadata]);
141
+ }
142
+ notifyAdapterDisposed(adapter, metadata) {
143
+ this.executeHook('onAdapterDisposed', [adapter, metadata]);
144
+ }
145
+ /**
146
+ * Get metrics for a plugin
147
+ */
148
+ getMetrics(pluginName) {
149
+ return this.metrics.get(pluginName);
150
+ }
151
+ initializeMetrics(pluginName) {
152
+ this.metrics.set(pluginName, new Map());
153
+ }
154
+ recordSuccess(pluginName, hookName, startTime) {
155
+ const pluginMetrics = this.metrics.get(pluginName);
156
+ const hookMetrics = pluginMetrics.get(hookName) || {
157
+ executionTime: 0,
158
+ executionCount: 0,
159
+ errorCount: 0,
160
+ };
161
+ const executionTime = performance.now() - startTime;
162
+ pluginMetrics.set(hookName, {
163
+ ...hookMetrics,
164
+ executionTime: hookMetrics.executionTime + executionTime,
165
+ executionCount: hookMetrics.executionCount + 1,
166
+ lastExecutionTime: executionTime,
167
+ });
168
+ }
169
+ recordError(pluginName, hookName, error) {
170
+ const pluginMetrics = this.metrics.get(pluginName);
171
+ const hookMetrics = pluginMetrics.get(hookName) || {
172
+ executionTime: 0,
173
+ executionCount: 0,
174
+ errorCount: 0,
175
+ };
176
+ pluginMetrics.set(hookName, {
177
+ ...hookMetrics,
178
+ errorCount: hookMetrics.errorCount + 1,
179
+ lastError: error,
180
+ });
181
+ }
182
+ }
183
+ exports.SystemPluginRegistry = SystemPluginRegistry;
184
+ //# sourceMappingURL=SystemPluginRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SystemPluginRegistry.js","sourceRoot":"","sources":["../../src/plugins/SystemPluginRegistry.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,4 @@
1
- // Core types
2
1
  export * from './types';
3
-
4
- // System plugins
5
2
  export { SystemPluginRegistry } from './SystemPluginRegistry';
6
-
7
- // Bloc plugins
8
3
  export { BlocPluginRegistry } from './BlocPluginRegistry';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AACA,cAAc,SAAS,CAAC;AAGxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAG9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.BlocPluginRegistry = exports.SystemPluginRegistry = void 0;
18
+ // Core types
19
+ __exportStar(require("./types"), exports);
20
+ // System plugins
21
+ var SystemPluginRegistry_1 = require("./SystemPluginRegistry");
22
+ Object.defineProperty(exports, "SystemPluginRegistry", { enumerable: true, get: function () { return SystemPluginRegistry_1.SystemPluginRegistry; } });
23
+ // Bloc plugins
24
+ var BlocPluginRegistry_1 = require("./BlocPluginRegistry");
25
+ Object.defineProperty(exports, "BlocPluginRegistry", { enumerable: true, get: function () { return BlocPluginRegistry_1.BlocPluginRegistry; } });
26
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,aAAa;AACb,0CAAwB;AAExB,iBAAiB;AACjB,+DAA8D;AAArD,4HAAA,oBAAoB,OAAA;AAE7B,eAAe;AACf,2DAA0D;AAAjD,wHAAA,kBAAkB,OAAA"}
@@ -0,0 +1,103 @@
1
+ import { BlocBase } from '../BlocBase';
2
+ import { Bloc } from '../Bloc';
3
+ /**
4
+ * Error context provided to error handlers
5
+ */
6
+ export interface ErrorContext {
7
+ readonly phase: 'initialization' | 'state-change' | 'event-processing' | 'disposal';
8
+ readonly operation: string;
9
+ readonly metadata?: Record<string, unknown>;
10
+ }
11
+ /**
12
+ * Plugin capabilities for security model
13
+ */
14
+ export interface PluginCapabilities {
15
+ readonly readState: boolean;
16
+ readonly transformState: boolean;
17
+ readonly interceptEvents: boolean;
18
+ readonly persistData: boolean;
19
+ readonly accessMetadata: boolean;
20
+ }
21
+ /**
22
+ * Base interface for all plugins
23
+ */
24
+ export interface Plugin {
25
+ readonly name: string;
26
+ readonly version: string;
27
+ readonly capabilities?: PluginCapabilities;
28
+ }
29
+ /**
30
+ * Adapter metadata provided to plugins
31
+ */
32
+ export interface AdapterMetadata {
33
+ componentName?: string;
34
+ blocInstance: BlocBase<any>;
35
+ renderCount: number;
36
+ trackedPaths?: string[];
37
+ isUsingDependencies?: boolean;
38
+ lastState?: any;
39
+ lastDependencyValues?: any[];
40
+ currentDependencyValues?: any[];
41
+ }
42
+ /**
43
+ * System-wide plugin that observes all blocs
44
+ */
45
+ export interface BlacPlugin extends Plugin {
46
+ beforeBootstrap?(): void;
47
+ afterBootstrap?(): void;
48
+ beforeShutdown?(): void;
49
+ afterShutdown?(): void;
50
+ onBlocCreated?(bloc: BlocBase<any>): void;
51
+ onBlocDisposed?(bloc: BlocBase<any>): void;
52
+ onStateChanged?(bloc: BlocBase<any>, previousState: any, currentState: any): void;
53
+ onEventAdded?(bloc: Bloc<any, any>, event: any): void;
54
+ onError?(error: Error, bloc: BlocBase<unknown>, context: ErrorContext): void;
55
+ onAdapterCreated?(adapter: any, metadata: AdapterMetadata): void;
56
+ onAdapterMount?(adapter: any, metadata: AdapterMetadata): void;
57
+ onAdapterUnmount?(adapter: any, metadata: AdapterMetadata): void;
58
+ onAdapterRender?(adapter: any, metadata: AdapterMetadata): void;
59
+ onAdapterDisposed?(adapter: any, metadata: AdapterMetadata): void;
60
+ }
61
+ /**
62
+ * Bloc-specific plugin that can transform behavior
63
+ */
64
+ export interface BlocPlugin<TState = any, TEvent = never> extends Plugin {
65
+ transformState?(previousState: TState, nextState: TState): TState;
66
+ transformEvent?(event: TEvent): TEvent | null;
67
+ onAttach?(bloc: BlocBase<TState>): void;
68
+ onDetach?(): void;
69
+ onStateChange?(previousState: TState, currentState: TState): void;
70
+ onEvent?(event: TEvent): void;
71
+ onError?(error: Error, context: ErrorContext): void;
72
+ }
73
+ /**
74
+ * Plugin execution context for performance monitoring
75
+ */
76
+ export interface PluginExecutionContext {
77
+ readonly pluginName: string;
78
+ readonly hookName: string;
79
+ readonly startTime: number;
80
+ readonly blocName?: string;
81
+ readonly blocId?: string;
82
+ }
83
+ /**
84
+ * Plugin metrics for monitoring
85
+ */
86
+ export interface PluginMetrics {
87
+ readonly executionTime: number;
88
+ readonly executionCount: number;
89
+ readonly errorCount: number;
90
+ readonly lastError?: Error;
91
+ readonly lastExecutionTime?: number;
92
+ }
93
+ /**
94
+ * Plugin registry interface
95
+ */
96
+ export interface PluginRegistry<T extends Plugin> {
97
+ add(plugin: T): void;
98
+ remove(pluginName: string): boolean;
99
+ get(pluginName: string): T | undefined;
100
+ getAll(): ReadonlyArray<T>;
101
+ clear(): void;
102
+ }
103
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/plugins/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/plugins/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,67 @@
1
+ import { BlocBase } from '../BlocBase';
2
+ import { Subscription, SubscriptionOptions, SubscriptionManagerStats } from './types';
3
+ /**
4
+ * Unified subscription manager that replaces the dual consumer/observer system.
5
+ * Handles all state change subscriptions with a single, consistent interface.
6
+ */
7
+ export declare class SubscriptionManager<S = unknown> {
8
+ private bloc;
9
+ private subscriptions;
10
+ private pathToSubscriptions;
11
+ private weakRefCleanupScheduled;
12
+ private totalNotifications;
13
+ constructor(bloc: BlocBase<S>);
14
+ /**
15
+ * Subscribe to state changes
16
+ */
17
+ subscribe(options: SubscriptionOptions<S>): () => void;
18
+ /**
19
+ * Unsubscribe by ID
20
+ */
21
+ unsubscribe(id: string): void;
22
+ /**
23
+ * Notify all subscriptions of state change
24
+ */
25
+ notify(newState: S, oldState: S, action?: unknown): void;
26
+ /**
27
+ * Track a path access for a subscription
28
+ */
29
+ trackAccess(subscriptionId: string, path: string, value?: unknown): void;
30
+ /**
31
+ * Get the paths that changed between two states
32
+ */
33
+ private getChangedPaths;
34
+ /**
35
+ * Check if a subscription should be notified based on changed paths
36
+ */
37
+ shouldNotifyForPaths(subscriptionId: string, changedPaths: Set<string>): boolean;
38
+ /**
39
+ * Get statistics about subscriptions
40
+ */
41
+ getStats(): SubscriptionManagerStats;
42
+ /**
43
+ * Clear all subscriptions
44
+ */
45
+ clear(): void;
46
+ /**
47
+ * Get subscription by ID
48
+ */
49
+ getSubscription(id: string): Subscription<S> | undefined;
50
+ /**
51
+ * Check if there are any active subscriptions
52
+ */
53
+ get hasSubscriptions(): boolean;
54
+ /**
55
+ * Get count of active subscriptions
56
+ */
57
+ get size(): number;
58
+ /**
59
+ * Clean up subscriptions with dead weak references
60
+ */
61
+ private cleanupDeadReferences;
62
+ /**
63
+ * Schedule weak reference cleanup for next tick
64
+ */
65
+ private scheduleWeakRefCleanup;
66
+ }
67
+ //# sourceMappingURL=SubscriptionManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SubscriptionManager.d.ts","sourceRoot":"","sources":["../../src/subscription/SubscriptionManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,wBAAwB,EACzB,MAAM,SAAS,CAAC;AAEjB;;;GAGG;AACH,qBAAa,mBAAmB,CAAC,CAAC,GAAG,OAAO;IAM9B,OAAO,CAAC,IAAI;IALxB,OAAO,CAAC,aAAa,CAAsC;IAC3D,OAAO,CAAC,mBAAmB,CAAkC;IAC7D,OAAO,CAAC,uBAAuB,CAAS;IACxC,OAAO,CAAC,kBAAkB,CAAK;gBAEX,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IAErC;;OAEG;IACH,SAAS,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI;IA6CtD;;OAEG;IACH,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IA2B7B;;OAEG;IACH,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI;IAsFxD;;OAEG;IACH,WAAW,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI;IA0BxE;;OAEG;IACH,OAAO,CAAC,eAAe;IAsDvB;;OAEG;IACH,oBAAoB,CAClB,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,GACxB,OAAO;IAkCV;;OAEG;IACH,QAAQ,IAAI,wBAAwB;IAkBpC;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,SAAS;IAIxD;;OAEG;IACH,IAAI,gBAAgB,IAAI,OAAO,CAE9B;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAkB7B;;OAEG;IACH,OAAO,CAAC,sBAAsB;CAM/B"}