@nexus-ioc/core 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (177) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +134 -0
  3. package/dist/browser.d.ts +1 -0
  4. package/dist/browser.js +6 -0
  5. package/dist/browser.js.map +1 -0
  6. package/dist/core/graph/analyze-module.d.ts +36 -0
  7. package/dist/core/graph/analyze-module.js +82 -0
  8. package/dist/core/graph/analyze-module.js.map +1 -0
  9. package/dist/core/graph/analyze-provider.d.ts +24 -0
  10. package/dist/core/graph/analyze-provider.js +57 -0
  11. package/dist/core/graph/analyze-provider.js.map +1 -0
  12. package/dist/core/graph/helpers/index.d.ts +9 -0
  13. package/dist/core/graph/helpers/index.js +23 -0
  14. package/dist/core/graph/helpers/index.js.map +1 -0
  15. package/dist/core/graph/module-graph.d.ts +34 -0
  16. package/dist/core/graph/module-graph.js +399 -0
  17. package/dist/core/graph/module-graph.js.map +1 -0
  18. package/dist/core/graph/providers/analyze-class-provider.d.ts +7 -0
  19. package/dist/core/graph/providers/analyze-class-provider.js +17 -0
  20. package/dist/core/graph/providers/analyze-class-provider.js.map +1 -0
  21. package/dist/core/graph/providers/analyze-factory-provider.d.ts +7 -0
  22. package/dist/core/graph/providers/analyze-factory-provider.js +17 -0
  23. package/dist/core/graph/providers/analyze-factory-provider.js.map +1 -0
  24. package/dist/core/graph/providers/analyze-function-provider.d.ts +5 -0
  25. package/dist/core/graph/providers/analyze-function-provider.js +11 -0
  26. package/dist/core/graph/providers/analyze-function-provider.js.map +1 -0
  27. package/dist/core/graph/providers/analyze-value-provider.d.ts +7 -0
  28. package/dist/core/graph/providers/analyze-value-provider.js +17 -0
  29. package/dist/core/graph/providers/analyze-value-provider.js.map +1 -0
  30. package/dist/core/graph/providers/provider-factory.d.ts +6 -0
  31. package/dist/core/graph/providers/provider-factory.js +24 -0
  32. package/dist/core/graph/providers/provider-factory.js.map +1 -0
  33. package/dist/core/modules/container.d.ts +15 -0
  34. package/dist/core/modules/container.js +40 -0
  35. package/dist/core/modules/container.js.map +1 -0
  36. package/dist/core/modules/module-container-factory.d.ts +9 -0
  37. package/dist/core/modules/module-container-factory.js +25 -0
  38. package/dist/core/modules/module-container-factory.js.map +1 -0
  39. package/dist/core/modules/module-container.d.ts +16 -0
  40. package/dist/core/modules/module-container.js +63 -0
  41. package/dist/core/modules/module-container.js.map +1 -0
  42. package/dist/core/modules/module-token-factory.d.ts +12 -0
  43. package/dist/core/modules/module-token-factory.js +48 -0
  44. package/dist/core/modules/module-token-factory.js.map +1 -0
  45. package/dist/core/modules/modules-container.d.ts +16 -0
  46. package/dist/core/modules/modules-container.js +43 -0
  47. package/dist/core/modules/modules-container.js.map +1 -0
  48. package/dist/core/nexus-applications.browser.d.ts +13 -0
  49. package/dist/core/nexus-applications.browser.js +36 -0
  50. package/dist/core/nexus-applications.browser.js.map +1 -0
  51. package/dist/core/nexus-applications.server.d.ts +13 -0
  52. package/dist/core/nexus-applications.server.js +36 -0
  53. package/dist/core/nexus-applications.server.js.map +1 -0
  54. package/dist/core/resolver/providers-container.d.ts +3 -0
  55. package/dist/core/resolver/providers-container.js +8 -0
  56. package/dist/core/resolver/providers-container.js.map +1 -0
  57. package/dist/core/resolver/resolver.d.ts +10 -0
  58. package/dist/core/resolver/resolver.js +126 -0
  59. package/dist/core/resolver/resolver.js.map +1 -0
  60. package/dist/decorators/global.d.ts +2 -0
  61. package/dist/decorators/global.js +12 -0
  62. package/dist/decorators/global.js.map +1 -0
  63. package/dist/decorators/inject.d.ts +3 -0
  64. package/dist/decorators/inject.js +27 -0
  65. package/dist/decorators/inject.js.map +1 -0
  66. package/dist/decorators/injectable.d.ts +3 -0
  67. package/dist/decorators/injectable.js +12 -0
  68. package/dist/decorators/injectable.js.map +1 -0
  69. package/dist/decorators/nsModule.d.ts +3 -0
  70. package/dist/decorators/nsModule.js +16 -0
  71. package/dist/decorators/nsModule.js.map +1 -0
  72. package/dist/decorators/optional.d.ts +2 -0
  73. package/dist/decorators/optional.js +20 -0
  74. package/dist/decorators/optional.js.map +1 -0
  75. package/dist/errors/container-not-compiled.error.d.ts +3 -0
  76. package/dist/errors/container-not-compiled.error.js +12 -0
  77. package/dist/errors/container-not-compiled.error.js.map +1 -0
  78. package/dist/index.d.ts +7 -0
  79. package/dist/index.js +17 -0
  80. package/dist/index.js.map +1 -0
  81. package/dist/interfaces/abstract.interface.d.ts +3 -0
  82. package/dist/interfaces/abstract.interface.js +3 -0
  83. package/dist/interfaces/abstract.interface.js.map +1 -0
  84. package/dist/interfaces/constants.d.ts +12 -0
  85. package/dist/interfaces/constants.js +16 -0
  86. package/dist/interfaces/constants.js.map +1 -0
  87. package/dist/interfaces/dynamic-module.interface.d.ts +13 -0
  88. package/dist/interfaces/dynamic-module.interface.js +3 -0
  89. package/dist/interfaces/dynamic-module.interface.js.map +1 -0
  90. package/dist/interfaces/index.d.ts +15 -0
  91. package/dist/interfaces/index.js +19 -0
  92. package/dist/interfaces/index.js.map +1 -0
  93. package/dist/interfaces/injectable.interface.d.ts +4 -0
  94. package/dist/interfaces/injectable.interface.js +3 -0
  95. package/dist/interfaces/injectable.interface.js.map +1 -0
  96. package/dist/interfaces/injection-token.interface.d.ts +3 -0
  97. package/dist/interfaces/injection-token.interface.js +3 -0
  98. package/dist/interfaces/injection-token.interface.js.map +1 -0
  99. package/dist/interfaces/module-metadata.interface.d.ts +8 -0
  100. package/dist/interfaces/module-metadata.interface.js +3 -0
  101. package/dist/interfaces/module-metadata.interface.js.map +1 -0
  102. package/dist/interfaces/module-types.interface.d.ts +20 -0
  103. package/dist/interfaces/module-types.interface.js +3 -0
  104. package/dist/interfaces/module-types.interface.js.map +1 -0
  105. package/dist/interfaces/modules/container.interface.d.ts +16 -0
  106. package/dist/interfaces/modules/container.interface.js +3 -0
  107. package/dist/interfaces/modules/container.interface.js.map +1 -0
  108. package/dist/interfaces/modules/index.d.ts +7 -0
  109. package/dist/interfaces/modules/index.js +11 -0
  110. package/dist/interfaces/modules/index.js.map +1 -0
  111. package/dist/interfaces/modules/module-container-factory.interface.d.ts +7 -0
  112. package/dist/interfaces/modules/module-container-factory.interface.js +3 -0
  113. package/dist/interfaces/modules/module-container-factory.interface.js.map +1 -0
  114. package/dist/interfaces/modules/module-container.interface.d.ts +13 -0
  115. package/dist/interfaces/modules/module-container.interface.js +3 -0
  116. package/dist/interfaces/modules/module-container.interface.js.map +1 -0
  117. package/dist/interfaces/modules/module-graph.interface.d.ts +59 -0
  118. package/dist/interfaces/modules/module-graph.interface.js +16 -0
  119. package/dist/interfaces/modules/module-graph.interface.js.map +1 -0
  120. package/dist/interfaces/modules/module-token-factory.interface.d.ts +5 -0
  121. package/dist/interfaces/modules/module-token-factory.interface.js +3 -0
  122. package/dist/interfaces/modules/module-token-factory.interface.js.map +1 -0
  123. package/dist/interfaces/modules/modules-container.interface.d.ts +8 -0
  124. package/dist/interfaces/modules/modules-container.interface.js +3 -0
  125. package/dist/interfaces/modules/modules-container.interface.js.map +1 -0
  126. package/dist/interfaces/modules/provider-token-factory.interface.d.ts +4 -0
  127. package/dist/interfaces/modules/provider-token-factory.interface.js +3 -0
  128. package/dist/interfaces/modules/provider-token-factory.interface.js.map +1 -0
  129. package/dist/interfaces/nexus-application.interface.d.ts +8 -0
  130. package/dist/interfaces/nexus-application.interface.js +3 -0
  131. package/dist/interfaces/nexus-application.interface.js.map +1 -0
  132. package/dist/interfaces/on-module-init.interface.d.ts +3 -0
  133. package/dist/interfaces/on-module-init.interface.js +3 -0
  134. package/dist/interfaces/on-module-init.interface.js.map +1 -0
  135. package/dist/interfaces/plugins/index.d.ts +2 -0
  136. package/dist/interfaces/plugins/index.js +6 -0
  137. package/dist/interfaces/plugins/index.js.map +1 -0
  138. package/dist/interfaces/plugins/module-plugin.interface.d.ts +4 -0
  139. package/dist/interfaces/plugins/module-plugin.interface.js +3 -0
  140. package/dist/interfaces/plugins/module-plugin.interface.js.map +1 -0
  141. package/dist/interfaces/plugins/scanner-plugin.interface.d.ts +6 -0
  142. package/dist/interfaces/plugins/scanner-plugin.interface.js +3 -0
  143. package/dist/interfaces/plugins/scanner-plugin.interface.js.map +1 -0
  144. package/dist/interfaces/scope.interface.d.ts +4 -0
  145. package/dist/interfaces/scope.interface.js +9 -0
  146. package/dist/interfaces/scope.interface.js.map +1 -0
  147. package/dist/interfaces/type.interface.d.ts +3 -0
  148. package/dist/interfaces/type.interface.js +3 -0
  149. package/dist/interfaces/type.interface.js.map +1 -0
  150. package/dist/interfaces/utils/hash-utils.interface.d.ts +5 -0
  151. package/dist/interfaces/utils/hash-utils.interface.js +3 -0
  152. package/dist/interfaces/utils/hash-utils.interface.js.map +1 -0
  153. package/dist/interfaces/utils/index.d.ts +1 -0
  154. package/dist/interfaces/utils/index.js +5 -0
  155. package/dist/interfaces/utils/index.js.map +1 -0
  156. package/dist/interfaces/validate-module-keys.d.ts +7 -0
  157. package/dist/interfaces/validate-module-keys.js +26 -0
  158. package/dist/interfaces/validate-module-keys.js.map +1 -0
  159. package/dist/server.d.ts +1 -0
  160. package/dist/server.js +6 -0
  161. package/dist/server.js.map +1 -0
  162. package/dist/utils/hash-utils.browser.d.ts +6 -0
  163. package/dist/utils/hash-utils.browser.js +22 -0
  164. package/dist/utils/hash-utils.browser.js.map +1 -0
  165. package/dist/utils/hash-utils.server.d.ts +6 -0
  166. package/dist/utils/hash-utils.server.js +19 -0
  167. package/dist/utils/hash-utils.server.js.map +1 -0
  168. package/dist/utils/helpers.d.ts +16 -0
  169. package/dist/utils/helpers.js +83 -0
  170. package/dist/utils/helpers.js.map +1 -0
  171. package/dist/utils/random-string-generator.util.d.ts +1 -0
  172. package/dist/utils/random-string-generator.util.js +7 -0
  173. package/dist/utils/random-string-generator.util.js.map +1 -0
  174. package/dist/utils/shared.utils.d.ts +13 -0
  175. package/dist/utils/shared.utils.js +66 -0
  176. package/dist/utils/shared.utils.js.map +1 -0
  177. package/package.json +63 -0
@@ -0,0 +1,399 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ModuleGraph = void 0;
4
+ const interfaces_1 = require("../../interfaces");
5
+ const helpers_1 = require("../../utils/helpers");
6
+ const analyze_module_1 = require("./analyze-module");
7
+ const helpers_2 = require("./helpers");
8
+ const provider_factory_1 = require("./providers/provider-factory");
9
+ class ModuleGraph {
10
+ constructor(_root) {
11
+ this._root = _root;
12
+ this._nodes = new Map();
13
+ this._edges = new Map();
14
+ this._globalModules = new Map();
15
+ this._errors = [];
16
+ }
17
+ get nodes() {
18
+ return this._nodes;
19
+ }
20
+ get edges() {
21
+ return this._edges;
22
+ }
23
+ get errors() {
24
+ return this._errors;
25
+ }
26
+ async compile() {
27
+ await this.addModules();
28
+ await this.addDependencies();
29
+ await this.detectCircularDependencies();
30
+ await this.detectCircularImports();
31
+ }
32
+ getNode(token) {
33
+ return this._nodes.get(token);
34
+ }
35
+ getEdge(token) {
36
+ return this._edges.get(token) || [];
37
+ }
38
+ getAllEdges() {
39
+ return [...this._edges.values()];
40
+ }
41
+ getAllNodes() {
42
+ return [...this._nodes.values()];
43
+ }
44
+ // modules analyze
45
+ async addModules() {
46
+ const visited = new Set();
47
+ const imports = [this._root];
48
+ while (imports.length) {
49
+ const importModule = imports.shift();
50
+ if (!importModule || visited.has(importModule.token)) {
51
+ continue;
52
+ }
53
+ const analyzeModule = new analyze_module_1.AnalyzeModule(importModule);
54
+ await this.addModule(analyzeModule);
55
+ await this.addModuleImports(analyzeModule);
56
+ await this.addModuleProviders(analyzeModule);
57
+ imports.push(...(await analyzeModule.imports));
58
+ visited.add(analyzeModule.id);
59
+ }
60
+ }
61
+ async addModule(analyzeModule) {
62
+ this.addNode(analyzeModule.id, analyzeModule);
63
+ if (analyzeModule.isGlobal) {
64
+ this._globalModules.set(analyzeModule.id, analyzeModule.moduleContainer);
65
+ }
66
+ }
67
+ async addModuleImports(analyzeModule) {
68
+ const imports = await analyzeModule.edges;
69
+ for (const importEdge of imports) {
70
+ this.addEdge(analyzeModule.id, importEdge);
71
+ }
72
+ }
73
+ async addModuleProviders(analyzeModule) {
74
+ for (const provider of analyzeModule.providers) {
75
+ const analyzeProvider = (0, provider_factory_1.ProviderFactory)(provider, analyzeModule.moduleContainer);
76
+ if (analyzeProvider === null) {
77
+ continue;
78
+ }
79
+ this.addNode(analyzeProvider.id, analyzeProvider);
80
+ this.addEdge(analyzeModule.id, analyzeProvider.edge);
81
+ }
82
+ }
83
+ // modules analyze
84
+ // graph helpers
85
+ addEdge(token, edge) {
86
+ const edges = this._edges.get(token) || [];
87
+ edges.push(edge);
88
+ this._edges.set(token, edges);
89
+ }
90
+ addNode(token, node) {
91
+ this._nodes.set(token, node);
92
+ }
93
+ // graph helpers
94
+ // providers dependencies
95
+ async addDependencies() {
96
+ const visited = new Set();
97
+ const providerNodes = [...this.nodes].filter(([_, node]) => node.type === interfaces_1.NodeTypeEnum.PROVIDER);
98
+ for (const [token, node] of providerNodes) {
99
+ if (visited.has(token)) {
100
+ continue;
101
+ }
102
+ if ((0, helpers_2.isAnalyzeFactoryProvider)(node)) {
103
+ await this.addFactoryProviderDependency(token, node);
104
+ }
105
+ else if ((0, helpers_2.isAnalyzeClassProvider)(node)) {
106
+ await this.addClassProviderDependency(token, node);
107
+ }
108
+ else if ((0, helpers_2.isAnalyzeFunctionProvider)(node)) {
109
+ await this.addClassDependency(token, node);
110
+ }
111
+ visited.add(token);
112
+ }
113
+ }
114
+ async addClassDependency(token, node) {
115
+ const constructorDependencies = this.getConstructorDependencies(node.metatype);
116
+ const optionalDependency = this.getOptionalConstructorDependencies(node.metatype);
117
+ for (const [index, dependency] of constructorDependencies.entries()) {
118
+ const dependencyToken = (0, helpers_1.getDependencyToken)(dependency.param);
119
+ const isExported = optionalDependency.includes(index) ||
120
+ (await this.isProviderExported(node.moduleContainer, dependencyToken));
121
+ if (!isExported) {
122
+ this.errors.push({
123
+ type: "UNREACHED_DEP_CONSTRUCTOR",
124
+ token: node.label,
125
+ dependency: typeof dependencyToken === "function"
126
+ ? dependencyToken.name
127
+ : dependencyToken,
128
+ position: dependency.index,
129
+ });
130
+ }
131
+ const newEdge = {
132
+ type: interfaces_1.EdgeTypeEnum.DEPENDENCY,
133
+ source: token,
134
+ target: dependencyToken,
135
+ metadata: {
136
+ unreached: !isExported,
137
+ isCircular: false,
138
+ index: dependency.index,
139
+ inject: "constructor",
140
+ },
141
+ };
142
+ this.addEdge(token, newEdge);
143
+ }
144
+ const propertiesDependencies = this.getPropertiesDependencies(node.metatype);
145
+ const optionalProperties = this.getOptionalPropertyDependencies(node.metatype);
146
+ for (const dependency of propertiesDependencies) {
147
+ const dependencyToken = (0, helpers_1.getDependencyToken)(dependency.type);
148
+ const isExported = optionalProperties.includes(dependency.key) ||
149
+ (await this.isProviderExported(node.moduleContainer, dependencyToken));
150
+ if (!isExported) {
151
+ this.errors.push({
152
+ type: "UNREACHED_DEP_PROPERTY",
153
+ token: node.label,
154
+ dependency: typeof dependencyToken === "function"
155
+ ? dependencyToken.name
156
+ : dependencyToken,
157
+ key: dependency.key,
158
+ });
159
+ }
160
+ const newEdge = {
161
+ type: interfaces_1.EdgeTypeEnum.DEPENDENCY,
162
+ source: token,
163
+ target: dependencyToken,
164
+ metadata: {
165
+ unreached: !isExported,
166
+ isCircular: false,
167
+ key: dependency.key,
168
+ inject: "property",
169
+ },
170
+ };
171
+ this.addEdge(token, newEdge);
172
+ }
173
+ }
174
+ async addClassProviderDependency(token, node) {
175
+ const Class = node.useClass;
176
+ const constructorDependencies = this.getConstructorDependencies(Class);
177
+ const optionalDependency = this.getOptionalConstructorDependencies(Class);
178
+ for (const [index, dependency] of constructorDependencies.entries()) {
179
+ const dependencyToken = (0, helpers_1.getDependencyToken)(dependency.param);
180
+ const isExported = optionalDependency.includes(index) ||
181
+ (await this.isProviderExported(node.moduleContainer, dependencyToken));
182
+ if (!isExported) {
183
+ this.errors.push({
184
+ type: "UNREACHED_DEP_CONSTRUCTOR",
185
+ token: node.label,
186
+ dependency: typeof dependencyToken === "function"
187
+ ? dependencyToken.name
188
+ : dependencyToken,
189
+ position: dependency.index,
190
+ });
191
+ }
192
+ const newEdge = {
193
+ type: interfaces_1.EdgeTypeEnum.DEPENDENCY,
194
+ source: token,
195
+ target: dependencyToken,
196
+ metadata: {
197
+ unreached: !isExported,
198
+ isCircular: false,
199
+ index: dependency.index,
200
+ inject: "constructor",
201
+ },
202
+ };
203
+ this.addEdge(token, newEdge);
204
+ }
205
+ const propertiesDependencies = this.getPropertiesDependencies(Class);
206
+ const optionalProperty = this.getOptionalPropertyDependencies(Class);
207
+ for (const dependency of propertiesDependencies) {
208
+ const dependencyToken = (0, helpers_1.getDependencyToken)(dependency.type);
209
+ const isExported = optionalProperty.includes(dependency.key) ||
210
+ (await this.isProviderExported(node.moduleContainer, dependencyToken));
211
+ if (!isExported) {
212
+ this.errors.push({
213
+ type: "UNREACHED_DEP_PROPERTY",
214
+ token: node.label,
215
+ dependency: typeof dependencyToken === "function"
216
+ ? dependencyToken.name
217
+ : dependencyToken,
218
+ key: dependency.key,
219
+ });
220
+ }
221
+ this.addEdge(token, {
222
+ type: interfaces_1.EdgeTypeEnum.DEPENDENCY,
223
+ source: token,
224
+ target: dependencyToken,
225
+ metadata: {
226
+ unreached: !isExported,
227
+ isCircular: false,
228
+ key: dependency.key,
229
+ inject: "property",
230
+ },
231
+ });
232
+ }
233
+ }
234
+ async addFactoryProviderDependency(token, node) {
235
+ const dependencies = node.inject || [];
236
+ let index = 0;
237
+ for (const dependency of dependencies) {
238
+ const isExported = await this.isProviderExported(node.moduleContainer, dependency);
239
+ if (!isExported) {
240
+ this.errors.push({
241
+ type: "UNREACHED_DEP_FACTORY",
242
+ token: node.label,
243
+ dependency: typeof dependency === "function"
244
+ ? dependency.name
245
+ : dependency,
246
+ key: index,
247
+ });
248
+ }
249
+ const factoryDependency = {
250
+ type: interfaces_1.EdgeTypeEnum.DEPENDENCY,
251
+ source: token,
252
+ target: dependency,
253
+ metadata: {
254
+ unreached: !isExported,
255
+ isCircular: false,
256
+ index: index++,
257
+ inject: "constructor",
258
+ },
259
+ };
260
+ this.addEdge(token, factoryDependency);
261
+ }
262
+ }
263
+ // providers dependencies
264
+ async isProviderExported(moduleContainer, dependencyToken) {
265
+ // check globals
266
+ for (const globalModule of this._globalModules.values()) {
267
+ if (globalModule.exports.some((provider) => provider === dependencyToken)) {
268
+ return true;
269
+ }
270
+ }
271
+ // check globals
272
+ // check internals
273
+ if (moduleContainer.providers.some((provider) => (0, helpers_1.getProviderToken)(provider) === dependencyToken)) {
274
+ return true;
275
+ }
276
+ // externals
277
+ const containerImports = await moduleContainer.imports;
278
+ const visitedModules = new Set();
279
+ const queue = containerImports.flatMap((firstLevelContainer) => firstLevelContainer.exports);
280
+ while (queue.length) {
281
+ const currentExportToken = queue.shift();
282
+ if (!currentExportToken || visitedModules.has(currentExportToken)) {
283
+ continue;
284
+ }
285
+ if (currentExportToken === dependencyToken) {
286
+ return true;
287
+ }
288
+ if ((0, helpers_1.isModule)(currentExportToken) &&
289
+ Reflect.hasMetadata(interfaces_1.MODULE_WATERMARK, currentExportToken)) {
290
+ const token = Reflect.getMetadata(interfaces_1.MODULE_TOKEN_WATERMARK, currentExportToken);
291
+ const moduleContainer = this.getNode(token);
292
+ if (moduleContainer) {
293
+ queue.push(...moduleContainer.exports);
294
+ }
295
+ }
296
+ visitedModules.add(currentExportToken);
297
+ }
298
+ return false;
299
+ }
300
+ async detectCircularDependencies() {
301
+ const visit = (nodeId, path, visited, stack) => {
302
+ if (stack.has(nodeId)) {
303
+ const cyclePath = path.map((node, index) => [node, path[index + 1] || nodeId]);
304
+ const from = cyclePath[0];
305
+ const to = cyclePath[cyclePath.length - 1];
306
+ if (from[0] === to[1]) {
307
+ const edges = this._edges.get(nodeId);
308
+ for (const [from, to] of cyclePath) {
309
+ const edges = this._edges.get(from);
310
+ if (edges) {
311
+ const edge = edges.find((e) => e.target === to);
312
+ if (edge) {
313
+ edge.metadata.isCircular = true;
314
+ }
315
+ }
316
+ }
317
+ this.errors.push({
318
+ type: "CD_PROVIDERS",
319
+ path: cyclePath,
320
+ });
321
+ }
322
+ return true;
323
+ }
324
+ if (visited.has(nodeId)) {
325
+ return false;
326
+ }
327
+ visited.add(nodeId);
328
+ stack.add(nodeId);
329
+ path.push(nodeId);
330
+ const edges = this.getEdge(nodeId) || [];
331
+ for (const edge of edges) {
332
+ visit(edge.target, path, visited, stack);
333
+ }
334
+ stack.delete(nodeId);
335
+ path.pop();
336
+ return false;
337
+ };
338
+ const providers = [...this._nodes].filter(([_, node]) => node.type === interfaces_1.NodeTypeEnum.PROVIDER);
339
+ for (const [nodeId, _] of providers) {
340
+ visit(nodeId, [], new Set(), new Set());
341
+ }
342
+ }
343
+ async detectCircularImports() {
344
+ const visit = (nodeId, path, visited, stack) => {
345
+ if (stack.has(nodeId)) {
346
+ const cycleStartIndex = path.indexOf(nodeId);
347
+ const cyclePath = path.slice(cycleStartIndex);
348
+ for (let i = 0; i < cyclePath.length; i++) {
349
+ const from = cyclePath[i];
350
+ const to = cyclePath[cyclePath.length - 1];
351
+ const edges = this._edges.get(from);
352
+ if (edges) {
353
+ const edge = edges.find((e) => e.source === to);
354
+ if (edge && edge.type === interfaces_1.EdgeTypeEnum.IMPORT) {
355
+ this.errors.push({
356
+ type: "CD_IMPORTS",
357
+ path: cyclePath.map((token) => this.getNode(token).label),
358
+ });
359
+ edge.metadata.isCircular = true;
360
+ }
361
+ }
362
+ }
363
+ return;
364
+ }
365
+ if (visited.has(nodeId)) {
366
+ return;
367
+ }
368
+ visited.add(nodeId);
369
+ stack.add(nodeId);
370
+ path.push(nodeId);
371
+ const edges = this.getEdge(nodeId) || [];
372
+ for (const edge of edges) {
373
+ if (edge.type === interfaces_1.EdgeTypeEnum.IMPORT) {
374
+ visit(edge.source, path, visited, stack);
375
+ }
376
+ }
377
+ stack.delete(nodeId);
378
+ path.pop();
379
+ };
380
+ const modules = [...this._nodes].filter(([_, node]) => node.type === interfaces_1.NodeTypeEnum.MODULE);
381
+ for (const [nodeId, _] of modules) {
382
+ visit(nodeId, [], new Set(), new Set());
383
+ }
384
+ }
385
+ getConstructorDependencies(provider) {
386
+ return (Reflect.getMetadata(interfaces_1.SELF_DECLARED_DEPS_METADATA, provider) || []).sort((a, b) => a.index - b.index);
387
+ }
388
+ getOptionalConstructorDependencies(provider) {
389
+ return (Reflect.getMetadata(interfaces_1.SELF_DECLARED_OPTIONAL_DEPS_METADATA, provider) || []).map(({ index }) => index);
390
+ }
391
+ getOptionalPropertyDependencies(provider) {
392
+ return (Reflect.getMetadata(interfaces_1.PROPERTY_OPTIONAL_DEPS_METADATA, provider) || []).map(({ key }) => key);
393
+ }
394
+ getPropertiesDependencies(provider) {
395
+ return Reflect.getMetadata(interfaces_1.PROPERTY_DEPS_METADATA, provider) || [];
396
+ }
397
+ }
398
+ exports.ModuleGraph = ModuleGraph;
399
+ //# sourceMappingURL=module-graph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module-graph.js","sourceRoot":"","sources":["../../../src/core/graph/module-graph.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { ClassProvider } from "../../../interfaces";
2
+ import { AnalyzeProvider } from "../analyze-provider";
3
+ export declare class AnalyzeClassProvider extends AnalyzeProvider {
4
+ get metatype(): ClassProvider;
5
+ get provide(): import("../../../interfaces").InjectionToken;
6
+ get useClass(): import("../../../interfaces").Type<any>;
7
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AnalyzeClassProvider = void 0;
4
+ const analyze_provider_1 = require("../analyze-provider");
5
+ class AnalyzeClassProvider extends analyze_provider_1.AnalyzeProvider {
6
+ get metatype() {
7
+ return this.provider;
8
+ }
9
+ get provide() {
10
+ return this.metatype.provide;
11
+ }
12
+ get useClass() {
13
+ return this.metatype.useClass;
14
+ }
15
+ }
16
+ exports.AnalyzeClassProvider = AnalyzeClassProvider;
17
+ //# sourceMappingURL=analyze-class-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyze-class-provider.js","sourceRoot":"","sources":["../../../../src/core/graph/providers/analyze-class-provider.ts"],"names":[],"mappings":";;;AACA,0DAAsD;AAEtD,MAAa,oBAAqB,SAAQ,kCAAe;IACxD,IAAW,QAAQ;QAClB,OAAO,IAAI,CAAC,QAAyB,CAAC;IACvC,CAAC;IAED,IAAW,OAAO;QACjB,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;IAC9B,CAAC;IAED,IAAW,QAAQ;QAClB,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAC/B,CAAC;CACD;AAZD,oDAYC"}
@@ -0,0 +1,7 @@
1
+ import type { FactoryProvider } from "../../../interfaces";
2
+ import { AnalyzeProvider } from "../analyze-provider";
3
+ export declare class AnalyzeFactoryProvider extends AnalyzeProvider {
4
+ get metatype(): FactoryProvider;
5
+ get provide(): import("../../../interfaces").InjectionToken;
6
+ get inject(): import("../../../interfaces").InjectionToken[] | undefined;
7
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AnalyzeFactoryProvider = void 0;
4
+ const analyze_provider_1 = require("../analyze-provider");
5
+ class AnalyzeFactoryProvider extends analyze_provider_1.AnalyzeProvider {
6
+ get metatype() {
7
+ return this.provider;
8
+ }
9
+ get provide() {
10
+ return this.metatype.provide;
11
+ }
12
+ get inject() {
13
+ return this.metatype.inject;
14
+ }
15
+ }
16
+ exports.AnalyzeFactoryProvider = AnalyzeFactoryProvider;
17
+ //# sourceMappingURL=analyze-factory-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyze-factory-provider.js","sourceRoot":"","sources":["../../../../src/core/graph/providers/analyze-factory-provider.ts"],"names":[],"mappings":";;;AACA,0DAAsD;AAEtD,MAAa,sBAAuB,SAAQ,kCAAe;IAC1D,IAAW,QAAQ;QAClB,OAAO,IAAI,CAAC,QAA2B,CAAC;IACzC,CAAC;IAED,IAAW,OAAO;QACjB,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;IAC9B,CAAC;IAED,IAAW,MAAM;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC7B,CAAC;CACD;AAZD,wDAYC"}
@@ -0,0 +1,5 @@
1
+ import type { Type } from "../../../interfaces";
2
+ import { AnalyzeProvider } from "../analyze-provider";
3
+ export declare class AnalyzeFunctionProvider extends AnalyzeProvider {
4
+ get metatype(): Type;
5
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AnalyzeFunctionProvider = void 0;
4
+ const analyze_provider_1 = require("../analyze-provider");
5
+ class AnalyzeFunctionProvider extends analyze_provider_1.AnalyzeProvider {
6
+ get metatype() {
7
+ return this.provider;
8
+ }
9
+ }
10
+ exports.AnalyzeFunctionProvider = AnalyzeFunctionProvider;
11
+ //# sourceMappingURL=analyze-function-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyze-function-provider.js","sourceRoot":"","sources":["../../../../src/core/graph/providers/analyze-function-provider.ts"],"names":[],"mappings":";;;AACA,0DAAsD;AAEtD,MAAa,uBAAwB,SAAQ,kCAAe;IAC3D,IAAW,QAAQ;QAClB,OAAO,IAAI,CAAC,QAAgB,CAAC;IAC9B,CAAC;CACD;AAJD,0DAIC"}
@@ -0,0 +1,7 @@
1
+ import type { ValueProvider } from "../../../interfaces";
2
+ import { AnalyzeProvider } from "../analyze-provider";
3
+ export declare class AnalyzeValueProvider extends AnalyzeProvider {
4
+ get metatype(): ValueProvider;
5
+ get provide(): import("../../../interfaces").InjectionToken;
6
+ get useValue(): any;
7
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AnalyzeValueProvider = void 0;
4
+ const analyze_provider_1 = require("../analyze-provider");
5
+ class AnalyzeValueProvider extends analyze_provider_1.AnalyzeProvider {
6
+ get metatype() {
7
+ return this.provider;
8
+ }
9
+ get provide() {
10
+ return this.metatype.provide;
11
+ }
12
+ get useValue() {
13
+ return this.metatype.useValue;
14
+ }
15
+ }
16
+ exports.AnalyzeValueProvider = AnalyzeValueProvider;
17
+ //# sourceMappingURL=analyze-value-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyze-value-provider.js","sourceRoot":"","sources":["../../../../src/core/graph/providers/analyze-value-provider.ts"],"names":[],"mappings":";;;AACA,0DAAsD;AAEtD,MAAa,oBAAqB,SAAQ,kCAAe;IACxD,IAAW,QAAQ;QAClB,OAAO,IAAI,CAAC,QAAyB,CAAC;IACvC,CAAC;IAED,IAAW,OAAO;QACjB,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;IAC9B,CAAC;IAED,IAAW,QAAQ;QAClB,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAC/B,CAAC;CACD;AAZD,oDAYC"}
@@ -0,0 +1,6 @@
1
+ import type { ModuleContainerInterface, Provider } from "../../../interfaces";
2
+ import { AnalyzeClassProvider } from "./analyze-class-provider";
3
+ import { AnalyzeFactoryProvider } from "./analyze-factory-provider";
4
+ import { AnalyzeFunctionProvider } from "./analyze-function-provider";
5
+ import { AnalyzeValueProvider } from "./analyze-value-provider";
6
+ export declare function ProviderFactory(provider: Provider, module: ModuleContainerInterface): AnalyzeClassProvider | AnalyzeFactoryProvider | AnalyzeFunctionProvider | AnalyzeValueProvider | null;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ProviderFactory = ProviderFactory;
4
+ const helpers_1 = require("../../../utils/helpers");
5
+ const analyze_class_provider_1 = require("./analyze-class-provider");
6
+ const analyze_factory_provider_1 = require("./analyze-factory-provider");
7
+ const analyze_function_provider_1 = require("./analyze-function-provider");
8
+ const analyze_value_provider_1 = require("./analyze-value-provider");
9
+ function ProviderFactory(provider, module) {
10
+ if ((0, helpers_1.isFactoryProvider)(provider)) {
11
+ return new analyze_factory_provider_1.AnalyzeFactoryProvider(provider, module);
12
+ }
13
+ if ((0, helpers_1.isClassProvider)(provider)) {
14
+ return new analyze_class_provider_1.AnalyzeClassProvider(provider, module);
15
+ }
16
+ if ((0, helpers_1.isFunctionProvider)(provider)) {
17
+ return new analyze_function_provider_1.AnalyzeFunctionProvider(provider, module);
18
+ }
19
+ if ((0, helpers_1.isValueProvider)(provider)) {
20
+ return new analyze_value_provider_1.AnalyzeValueProvider(provider, module);
21
+ }
22
+ return null;
23
+ }
24
+ //# sourceMappingURL=provider-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-factory.js","sourceRoot":"","sources":["../../../../src/core/graph/providers/provider-factory.ts"],"names":[],"mappings":";;AAYA,0CAqBC;AAhCD,oDAKgC;AAChC,qEAAgE;AAChE,yEAAoE;AACpE,2EAAsE;AACtE,qEAAgE;AAEhE,SAAgB,eAAe,CAC9B,QAAkB,EAClB,MAAgC;IAEhC,IAAI,IAAA,2BAAiB,EAAC,QAAQ,CAAC,EAAE,CAAC;QACjC,OAAO,IAAI,iDAAsB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACrD,CAAC;IAED,IAAI,IAAA,yBAAe,EAAC,QAAQ,CAAC,EAAE,CAAC;QAC/B,OAAO,IAAI,6CAAoB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,IAAA,4BAAkB,EAAC,QAAQ,CAAC,EAAE,CAAC;QAClC,OAAO,IAAI,mDAAuB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACtD,CAAC;IAED,IAAI,IAAA,yBAAe,EAAC,QAAQ,CAAC,EAAE,CAAC;QAC/B,OAAO,IAAI,6CAAoB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,IAAI,CAAC;AACb,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { ContainerInterface, DynamicModule, HashUtilInterface, InjectionToken, Module, ModuleContainerInterface, ModuleGraphInterface } from "../../interfaces";
2
+ export declare class Container implements ContainerInterface {
3
+ private readonly hashUtils;
4
+ private readonly modulesContainer;
5
+ private _graph;
6
+ private moduleGraphResolver;
7
+ constructor(hashUtils: HashUtilInterface);
8
+ addModule(module: Module | DynamicModule): Promise<ModuleContainerInterface>;
9
+ replaceModule(moduleToReplace: Module, newModule: Module): Promise<ModuleContainerInterface>;
10
+ getModule(module: Module): Promise<ModuleContainerInterface | undefined>;
11
+ get<T>(token: InjectionToken): Promise<T | undefined>;
12
+ run(rootModule: Module): Promise<void>;
13
+ get graph(): ModuleGraphInterface;
14
+ get errors(): import("../../interfaces").GraphError[];
15
+ }
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Container = void 0;
4
+ const module_graph_1 = require("../graph/module-graph");
5
+ const resolver_1 = require("../resolver/resolver");
6
+ const modules_container_1 = require("./modules-container");
7
+ class Container {
8
+ constructor(hashUtils) {
9
+ this.hashUtils = hashUtils;
10
+ this.modulesContainer = new modules_container_1.ModulesContainer(this.hashUtils, this);
11
+ this._graph = null;
12
+ this.moduleGraphResolver = null;
13
+ }
14
+ async addModule(module) {
15
+ return await this.modulesContainer.addModule(module);
16
+ }
17
+ async replaceModule(moduleToReplace, newModule) {
18
+ return await this.modulesContainer.replaceModule(moduleToReplace, newModule);
19
+ }
20
+ async getModule(module) {
21
+ return this.modulesContainer.getModule(module);
22
+ }
23
+ async get(token) {
24
+ return this.moduleGraphResolver?.resolveProvider(token);
25
+ }
26
+ async run(rootModule) {
27
+ const root = await this.modulesContainer.addModule(rootModule);
28
+ this._graph = new module_graph_1.ModuleGraph(root);
29
+ this.moduleGraphResolver = new resolver_1.Resolver(this._graph);
30
+ await this._graph.compile();
31
+ }
32
+ get graph() {
33
+ return this._graph;
34
+ }
35
+ get errors() {
36
+ return this.graph.errors;
37
+ }
38
+ }
39
+ exports.Container = Container;
40
+ //# sourceMappingURL=container.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"container.js","sourceRoot":"","sources":["../../../src/core/modules/container.ts"],"names":[],"mappings":";;;AASA,wDAAoD;AACpD,mDAAgD;AAChD,2DAAuD;AAEvD,MAAa,SAAS;IASrB,YAA6B,SAA4B;QAA5B,cAAS,GAAT,SAAS,CAAmB;QARxC,qBAAgB,GAAG,IAAI,oCAAgB,CACvD,IAAI,CAAC,SAAS,EACd,IAAI,CACJ,CAAC;QAEM,WAAM,GAAgC,IAAI,CAAC;QAC3C,wBAAmB,GAAoB,IAAI,CAAC;IAEQ,CAAC;IAEtD,KAAK,CAAC,SAAS,CACrB,MAA8B;QAE9B,OAAO,MAAM,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACtD,CAAC;IAEM,KAAK,CAAC,aAAa,CACzB,eAAuB,EACvB,SAAiB;QAEjB,OAAO,MAAM,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAC/C,eAAe,EACf,SAAS,CACT,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,SAAS,CACrB,MAAc;QAEd,OAAO,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAChD,CAAC;IAEM,KAAK,CAAC,GAAG,CAAI,KAAqB;QACxC,OAAO,IAAI,CAAC,mBAAmB,EAAE,eAAe,CAAI,KAAK,CAAC,CAAC;IAC5D,CAAC;IAEM,KAAK,CAAC,GAAG,CAAC,UAAkB;QAClC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAE/D,IAAI,CAAC,MAAM,GAAG,IAAI,0BAAW,CAAC,IAAI,CAAC,CAAC;QAEpC,IAAI,CAAC,mBAAmB,GAAG,IAAI,mBAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAErD,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,IAAW,KAAK;QACf,OAAO,IAAI,CAAC,MAA8B,CAAC;IAC5C,CAAC;IAED,IAAW,MAAM;QAChB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IAC1B,CAAC;CACD;AAtDD,8BAsDC"}
@@ -0,0 +1,9 @@
1
+ import "reflect-metadata";
2
+ import type { ContainerBaseInterface, DynamicModule, Module, ModuleContainerFactoryInterface, ModuleContainerInterface, ModuleTokenFactoryInterface } from "../../interfaces";
3
+ export declare class ModuleContainerFactory implements ModuleContainerFactoryInterface {
4
+ private readonly moduleTokenFactory;
5
+ constructor(moduleTokenFactory: ModuleTokenFactoryInterface);
6
+ create(module: Module | DynamicModule, container: ContainerBaseInterface): Promise<ModuleContainerInterface>;
7
+ getModuleToken(module: Module | DynamicModule): Promise<string>;
8
+ getModuleContainerImports(module: ModuleContainerInterface): Promise<ModuleContainerInterface[]>;
9
+ }