react-obsidian 2.13.0 → 2.15.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.
@@ -1,5 +1,5 @@
1
1
  type Options = {
2
- scope?: 'component' | 'feature';
2
+ scope?: 'component' | 'feature' | (string & {});
3
3
  };
4
4
  export declare function LifecycleBound(options?: Options): (constructor: any) => any;
5
5
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"LifecycleBound.d.ts","sourceRoot":"","sources":["../../../src/decorators/LifecycleBound.ts"],"names":[],"mappings":"AAAA,KAAK,OAAO,GAAG;IACb,KAAK,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;CACjC,CAAC;AAEF,wBAAgB,cAAc,CAAC,OAAO,CAAC,EAAE,OAAO,iBACzB,GAAG,SAKzB"}
1
+ {"version":3,"file":"LifecycleBound.d.ts","sourceRoot":"","sources":["../../../src/decorators/LifecycleBound.ts"],"names":[],"mappings":"AAAA,KAAK,OAAO,GAAG;IACb,KAAK,CAAC,EAAE,WAAW,GAAG,SAAS,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;CACjD,CAAC;AAEF,wBAAgB,cAAc,CAAC,OAAO,CAAC,EAAE,OAAO,iBACzB,GAAG,SAKzB"}
@@ -11,12 +11,17 @@ export declare class GraphRegistry {
11
11
  private readonly graphMiddlewares;
12
12
  private readonly keyToGenerator;
13
13
  private readonly keyToGraph;
14
+ private readonly onClearListeners;
14
15
  register(constructor: Constructable<Graph>, subgraphs?: Constructable<Graph>[]): void;
15
16
  registerGraphGenerator(key: string, generator: () => Constructable<Graph>): void;
16
17
  ensureRegistered(keyOrGraph: string | Graph): void;
18
+ isInstantiated(G: Constructable<Graph>): boolean;
17
19
  getSubgraphs(graph: Graph): Graph[];
18
20
  getGraphInstance(name: string): Graph;
19
21
  resolve<T extends Graph>(keyOrGraph: String | Constructable<T>, source?: 'lifecycleOwner' | 'classInjection' | 'serviceLocator', props?: any, injectionToken?: string): T;
22
+ private instantiateCustomScopedSubgraphs;
23
+ private assertInstantiatingCustomScopedSubgraphFromSameScope;
24
+ private getSubgraphsConstructors;
20
25
  private getGraphConstructorByKey;
21
26
  private has;
22
27
  private getFirst;
@@ -25,8 +30,11 @@ export declare class GraphRegistry {
25
30
  private isSingleton;
26
31
  private isBoundToReactLifecycle;
27
32
  private isComponentScopedLifecycleBound;
33
+ private isCustomScopedLifecycleBound;
28
34
  clearGraphAfterItWasMockedInTests(graphName: string): void;
29
35
  clear(graph: Graph): void;
36
+ private registerOnClearListener;
37
+ private invokeOnClearListeners;
30
38
  private clearGraphsRegisteredByKey;
31
39
  addGraphMiddleware(middleware: Middleware<Graph>): void;
32
40
  clearGraphMiddlewares(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"GraphRegistry.d.ts","sourceRoot":"","sources":["../../../../src/graph/registry/GraphRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAM1C,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAA+C;IACrF,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAA0C;IAChF,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAA4B;IACrE,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAA4B;IACrE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA4B;IAC3D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA8D;IAC/F,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA8B;IAC/D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgD;IAC/E,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA2C;IAEtE,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,SAAS,GAAE,aAAa,CAAC,KAAK,CAAC,EAAO;IAIlF,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC,KAAK,CAAC;IAKzE,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,KAAK;IAO3C,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE;IAMnC,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK;IAIrC,OAAO,CAAC,CAAC,SAAS,KAAK,EACrB,UAAU,EAAE,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,EACrC,MAAM,GAAE,gBAAgB,GAAG,gBAAgB,GAAG,gBAAmC,EACjF,KAAK,GAAE,GAAe,EACtB,cAAc,CAAC,EAAE,MAAM,GACtB,CAAC;IAiBJ,OAAO,CAAC,wBAAwB;IAShC,OAAO,CAAC,GAAG;IAaX,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,CAAC,GAAG;IAYX,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,uBAAuB;IAI/B,OAAO,CAAC,+BAA+B;IAIvC,iCAAiC,CAAC,SAAS,EAAE,MAAM;IAqBnD,KAAK,CAAC,KAAK,EAAE,KAAK;IAelB,OAAO,CAAC,0BAA0B;IAUlC,kBAAkB,CAAC,UAAU,EAAE,UAAU,CAAC,KAAK,CAAC;IAIhD,qBAAqB;IAIrB,QAAQ;CAST;;AAID,wBAA2D"}
1
+ {"version":3,"file":"GraphRegistry.d.ts","sourceRoot":"","sources":["../../../../src/graph/registry/GraphRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAO1C,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAA+C;IACrF,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAA0C;IAChF,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAA4B;IACrE,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAA4B;IACrE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA4B;IAC3D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA8D;IAC/F,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA8B;IAC/D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgD;IAC/E,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA2C;IACtE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAqC;IAEtE,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,SAAS,GAAE,aAAa,CAAC,KAAK,CAAC,EAAO;IAIlF,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC,KAAK,CAAC;IAKzE,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,KAAK;IAOpC,cAAc,CAAC,CAAC,EAAE,aAAa,CAAC,KAAK,CAAC,GAAG,OAAO;IAIvD,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE;IAMnC,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK;IAIrC,OAAO,CAAC,CAAC,SAAS,KAAK,EACrB,UAAU,EAAE,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,EACrC,MAAM,GAAE,gBAAgB,GAAG,gBAAgB,GAAG,gBAAmC,EACjF,KAAK,GAAE,GAAe,EACtB,cAAc,CAAC,EAAE,MAAM,GACtB,CAAC;IAkBJ,OAAO,CAAC,gCAAgC;IAmBxC,OAAO,CAAC,oDAAoD;IAe5D,OAAO,CAAC,wBAAwB;IAchC,OAAO,CAAC,wBAAwB;IAShC,OAAO,CAAC,GAAG;IAaX,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,CAAC,GAAG;IAYX,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,uBAAuB;IAI/B,OAAO,CAAC,+BAA+B;IAIvC,OAAO,CAAC,4BAA4B;IAKpC,iCAAiC,CAAC,SAAS,EAAE,MAAM;IAsBnD,KAAK,CAAC,KAAK,EAAE,KAAK;IAgBlB,OAAO,CAAC,uBAAuB;IAM/B,OAAO,CAAC,sBAAsB;IAO9B,OAAO,CAAC,0BAA0B;IAUlC,kBAAkB,CAAC,UAAU,EAAE,UAAU,CAAC,KAAK,CAAC;IAIhD,qBAAqB;IAIrB,QAAQ;CAST;;AAID,wBAA2D"}
@@ -8,6 +8,7 @@ const GraphMiddlewareChain_1 = __importDefault(require("./GraphMiddlewareChain")
8
8
  const ObtainLifecycleBoundGraphException_1 = require("./ObtainLifecycleBoundGraphException");
9
9
  const getGlobal_1 = require("../../utils/getGlobal");
10
10
  const isString_1 = require("../../utils/isString");
11
+ const ReferenceCounter_1 = __importDefault(require("../../ReferenceCounter"));
11
12
  class GraphRegistry {
12
13
  constructor() {
13
14
  this.constructorToInstance = new Map();
@@ -19,6 +20,7 @@ class GraphRegistry {
19
20
  this.graphMiddlewares = new GraphMiddlewareChain_1.default();
20
21
  this.keyToGenerator = new Map();
21
22
  this.keyToGraph = new Map();
23
+ this.onClearListeners = new Map();
22
24
  }
23
25
  register(constructor, subgraphs = []) {
24
26
  this.graphToSubgraphs.set(constructor, new Set(subgraphs));
@@ -36,6 +38,10 @@ class GraphRegistry {
36
38
  return;
37
39
  this.set(graph.constructor, graph);
38
40
  }
41
+ isInstantiated(G) {
42
+ var _a, _b;
43
+ return ((_b = (_a = this.constructorToInstance.get(G)) === null || _a === void 0 ? void 0 : _a.size) !== null && _b !== void 0 ? _b : 0) > 0;
44
+ }
39
45
  getSubgraphs(graph) {
40
46
  var _a;
41
47
  const Graph = this.instanceToConstructor.get(graph);
@@ -59,8 +65,49 @@ class GraphRegistry {
59
65
  }
60
66
  const graph = this.graphMiddlewares.resolve(Graph, props);
61
67
  this.set(Graph, graph, injectionToken);
68
+ this.instantiateCustomScopedSubgraphs(graph, props);
62
69
  return graph;
63
70
  }
71
+ instantiateCustomScopedSubgraphs(graph, props) {
72
+ this.assertInstantiatingCustomScopedSubgraphFromSameScope(graph);
73
+ if (!this.isCustomScopedLifecycleBound(this.instanceToConstructor.get(graph)))
74
+ return;
75
+ const customScope = Reflect.getMetadata('lifecycleScope', this.instanceToConstructor.get(graph));
76
+ const subgraphs = this.getSubgraphsConstructors(graph);
77
+ const sameScopeSubgraphs = subgraphs.filter(subgraph => Reflect.getMetadata('lifecycleScope', subgraph) === customScope);
78
+ const instantiatedSubgraphs = sameScopeSubgraphs.map(subgraph => {
79
+ return this.resolve(subgraph, 'lifecycleOwner', props);
80
+ });
81
+ instantiatedSubgraphs.forEach((subgraph) => ReferenceCounter_1.default.retain(subgraph));
82
+ this.registerOnClearListener(graph, () => {
83
+ instantiatedSubgraphs.forEach((subgraph) => ReferenceCounter_1.default.release(subgraph, () => this.clear(subgraph)));
84
+ });
85
+ }
86
+ assertInstantiatingCustomScopedSubgraphFromSameScope(graph) {
87
+ const graphScope = Reflect.getMetadata('lifecycleScope', this.instanceToConstructor.get(graph));
88
+ const subgraphs = this.getSubgraphsConstructors(graph);
89
+ subgraphs.forEach(subgraph => {
90
+ const subgraphScope = Reflect.getMetadata('lifecycleScope', subgraph);
91
+ if (!this.isInstantiated(subgraph) &&
92
+ this.isCustomScopedLifecycleBound(subgraph) &&
93
+ graphScope !== subgraphScope) {
94
+ throw new Error(`Cannot instantiate the scoped graph '${subgraph.name}' as a subgraph of '${graph.constructor.name}' because the scopes do not match. ${graphScope} !== ${subgraphScope}`);
95
+ }
96
+ });
97
+ }
98
+ getSubgraphsConstructors(graph) {
99
+ var _a;
100
+ const Graph = typeof graph === 'function' ? graph : this.instanceToConstructor.get(graph);
101
+ const directSubgraphs = Array.from((_a = this.graphToSubgraphs.get(Graph)) !== null && _a !== void 0 ? _a : new Set());
102
+ if (directSubgraphs.length === 0)
103
+ return [];
104
+ return [
105
+ ...directSubgraphs,
106
+ ...new Set(directSubgraphs
107
+ .map(subgraph => this.getSubgraphsConstructors(subgraph))
108
+ .flat()),
109
+ ];
110
+ }
64
111
  getGraphConstructorByKey(key) {
65
112
  if (this.keyToGraph.has(key))
66
113
  return this.keyToGraph.get(key);
@@ -116,6 +163,10 @@ class GraphRegistry {
116
163
  isComponentScopedLifecycleBound(Graph) {
117
164
  return Reflect.getMetadata('lifecycleScope', Graph) === 'component';
118
165
  }
166
+ isCustomScopedLifecycleBound(Graph) {
167
+ const scope = Reflect.getMetadata('lifecycleScope', Graph);
168
+ return typeof scope === 'string' && scope !== 'component' && scope !== 'feature';
169
+ }
119
170
  clearGraphAfterItWasMockedInTests(graphName) {
120
171
  const graphNames = this.nameToInstance.keys();
121
172
  for (const name of graphNames) {
@@ -134,6 +185,7 @@ class GraphRegistry {
134
185
  this.injectionTokenToInstance.delete(token);
135
186
  this.instanceToInjectionToken.delete(graph);
136
187
  }
188
+ this.invokeOnClearListeners(graph);
137
189
  }
138
190
  }
139
191
  }
@@ -150,6 +202,20 @@ class GraphRegistry {
150
202
  this.instanceToInjectionToken.delete(graph);
151
203
  }
152
204
  this.clearGraphsRegisteredByKey(Graph);
205
+ this.invokeOnClearListeners(graph);
206
+ }
207
+ registerOnClearListener(graph, callback) {
208
+ var _a;
209
+ const listeners = (_a = this.onClearListeners.get(graph)) !== null && _a !== void 0 ? _a : new Set();
210
+ listeners.add(callback);
211
+ this.onClearListeners.set(graph, listeners);
212
+ }
213
+ invokeOnClearListeners(graph) {
214
+ const listeners = this.onClearListeners.get(graph);
215
+ if (!listeners)
216
+ return;
217
+ listeners.forEach((listener) => listener());
218
+ this.onClearListeners.delete(graph);
153
219
  }
154
220
  clearGraphsRegisteredByKey(Graph) {
155
221
  [...this.keyToGraph.keys()]
@@ -1 +1 @@
1
- {"version":3,"file":"GraphRegistry.js","sourceRoot":"","sources":["../../../../src/graph/registry/GraphRegistry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GraphRegistry.js","sourceRoot":"","sources":["../../../../src/graph/registry/GraphRegistry.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-obsidian",
3
- "version": "2.13.0",
3
+ "version": "2.15.0",
4
4
  "description": "Dependency injection framework for React and React Native applications",
5
5
  "scripts": {
6
6
  "prepack": "npm run lint && tsc --project tsconfig.prod.json",
@@ -47,7 +47,7 @@
47
47
  "eslint-plugin-import": "^2.25.2",
48
48
  "eslint-plugin-import-newlines": "^1.1.5",
49
49
  "eslint-plugin-jest-formatting": "^3.1.0",
50
- "eslint-plugin-obsidian": "2.13.0",
50
+ "eslint-plugin-obsidian": "2.15.0",
51
51
  "eslint-plugin-react": "^7.26.1",
52
52
  "eslint-plugin-react-hooks": "^4.2.0",
53
53
  "eslint-plugin-unused-imports": "3.1.x",
@@ -1,5 +1,5 @@
1
1
  type Options = {
2
- scope?: 'component' | 'feature';
2
+ scope?: 'component' | 'feature' | (string & {});
3
3
  };
4
4
 
5
5
  export function LifecycleBound(options?: Options) {
@@ -5,6 +5,7 @@ import GraphMiddlewareChain from './GraphMiddlewareChain';
5
5
  import { ObtainLifecycleBoundGraphException } from './ObtainLifecycleBoundGraphException';
6
6
  import { getGlobal } from '../../utils/getGlobal';
7
7
  import { isString } from '../../utils/isString';
8
+ import referenceCounter from '../../ReferenceCounter';
8
9
 
9
10
  export class GraphRegistry {
10
11
  private readonly constructorToInstance = new Map<Constructable<Graph>, Set<Graph>>();
@@ -16,6 +17,7 @@ export class GraphRegistry {
16
17
  private readonly graphMiddlewares = new GraphMiddlewareChain();
17
18
  private readonly keyToGenerator = new Map<string,() => Constructable<Graph>>();
18
19
  private readonly keyToGraph = new Map<string, Constructable<Graph>>();
20
+ private readonly onClearListeners = new Map<Graph, Set<() => void>>();
19
21
 
20
22
  register(constructor: Constructable<Graph>, subgraphs: Constructable<Graph>[] = []) {
21
23
  this.graphToSubgraphs.set(constructor, new Set(subgraphs));
@@ -33,6 +35,10 @@ export class GraphRegistry {
33
35
  this.set(graph.constructor as any, graph);
34
36
  }
35
37
 
38
+ public isInstantiated(G: Constructable<Graph>): boolean {
39
+ return (this.constructorToInstance.get(G)?.size ?? 0) > 0;
40
+ }
41
+
36
42
  getSubgraphs(graph: Graph): Graph[] {
37
43
  const Graph = this.instanceToConstructor.get(graph)!;
38
44
  const subgraphs = this.graphToSubgraphs.get(Graph) ?? new Set();
@@ -62,9 +68,58 @@ export class GraphRegistry {
62
68
  }
63
69
  const graph = this.graphMiddlewares.resolve(Graph, props);
64
70
  this.set(Graph, graph, injectionToken);
71
+ this.instantiateCustomScopedSubgraphs(graph, props);
65
72
  return graph as T;
66
73
  }
67
74
 
75
+ private instantiateCustomScopedSubgraphs(graph: Graph, props: any) {
76
+ this.assertInstantiatingCustomScopedSubgraphFromSameScope(graph);
77
+ if (!this.isCustomScopedLifecycleBound(this.instanceToConstructor.get(graph)!)) return;
78
+ const customScope = Reflect.getMetadata('lifecycleScope', this.instanceToConstructor.get(graph)!);
79
+ const subgraphs = this.getSubgraphsConstructors(graph);
80
+ const sameScopeSubgraphs = subgraphs.filter(
81
+ subgraph => Reflect.getMetadata('lifecycleScope', subgraph) === customScope,
82
+ );
83
+ const instantiatedSubgraphs = sameScopeSubgraphs.map(
84
+ subgraph => {
85
+ return this.resolve(subgraph, 'lifecycleOwner', props);
86
+ },
87
+ );
88
+ instantiatedSubgraphs.forEach((subgraph) => referenceCounter.retain(subgraph));
89
+ this.registerOnClearListener(graph, () => {
90
+ instantiatedSubgraphs.forEach((subgraph) => referenceCounter.release(subgraph, () => this.clear(subgraph)));
91
+ });
92
+ }
93
+
94
+ private assertInstantiatingCustomScopedSubgraphFromSameScope(graph: Graph) {
95
+ const graphScope = Reflect.getMetadata('lifecycleScope', this.instanceToConstructor.get(graph)!);
96
+ const subgraphs = this.getSubgraphsConstructors(graph);
97
+ subgraphs.forEach(subgraph => {
98
+ const subgraphScope = Reflect.getMetadata('lifecycleScope', subgraph);
99
+ if (
100
+ !this.isInstantiated(subgraph) &&
101
+ this.isCustomScopedLifecycleBound(subgraph) &&
102
+ graphScope !== subgraphScope
103
+ ) {
104
+ throw new Error(`Cannot instantiate the scoped graph '${subgraph.name}' as a subgraph of '${graph.constructor.name}' because the scopes do not match. ${graphScope} !== ${subgraphScope}`);
105
+ }
106
+ });
107
+ }
108
+
109
+ private getSubgraphsConstructors(graph: Graph | Constructable<Graph>): Constructable<Graph>[] {
110
+ const Graph = typeof graph === 'function' ? graph : this.instanceToConstructor.get(graph)!;
111
+ const directSubgraphs = Array.from(this.graphToSubgraphs.get(Graph) ?? new Set<Constructable<Graph>>());
112
+ if (directSubgraphs.length === 0) return [];
113
+ return [
114
+ ...directSubgraphs,
115
+ ...new Set(
116
+ directSubgraphs
117
+ .map(subgraph => this.getSubgraphsConstructors(subgraph))
118
+ .flat(),
119
+ ),
120
+ ];
121
+ }
122
+
68
123
  private getGraphConstructorByKey<T extends Graph>(key: string): Constructable<T> {
69
124
  if (this.keyToGraph.has(key)) return this.keyToGraph.get(key) as Constructable<T>;
70
125
  const generator = this.keyToGenerator.get(key);
@@ -123,6 +178,11 @@ export class GraphRegistry {
123
178
  return Reflect.getMetadata('lifecycleScope', Graph) === 'component';
124
179
  }
125
180
 
181
+ private isCustomScopedLifecycleBound(Graph: Constructable<Graph>): boolean {
182
+ const scope = Reflect.getMetadata('lifecycleScope', Graph);
183
+ return typeof scope === 'string' && scope !== 'component' && scope !== 'feature';
184
+ }
185
+
126
186
  clearGraphAfterItWasMockedInTests(graphName: string) {
127
187
  const graphNames = this.nameToInstance.keys();
128
188
  for (const name of graphNames) {
@@ -140,6 +200,7 @@ export class GraphRegistry {
140
200
  this.injectionTokenToInstance.delete(token);
141
201
  this.instanceToInjectionToken.delete(graph);
142
202
  }
203
+ this.invokeOnClearListeners(graph);
143
204
  }
144
205
  }
145
206
  }
@@ -157,6 +218,20 @@ export class GraphRegistry {
157
218
  }
158
219
 
159
220
  this.clearGraphsRegisteredByKey(Graph);
221
+ this.invokeOnClearListeners(graph);
222
+ }
223
+
224
+ private registerOnClearListener(graph: Graph, callback: () => void) {
225
+ const listeners = this.onClearListeners.get(graph) ?? new Set();
226
+ listeners.add(callback);
227
+ this.onClearListeners.set(graph, listeners);
228
+ }
229
+
230
+ private invokeOnClearListeners(graph: Graph) {
231
+ const listeners = this.onClearListeners.get(graph);
232
+ if (!listeners) return;
233
+ listeners.forEach((listener) => listener());
234
+ this.onClearListeners.delete(graph);
160
235
  }
161
236
 
162
237
  private clearGraphsRegisteredByKey(Graph: Constructable<Graph>) {