@blac/core 2.0.0-rc-16 → 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 (157) 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/{src/index.ts → dist/index.d.ts} +1 -10
  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 -6
  120. package/src/Blac.ts +0 -802
  121. package/src/Bloc.ts +0 -180
  122. package/src/BlocBase.ts +0 -398
  123. package/src/Cubit.ts +0 -68
  124. package/src/__tests__/Blac.config.test.ts +0 -79
  125. package/src/__tests__/Bloc.event.test.ts +0 -394
  126. package/src/__tests__/BlocBase.subscription.test.ts +0 -349
  127. package/src/__tests__/Cubit.test.ts +0 -462
  128. package/src/__tests__/memory-leaks.test.ts +0 -383
  129. package/src/__tests__/plugins.test.ts +0 -464
  130. package/src/adapter/BlacAdapter.ts +0 -467
  131. package/src/adapter/ProxyFactory.ts +0 -249
  132. package/src/adapter/__tests__/BlacAdapter.test.ts +0 -555
  133. package/src/adapter/__tests__/ProxyFactory.test.ts +0 -655
  134. package/src/errors/BlacError.ts +0 -69
  135. package/src/errors/ErrorManager.ts +0 -101
  136. package/src/errors/handleError.ts +0 -114
  137. package/src/errors/index.ts +0 -13
  138. package/src/lifecycle/BlocLifecycle.ts +0 -156
  139. package/src/lifecycle/index.ts +0 -1
  140. package/src/plugins/BlocPluginRegistry.ts +0 -240
  141. package/src/plugins/SystemPluginRegistry.ts +0 -242
  142. package/src/plugins/__tests__/BlocPluginRegistry.test.ts +0 -450
  143. package/src/plugins/__tests__/SystemPluginRegistry.test.ts +0 -404
  144. package/src/plugins/types.ts +0 -129
  145. package/src/subscription/README.md +0 -132
  146. package/src/subscription/SubscriptionManager.ts +0 -395
  147. package/src/subscription/__tests__/SubscriptionManager.test.ts +0 -355
  148. package/src/subscription/types.ts +0 -90
  149. package/src/testing.ts +0 -246
  150. package/src/utils/BatchingManager.ts +0 -59
  151. package/src/utils/RerenderLogger.ts +0 -265
  152. package/src/utils/__tests__/generateInstanceId.test.ts +0 -104
  153. package/src/utils/__tests__/shallowEqual.test.ts +0 -171
  154. package/src/utils/__tests__/uuid.test.ts +0 -144
  155. package/src/utils/generateInstanceId.ts +0 -54
  156. package/src/utils/shallowEqual.ts +0 -40
  157. 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"}