@blac/core 2.0.0-rc.0 → 2.0.0-rc.2

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 (121) hide show
  1. package/dist/index.cjs +1361 -38
  2. package/dist/index.cjs.map +1 -0
  3. package/dist/index.d.cts +868 -0
  4. package/dist/index.d.ts +867 -16
  5. package/dist/index.js +1315 -37
  6. package/dist/index.js.map +1 -1
  7. package/package.json +19 -11
  8. package/dist/.tsbuildinfo +0 -1
  9. package/dist/Blac.d.ts +0 -246
  10. package/dist/Blac.d.ts.map +0 -1
  11. package/dist/Blac.js +0 -625
  12. package/dist/Blac.js.map +0 -1
  13. package/dist/Bloc.d.ts +0 -41
  14. package/dist/Bloc.d.ts.map +0 -1
  15. package/dist/Bloc.js +0 -140
  16. package/dist/Bloc.js.map +0 -1
  17. package/dist/BlocBase.d.ts +0 -110
  18. package/dist/BlocBase.d.ts.map +0 -1
  19. package/dist/BlocBase.js +0 -287
  20. package/dist/BlocBase.js.map +0 -1
  21. package/dist/Cubit.d.ts +0 -25
  22. package/dist/Cubit.d.ts.map +0 -1
  23. package/dist/Cubit.js +0 -64
  24. package/dist/Cubit.js.map +0 -1
  25. package/dist/adapter/BlacAdapter.d.ts +0 -71
  26. package/dist/adapter/BlacAdapter.d.ts.map +0 -1
  27. package/dist/adapter/BlacAdapter.js +0 -373
  28. package/dist/adapter/BlacAdapter.js.map +0 -1
  29. package/dist/adapter/ProxyFactory.d.ts +0 -50
  30. package/dist/adapter/ProxyFactory.d.ts.map +0 -1
  31. package/dist/adapter/ProxyFactory.js +0 -150
  32. package/dist/adapter/ProxyFactory.js.map +0 -1
  33. package/dist/adapter/index.d.ts +0 -3
  34. package/dist/adapter/index.d.ts.map +0 -1
  35. package/dist/adapter/index.js +0 -19
  36. package/dist/adapter/index.js.map +0 -1
  37. package/dist/errors/BlacError.d.ts +0 -38
  38. package/dist/errors/BlacError.d.ts.map +0 -1
  39. package/dist/errors/BlacError.js +0 -55
  40. package/dist/errors/BlacError.js.map +0 -1
  41. package/dist/errors/ErrorManager.d.ts +0 -39
  42. package/dist/errors/ErrorManager.d.ts.map +0 -1
  43. package/dist/errors/ErrorManager.js +0 -91
  44. package/dist/errors/ErrorManager.js.map +0 -1
  45. package/dist/errors/handleError.d.ts +0 -24
  46. package/dist/errors/handleError.d.ts.map +0 -1
  47. package/dist/errors/handleError.js +0 -62
  48. package/dist/errors/handleError.js.map +0 -1
  49. package/dist/errors/index.d.ts +0 -5
  50. package/dist/errors/index.d.ts.map +0 -1
  51. package/dist/errors/index.js +0 -13
  52. package/dist/errors/index.js.map +0 -1
  53. package/dist/events.d.ts +0 -11
  54. package/dist/events.d.ts.map +0 -1
  55. package/dist/events.js +0 -17
  56. package/dist/events.js.map +0 -1
  57. package/dist/index.d.ts.map +0 -1
  58. package/dist/lifecycle/BlocLifecycle.d.ts +0 -51
  59. package/dist/lifecycle/BlocLifecycle.d.ts.map +0 -1
  60. package/dist/lifecycle/BlocLifecycle.js +0 -123
  61. package/dist/lifecycle/BlocLifecycle.js.map +0 -1
  62. package/dist/lifecycle/index.d.ts +0 -2
  63. package/dist/lifecycle/index.d.ts.map +0 -1
  64. package/dist/lifecycle/index.js +0 -18
  65. package/dist/lifecycle/index.js.map +0 -1
  66. package/dist/plugins/BlocPluginRegistry.d.ts +0 -58
  67. package/dist/plugins/BlocPluginRegistry.d.ts.map +0 -1
  68. package/dist/plugins/BlocPluginRegistry.js +0 -201
  69. package/dist/plugins/BlocPluginRegistry.js.map +0 -1
  70. package/dist/plugins/SystemPluginRegistry.d.ts +0 -79
  71. package/dist/plugins/SystemPluginRegistry.d.ts.map +0 -1
  72. package/dist/plugins/SystemPluginRegistry.js +0 -184
  73. package/dist/plugins/SystemPluginRegistry.js.map +0 -1
  74. package/dist/plugins/index.d.ts +0 -4
  75. package/dist/plugins/index.d.ts.map +0 -1
  76. package/dist/plugins/index.js +0 -26
  77. package/dist/plugins/index.js.map +0 -1
  78. package/dist/plugins/types.d.ts +0 -103
  79. package/dist/plugins/types.d.ts.map +0 -1
  80. package/dist/plugins/types.js +0 -3
  81. package/dist/plugins/types.js.map +0 -1
  82. package/dist/subscription/SubscriptionManager.d.ts +0 -67
  83. package/dist/subscription/SubscriptionManager.d.ts.map +0 -1
  84. package/dist/subscription/SubscriptionManager.js +0 -317
  85. package/dist/subscription/SubscriptionManager.js.map +0 -1
  86. package/dist/subscription/index.d.ts +0 -3
  87. package/dist/subscription/index.d.ts.map +0 -1
  88. package/dist/subscription/index.js +0 -19
  89. package/dist/subscription/index.js.map +0 -1
  90. package/dist/subscription/types.d.ts +0 -65
  91. package/dist/subscription/types.d.ts.map +0 -1
  92. package/dist/subscription/types.js +0 -3
  93. package/dist/subscription/types.js.map +0 -1
  94. package/dist/testing.d.ts +0 -85
  95. package/dist/testing.d.ts.map +0 -1
  96. package/dist/testing.js +0 -186
  97. package/dist/testing.js.map +0 -1
  98. package/dist/types.d.ts +0 -57
  99. package/dist/types.d.ts.map +0 -1
  100. package/dist/types.js +0 -3
  101. package/dist/types.js.map +0 -1
  102. package/dist/utils/BatchingManager.d.ts +0 -28
  103. package/dist/utils/BatchingManager.d.ts.map +0 -1
  104. package/dist/utils/BatchingManager.js +0 -48
  105. package/dist/utils/BatchingManager.js.map +0 -1
  106. package/dist/utils/RerenderLogger.d.ts +0 -60
  107. package/dist/utils/RerenderLogger.d.ts.map +0 -1
  108. package/dist/utils/RerenderLogger.js +0 -205
  109. package/dist/utils/RerenderLogger.js.map +0 -1
  110. package/dist/utils/generateInstanceId.d.ts +0 -11
  111. package/dist/utils/generateInstanceId.d.ts.map +0 -1
  112. package/dist/utils/generateInstanceId.js +0 -50
  113. package/dist/utils/generateInstanceId.js.map +0 -1
  114. package/dist/utils/shallowEqual.d.ts +0 -9
  115. package/dist/utils/shallowEqual.d.ts.map +0 -1
  116. package/dist/utils/shallowEqual.js +0 -35
  117. package/dist/utils/shallowEqual.js.map +0 -1
  118. package/dist/utils/uuid.d.ts +0 -10
  119. package/dist/utils/uuid.d.ts.map +0 -1
  120. package/dist/utils/uuid.js +0 -24
  121. package/dist/utils/uuid.js.map +0 -1
package/dist/testing.js DELETED
@@ -1,186 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MemoryLeakDetector = exports.MockCubit = exports.MockBloc = exports.BlocTest = void 0;
4
- const Blac_1 = require("./Blac");
5
- const Bloc_1 = require("./Bloc");
6
- const Cubit_1 = require("./Cubit");
7
- /**
8
- * Test utilities for Blac state management
9
- */
10
- class BlocTest {
11
- static originalInstance;
12
- /**
13
- * Sets up a clean test environment
14
- */
15
- static setUp() {
16
- this.originalInstance = Blac_1.Blac.instance;
17
- Blac_1.Blac.resetInstance();
18
- Blac_1.Blac.enableLog = false; // Disable logging in tests by default
19
- }
20
- /**
21
- * Tears down the test environment and restores original state
22
- */
23
- static tearDown() {
24
- Blac_1.Blac.resetInstance();
25
- // Note: Cannot restore original instance due to singleton pattern
26
- // Tests should use setUp/tearDown properly to manage state
27
- }
28
- /**
29
- * Creates a test bloc with automatic cleanup
30
- */
31
- static createBloc(BlocClass, ...args) {
32
- const bloc = new BlocClass(...args);
33
- Blac_1.Blac.activateBloc(bloc);
34
- return bloc;
35
- }
36
- /**
37
- * Waits for a bloc to emit a specific state
38
- */
39
- static async waitForState(bloc, predicate, timeout = 5000) {
40
- return new Promise((resolve, reject) => {
41
- const timeoutId = setTimeout(() => {
42
- reject(new Error(`Timeout waiting for state matching predicate after ${timeout}ms`));
43
- }, timeout);
44
- const unsubscribe = bloc.subscribe((newState) => {
45
- if (predicate(newState)) {
46
- clearTimeout(timeoutId);
47
- unsubscribe();
48
- resolve(newState);
49
- }
50
- });
51
- // Check current state immediately
52
- if (predicate(bloc.state)) {
53
- clearTimeout(timeoutId);
54
- unsubscribe();
55
- resolve(bloc.state);
56
- }
57
- });
58
- }
59
- /**
60
- * Expects a bloc to emit specific states in order
61
- */
62
- static async expectStates(bloc, expectedStates, timeout = 5000) {
63
- const receivedStates = [];
64
- return new Promise((resolve, reject) => {
65
- const timeoutId = setTimeout(() => {
66
- reject(new Error(`Timeout waiting for states. Expected: ${JSON.stringify(expectedStates)}, ` +
67
- `Received: ${JSON.stringify(receivedStates)}`));
68
- }, timeout);
69
- const unsubscribe = bloc.subscribe((newState) => {
70
- receivedStates.push(newState);
71
- // Check if we have all expected states
72
- if (receivedStates.length === expectedStates.length) {
73
- clearTimeout(timeoutId);
74
- unsubscribe();
75
- // Verify all states match using deep equality
76
- for (let i = 0; i < expectedStates.length; i++) {
77
- const expected = expectedStates[i];
78
- const received = receivedStates[i];
79
- // Use JSON comparison for deep equality
80
- if (JSON.stringify(expected) !== JSON.stringify(received)) {
81
- reject(new Error(`State mismatch at index ${i}. Expected: ${JSON.stringify(expected)}, ` +
82
- `Received: ${JSON.stringify(received)}`));
83
- return;
84
- }
85
- }
86
- resolve();
87
- }
88
- });
89
- });
90
- }
91
- }
92
- exports.BlocTest = BlocTest;
93
- /**
94
- * Mock Bloc for testing
95
- */
96
- class MockBloc extends Bloc_1.Bloc {
97
- mockHandlers = new Map();
98
- constructor(initialState) {
99
- super(initialState);
100
- }
101
- /**
102
- * Mock an event handler for testing
103
- */
104
- mockEventHandler(eventConstructor, handler) {
105
- // Use the on method to register the mock handler
106
- this.on(eventConstructor, handler);
107
- }
108
- /**
109
- * Get the number of registered handlers
110
- */
111
- getHandlerCount() {
112
- return this.eventHandlers.size;
113
- }
114
- /**
115
- * Check if a handler is registered for an event type
116
- */
117
- hasHandler(eventConstructor) {
118
- return this.eventHandlers.has(eventConstructor);
119
- }
120
- }
121
- exports.MockBloc = MockBloc;
122
- /**
123
- * Mock Cubit for testing
124
- */
125
- class MockCubit extends Cubit_1.Cubit {
126
- stateHistory = [];
127
- constructor(initialState) {
128
- super(initialState);
129
- this.stateHistory.push(initialState);
130
- }
131
- /**
132
- * Override emit to track state history
133
- */
134
- emit(newState) {
135
- this.stateHistory.push(newState);
136
- super.emit(newState);
137
- }
138
- /**
139
- * Get the history of all states
140
- */
141
- getStateHistory() {
142
- return [...this.stateHistory];
143
- }
144
- /**
145
- * Clear state history
146
- */
147
- clearStateHistory() {
148
- this.stateHistory = [this.state];
149
- }
150
- }
151
- exports.MockCubit = MockCubit;
152
- /**
153
- * Memory leak detector for tests
154
- */
155
- class MemoryLeakDetector {
156
- initialStats;
157
- constructor() {
158
- this.initialStats = Blac_1.Blac.getMemoryStats();
159
- }
160
- /**
161
- * Check for memory leaks and return a report
162
- */
163
- checkForLeaks() {
164
- const currentStats = Blac_1.Blac.getMemoryStats();
165
- const hasLeaks = currentStats.registeredBlocs > this.initialStats.registeredBlocs ||
166
- currentStats.isolatedBlocs > this.initialStats.isolatedBlocs ||
167
- currentStats.keepAliveBlocs > this.initialStats.keepAliveBlocs;
168
- const report = `
169
- Memory Leak Detection Report:
170
- - Initial registered blocs: ${this.initialStats.registeredBlocs}
171
- - Current registered blocs: ${currentStats.registeredBlocs}
172
- - Initial isolated blocs: ${this.initialStats.isolatedBlocs}
173
- - Current isolated blocs: ${currentStats.isolatedBlocs}
174
- - Initial keep-alive blocs: ${this.initialStats.keepAliveBlocs}
175
- - Current keep-alive blocs: ${currentStats.keepAliveBlocs}
176
- - Potential leaks detected: ${hasLeaks ? 'YES' : 'NO'}
177
- `.trim();
178
- return {
179
- hasLeaks,
180
- report,
181
- stats: currentStats,
182
- };
183
- }
184
- }
185
- exports.MemoryLeakDetector = MemoryLeakDetector;
186
- //# sourceMappingURL=testing.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"testing.js","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts DELETED
@@ -1,57 +0,0 @@
1
- import { Bloc } from './Bloc';
2
- import { BlocBase } from './BlocBase';
3
- import { Cubit } from './Cubit';
4
- /**
5
- * Represents a constructor type for a Bloc that takes no parameters
6
- * @template B - The type of the Bloc instance
7
- */
8
- export type BlocClassNoParams<B> = new (args: never[]) => B;
9
- /**
10
- * Represents the abstract base types for Bloc and Cubit
11
- */
12
- export type BlocBaseAbstract = typeof Bloc<any, any> | typeof Cubit<any>;
13
- /**
14
- * Represents a constructor type for a Bloc that can take any parameters
15
- * @template B - The type of the Bloc instance
16
- */
17
- export type BlocConstructor<B> = (new (...args: any) => B) & {
18
- isolated?: boolean;
19
- keepAlive?: boolean;
20
- };
21
- export type BlocConstructorParams<B extends BlocConstructor<BlocBase<any>>> = ConstructorParameters<B>[0];
22
- /**
23
- * Extracts the state type from a BlocBase instance
24
- * @template B - The BlocBase type to extract the state from
25
- */
26
- export type ValueType<B extends BlocBase<any>> = B extends BlocBase<infer U> ? U : never;
27
- /**
28
- * Extracts the state type from either a Bloc or Cubit
29
- * @template T - The Bloc or Cubit type to extract the state from
30
- */
31
- export type BlocState<T> = T extends BlocBase<infer S> ? S : never;
32
- /**
33
- * Enhanced constraint for Bloc events - must be objects with proper constructor
34
- */
35
- export type BlocEventConstraint = object;
36
- /**
37
- * Error boundary interface for Bloc error handling
38
- */
39
- export interface BlocErrorBoundary<S, A extends BlocEventConstraint> {
40
- onError: (error: Error, event: A, currentState: S, bloc: {
41
- name: string;
42
- id: string;
43
- }) => void | Promise<void>;
44
- shouldRethrow?: (error: Error, event: A) => boolean;
45
- }
46
- /**
47
- * Function type for determining dependencies that trigger re-renders
48
- * Similar to React's useEffect dependency array - if any dependency changes, a re-render is triggered
49
- * @template S The state type
50
- * @template I The bloc instance type
51
- * @param currentState The current state
52
- * @param previousState The previous state (undefined on first call)
53
- * @param instance The bloc instance
54
- * @returns Array of dependencies - if any dependency changes, a re-render is triggered
55
- */
56
- export type BlocHookDependencyArrayFn<S, I = any> = (currentState: S, previousState: S | undefined, instance: I) => unknown[];
57
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC;;;GAGG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI,KAAK,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAE5D;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC;AAEzE;;;GAGG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,GAAG;IAC3D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,qBAAqB,CAAC,CAAC,SAAS,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IACxE,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAE9B;;;GAGG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,QAAQ,CAAC,GAAG,CAAC,IAC3C,CAAC,SAAS,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAE1C;;;GAGG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAEnE;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC;AAEzC;;GAEG;AACH,MAAM,WAAW,iBAAiB,CAAC,CAAC,EAAE,CAAC,SAAS,mBAAmB;IACjE,OAAO,EAAE,CACP,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,CAAC,EACR,YAAY,EAAE,CAAC,EACf,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,KAC/B,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC;CACrD;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,yBAAyB,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAClD,YAAY,EAAE,CAAC,EACf,aAAa,EAAE,CAAC,GAAG,SAAS,EAC5B,QAAQ,EAAE,CAAC,KACR,OAAO,EAAE,CAAC"}
package/dist/types.js DELETED
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=types.js.map
package/dist/types.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -1,28 +0,0 @@
1
- /**
2
- * Manages batching of state updates to optimize performance
3
- */
4
- export declare class BatchingManager<S> {
5
- private pendingUpdates;
6
- private isBatching;
7
- /**
8
- * Execute a callback with batched updates
9
- */
10
- batchUpdates(callback: () => void, onFlush: (finalUpdate: {
11
- newState: S;
12
- oldState: S;
13
- action?: unknown;
14
- }) => void): void;
15
- /**
16
- * Add an update to the batch
17
- */
18
- addUpdate(update: {
19
- newState: S;
20
- oldState: S;
21
- action?: unknown;
22
- }): void;
23
- /**
24
- * Check if currently batching
25
- */
26
- get isCurrentlyBatching(): boolean;
27
- }
28
- //# sourceMappingURL=BatchingManager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BatchingManager.d.ts","sourceRoot":"","sources":["../../src/utils/BatchingManager.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,eAAe,CAAC,CAAC;IAC5B,OAAO,CAAC,cAAc,CAId;IACR,OAAO,CAAC,UAAU,CAAS;IAE3B;;OAEG;IACH,YAAY,CACV,QAAQ,EAAE,MAAM,IAAI,EACpB,OAAO,EAAE,CAAC,WAAW,EAAE;QACrB,QAAQ,EAAE,CAAC,CAAC;QACZ,QAAQ,EAAE,CAAC,CAAC;QACZ,MAAM,CAAC,EAAE,OAAO,CAAC;KAClB,KAAK,IAAI,GACT,IAAI;IAsBP;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,CAAC,CAAC;QAAC,QAAQ,EAAE,CAAC,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI;IAMvE;;OAEG;IACH,IAAI,mBAAmB,IAAI,OAAO,CAEjC;CACF"}
@@ -1,48 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BatchingManager = void 0;
4
- /**
5
- * Manages batching of state updates to optimize performance
6
- */
7
- class BatchingManager {
8
- pendingUpdates = [];
9
- isBatching = false;
10
- /**
11
- * Execute a callback with batched updates
12
- */
13
- batchUpdates(callback, onFlush) {
14
- if (this.isBatching) {
15
- callback();
16
- return;
17
- }
18
- this.isBatching = true;
19
- this.pendingUpdates = [];
20
- try {
21
- callback();
22
- if (this.pendingUpdates.length > 0) {
23
- const finalUpdate = this.pendingUpdates[this.pendingUpdates.length - 1];
24
- onFlush(finalUpdate);
25
- }
26
- }
27
- finally {
28
- this.isBatching = false;
29
- this.pendingUpdates = [];
30
- }
31
- }
32
- /**
33
- * Add an update to the batch
34
- */
35
- addUpdate(update) {
36
- if (this.isBatching) {
37
- this.pendingUpdates.push(update);
38
- }
39
- }
40
- /**
41
- * Check if currently batching
42
- */
43
- get isCurrentlyBatching() {
44
- return this.isBatching;
45
- }
46
- }
47
- exports.BatchingManager = BatchingManager;
48
- //# sourceMappingURL=BatchingManager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BatchingManager.js","sourceRoot":"","sources":["../../src/utils/BatchingManager.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,MAAa,eAAe;IAClB,cAAc,GAIjB,EAAE,CAAC;IACA,UAAU,GAAG,KAAK,CAAC;IAE3B;;OAEG;IACH,YAAY,CACV,QAAoB,EACpB,OAIU;QAEV,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,QAAQ,EAAE,CAAC;YACX,OAAO;QACT,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QAEzB,IAAI,CAAC;YACH,QAAQ,EAAE,CAAC;YAEX,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACnC,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACxE,OAAO,CAAC,WAAW,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QAC3B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,MAAsD;QAC9D,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,IAAI,mBAAmB;QACrB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;CACF;AAvDD,0CAuDC"}
@@ -1,60 +0,0 @@
1
- export interface RerenderInfo {
2
- componentName: string;
3
- blocName: string;
4
- blocId: string;
5
- renderCount: number;
6
- reason: RerenderReason;
7
- timestamp: number;
8
- duration?: number;
9
- stackTrace?: string;
10
- }
11
- export interface RerenderReason {
12
- type: 'state-change' | 'dependency-change' | 'mount' | 'props-change' | 'unknown';
13
- changedPaths?: string[];
14
- oldValues?: Record<string, any>;
15
- newValues?: Record<string, any>;
16
- dependencies?: string[];
17
- description?: string;
18
- }
19
- /**
20
- * Utility class for logging component rerenders with detailed debugging information
21
- */
22
- export declare class RerenderLogger {
23
- private static componentRenderCounts;
24
- private static lastRenderTimestamps;
25
- private static groupedLogs;
26
- private static groupTimeouts;
27
- /**
28
- * Log a component rerender with detailed information
29
- */
30
- static logRerender(info: RerenderInfo): void;
31
- /**
32
- * Parse the logging configuration
33
- */
34
- private static parseConfig;
35
- /**
36
- * Log immediately without grouping
37
- */
38
- private static logImmediate;
39
- /**
40
- * Log with grouping (batch multiple rerenders)
41
- */
42
- private static logGrouped;
43
- /**
44
- * Format the log message based on level
45
- */
46
- private static formatMessage;
47
- /**
48
- * Get emoji for reason type
49
- */
50
- private static getReasonEmoji;
51
- /**
52
- * Clear all tracking data
53
- */
54
- static clear(): void;
55
- /**
56
- * Get render count for a component
57
- */
58
- static getRenderCount(componentName: string, blocId: string): number;
59
- }
60
- //# sourceMappingURL=RerenderLogger.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RerenderLogger.d.ts","sourceRoot":"","sources":["../../src/utils/RerenderLogger.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,cAAc,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EACA,cAAc,GACd,mBAAmB,GACnB,OAAO,GACP,cAAc,GACd,SAAS,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAC,qBAAqB,CAA6B;IACjE,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAA6B;IAChE,OAAO,CAAC,MAAM,CAAC,WAAW,CAAqC;IAC/D,OAAO,CAAC,MAAM,CAAC,aAAa,CAAqC;IAEjE;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IA+C5C;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;IAoB1B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;IAiB3B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,UAAU;IAwCzB;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAqD5B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IAe7B;;OAEG;IACH,MAAM,CAAC,KAAK,IAAI,IAAI;IAQpB;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM;CAGrE"}
@@ -1,205 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RerenderLogger = void 0;
4
- const Blac_1 = require("../Blac");
5
- /**
6
- * Utility class for logging component rerenders with detailed debugging information
7
- */
8
- class RerenderLogger {
9
- static componentRenderCounts = new Map();
10
- static lastRenderTimestamps = new Map();
11
- static groupedLogs = new Map();
12
- static groupTimeouts = new Map();
13
- /**
14
- * Log a component rerender with detailed information
15
- */
16
- static logRerender(info) {
17
- // RerenderLogger is now controlled by the RenderLoggingPlugin
18
- // This method is called by the plugin which already handles configuration
19
- const config = Blac_1.Blac._config?.rerenderLogging;
20
- if (!config)
21
- return;
22
- // Parse config
23
- const loggingConfig = this.parseConfig(config);
24
- if (!loggingConfig.enabled)
25
- return;
26
- // Apply filter if provided
27
- if (loggingConfig.filter &&
28
- !loggingConfig.filter({
29
- componentName: info.componentName,
30
- blocName: info.blocName,
31
- })) {
32
- return;
33
- }
34
- // Track render count
35
- const key = `${info.componentName}-${info.blocId}`;
36
- const currentCount = this.componentRenderCounts.get(key) || 0;
37
- this.componentRenderCounts.set(key, currentCount + 1);
38
- info.renderCount = currentCount + 1;
39
- // Calculate duration if possible
40
- const lastTimestamp = this.lastRenderTimestamps.get(key);
41
- if (lastTimestamp) {
42
- info.duration = info.timestamp - lastTimestamp;
43
- }
44
- this.lastRenderTimestamps.set(key, info.timestamp);
45
- // Add stack trace if requested
46
- if (loggingConfig.includeStackTrace && loggingConfig.level === 'detailed') {
47
- info.stackTrace = new Error().stack;
48
- }
49
- // Handle grouping
50
- if (loggingConfig.groupRerenders) {
51
- this.logGrouped(info, loggingConfig);
52
- }
53
- else {
54
- this.logImmediate(info, loggingConfig);
55
- }
56
- }
57
- /**
58
- * Parse the logging configuration
59
- */
60
- static parseConfig(config) {
61
- if (config === true) {
62
- return { enabled: true, level: 'normal' };
63
- }
64
- if (typeof config === 'string') {
65
- return {
66
- enabled: true,
67
- level: config === 'minimal' ? 'minimal' : 'detailed',
68
- };
69
- }
70
- return {
71
- enabled: config.enabled,
72
- level: config.level || 'normal',
73
- filter: config.filter,
74
- includeStackTrace: config.includeStackTrace,
75
- groupRerenders: config.groupRerenders,
76
- };
77
- }
78
- /**
79
- * Log immediately without grouping
80
- */
81
- static logImmediate(info, config) {
82
- const message = this.formatMessage(info, config.level);
83
- if (config.level === 'detailed') {
84
- console.group(message.header);
85
- if (message.details)
86
- console.log(message.details);
87
- if (message.values)
88
- console.table(message.values);
89
- if (info.stackTrace)
90
- console.log('Stack trace:', info.stackTrace);
91
- console.groupEnd();
92
- }
93
- else {
94
- console.log(message.header, message.details || '');
95
- }
96
- }
97
- /**
98
- * Log with grouping (batch multiple rerenders)
99
- */
100
- static logGrouped(info, config) {
101
- const groupKey = `${info.componentName}-${info.blocId}`;
102
- // Clear existing timeout
103
- const existingTimeout = this.groupTimeouts.get(groupKey);
104
- if (existingTimeout) {
105
- clearTimeout(existingTimeout);
106
- }
107
- // Add to group
108
- const group = this.groupedLogs.get(groupKey) || [];
109
- group.push(info);
110
- this.groupedLogs.set(groupKey, group);
111
- // Set new timeout
112
- const timeout = setTimeout(() => {
113
- const logs = this.groupedLogs.get(groupKey) || [];
114
- this.groupedLogs.delete(groupKey);
115
- this.groupTimeouts.delete(groupKey);
116
- if (logs.length === 1) {
117
- this.logImmediate(logs[0], config);
118
- }
119
- else {
120
- console.group(`🔄 ${info.componentName} rendered ${logs.length} times (${info.blocName})`);
121
- logs.forEach((log, index) => {
122
- const message = this.formatMessage(log, config.level);
123
- console.log(` ${index + 1}. ${message.details || message.header}`);
124
- });
125
- console.groupEnd();
126
- }
127
- }, 50); // 50ms debounce
128
- this.groupTimeouts.set(groupKey, timeout);
129
- }
130
- /**
131
- * Format the log message based on level
132
- */
133
- static formatMessage(info, level) {
134
- const emoji = this.getReasonEmoji(info.reason.type);
135
- if (level === 'minimal') {
136
- return {
137
- header: `${emoji} ${info.componentName} #${info.renderCount}`,
138
- details: null,
139
- values: null,
140
- };
141
- }
142
- const header = `${emoji} ${info.componentName} rerender #${info.renderCount} (${info.blocName})`;
143
- let details = `Reason: ${info.reason.description || info.reason.type}`;
144
- if (info.duration !== undefined) {
145
- details += ` | Time since last: ${info.duration}ms`;
146
- }
147
- if (level === 'normal' &&
148
- info.reason.changedPaths &&
149
- info.reason.changedPaths.length > 0) {
150
- details += ` | Changed: ${info.reason.changedPaths.join(', ')}`;
151
- }
152
- let values = null;
153
- if (level === 'detailed' &&
154
- info.reason.changedPaths &&
155
- info.reason.changedPaths.length > 0) {
156
- values = {};
157
- info.reason.changedPaths.forEach((path) => {
158
- values[path] = {
159
- old: info.reason.oldValues?.[path],
160
- new: info.reason.newValues?.[path],
161
- };
162
- });
163
- // If we have values to show in detailed mode, ensure they're not empty
164
- if (Object.keys(values).length === 0) {
165
- values = null;
166
- }
167
- }
168
- return { header, details, values };
169
- }
170
- /**
171
- * Get emoji for reason type
172
- */
173
- static getReasonEmoji(type) {
174
- switch (type) {
175
- case 'state-change':
176
- return '📊';
177
- case 'dependency-change':
178
- return '🔗';
179
- case 'mount':
180
- return '🚀';
181
- case 'props-change':
182
- return '📦';
183
- default:
184
- return '🔄';
185
- }
186
- }
187
- /**
188
- * Clear all tracking data
189
- */
190
- static clear() {
191
- this.componentRenderCounts.clear();
192
- this.lastRenderTimestamps.clear();
193
- this.groupedLogs.clear();
194
- this.groupTimeouts.forEach((timeout) => clearTimeout(timeout));
195
- this.groupTimeouts.clear();
196
- }
197
- /**
198
- * Get render count for a component
199
- */
200
- static getRenderCount(componentName, blocId) {
201
- return this.componentRenderCounts.get(`${componentName}-${blocId}`) || 0;
202
- }
203
- }
204
- exports.RerenderLogger = RerenderLogger;
205
- //# sourceMappingURL=RerenderLogger.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RerenderLogger.js","sourceRoot":"","sources":["../../src/utils/RerenderLogger.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- /**
2
- * Generates a deterministic instance ID from static props by extracting primitive values
3
- *
4
- * Rules:
5
- * 1. Only considers primitive types: string, number, boolean, null, undefined
6
- * 2. Ignores complex types: objects, arrays, functions, symbols
7
- * 3. Sorts keys alphabetically for deterministic output
8
- * 4. Returns undefined if no primitives found (caller should use default ID)
9
- */
10
- export declare function generateInstanceIdFromProps(props: unknown): string | undefined;
11
- //# sourceMappingURL=generateInstanceId.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"generateInstanceId.d.ts","sourceRoot":"","sources":["../../src/utils/generateInstanceId.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,OAAO,GACb,MAAM,GAAG,SAAS,CA0CpB"}