@blac/core 2.0.0-rc.0 → 2.0.0-rc.10
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.
- package/dist/adapter/framework-adapter.d.ts +33 -0
- package/dist/adapter/index.d.ts +7 -2
- package/dist/constants.d.ts +82 -0
- package/dist/core/Cubit.d.ts +40 -0
- package/dist/core/StateContainer.d.ts +78 -0
- package/dist/core/StateContainerRegistry.d.ts +119 -0
- package/dist/core/Vertex.d.ts +74 -0
- package/dist/decorators/blac.d.ts +31 -0
- package/dist/decorators/index.d.ts +2 -0
- package/dist/index.cjs +1870 -38
- package/dist/index.d.cts +21 -0
- package/dist/index.d.ts +19 -15
- package/dist/index.js +1789 -37
- package/dist/logging/Logger.d.ts +57 -0
- package/dist/plugin/BlacPlugin.d.ts +46 -0
- package/dist/plugin/PluginManager.d.ts +38 -0
- package/dist/registry/index.d.ts +20 -0
- package/dist/test-utils/index.d.ts +43 -0
- package/dist/tracking/dependency-tracker.d.ts +21 -0
- package/dist/tracking/getter-tracker.d.ts +31 -0
- package/dist/tracking/index.d.ts +38 -0
- package/dist/tracking/path-utils.d.ts +39 -0
- package/dist/tracking/proxy-tracker.d.ts +88 -0
- package/dist/types/branded.d.ts +9 -0
- package/dist/types/events.d.ts +13 -0
- package/dist/types/utilities.d.ts +19 -0
- package/dist/utils/equality.d.ts +9 -0
- package/dist/utils/idGenerator.d.ts +76 -0
- package/dist/utils/immutable.d.ts +16 -0
- package/dist/utils/stack-trace.d.ts +19 -0
- package/dist/utils/static-props.d.ts +29 -0
- package/package.json +33 -13
- package/dist/.tsbuildinfo +0 -1
- package/dist/Blac.d.ts +0 -246
- package/dist/Blac.d.ts.map +0 -1
- package/dist/Blac.js +0 -625
- package/dist/Blac.js.map +0 -1
- package/dist/Bloc.d.ts +0 -41
- package/dist/Bloc.d.ts.map +0 -1
- package/dist/Bloc.js +0 -140
- package/dist/Bloc.js.map +0 -1
- package/dist/BlocBase.d.ts +0 -110
- package/dist/BlocBase.d.ts.map +0 -1
- package/dist/BlocBase.js +0 -287
- package/dist/BlocBase.js.map +0 -1
- package/dist/Cubit.d.ts +0 -25
- package/dist/Cubit.d.ts.map +0 -1
- package/dist/Cubit.js +0 -64
- package/dist/Cubit.js.map +0 -1
- package/dist/adapter/BlacAdapter.d.ts +0 -71
- package/dist/adapter/BlacAdapter.d.ts.map +0 -1
- package/dist/adapter/BlacAdapter.js +0 -373
- package/dist/adapter/BlacAdapter.js.map +0 -1
- package/dist/adapter/ProxyFactory.d.ts +0 -50
- package/dist/adapter/ProxyFactory.d.ts.map +0 -1
- package/dist/adapter/ProxyFactory.js +0 -150
- package/dist/adapter/ProxyFactory.js.map +0 -1
- package/dist/adapter/index.d.ts.map +0 -1
- package/dist/adapter/index.js +0 -19
- package/dist/adapter/index.js.map +0 -1
- package/dist/errors/BlacError.d.ts +0 -38
- package/dist/errors/BlacError.d.ts.map +0 -1
- package/dist/errors/BlacError.js +0 -55
- package/dist/errors/BlacError.js.map +0 -1
- package/dist/errors/ErrorManager.d.ts +0 -39
- package/dist/errors/ErrorManager.d.ts.map +0 -1
- package/dist/errors/ErrorManager.js +0 -91
- package/dist/errors/ErrorManager.js.map +0 -1
- package/dist/errors/handleError.d.ts +0 -24
- package/dist/errors/handleError.d.ts.map +0 -1
- package/dist/errors/handleError.js +0 -62
- package/dist/errors/handleError.js.map +0 -1
- package/dist/errors/index.d.ts +0 -5
- package/dist/errors/index.d.ts.map +0 -1
- package/dist/errors/index.js +0 -13
- package/dist/errors/index.js.map +0 -1
- package/dist/events.d.ts +0 -11
- package/dist/events.d.ts.map +0 -1
- package/dist/events.js +0 -17
- package/dist/events.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/lifecycle/BlocLifecycle.d.ts +0 -51
- package/dist/lifecycle/BlocLifecycle.d.ts.map +0 -1
- package/dist/lifecycle/BlocLifecycle.js +0 -123
- package/dist/lifecycle/BlocLifecycle.js.map +0 -1
- package/dist/lifecycle/index.d.ts +0 -2
- package/dist/lifecycle/index.d.ts.map +0 -1
- package/dist/lifecycle/index.js +0 -18
- package/dist/lifecycle/index.js.map +0 -1
- package/dist/plugins/BlocPluginRegistry.d.ts +0 -58
- package/dist/plugins/BlocPluginRegistry.d.ts.map +0 -1
- package/dist/plugins/BlocPluginRegistry.js +0 -201
- package/dist/plugins/BlocPluginRegistry.js.map +0 -1
- package/dist/plugins/SystemPluginRegistry.d.ts +0 -79
- package/dist/plugins/SystemPluginRegistry.d.ts.map +0 -1
- package/dist/plugins/SystemPluginRegistry.js +0 -184
- package/dist/plugins/SystemPluginRegistry.js.map +0 -1
- package/dist/plugins/index.d.ts +0 -4
- package/dist/plugins/index.d.ts.map +0 -1
- package/dist/plugins/index.js +0 -26
- package/dist/plugins/index.js.map +0 -1
- package/dist/plugins/types.d.ts +0 -103
- package/dist/plugins/types.d.ts.map +0 -1
- package/dist/plugins/types.js +0 -3
- package/dist/plugins/types.js.map +0 -1
- package/dist/subscription/SubscriptionManager.d.ts +0 -67
- package/dist/subscription/SubscriptionManager.d.ts.map +0 -1
- package/dist/subscription/SubscriptionManager.js +0 -317
- package/dist/subscription/SubscriptionManager.js.map +0 -1
- package/dist/subscription/index.d.ts +0 -3
- package/dist/subscription/index.d.ts.map +0 -1
- package/dist/subscription/index.js +0 -19
- package/dist/subscription/index.js.map +0 -1
- package/dist/subscription/types.d.ts +0 -65
- package/dist/subscription/types.d.ts.map +0 -1
- package/dist/subscription/types.js +0 -3
- package/dist/subscription/types.js.map +0 -1
- package/dist/testing.d.ts +0 -85
- package/dist/testing.d.ts.map +0 -1
- package/dist/testing.js +0 -186
- package/dist/testing.js.map +0 -1
- package/dist/types.d.ts +0 -57
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -3
- package/dist/types.js.map +0 -1
- package/dist/utils/BatchingManager.d.ts +0 -28
- package/dist/utils/BatchingManager.d.ts.map +0 -1
- package/dist/utils/BatchingManager.js +0 -48
- package/dist/utils/BatchingManager.js.map +0 -1
- package/dist/utils/RerenderLogger.d.ts +0 -60
- package/dist/utils/RerenderLogger.d.ts.map +0 -1
- package/dist/utils/RerenderLogger.js +0 -205
- package/dist/utils/RerenderLogger.js.map +0 -1
- package/dist/utils/generateInstanceId.d.ts +0 -11
- package/dist/utils/generateInstanceId.d.ts.map +0 -1
- package/dist/utils/generateInstanceId.js +0 -50
- package/dist/utils/generateInstanceId.js.map +0 -1
- package/dist/utils/shallowEqual.d.ts +0 -9
- package/dist/utils/shallowEqual.d.ts.map +0 -1
- package/dist/utils/shallowEqual.js +0 -35
- package/dist/utils/shallowEqual.js.map +0 -1
- package/dist/utils/uuid.d.ts +0 -10
- package/dist/utils/uuid.d.ts.map +0 -1
- package/dist/utils/uuid.js +0 -24
- package/dist/utils/uuid.js.map +0 -1
|
@@ -1,317 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SubscriptionManager = void 0;
|
|
4
|
-
const Blac_1 = require("../Blac");
|
|
5
|
-
const uuid_1 = require("../utils/uuid");
|
|
6
|
-
/**
|
|
7
|
-
* Unified subscription manager that replaces the dual consumer/observer system.
|
|
8
|
-
* Handles all state change subscriptions with a single, consistent interface.
|
|
9
|
-
*/
|
|
10
|
-
class SubscriptionManager {
|
|
11
|
-
bloc;
|
|
12
|
-
subscriptions = new Map();
|
|
13
|
-
pathToSubscriptions = new Map();
|
|
14
|
-
weakRefCleanupScheduled = false;
|
|
15
|
-
totalNotifications = 0;
|
|
16
|
-
constructor(bloc) {
|
|
17
|
-
this.bloc = bloc;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Subscribe to state changes
|
|
21
|
-
*/
|
|
22
|
-
subscribe(options) {
|
|
23
|
-
const id = `${options.type}-${(0, uuid_1.generateUUID)()}`;
|
|
24
|
-
const subscription = {
|
|
25
|
-
id,
|
|
26
|
-
type: options.type,
|
|
27
|
-
selector: options.selector,
|
|
28
|
-
equalityFn: options.equalityFn || Object.is,
|
|
29
|
-
notify: options.notify,
|
|
30
|
-
priority: options.priority ?? 0,
|
|
31
|
-
weakRef: options.weakRef,
|
|
32
|
-
dependencies: new Set(),
|
|
33
|
-
metadata: {
|
|
34
|
-
lastNotified: Date.now(),
|
|
35
|
-
hasRendered: false,
|
|
36
|
-
accessCount: 0,
|
|
37
|
-
firstAccessTime: Date.now(),
|
|
38
|
-
},
|
|
39
|
-
};
|
|
40
|
-
// Initialize selector value if provided
|
|
41
|
-
if (subscription.selector) {
|
|
42
|
-
try {
|
|
43
|
-
subscription.lastValue = subscription.selector(this.bloc.state, this.bloc);
|
|
44
|
-
}
|
|
45
|
-
catch (error) {
|
|
46
|
-
Blac_1.Blac.error(`SubscriptionManager: Error in selector for ${id}:`, error);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
this.subscriptions.set(id, subscription);
|
|
50
|
-
Blac_1.Blac.log(`[${this.bloc._name}:${this.bloc._id}] Subscription added: ${id}. Total: ${this.subscriptions.size}`);
|
|
51
|
-
// Cancel disposal if bloc is in disposal_requested state
|
|
52
|
-
this.bloc._cancelDisposalIfRequested();
|
|
53
|
-
// Return unsubscribe function
|
|
54
|
-
return () => this.unsubscribe(id);
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Unsubscribe by ID
|
|
58
|
-
*/
|
|
59
|
-
unsubscribe(id) {
|
|
60
|
-
const subscription = this.subscriptions.get(id);
|
|
61
|
-
if (!subscription)
|
|
62
|
-
return;
|
|
63
|
-
// Remove from path dependencies
|
|
64
|
-
if (subscription.dependencies) {
|
|
65
|
-
for (const path of subscription.dependencies) {
|
|
66
|
-
const subs = this.pathToSubscriptions.get(path);
|
|
67
|
-
if (subs) {
|
|
68
|
-
subs.delete(id);
|
|
69
|
-
if (subs.size === 0) {
|
|
70
|
-
this.pathToSubscriptions.delete(path);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
this.subscriptions.delete(id);
|
|
76
|
-
Blac_1.Blac.log(`[${this.bloc._name}:${this.bloc._id}] Subscription removed: ${id}. Remaining: ${this.subscriptions.size}`);
|
|
77
|
-
// Check if bloc should be disposed
|
|
78
|
-
this.bloc.checkDisposal();
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Notify all subscriptions of state change
|
|
82
|
-
*/
|
|
83
|
-
notify(newState, oldState, action) {
|
|
84
|
-
// Clean up dead weak references if needed
|
|
85
|
-
this.cleanupDeadReferences();
|
|
86
|
-
// Sort subscriptions by priority (descending)
|
|
87
|
-
const sortedSubscriptions = Array.from(this.subscriptions.values()).sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0));
|
|
88
|
-
for (const subscription of sortedSubscriptions) {
|
|
89
|
-
// Check if WeakRef is still alive
|
|
90
|
-
if (subscription.weakRef && !subscription.weakRef.deref()) {
|
|
91
|
-
this.scheduleWeakRefCleanup();
|
|
92
|
-
continue;
|
|
93
|
-
}
|
|
94
|
-
let shouldNotify = false;
|
|
95
|
-
let newValue;
|
|
96
|
-
let oldValue;
|
|
97
|
-
if (subscription.selector) {
|
|
98
|
-
// Use selector to determine if notification is needed
|
|
99
|
-
try {
|
|
100
|
-
newValue = subscription.selector(newState, this.bloc);
|
|
101
|
-
oldValue = subscription.lastValue;
|
|
102
|
-
const equalityFn = subscription.equalityFn || Object.is;
|
|
103
|
-
shouldNotify = !equalityFn(oldValue, newValue);
|
|
104
|
-
if (shouldNotify) {
|
|
105
|
-
subscription.lastValue = newValue;
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
catch (error) {
|
|
109
|
-
Blac_1.Blac.error(`SubscriptionManager: Error in selector for ${subscription.id}:`, error);
|
|
110
|
-
continue;
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
else {
|
|
114
|
-
// No selector - check if tracked dependencies changed
|
|
115
|
-
if (subscription.dependencies && subscription.dependencies.size > 0) {
|
|
116
|
-
// Check which paths changed between old and new state
|
|
117
|
-
const changedPaths = this.getChangedPaths(oldState, newState);
|
|
118
|
-
shouldNotify = this.shouldNotifyForPaths(subscription.id, changedPaths);
|
|
119
|
-
if (Blac_1.Blac.config.logLevel === 'debug') {
|
|
120
|
-
Blac_1.Blac.log(`[SubscriptionManager] Subscription ${subscription.id} dependencies:`, Array.from(subscription.dependencies));
|
|
121
|
-
Blac_1.Blac.log(`[SubscriptionManager] Changed paths:`, Array.from(changedPaths));
|
|
122
|
-
Blac_1.Blac.log(`[SubscriptionManager] Should notify:`, shouldNotify);
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
else {
|
|
126
|
-
// No tracked dependencies, always notify
|
|
127
|
-
shouldNotify = true;
|
|
128
|
-
}
|
|
129
|
-
newValue = newState;
|
|
130
|
-
oldValue = oldState;
|
|
131
|
-
}
|
|
132
|
-
if (shouldNotify) {
|
|
133
|
-
try {
|
|
134
|
-
subscription.notify(newValue, oldValue, action);
|
|
135
|
-
this.totalNotifications++;
|
|
136
|
-
if (subscription.metadata) {
|
|
137
|
-
subscription.metadata.lastNotified = Date.now();
|
|
138
|
-
subscription.metadata.hasRendered = true;
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
catch (error) {
|
|
142
|
-
Blac_1.Blac.error(`SubscriptionManager: Error in notify for ${subscription.id}:`, error);
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
/**
|
|
148
|
-
* Track a path access for a subscription
|
|
149
|
-
*/
|
|
150
|
-
trackAccess(subscriptionId, path, value) {
|
|
151
|
-
const subscription = this.subscriptions.get(subscriptionId);
|
|
152
|
-
if (!subscription)
|
|
153
|
-
return;
|
|
154
|
-
// Update dependencies
|
|
155
|
-
if (!subscription.dependencies) {
|
|
156
|
-
subscription.dependencies = new Set();
|
|
157
|
-
}
|
|
158
|
-
subscription.dependencies.add(path);
|
|
159
|
-
// Update path-to-subscription mapping
|
|
160
|
-
let subs = this.pathToSubscriptions.get(path);
|
|
161
|
-
if (!subs) {
|
|
162
|
-
subs = new Set();
|
|
163
|
-
this.pathToSubscriptions.set(path, subs);
|
|
164
|
-
}
|
|
165
|
-
subs.add(subscriptionId);
|
|
166
|
-
// Update metadata
|
|
167
|
-
if (subscription.metadata) {
|
|
168
|
-
subscription.metadata.accessCount =
|
|
169
|
-
(subscription.metadata.accessCount || 0) + 1;
|
|
170
|
-
subscription.metadata.lastAccessTime = Date.now();
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
/**
|
|
174
|
-
* Get the paths that changed between two states
|
|
175
|
-
*/
|
|
176
|
-
getChangedPaths(oldState, newState, path = '') {
|
|
177
|
-
const changedPaths = new Set();
|
|
178
|
-
if (oldState === newState)
|
|
179
|
-
return changedPaths;
|
|
180
|
-
// Handle primitives
|
|
181
|
-
if (typeof oldState !== 'object' ||
|
|
182
|
-
typeof newState !== 'object' ||
|
|
183
|
-
oldState === null ||
|
|
184
|
-
newState === null) {
|
|
185
|
-
if (path)
|
|
186
|
-
changedPaths.add(path);
|
|
187
|
-
return changedPaths;
|
|
188
|
-
}
|
|
189
|
-
// Get all keys from both objects
|
|
190
|
-
const allKeys = new Set([
|
|
191
|
-
...Object.keys(oldState),
|
|
192
|
-
...Object.keys(newState),
|
|
193
|
-
]);
|
|
194
|
-
for (const key of allKeys) {
|
|
195
|
-
const fullPath = path ? `${path}.${key}` : key;
|
|
196
|
-
const oldValue = oldState[key];
|
|
197
|
-
const newValue = newState[key];
|
|
198
|
-
if (oldValue !== newValue) {
|
|
199
|
-
changedPaths.add(fullPath);
|
|
200
|
-
// For nested objects, get all nested changed paths
|
|
201
|
-
if (typeof oldValue === 'object' &&
|
|
202
|
-
typeof newValue === 'object' &&
|
|
203
|
-
oldValue !== null &&
|
|
204
|
-
newValue !== null) {
|
|
205
|
-
const nestedChanges = this.getChangedPaths(oldValue, newValue, fullPath);
|
|
206
|
-
nestedChanges.forEach((p) => changedPaths.add(p));
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
return changedPaths;
|
|
211
|
-
}
|
|
212
|
-
/**
|
|
213
|
-
* Check if a subscription should be notified based on changed paths
|
|
214
|
-
*/
|
|
215
|
-
shouldNotifyForPaths(subscriptionId, changedPaths) {
|
|
216
|
-
const subscription = this.subscriptions.get(subscriptionId);
|
|
217
|
-
if (!subscription || !subscription.dependencies)
|
|
218
|
-
return true;
|
|
219
|
-
// Check if any tracked dependencies match changed paths
|
|
220
|
-
for (const trackedPath of subscription.dependencies) {
|
|
221
|
-
// Handle class getter dependencies (_class.propertyName)
|
|
222
|
-
if (trackedPath.startsWith('_class.')) {
|
|
223
|
-
// For class getters, we need to notify on any state change
|
|
224
|
-
// since we can't determine which state properties the getter depends on
|
|
225
|
-
// This is conservative but ensures correctness
|
|
226
|
-
if (changedPaths.size > 0) {
|
|
227
|
-
return true;
|
|
228
|
-
}
|
|
229
|
-
continue;
|
|
230
|
-
}
|
|
231
|
-
// Check direct path matches
|
|
232
|
-
if (changedPaths.has(trackedPath))
|
|
233
|
-
return true;
|
|
234
|
-
// Check nested paths
|
|
235
|
-
for (const changedPath of changedPaths) {
|
|
236
|
-
if (changedPath.startsWith(trackedPath + '.') ||
|
|
237
|
-
trackedPath.startsWith(changedPath + '.')) {
|
|
238
|
-
return true;
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
return false;
|
|
243
|
-
}
|
|
244
|
-
/**
|
|
245
|
-
* Get statistics about subscriptions
|
|
246
|
-
*/
|
|
247
|
-
getStats() {
|
|
248
|
-
let consumerCount = 0;
|
|
249
|
-
let observerCount = 0;
|
|
250
|
-
for (const sub of this.subscriptions.values()) {
|
|
251
|
-
if (sub.type === 'consumer')
|
|
252
|
-
consumerCount++;
|
|
253
|
-
else
|
|
254
|
-
observerCount++;
|
|
255
|
-
}
|
|
256
|
-
return {
|
|
257
|
-
activeSubscriptions: this.subscriptions.size,
|
|
258
|
-
consumerCount,
|
|
259
|
-
observerCount,
|
|
260
|
-
totalNotifications: this.totalNotifications,
|
|
261
|
-
trackedDependencies: this.pathToSubscriptions.size,
|
|
262
|
-
};
|
|
263
|
-
}
|
|
264
|
-
/**
|
|
265
|
-
* Clear all subscriptions
|
|
266
|
-
*/
|
|
267
|
-
clear() {
|
|
268
|
-
this.subscriptions.clear();
|
|
269
|
-
this.pathToSubscriptions.clear();
|
|
270
|
-
}
|
|
271
|
-
/**
|
|
272
|
-
* Get subscription by ID
|
|
273
|
-
*/
|
|
274
|
-
getSubscription(id) {
|
|
275
|
-
return this.subscriptions.get(id);
|
|
276
|
-
}
|
|
277
|
-
/**
|
|
278
|
-
* Check if there are any active subscriptions
|
|
279
|
-
*/
|
|
280
|
-
get hasSubscriptions() {
|
|
281
|
-
return this.subscriptions.size > 0;
|
|
282
|
-
}
|
|
283
|
-
/**
|
|
284
|
-
* Get count of active subscriptions
|
|
285
|
-
*/
|
|
286
|
-
get size() {
|
|
287
|
-
return this.subscriptions.size;
|
|
288
|
-
}
|
|
289
|
-
/**
|
|
290
|
-
* Clean up subscriptions with dead weak references
|
|
291
|
-
*/
|
|
292
|
-
cleanupDeadReferences() {
|
|
293
|
-
if (!this.weakRefCleanupScheduled)
|
|
294
|
-
return;
|
|
295
|
-
const deadIds = [];
|
|
296
|
-
for (const [id, subscription] of this.subscriptions) {
|
|
297
|
-
if (subscription.weakRef && !subscription.weakRef.deref()) {
|
|
298
|
-
deadIds.push(id);
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
for (const id of deadIds) {
|
|
302
|
-
this.unsubscribe(id);
|
|
303
|
-
}
|
|
304
|
-
this.weakRefCleanupScheduled = false;
|
|
305
|
-
}
|
|
306
|
-
/**
|
|
307
|
-
* Schedule weak reference cleanup for next tick
|
|
308
|
-
*/
|
|
309
|
-
scheduleWeakRefCleanup() {
|
|
310
|
-
if (this.weakRefCleanupScheduled)
|
|
311
|
-
return;
|
|
312
|
-
this.weakRefCleanupScheduled = true;
|
|
313
|
-
queueMicrotask(() => this.cleanupDeadReferences());
|
|
314
|
-
}
|
|
315
|
-
}
|
|
316
|
-
exports.SubscriptionManager = SubscriptionManager;
|
|
317
|
-
//# sourceMappingURL=SubscriptionManager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SubscriptionManager.js","sourceRoot":"","sources":["../../src/subscription/SubscriptionManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/subscription/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,uBAAuB,CAAC"}
|
|
@@ -1,19 +0,0 @@
|
|
|
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
|
-
__exportStar(require("./types"), exports);
|
|
18
|
-
__exportStar(require("./SubscriptionManager"), exports);
|
|
19
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/subscription/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,wDAAsC"}
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import { BlocBase } from '../BlocBase';
|
|
2
|
-
/**
|
|
3
|
-
* Unified subscription interface that replaces the dual consumer/observer system
|
|
4
|
-
*/
|
|
5
|
-
export interface Subscription<S = unknown> {
|
|
6
|
-
/** Unique identifier for the subscription */
|
|
7
|
-
id: string;
|
|
8
|
-
/** Type of subscription for backward compatibility */
|
|
9
|
-
type: 'consumer' | 'observer';
|
|
10
|
-
/** Optional selector function to derive values from state */
|
|
11
|
-
selector?: (state: S, bloc?: BlocBase<S>) => unknown;
|
|
12
|
-
/** Custom equality function for selector results (defaults to Object.is) */
|
|
13
|
-
equalityFn?: (prev: unknown, next: unknown) => boolean;
|
|
14
|
-
/** Notification callback when state changes */
|
|
15
|
-
notify: (value: unknown, oldValue?: unknown, action?: unknown) => void;
|
|
16
|
-
/** Priority for notification order (higher = earlier) */
|
|
17
|
-
priority?: number;
|
|
18
|
-
/** WeakRef to the subscriber for automatic cleanup (React components) */
|
|
19
|
-
weakRef?: WeakRef<object>;
|
|
20
|
-
/** Last computed selector value for comparison */
|
|
21
|
-
lastValue?: unknown;
|
|
22
|
-
/** Tracked state path dependencies */
|
|
23
|
-
dependencies?: Set<string>;
|
|
24
|
-
/** Metadata for tracking and debugging */
|
|
25
|
-
metadata?: SubscriptionMetadata;
|
|
26
|
-
}
|
|
27
|
-
export interface SubscriptionMetadata {
|
|
28
|
-
/** Timestamp of last notification */
|
|
29
|
-
lastNotified?: number;
|
|
30
|
-
/** Whether the subscriber has rendered (React-specific) */
|
|
31
|
-
hasRendered?: boolean;
|
|
32
|
-
/** Number of times this subscription accessed state */
|
|
33
|
-
accessCount?: number;
|
|
34
|
-
/** First access timestamp */
|
|
35
|
-
firstAccessTime?: number;
|
|
36
|
-
/** Last access timestamp */
|
|
37
|
-
lastAccessTime?: number;
|
|
38
|
-
}
|
|
39
|
-
export interface SubscriptionOptions<S> {
|
|
40
|
-
/** Type of subscription */
|
|
41
|
-
type: 'consumer' | 'observer';
|
|
42
|
-
/** Optional selector function */
|
|
43
|
-
selector?: (state: S, bloc?: BlocBase<S>) => unknown;
|
|
44
|
-
/** Custom equality function */
|
|
45
|
-
equalityFn?: (prev: unknown, next: unknown) => boolean;
|
|
46
|
-
/** Notification callback */
|
|
47
|
-
notify: (value: unknown, oldValue?: unknown, action?: unknown) => void;
|
|
48
|
-
/** Priority for notifications */
|
|
49
|
-
priority?: number;
|
|
50
|
-
/** WeakRef to subscriber */
|
|
51
|
-
weakRef?: WeakRef<object>;
|
|
52
|
-
}
|
|
53
|
-
export interface SubscriptionManagerStats {
|
|
54
|
-
/** Total number of active subscriptions */
|
|
55
|
-
activeSubscriptions: number;
|
|
56
|
-
/** Number of consumer subscriptions */
|
|
57
|
-
consumerCount: number;
|
|
58
|
-
/** Number of observer subscriptions */
|
|
59
|
-
observerCount: number;
|
|
60
|
-
/** Total notifications sent */
|
|
61
|
-
totalNotifications: number;
|
|
62
|
-
/** Number of tracked dependencies */
|
|
63
|
-
trackedDependencies: number;
|
|
64
|
-
}
|
|
65
|
-
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/subscription/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC;;GAEG;AACH,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,OAAO;IACvC,6CAA6C;IAC7C,EAAE,EAAE,MAAM,CAAC;IAEX,sDAAsD;IACtD,IAAI,EAAE,UAAU,GAAG,UAAU,CAAC;IAE9B,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC;IAErD,4EAA4E;IAC5E,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC;IAEvD,+CAA+C;IAC/C,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAEvE,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,yEAAyE;IACzE,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAE1B,kDAAkD;IAClD,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,sCAAsC;IACtC,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAE3B,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,oBAAoB,CAAC;CACjC;AAED,MAAM,WAAW,oBAAoB;IACnC,qCAAqC;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,2DAA2D;IAC3D,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,uDAAuD;IACvD,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,6BAA6B;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,4BAA4B;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,mBAAmB,CAAC,CAAC;IACpC,2BAA2B;IAC3B,IAAI,EAAE,UAAU,GAAG,UAAU,CAAC;IAE9B,iCAAiC;IACjC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC;IAErD,+BAA+B;IAC/B,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC;IAEvD,4BAA4B;IAC5B,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAEvE,iCAAiC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,4BAA4B;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;CAC3B;AAED,MAAM,WAAW,wBAAwB;IACvC,2CAA2C;IAC3C,mBAAmB,EAAE,MAAM,CAAC;IAE5B,uCAAuC;IACvC,aAAa,EAAE,MAAM,CAAC;IAEtB,uCAAuC;IACvC,aAAa,EAAE,MAAM,CAAC;IAEtB,+BAA+B;IAC/B,kBAAkB,EAAE,MAAM,CAAC;IAE3B,qCAAqC;IACrC,mBAAmB,EAAE,MAAM,CAAC;CAC7B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/subscription/types.ts"],"names":[],"mappings":""}
|
package/dist/testing.d.ts
DELETED
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
import { Blac } from './Blac';
|
|
2
|
-
import { Bloc } from './Bloc';
|
|
3
|
-
import { BlocBase } from './BlocBase';
|
|
4
|
-
import { Cubit } from './Cubit';
|
|
5
|
-
import { BlocEventConstraint } from './types';
|
|
6
|
-
/**
|
|
7
|
-
* Test utilities for Blac state management
|
|
8
|
-
*/
|
|
9
|
-
export declare class BlocTest {
|
|
10
|
-
private static originalInstance;
|
|
11
|
-
/**
|
|
12
|
-
* Sets up a clean test environment
|
|
13
|
-
*/
|
|
14
|
-
static setUp(): void;
|
|
15
|
-
/**
|
|
16
|
-
* Tears down the test environment and restores original state
|
|
17
|
-
*/
|
|
18
|
-
static tearDown(): void;
|
|
19
|
-
/**
|
|
20
|
-
* Creates a test bloc with automatic cleanup
|
|
21
|
-
*/
|
|
22
|
-
static createBloc<T extends BlocBase<any>>(BlocClass: new (...args: any[]) => T, ...args: any[]): T;
|
|
23
|
-
/**
|
|
24
|
-
* Waits for a bloc to emit a specific state
|
|
25
|
-
*/
|
|
26
|
-
static waitForState<T extends BlocBase<S>, S>(bloc: T, predicate: (state: S) => boolean, timeout?: number): Promise<S>;
|
|
27
|
-
/**
|
|
28
|
-
* Expects a bloc to emit specific states in order
|
|
29
|
-
*/
|
|
30
|
-
static expectStates<T extends BlocBase<S>, S>(bloc: T, expectedStates: S[], timeout?: number): Promise<void>;
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Mock Bloc for testing
|
|
34
|
-
*/
|
|
35
|
-
export declare class MockBloc<S, A extends BlocEventConstraint = BlocEventConstraint> extends Bloc<S, A> {
|
|
36
|
-
private mockHandlers;
|
|
37
|
-
constructor(initialState: S);
|
|
38
|
-
/**
|
|
39
|
-
* Mock an event handler for testing
|
|
40
|
-
*/
|
|
41
|
-
mockEventHandler<E extends A>(eventConstructor: new (...args: any[]) => E, handler: (event: E, emit: (newState: S) => void) => void | Promise<void>): void;
|
|
42
|
-
/**
|
|
43
|
-
* Get the number of registered handlers
|
|
44
|
-
*/
|
|
45
|
-
getHandlerCount(): number;
|
|
46
|
-
/**
|
|
47
|
-
* Check if a handler is registered for an event type
|
|
48
|
-
*/
|
|
49
|
-
hasHandler(eventConstructor: new (...args: any[]) => A): boolean;
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Mock Cubit for testing
|
|
53
|
-
*/
|
|
54
|
-
export declare class MockCubit<S> extends Cubit<S> {
|
|
55
|
-
private stateHistory;
|
|
56
|
-
constructor(initialState: S);
|
|
57
|
-
/**
|
|
58
|
-
* Override emit to track state history
|
|
59
|
-
*/
|
|
60
|
-
emit(newState: S): void;
|
|
61
|
-
/**
|
|
62
|
-
* Get the history of all states
|
|
63
|
-
*/
|
|
64
|
-
getStateHistory(): S[];
|
|
65
|
-
/**
|
|
66
|
-
* Clear state history
|
|
67
|
-
*/
|
|
68
|
-
clearStateHistory(): void;
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Memory leak detector for tests
|
|
72
|
-
*/
|
|
73
|
-
export declare class MemoryLeakDetector {
|
|
74
|
-
private initialStats;
|
|
75
|
-
constructor();
|
|
76
|
-
/**
|
|
77
|
-
* Check for memory leaks and return a report
|
|
78
|
-
*/
|
|
79
|
-
checkForLeaks(): {
|
|
80
|
-
hasLeaks: boolean;
|
|
81
|
-
report: string;
|
|
82
|
-
stats: ReturnType<typeof Blac.getMemoryStats>;
|
|
83
|
-
};
|
|
84
|
-
}
|
|
85
|
-
//# sourceMappingURL=testing.d.ts.map
|
package/dist/testing.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAE9C;;GAEG;AACH,qBAAa,QAAQ;IACnB,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAO;IAEtC;;OAEG;IACH,MAAM,CAAC,KAAK,IAAI,IAAI;IAMpB;;OAEG;IACH,MAAM,CAAC,QAAQ,IAAI,IAAI;IAMvB;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,QAAQ,CAAC,GAAG,CAAC,EACvC,SAAS,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,EACpC,GAAG,IAAI,EAAE,GAAG,EAAE,GACb,CAAC;IAMJ;;OAEG;WACU,YAAY,CAAC,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAChD,IAAI,EAAE,CAAC,EACP,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,EAChC,OAAO,SAAO,GACb,OAAO,CAAC,CAAC,CAAC;IA2Bb;;OAEG;WACU,YAAY,CAAC,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAChD,IAAI,EAAE,CAAC,EACP,cAAc,EAAE,CAAC,EAAE,EACnB,OAAO,SAAO,GACb,OAAO,CAAC,IAAI,CAAC;CA2CjB;AAED;;GAEG;AACH,qBAAa,QAAQ,CACnB,CAAC,EACD,CAAC,SAAS,mBAAmB,GAAG,mBAAmB,CACnD,SAAQ,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;IAClB,OAAO,CAAC,YAAY,CAGhB;gBAEQ,YAAY,EAAE,CAAC;IAI3B;;OAEG;IACH,gBAAgB,CAAC,CAAC,SAAS,CAAC,EAC1B,gBAAgB,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,EAC3C,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,IAAI,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GACvE,IAAI;IAKP;;OAEG;IACH,eAAe,IAAI,MAAM;IAIzB;;OAEG;IACH,UAAU,CAAC,gBAAgB,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,OAAO;CAGjE;AAED;;GAEG;AACH,qBAAa,SAAS,CAAC,CAAC,CAAE,SAAQ,KAAK,CAAC,CAAC,CAAC;IACxC,OAAO,CAAC,YAAY,CAAW;gBAEnB,YAAY,EAAE,CAAC;IAK3B;;OAEG;IACH,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI;IAKvB;;OAEG;IACH,eAAe,IAAI,CAAC,EAAE;IAItB;;OAEG;IACH,iBAAiB,IAAI,IAAI;CAG1B;AAED;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,YAAY,CAAyC;;IAM7D;;OAEG;IACH,aAAa,IAAI;QACf,QAAQ,EAAE,OAAO,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC;KAC/C;CAwBF"}
|