@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.
Files changed (146) hide show
  1. package/dist/adapter/framework-adapter.d.ts +33 -0
  2. package/dist/adapter/index.d.ts +7 -2
  3. package/dist/constants.d.ts +82 -0
  4. package/dist/core/Cubit.d.ts +40 -0
  5. package/dist/core/StateContainer.d.ts +78 -0
  6. package/dist/core/StateContainerRegistry.d.ts +119 -0
  7. package/dist/core/Vertex.d.ts +74 -0
  8. package/dist/decorators/blac.d.ts +31 -0
  9. package/dist/decorators/index.d.ts +2 -0
  10. package/dist/index.cjs +1870 -38
  11. package/dist/index.d.cts +21 -0
  12. package/dist/index.d.ts +19 -15
  13. package/dist/index.js +1789 -37
  14. package/dist/logging/Logger.d.ts +57 -0
  15. package/dist/plugin/BlacPlugin.d.ts +46 -0
  16. package/dist/plugin/PluginManager.d.ts +38 -0
  17. package/dist/registry/index.d.ts +20 -0
  18. package/dist/test-utils/index.d.ts +43 -0
  19. package/dist/tracking/dependency-tracker.d.ts +21 -0
  20. package/dist/tracking/getter-tracker.d.ts +31 -0
  21. package/dist/tracking/index.d.ts +38 -0
  22. package/dist/tracking/path-utils.d.ts +39 -0
  23. package/dist/tracking/proxy-tracker.d.ts +88 -0
  24. package/dist/types/branded.d.ts +9 -0
  25. package/dist/types/events.d.ts +13 -0
  26. package/dist/types/utilities.d.ts +19 -0
  27. package/dist/utils/equality.d.ts +9 -0
  28. package/dist/utils/idGenerator.d.ts +76 -0
  29. package/dist/utils/immutable.d.ts +16 -0
  30. package/dist/utils/stack-trace.d.ts +19 -0
  31. package/dist/utils/static-props.d.ts +29 -0
  32. package/package.json +33 -13
  33. package/dist/.tsbuildinfo +0 -1
  34. package/dist/Blac.d.ts +0 -246
  35. package/dist/Blac.d.ts.map +0 -1
  36. package/dist/Blac.js +0 -625
  37. package/dist/Blac.js.map +0 -1
  38. package/dist/Bloc.d.ts +0 -41
  39. package/dist/Bloc.d.ts.map +0 -1
  40. package/dist/Bloc.js +0 -140
  41. package/dist/Bloc.js.map +0 -1
  42. package/dist/BlocBase.d.ts +0 -110
  43. package/dist/BlocBase.d.ts.map +0 -1
  44. package/dist/BlocBase.js +0 -287
  45. package/dist/BlocBase.js.map +0 -1
  46. package/dist/Cubit.d.ts +0 -25
  47. package/dist/Cubit.d.ts.map +0 -1
  48. package/dist/Cubit.js +0 -64
  49. package/dist/Cubit.js.map +0 -1
  50. package/dist/adapter/BlacAdapter.d.ts +0 -71
  51. package/dist/adapter/BlacAdapter.d.ts.map +0 -1
  52. package/dist/adapter/BlacAdapter.js +0 -373
  53. package/dist/adapter/BlacAdapter.js.map +0 -1
  54. package/dist/adapter/ProxyFactory.d.ts +0 -50
  55. package/dist/adapter/ProxyFactory.d.ts.map +0 -1
  56. package/dist/adapter/ProxyFactory.js +0 -150
  57. package/dist/adapter/ProxyFactory.js.map +0 -1
  58. package/dist/adapter/index.d.ts.map +0 -1
  59. package/dist/adapter/index.js +0 -19
  60. package/dist/adapter/index.js.map +0 -1
  61. package/dist/errors/BlacError.d.ts +0 -38
  62. package/dist/errors/BlacError.d.ts.map +0 -1
  63. package/dist/errors/BlacError.js +0 -55
  64. package/dist/errors/BlacError.js.map +0 -1
  65. package/dist/errors/ErrorManager.d.ts +0 -39
  66. package/dist/errors/ErrorManager.d.ts.map +0 -1
  67. package/dist/errors/ErrorManager.js +0 -91
  68. package/dist/errors/ErrorManager.js.map +0 -1
  69. package/dist/errors/handleError.d.ts +0 -24
  70. package/dist/errors/handleError.d.ts.map +0 -1
  71. package/dist/errors/handleError.js +0 -62
  72. package/dist/errors/handleError.js.map +0 -1
  73. package/dist/errors/index.d.ts +0 -5
  74. package/dist/errors/index.d.ts.map +0 -1
  75. package/dist/errors/index.js +0 -13
  76. package/dist/errors/index.js.map +0 -1
  77. package/dist/events.d.ts +0 -11
  78. package/dist/events.d.ts.map +0 -1
  79. package/dist/events.js +0 -17
  80. package/dist/events.js.map +0 -1
  81. package/dist/index.d.ts.map +0 -1
  82. package/dist/index.js.map +0 -1
  83. package/dist/lifecycle/BlocLifecycle.d.ts +0 -51
  84. package/dist/lifecycle/BlocLifecycle.d.ts.map +0 -1
  85. package/dist/lifecycle/BlocLifecycle.js +0 -123
  86. package/dist/lifecycle/BlocLifecycle.js.map +0 -1
  87. package/dist/lifecycle/index.d.ts +0 -2
  88. package/dist/lifecycle/index.d.ts.map +0 -1
  89. package/dist/lifecycle/index.js +0 -18
  90. package/dist/lifecycle/index.js.map +0 -1
  91. package/dist/plugins/BlocPluginRegistry.d.ts +0 -58
  92. package/dist/plugins/BlocPluginRegistry.d.ts.map +0 -1
  93. package/dist/plugins/BlocPluginRegistry.js +0 -201
  94. package/dist/plugins/BlocPluginRegistry.js.map +0 -1
  95. package/dist/plugins/SystemPluginRegistry.d.ts +0 -79
  96. package/dist/plugins/SystemPluginRegistry.d.ts.map +0 -1
  97. package/dist/plugins/SystemPluginRegistry.js +0 -184
  98. package/dist/plugins/SystemPluginRegistry.js.map +0 -1
  99. package/dist/plugins/index.d.ts +0 -4
  100. package/dist/plugins/index.d.ts.map +0 -1
  101. package/dist/plugins/index.js +0 -26
  102. package/dist/plugins/index.js.map +0 -1
  103. package/dist/plugins/types.d.ts +0 -103
  104. package/dist/plugins/types.d.ts.map +0 -1
  105. package/dist/plugins/types.js +0 -3
  106. package/dist/plugins/types.js.map +0 -1
  107. package/dist/subscription/SubscriptionManager.d.ts +0 -67
  108. package/dist/subscription/SubscriptionManager.d.ts.map +0 -1
  109. package/dist/subscription/SubscriptionManager.js +0 -317
  110. package/dist/subscription/SubscriptionManager.js.map +0 -1
  111. package/dist/subscription/index.d.ts +0 -3
  112. package/dist/subscription/index.d.ts.map +0 -1
  113. package/dist/subscription/index.js +0 -19
  114. package/dist/subscription/index.js.map +0 -1
  115. package/dist/subscription/types.d.ts +0 -65
  116. package/dist/subscription/types.d.ts.map +0 -1
  117. package/dist/subscription/types.js +0 -3
  118. package/dist/subscription/types.js.map +0 -1
  119. package/dist/testing.d.ts +0 -85
  120. package/dist/testing.d.ts.map +0 -1
  121. package/dist/testing.js +0 -186
  122. package/dist/testing.js.map +0 -1
  123. package/dist/types.d.ts +0 -57
  124. package/dist/types.d.ts.map +0 -1
  125. package/dist/types.js +0 -3
  126. package/dist/types.js.map +0 -1
  127. package/dist/utils/BatchingManager.d.ts +0 -28
  128. package/dist/utils/BatchingManager.d.ts.map +0 -1
  129. package/dist/utils/BatchingManager.js +0 -48
  130. package/dist/utils/BatchingManager.js.map +0 -1
  131. package/dist/utils/RerenderLogger.d.ts +0 -60
  132. package/dist/utils/RerenderLogger.d.ts.map +0 -1
  133. package/dist/utils/RerenderLogger.js +0 -205
  134. package/dist/utils/RerenderLogger.js.map +0 -1
  135. package/dist/utils/generateInstanceId.d.ts +0 -11
  136. package/dist/utils/generateInstanceId.d.ts.map +0 -1
  137. package/dist/utils/generateInstanceId.js +0 -50
  138. package/dist/utils/generateInstanceId.js.map +0 -1
  139. package/dist/utils/shallowEqual.d.ts +0 -9
  140. package/dist/utils/shallowEqual.d.ts.map +0 -1
  141. package/dist/utils/shallowEqual.js +0 -35
  142. package/dist/utils/shallowEqual.js.map +0 -1
  143. package/dist/utils/uuid.d.ts +0 -10
  144. package/dist/utils/uuid.d.ts.map +0 -1
  145. package/dist/utils/uuid.js +0 -24
  146. package/dist/utils/uuid.js.map +0 -1
package/dist/Cubit.js DELETED
@@ -1,64 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Cubit = void 0;
4
- const Blac_1 = require("./Blac");
5
- const BlocBase_1 = require("./BlocBase");
6
- /**
7
- * A Cubit is a simpler version of a Bloc that doesn't handle events.
8
- * It manages state and provides methods to update it.
9
- * @template S - The type of state this Cubit manages
10
- */
11
- class Cubit extends BlocBase_1.BlocBase {
12
- /**
13
- * Updates the current state and notifies all observers of the change.
14
- * If the new state is identical to the current state (using Object.is),
15
- * no update will occur.
16
- * @param state - The new state to set
17
- */
18
- emit(state) {
19
- if (Object.is(state, this.state)) {
20
- return;
21
- }
22
- const oldState = this.state;
23
- const newState = state;
24
- this._pushState(newState, oldState);
25
- }
26
- /**
27
- * Partially updates the current state by merging it with the provided state patch.
28
- * This method is only applicable when the state is an object type.
29
- *
30
- * @param statePatch - A partial state object containing only the properties to update
31
- * @param ignoreChangeCheck - If true, skips checking if the state has actually changed
32
- * @throws {TypeError} If the state is not an object type
33
- */
34
- patch(statePatch, ignoreChangeCheck = false) {
35
- if (typeof this.state !== 'object' || this.state === null) {
36
- Blac_1.Blac.warn('Cubit.patch: was called on a cubit where the state is not an object. This is a no-op.');
37
- return;
38
- }
39
- let changes = false;
40
- if (!ignoreChangeCheck) {
41
- for (const key in statePatch) {
42
- if (Object.prototype.hasOwnProperty.call(statePatch, key)) {
43
- const s = this.state;
44
- const current = s[key];
45
- if (!Object.is(statePatch[key], current)) {
46
- changes = true;
47
- break;
48
- }
49
- }
50
- }
51
- }
52
- else {
53
- changes = true;
54
- }
55
- if (changes) {
56
- this.emit({
57
- ...this.state,
58
- ...statePatch,
59
- });
60
- }
61
- }
62
- }
63
- exports.Cubit = Cubit;
64
- //# sourceMappingURL=Cubit.js.map
package/dist/Cubit.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"Cubit.js","sourceRoot":"","sources":["../src/Cubit.ts"],"names":[],"mappings":";;;AAAA,iCAA8B;AAC9B,yCAAsC;AAEtC;;;;GAIG;AACH,MAAsB,KAAS,SAAQ,mBAAW;IAChD;;;;;OAKG;IACH,IAAI,CAAC,KAAQ;QACX,IAAI,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACjC,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;QAC5B,MAAM,QAAQ,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CACH,UAA6C,EAC7C,iBAAiB,GAAG,KAAK;QAEzB,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YAC1D,WAAI,CAAC,IAAI,CACP,uFAAuF,CACxF,CAAC;YACF,OAAO;QACT,CAAC;QAED,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;gBAC7B,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,EAAE,CAAC;oBAC1D,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;oBACrB,MAAM,OAAO,GAAG,CAAC,CAAC,GAAc,CAAC,CAAC;oBAClC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,GAAc,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC;wBACpD,OAAO,GAAG,IAAI,CAAC;wBACf,MAAM;oBACR,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;QAED,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,IAAI,CAAC;gBACR,GAAG,IAAI,CAAC,KAAK;gBACb,GAAI,UAAyB;aACzB,CAAC,CAAC;QACV,CAAC;IACH,CAAC;CACF;AA3DD,sBA2DC"}
@@ -1,71 +0,0 @@
1
- import { BlocBase } from '../BlocBase';
2
- import { BlocConstructor, BlocState } from '../types';
3
- export interface AdapterOptions<B extends BlocBase<any>> {
4
- instanceId?: string;
5
- dependencies?: (bloc: B) => unknown[];
6
- staticProps?: any;
7
- onMount?: (bloc: B) => void;
8
- onUnmount?: (bloc: B) => void;
9
- }
10
- /**
11
- * BlacAdapter orchestrates the connection between Bloc instances and React components.
12
- * It manages dependency tracking, lifecycle hooks, and proxy creation.
13
- */
14
- export declare class BlacAdapter<B extends BlocConstructor<BlocBase<any>>> {
15
- readonly id: string;
16
- readonly blocConstructor: B;
17
- readonly componentRef: {
18
- current: object;
19
- };
20
- blocInstance: InstanceType<B>;
21
- unmountTime: number;
22
- mountTime: number;
23
- private subscriptionId?;
24
- private unsubscribe?;
25
- private dependencyValues?;
26
- private isUsingDependencies;
27
- private trackedPaths;
28
- private pendingTrackedPaths;
29
- private cachedStateProxy?;
30
- private cachedBlocProxy?;
31
- private lastProxiedState?;
32
- private hasMounted;
33
- private mountCount;
34
- private lastState?;
35
- private lastDependencyValues?;
36
- private componentName?;
37
- private renderCount;
38
- private lastDependenciesFn?;
39
- options?: AdapterOptions<InstanceType<B>>;
40
- constructor(instanceProps: {
41
- componentRef: {
42
- current: object;
43
- };
44
- blocConstructor: B;
45
- }, options?: typeof this.options);
46
- trackAccess(consumerRef: object, type: 'state' | 'class', path: string, value?: any): void;
47
- updateBlocInstance(): InstanceType<B>;
48
- createSubscription: (options: {
49
- onChange: () => void;
50
- }) => () => void;
51
- hasDependencyValuesChanged: (oldValues: unknown[] | undefined, newValues: unknown[]) => boolean;
52
- getStateProxy: () => BlocState<InstanceType<B>>;
53
- getBlocProxy: () => InstanceType<B>;
54
- createStateProxy: <T extends object>(props: {
55
- target: T;
56
- }) => T;
57
- createClassProxy: <T extends object>(props: {
58
- target: T;
59
- }) => T;
60
- mount: () => void;
61
- unmount: () => void;
62
- resetTracking(): void;
63
- setComponentName(name: string): void;
64
- notifyRender(): void;
65
- private getAdapterMetadata;
66
- private getValueAtPath;
67
- private getStateChangedPaths;
68
- private getDeepChangedPaths;
69
- getLastRerenderReason(): any;
70
- }
71
- //# sourceMappingURL=BlacAdapter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BlacAdapter.d.ts","sourceRoot":"","sources":["../../src/adapter/BlacAdapter.ts"],"names":[],"mappings":"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"}
@@ -1,373 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BlacAdapter = void 0;
4
- const Blac_1 = require("../Blac");
5
- const uuid_1 = require("../utils/uuid");
6
- const generateInstanceId_1 = require("../utils/generateInstanceId");
7
- const ProxyFactory_1 = require("./ProxyFactory");
8
- /**
9
- * BlacAdapter orchestrates the connection between Bloc instances and React components.
10
- * It manages dependency tracking, lifecycle hooks, and proxy creation.
11
- */
12
- class BlacAdapter {
13
- id = `adapter-${(0, uuid_1.generateUUID)()}`;
14
- blocConstructor;
15
- componentRef = { current: {} };
16
- blocInstance;
17
- unmountTime = 0;
18
- mountTime = 0;
19
- // Subscription management
20
- subscriptionId;
21
- unsubscribe;
22
- // Dependency tracking
23
- dependencyValues;
24
- isUsingDependencies = false;
25
- trackedPaths = new Set();
26
- pendingTrackedPaths = new Set(); // Paths tracked before subscription exists
27
- // Proxy caching
28
- cachedStateProxy;
29
- cachedBlocProxy;
30
- lastProxiedState;
31
- // Lifecycle state
32
- hasMounted = false;
33
- mountCount = 0;
34
- // Rerender tracking
35
- lastState;
36
- lastDependencyValues;
37
- componentName;
38
- renderCount = 0;
39
- lastDependenciesFn;
40
- options;
41
- constructor(instanceProps, options) {
42
- this.options = options;
43
- this.blocConstructor = instanceProps.blocConstructor;
44
- this.componentRef = instanceProps.componentRef;
45
- this.isUsingDependencies = !!options?.dependencies;
46
- // Initialize bloc instance
47
- this.updateBlocInstance();
48
- // Initialize dependency values if using dependencies
49
- if (this.isUsingDependencies && options?.dependencies) {
50
- this.dependencyValues = options.dependencies(this.blocInstance);
51
- }
52
- // Notify plugins
53
- const metadata = this.getAdapterMetadata();
54
- Blac_1.Blac.getInstance().plugins.notifyAdapterCreated(this, metadata);
55
- }
56
- trackAccess(consumerRef, type, path, value) {
57
- const fullPath = type === 'class' ? `_class.${path}` : path;
58
- this.trackedPaths.add(fullPath);
59
- if (this.subscriptionId) {
60
- this.blocInstance.trackAccess(this.subscriptionId, fullPath, value);
61
- }
62
- else {
63
- // No subscription ID yet - store for later
64
- this.pendingTrackedPaths.add(fullPath);
65
- if (Blac_1.Blac.config.logLevel === 'debug') {
66
- Blac_1.Blac.log(`[BlacAdapter] trackAccess storing pending path: ${path}`);
67
- }
68
- }
69
- }
70
- updateBlocInstance() {
71
- // Determine the instance ID
72
- let instanceId = this.options?.instanceId;
73
- // If no explicit instanceId provided but staticProps exist, generate from them
74
- if (!instanceId && this.options?.staticProps) {
75
- const generatedId = (0, generateInstanceId_1.generateInstanceIdFromProps)(this.options.staticProps);
76
- if (generatedId) {
77
- instanceId = generatedId;
78
- }
79
- }
80
- this.blocInstance = Blac_1.Blac.instance.getBloc(this.blocConstructor, {
81
- constructorParams: this.options?.staticProps,
82
- id: instanceId,
83
- instanceRef: this.id,
84
- });
85
- return this.blocInstance;
86
- }
87
- createSubscription = (options) => {
88
- // If using manual dependencies, create a selector-based subscription
89
- if (this.isUsingDependencies && this.options?.dependencies) {
90
- this.unsubscribe = this.blocInstance.subscribeWithSelector((_state) => this.options.dependencies(this.blocInstance), (newValues) => {
91
- const hasChanged = this.hasDependencyValuesChanged(this.dependencyValues, newValues);
92
- if (hasChanged) {
93
- this.dependencyValues = newValues;
94
- options.onChange();
95
- }
96
- });
97
- }
98
- else {
99
- // Create a component subscription with weak reference
100
- const weakRef = new WeakRef(this.componentRef.current);
101
- this.unsubscribe = this.blocInstance.subscribeComponent(weakRef, options.onChange);
102
- // Get the subscription ID for tracking
103
- const subscriptions = this.blocInstance._subscriptionManager
104
- .subscriptions;
105
- this.subscriptionId = Array.from(subscriptions.keys()).pop();
106
- // Apply any pending tracked paths
107
- if (this.subscriptionId && this.pendingTrackedPaths.size > 0) {
108
- for (const path of this.pendingTrackedPaths) {
109
- this.blocInstance.trackAccess(this.subscriptionId, path);
110
- }
111
- this.pendingTrackedPaths.clear();
112
- }
113
- }
114
- // Don't call onChange initially - let React handle the initial render
115
- return () => {
116
- if (this.unsubscribe) {
117
- this.unsubscribe();
118
- this.unsubscribe = undefined;
119
- this.subscriptionId = undefined;
120
- }
121
- };
122
- };
123
- hasDependencyValuesChanged = (oldValues, newValues) => {
124
- if (!oldValues)
125
- return true;
126
- if (oldValues.length !== newValues.length)
127
- return true;
128
- for (let i = 0; i < oldValues.length; i++) {
129
- if (!Object.is(oldValues[i], newValues[i])) {
130
- return true;
131
- }
132
- }
133
- return false;
134
- };
135
- getStateProxy = () => {
136
- // If using manual dependencies or proxy tracking is disabled, return raw state
137
- if (this.isUsingDependencies || !Blac_1.Blac.config.proxyDependencyTracking) {
138
- return this.blocInstance.state;
139
- }
140
- // Return cached proxy if state hasn't changed
141
- const currentState = this.blocInstance.state;
142
- if (this.cachedStateProxy && this.lastProxiedState === currentState) {
143
- return this.cachedStateProxy;
144
- }
145
- // Create new proxy for new state
146
- this.lastProxiedState = currentState;
147
- this.cachedStateProxy = this.createStateProxy({ target: currentState });
148
- return this.cachedStateProxy;
149
- };
150
- getBlocProxy = () => {
151
- // If using manual dependencies or proxy tracking is disabled, return raw bloc
152
- if (this.isUsingDependencies || !Blac_1.Blac.config.proxyDependencyTracking) {
153
- return this.blocInstance;
154
- }
155
- // Return cached proxy if bloc instance hasn't changed
156
- if (this.cachedBlocProxy) {
157
- return this.cachedBlocProxy;
158
- }
159
- // Create and cache proxy
160
- this.cachedBlocProxy = this.createClassProxy({ target: this.blocInstance });
161
- return this.cachedBlocProxy;
162
- };
163
- createStateProxy = (props) => {
164
- return ProxyFactory_1.ProxyFactory.createStateProxy({
165
- target: props.target,
166
- consumerRef: this.componentRef.current,
167
- consumerTracker: this,
168
- });
169
- };
170
- createClassProxy = (props) => {
171
- return ProxyFactory_1.ProxyFactory.createClassProxy({
172
- target: props.target,
173
- consumerRef: this.componentRef.current,
174
- consumerTracker: this,
175
- });
176
- };
177
- // Lifecycle methods
178
- mount = () => {
179
- this.hasMounted = true;
180
- this.mountCount++;
181
- this.mountTime = Date.now();
182
- // Call onMount hook
183
- if (this.options?.onMount) {
184
- this.options.onMount(this.blocInstance);
185
- }
186
- // Refresh dependencies if using manual tracking
187
- if (this.isUsingDependencies && this.options?.dependencies) {
188
- this.dependencyValues = this.options.dependencies(this.blocInstance);
189
- }
190
- // Notify plugins
191
- const metadata = this.getAdapterMetadata();
192
- Blac_1.Blac.getInstance().plugins.notifyAdapterMount(this, metadata);
193
- };
194
- unmount = () => {
195
- this.unmountTime = Date.now();
196
- // Cancel subscription
197
- if (this.unsubscribe) {
198
- this.unsubscribe();
199
- this.unsubscribe = undefined;
200
- this.subscriptionId = undefined;
201
- }
202
- // Call onUnmount hook
203
- if (this.options?.onUnmount) {
204
- try {
205
- this.options.onUnmount(this.blocInstance);
206
- }
207
- catch (error) {
208
- console.error('Error in onUnmount hook:', error);
209
- }
210
- }
211
- // Notify plugins
212
- const metadata = this.getAdapterMetadata();
213
- Blac_1.Blac.getInstance().plugins.notifyAdapterUnmount(this, metadata);
214
- };
215
- // Reset tracking for next render
216
- resetTracking() {
217
- // Clear tracked paths from previous render
218
- this.trackedPaths.clear();
219
- this.pendingTrackedPaths.clear();
220
- // Clear subscription dependencies to track only current render
221
- if (this.subscriptionId) {
222
- const subscription = this.blocInstance._subscriptionManager.subscriptions.get(this.subscriptionId);
223
- if (subscription && subscription.dependencies) {
224
- // Clear old dependencies - we'll track new ones in this render
225
- subscription.dependencies.clear();
226
- }
227
- }
228
- }
229
- // Set component name for rerender logging
230
- setComponentName(name) {
231
- this.componentName = name;
232
- }
233
- // Notify plugins about render
234
- notifyRender() {
235
- this.renderCount++;
236
- // Update dependency values if using manual tracking
237
- if (this.isUsingDependencies && this.options?.dependencies) {
238
- this.lastDependencyValues = this.dependencyValues;
239
- this.dependencyValues = this.options.dependencies(this.blocInstance);
240
- }
241
- const metadata = this.getAdapterMetadata();
242
- Blac_1.Blac.getInstance().plugins.notifyAdapterRender(this, metadata);
243
- }
244
- // Get adapter metadata for plugins
245
- getAdapterMetadata() {
246
- return {
247
- componentName: this.componentName,
248
- blocInstance: this.blocInstance,
249
- renderCount: this.renderCount,
250
- trackedPaths: Array.from(this.trackedPaths),
251
- isUsingDependencies: this.isUsingDependencies,
252
- lastState: this.lastState,
253
- lastDependencyValues: this.lastDependencyValues,
254
- currentDependencyValues: this.dependencyValues,
255
- };
256
- }
257
- // Get value at a dot-notated path
258
- getValueAtPath(obj, path) {
259
- const parts = path.split('.');
260
- let current = obj;
261
- for (const part of parts) {
262
- if (current == null)
263
- return undefined;
264
- current = current[part];
265
- }
266
- return current;
267
- }
268
- // Get paths that changed between states
269
- getStateChangedPaths(oldState, newState) {
270
- const changedPaths = [];
271
- // Only check tracked paths if we have any
272
- if (this.trackedPaths.size > 0) {
273
- for (const path of this.trackedPaths) {
274
- // Skip class property paths
275
- if (path.startsWith('_class.'))
276
- continue;
277
- const oldValue = this.getValueAtPath(oldState, path);
278
- const newValue = this.getValueAtPath(newState, path);
279
- if (!Object.is(oldValue, newValue)) {
280
- changedPaths.push(path);
281
- }
282
- }
283
- }
284
- else {
285
- // No tracked paths - do deep comparison to find what changed
286
- if (oldState !== newState) {
287
- const deepChanges = this.getDeepChangedPaths(oldState, newState);
288
- if (deepChanges.length > 0) {
289
- return deepChanges;
290
- }
291
- changedPaths.push('(entire state)');
292
- }
293
- }
294
- return changedPaths;
295
- }
296
- // Deep comparison to find all changed paths
297
- getDeepChangedPaths(oldObj, newObj, basePath = '') {
298
- const changes = [];
299
- // Handle null/undefined
300
- if (oldObj === newObj)
301
- return changes;
302
- if (oldObj == null || newObj == null) {
303
- changes.push(basePath || '(root)');
304
- return changes;
305
- }
306
- // Handle primitives
307
- if (typeof oldObj !== 'object' || typeof newObj !== 'object') {
308
- if (oldObj !== newObj) {
309
- changes.push(basePath || '(root)');
310
- }
311
- return changes;
312
- }
313
- // Handle arrays
314
- if (Array.isArray(oldObj) || Array.isArray(newObj)) {
315
- if (!Array.isArray(oldObj) ||
316
- !Array.isArray(newObj) ||
317
- oldObj.length !== newObj.length) {
318
- changes.push(basePath || '(root)');
319
- return changes;
320
- }
321
- // Compare array elements
322
- for (let i = 0; i < oldObj.length; i++) {
323
- const elementPath = basePath ? `${basePath}[${i}]` : `[${i}]`;
324
- changes.push(...this.getDeepChangedPaths(oldObj[i], newObj[i], elementPath));
325
- }
326
- return changes;
327
- }
328
- // Handle objects
329
- const allKeys = new Set([...Object.keys(oldObj), ...Object.keys(newObj)]);
330
- for (const key of allKeys) {
331
- const keyPath = basePath ? `${basePath}.${key}` : key;
332
- if (!(key in oldObj)) {
333
- changes.push(`${keyPath} (added)`);
334
- }
335
- else if (!(key in newObj)) {
336
- changes.push(`${keyPath} (removed)`);
337
- }
338
- else {
339
- const oldVal = oldObj[key];
340
- const newVal = newObj[key];
341
- // Use Object.is for comparison
342
- if (!Object.is(oldVal, newVal)) {
343
- // For primitives and different object references, record the change
344
- if (typeof oldVal !== 'object' ||
345
- typeof newVal !== 'object' ||
346
- oldVal === null ||
347
- newVal === null) {
348
- changes.push(keyPath);
349
- }
350
- else {
351
- // For objects/arrays, recurse deeper
352
- const deeperChanges = this.getDeepChangedPaths(oldVal, newVal, keyPath);
353
- if (deeperChanges.length > 0) {
354
- changes.push(...deeperChanges);
355
- }
356
- else {
357
- // Objects are different references but have same content
358
- changes.push(keyPath);
359
- }
360
- }
361
- }
362
- }
363
- }
364
- return changes;
365
- }
366
- // Get last rerender reason
367
- getLastRerenderReason() {
368
- // This method is deprecated - render reason is now handled by the RenderLoggingPlugin
369
- return undefined;
370
- }
371
- }
372
- exports.BlacAdapter = BlacAdapter;
373
- //# sourceMappingURL=BlacAdapter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BlacAdapter.js","sourceRoot":"","sources":["../../src/adapter/BlacAdapter.ts"],"names":[],"mappings":"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"}
@@ -1,50 +0,0 @@
1
- import { BlocBase } from '../BlocBase';
2
- interface ConsumerTracker {
3
- trackAccess: (consumerRef: object, type: 'state' | 'class', path: string, value?: any) => void;
4
- }
5
- /**
6
- * Creates a proxy for state objects that tracks property access
7
- */
8
- export declare const createStateProxy: <T extends object>(target: T, consumerRef: object, consumerTracker: ConsumerTracker, path?: string) => T;
9
- /**
10
- * Creates a proxy for bloc instances that tracks getter access
11
- */
12
- export declare const createBlocProxy: <T extends object>(target: T, consumerRef: object, consumerTracker: ConsumerTracker) => T;
13
- export declare const ProxyFactory: {
14
- createStateProxy: (options: {
15
- target: any;
16
- consumerRef: object;
17
- consumerTracker: ConsumerTracker;
18
- path?: string;
19
- }) => any;
20
- createClassProxy: (options: {
21
- target: any;
22
- consumerRef: object;
23
- consumerTracker: ConsumerTracker;
24
- }) => any;
25
- getProxyState: <B extends BlocBase<any>>(options: {
26
- state: any;
27
- consumerRef: object;
28
- consumerTracker: ConsumerTracker;
29
- }) => any;
30
- getProxyBlocInstance: <B extends BlocBase<any>>(options: {
31
- blocInstance: B;
32
- consumerRef: object;
33
- consumerTracker: ConsumerTracker;
34
- }) => B;
35
- getStats: () => {
36
- propertyAccesses: number;
37
- nestedProxiesCreated: number;
38
- cacheEfficiency: string;
39
- lifetime: string;
40
- proxiesPerSecond: string;
41
- stateProxiesCreated: number;
42
- classProxiesCreated: number;
43
- cacheHits: number;
44
- cacheMisses: number;
45
- totalProxiesCreated: number;
46
- };
47
- resetStats: () => void;
48
- };
49
- export {};
50
- //# sourceMappingURL=ProxyFactory.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ProxyFactory.d.ts","sourceRoot":"","sources":["../../src/adapter/ProxyFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,UAAU,eAAe;IACvB,WAAW,EAAE,CACX,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,OAAO,GAAG,OAAO,EACvB,IAAI,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,GAAG,KACR,IAAI,CAAC;CACX;AAcD;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,MAAM,EAC/C,QAAQ,CAAC,EACT,aAAa,MAAM,EACnB,iBAAiB,eAAe,EAChC,aAAS,KACR,CAuEF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,GAAI,CAAC,SAAS,MAAM,EAC9C,QAAQ,CAAC,EACT,aAAa,MAAM,EACnB,iBAAiB,eAAe,KAC/B,CA8CF,CAAC;AAyBF,eAAO,MAAM,YAAY;gCACK;QAC1B,MAAM,EAAE,GAAG,CAAC;QACZ,WAAW,EAAE,MAAM,CAAC;QACpB,eAAe,EAAE,eAAe,CAAC;QACjC,IAAI,CAAC,EAAE,MAAM,CAAC;KACf;gCAQ2B;QAC1B,MAAM,EAAE,GAAG,CAAC;QACZ,WAAW,EAAE,MAAM,CAAC;QACpB,eAAe,EAAE,eAAe,CAAC;KAClC;oBAOe,CAAC,SAAS,QAAQ,CAAC,GAAG,CAAC,WAAW;QAChD,KAAK,EAAE,GAAG,CAAC;QACX,WAAW,EAAE,MAAM,CAAC;QACpB,eAAe,EAAE,eAAe,CAAC;KAClC;2BAOsB,CAAC,SAAS,QAAQ,CAAC,GAAG,CAAC,WAAW;QACvD,YAAY,EAAE,CAAC,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,eAAe,EAAE,eAAe,CAAC;KAClC;;;;;;;;;;;;;;CA0BF,CAAC"}