@nexus-ioc/graph-analyzer 0.1.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 (98) hide show
  1. package/CHANGELOG.md +112 -0
  2. package/LICENSE +21 -0
  3. package/README.md +742 -0
  4. package/dist/analyzer/circular-dependency-detector.d.ts +94 -0
  5. package/dist/analyzer/circular-dependency-detector.js +203 -0
  6. package/dist/analyzer/circular-dependency-detector.js.map +1 -0
  7. package/dist/analyzer/module-depth-analyzer.d.ts +117 -0
  8. package/dist/analyzer/module-depth-analyzer.js +221 -0
  9. package/dist/analyzer/module-depth-analyzer.js.map +1 -0
  10. package/dist/analyzer/provider-scope-analyzer.d.ts +91 -0
  11. package/dist/analyzer/provider-scope-analyzer.js +137 -0
  12. package/dist/analyzer/provider-scope-analyzer.js.map +1 -0
  13. package/dist/analyzer/unused-provider-detector.d.ts +73 -0
  14. package/dist/analyzer/unused-provider-detector.js +147 -0
  15. package/dist/analyzer/unused-provider-detector.js.map +1 -0
  16. package/dist/cli.d.ts +2 -0
  17. package/dist/cli.js +537 -0
  18. package/dist/cli.js.map +1 -0
  19. package/dist/config/config-loader.d.ts +27 -0
  20. package/dist/config/config-loader.js +205 -0
  21. package/dist/config/config-loader.js.map +1 -0
  22. package/dist/config/config-schema.d.ts +83 -0
  23. package/dist/config/config-schema.js +97 -0
  24. package/dist/config/config-schema.js.map +1 -0
  25. package/dist/index.d.ts +41 -0
  26. package/dist/index.js +50 -0
  27. package/dist/index.js.map +1 -0
  28. package/dist/interfaces/graph-output.interface.d.ts +126 -0
  29. package/dist/interfaces/graph-output.interface.js +3 -0
  30. package/dist/interfaces/graph-output.interface.js.map +1 -0
  31. package/dist/interfaces/providers.interface.d.ts +10 -0
  32. package/dist/interfaces/providers.interface.js +3 -0
  33. package/dist/interfaces/providers.interface.js.map +1 -0
  34. package/dist/parser/dependency-extractor.d.ts +88 -0
  35. package/dist/parser/dependency-extractor.js +334 -0
  36. package/dist/parser/dependency-extractor.js.map +1 -0
  37. package/dist/parser/parse-entry-file.d.ts +15 -0
  38. package/dist/parser/parse-entry-file.js +46 -0
  39. package/dist/parser/parse-entry-file.js.map +1 -0
  40. package/dist/parser/parse-imports.d.ts +15 -0
  41. package/dist/parser/parse-imports.js +65 -0
  42. package/dist/parser/parse-imports.js.map +1 -0
  43. package/dist/parser/parse-ns-module.d.ts +39 -0
  44. package/dist/parser/parse-ns-module.js +122 -0
  45. package/dist/parser/parse-ns-module.js.map +1 -0
  46. package/dist/parser/parse-provider.d.ts +2 -0
  47. package/dist/parser/parse-provider.js +7 -0
  48. package/dist/parser/parse-provider.js.map +1 -0
  49. package/dist/parser/parse-ts-config.d.ts +10 -0
  50. package/dist/parser/parse-ts-config.js +40 -0
  51. package/dist/parser/parse-ts-config.js.map +1 -0
  52. package/dist/parser/parser-rec.d.ts +1 -0
  53. package/dist/parser/parser-rec.js +52 -0
  54. package/dist/parser/parser-rec.js.map +1 -0
  55. package/dist/parser/parser.d.ts +1 -0
  56. package/dist/parser/parser.js +61 -0
  57. package/dist/parser/parser.js.map +1 -0
  58. package/dist/parser/provider/class-parser.d.ts +20 -0
  59. package/dist/parser/provider/class-parser.js +137 -0
  60. package/dist/parser/provider/class-parser.js.map +1 -0
  61. package/dist/parser/provider/providers-parser.d.ts +9 -0
  62. package/dist/parser/provider/providers-parser.js +32 -0
  63. package/dist/parser/provider/providers-parser.js.map +1 -0
  64. package/dist/parser/provider/use-class-parser.d.ts +25 -0
  65. package/dist/parser/provider/use-class-parser.js +161 -0
  66. package/dist/parser/provider/use-class-parser.js.map +1 -0
  67. package/dist/parser/provider/use-factory-parser.d.ts +15 -0
  68. package/dist/parser/provider/use-factory-parser.js +53 -0
  69. package/dist/parser/provider/use-factory-parser.js.map +1 -0
  70. package/dist/parser/provider/use-value-parser.d.ts +13 -0
  71. package/dist/parser/provider/use-value-parser.js +41 -0
  72. package/dist/parser/provider/use-value-parser.js.map +1 -0
  73. package/dist/parser/rules.d.ts +10 -0
  74. package/dist/parser/rules.js +37 -0
  75. package/dist/parser/rules.js.map +1 -0
  76. package/dist/utils/error-formatter.d.ts +27 -0
  77. package/dist/utils/error-formatter.js +177 -0
  78. package/dist/utils/error-formatter.js.map +1 -0
  79. package/dist/utils/validator.d.ts +45 -0
  80. package/dist/utils/validator.js +252 -0
  81. package/dist/utils/validator.js.map +1 -0
  82. package/dist/visualize/generator.d.ts +26 -0
  83. package/dist/visualize/generator.js +75 -0
  84. package/dist/visualize/generator.js.map +1 -0
  85. package/dist/visualize/graph-analyzer.d.ts +126 -0
  86. package/dist/visualize/graph-analyzer.js +199 -0
  87. package/dist/visualize/graph-analyzer.js.map +1 -0
  88. package/dist/visualize/html-generator.d.ts +71 -0
  89. package/dist/visualize/html-generator.js +1312 -0
  90. package/dist/visualize/html-generator.js.map +1 -0
  91. package/dist/visualize/json-formatter.d.ts +106 -0
  92. package/dist/visualize/json-formatter.js +252 -0
  93. package/dist/visualize/json-formatter.js.map +1 -0
  94. package/docs/API_REFERENCE.md +747 -0
  95. package/docs/ARCHITECTURE.md +486 -0
  96. package/docs/CLI_GUIDE.md +576 -0
  97. package/docs/HTML_VISUALIZATION.md +365 -0
  98. package/package.json +85 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"html-generator.js","sourceRoot":"","sources":["../../src/visualize/html-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,106 @@
1
+ import type { GraphOutput } from "../interfaces/graph-output.interface";
2
+ import type { ParseEntryFile } from "../parser/parse-entry-file";
3
+ import type { ParseNsModule } from "../parser/parse-ns-module";
4
+ /**
5
+ * Formats dependency graphs as structured JSON output
6
+ *
7
+ * Traverses the module graph and extracts all metadata about modules, providers,
8
+ * and dependencies into a structured JSON format suitable for analysis or documentation.
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * const formatter = new JsonFormatter(modulesGraph, 'src/main.ts');
13
+ * const output = formatter.format();
14
+ *
15
+ * console.log(`Modules: ${output.modules.length}`);
16
+ * console.log(`Providers: ${output.providers.length}`);
17
+ *
18
+ * // Save to file
19
+ * const jsonString = formatter.formatAsString(2);
20
+ * fs.writeFileSync('graph.json', jsonString);
21
+ * ```
22
+ */
23
+ export declare class JsonFormatter {
24
+ private readonly graph;
25
+ private readonly entryPoint;
26
+ private readonly checkCircular;
27
+ private readonly checkUnused;
28
+ private readonly checkDepth;
29
+ private readonly deepModuleThreshold;
30
+ private readonly checkScope;
31
+ /**
32
+ * Create a new JsonFormatter instance
33
+ *
34
+ * @param graph - Map of module names to parsed modules
35
+ * @param entryPoint - Path to application entry point file
36
+ * @param checkCircular - Whether to perform circular dependency detection
37
+ * @param checkUnused - Whether to perform unused provider detection
38
+ * @param checkDepth - Whether to perform module depth analysis
39
+ * @param deepModuleThreshold - Threshold for identifying deep modules
40
+ * @param checkScope - Whether to perform provider scope analysis
41
+ */
42
+ constructor(graph: Map<string, ParseNsModule | ParseEntryFile>, entryPoint: string, checkCircular?: boolean, checkUnused?: boolean, checkDepth?: boolean, deepModuleThreshold?: number, checkScope?: boolean);
43
+ /**
44
+ * Format the dependency graph as a structured JSON object
45
+ *
46
+ * Traverses all modules starting from the entry point and extracts:
47
+ * - Module information (name, path, imports, exports, providers)
48
+ * - Provider information (token, type, dependencies, scope)
49
+ * - Metadata (entry point, root module, statistics)
50
+ *
51
+ * @returns GraphOutput object with complete graph information
52
+ * @throws Error if entry module is empty or invalid
53
+ *
54
+ * @example
55
+ * ```typescript
56
+ * const output = formatter.format();
57
+ *
58
+ * // Access modules
59
+ * output.modules.forEach(module => {
60
+ * console.log(`Module: ${module.name}`);
61
+ * console.log(` Providers: ${module.providers.join(', ')}`);
62
+ * });
63
+ *
64
+ * // Access providers
65
+ * output.providers.forEach(provider => {
66
+ * console.log(`Provider: ${provider.token} (${provider.type})`);
67
+ * if (provider.dependencies) {
68
+ * console.log(` Dependencies: ${provider.dependencies.length}`);
69
+ * }
70
+ * });
71
+ * ```
72
+ */
73
+ format(): GraphOutput;
74
+ /**
75
+ * Format a module as ModuleInfo
76
+ */
77
+ private formatModule;
78
+ /**
79
+ * Format a provider as ProviderInfo
80
+ */
81
+ private formatProvider;
82
+ /**
83
+ * Format the dependency graph as a JSON string
84
+ *
85
+ * Convenience method that calls format() and stringifies the result.
86
+ *
87
+ * @param indent - Number of spaces for JSON indentation (default: 2)
88
+ * @returns Formatted JSON string
89
+ *
90
+ * @example
91
+ * ```typescript
92
+ * // Pretty-printed with 2 spaces
93
+ * const json = formatter.formatAsString();
94
+ *
95
+ * // Pretty-printed with 4 spaces
96
+ * const json = formatter.formatAsString(4);
97
+ *
98
+ * // Minified (no indentation)
99
+ * const json = formatter.formatAsString(0);
100
+ *
101
+ * // Save to file
102
+ * fs.writeFileSync('graph.json', json);
103
+ * ```
104
+ */
105
+ formatAsString(indent?: number): string;
106
+ }
@@ -0,0 +1,252 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JsonFormatter = void 0;
4
+ const circular_dependency_detector_1 = require("../analyzer/circular-dependency-detector");
5
+ const module_depth_analyzer_1 = require("../analyzer/module-depth-analyzer");
6
+ const provider_scope_analyzer_1 = require("../analyzer/provider-scope-analyzer");
7
+ const unused_provider_detector_1 = require("../analyzer/unused-provider-detector");
8
+ /**
9
+ * Formats dependency graphs as structured JSON output
10
+ *
11
+ * Traverses the module graph and extracts all metadata about modules, providers,
12
+ * and dependencies into a structured JSON format suitable for analysis or documentation.
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * const formatter = new JsonFormatter(modulesGraph, 'src/main.ts');
17
+ * const output = formatter.format();
18
+ *
19
+ * console.log(`Modules: ${output.modules.length}`);
20
+ * console.log(`Providers: ${output.providers.length}`);
21
+ *
22
+ * // Save to file
23
+ * const jsonString = formatter.formatAsString(2);
24
+ * fs.writeFileSync('graph.json', jsonString);
25
+ * ```
26
+ */
27
+ class JsonFormatter {
28
+ /**
29
+ * Create a new JsonFormatter instance
30
+ *
31
+ * @param graph - Map of module names to parsed modules
32
+ * @param entryPoint - Path to application entry point file
33
+ * @param checkCircular - Whether to perform circular dependency detection
34
+ * @param checkUnused - Whether to perform unused provider detection
35
+ * @param checkDepth - Whether to perform module depth analysis
36
+ * @param deepModuleThreshold - Threshold for identifying deep modules
37
+ * @param checkScope - Whether to perform provider scope analysis
38
+ */
39
+ constructor(graph, entryPoint, checkCircular = false, checkUnused = false, checkDepth = false, deepModuleThreshold = 5, checkScope = false) {
40
+ this.graph = graph;
41
+ this.entryPoint = entryPoint;
42
+ this.checkCircular = checkCircular;
43
+ this.checkUnused = checkUnused;
44
+ this.checkDepth = checkDepth;
45
+ this.deepModuleThreshold = deepModuleThreshold;
46
+ this.checkScope = checkScope;
47
+ }
48
+ /**
49
+ * Format the dependency graph as a structured JSON object
50
+ *
51
+ * Traverses all modules starting from the entry point and extracts:
52
+ * - Module information (name, path, imports, exports, providers)
53
+ * - Provider information (token, type, dependencies, scope)
54
+ * - Metadata (entry point, root module, statistics)
55
+ *
56
+ * @returns GraphOutput object with complete graph information
57
+ * @throws Error if entry module is empty or invalid
58
+ *
59
+ * @example
60
+ * ```typescript
61
+ * const output = formatter.format();
62
+ *
63
+ * // Access modules
64
+ * output.modules.forEach(module => {
65
+ * console.log(`Module: ${module.name}`);
66
+ * console.log(` Providers: ${module.providers.join(', ')}`);
67
+ * });
68
+ *
69
+ * // Access providers
70
+ * output.providers.forEach(provider => {
71
+ * console.log(`Provider: ${provider.token} (${provider.type})`);
72
+ * if (provider.dependencies) {
73
+ * console.log(` Dependencies: ${provider.dependencies.length}`);
74
+ * }
75
+ * });
76
+ * ```
77
+ */
78
+ format() {
79
+ const entryModule = this.graph.get("entry");
80
+ if (!entryModule || !entryModule.name) {
81
+ throw new Error("Empty entry module");
82
+ }
83
+ const modules = [];
84
+ const providers = [];
85
+ const visitedModules = new Set();
86
+ const modulesToVisit = [entryModule.name];
87
+ // Traverse all modules
88
+ while (modulesToVisit.length > 0) {
89
+ const moduleName = modulesToVisit.shift();
90
+ if (!moduleName || visitedModules.has(moduleName)) {
91
+ continue;
92
+ }
93
+ visitedModules.add(moduleName);
94
+ const parseNsModule = this.graph.get(moduleName);
95
+ if (!parseNsModule) {
96
+ continue;
97
+ }
98
+ // Add module info
99
+ modules.push(this.formatModule(parseNsModule, moduleName));
100
+ // Add provider info
101
+ for (const provider of parseNsModule.providers) {
102
+ providers.push(this.formatProvider(provider, moduleName));
103
+ }
104
+ // Queue imported modules
105
+ modulesToVisit.push(...parseNsModule.imports);
106
+ }
107
+ // Create metadata
108
+ const metadata = {
109
+ entryPoint: this.entryPoint,
110
+ rootModule: entryModule.name,
111
+ analyzedAt: new Date().toISOString(),
112
+ version: "1.0.0",
113
+ totalModules: modules.length,
114
+ totalProviders: providers.length,
115
+ };
116
+ const output = {
117
+ modules,
118
+ providers,
119
+ metadata,
120
+ };
121
+ // Add circular dependency analysis if enabled
122
+ if (this.checkCircular) {
123
+ const detector = new circular_dependency_detector_1.CircularDependencyDetector(this.graph);
124
+ const analysis = detector.analyze();
125
+ if (analysis.hasCircularDependencies) {
126
+ if (!output.analysis) {
127
+ output.analysis = {};
128
+ }
129
+ output.analysis.circularDependencies = analysis.circularDependencies;
130
+ }
131
+ }
132
+ // Add unused provider analysis if enabled
133
+ if (this.checkUnused) {
134
+ const detector = new unused_provider_detector_1.UnusedProviderDetector(this.graph);
135
+ const analysis = detector.analyze();
136
+ if (analysis.hasUnusedProviders) {
137
+ if (!output.analysis) {
138
+ output.analysis = {};
139
+ }
140
+ output.analysis.unusedProviders = analysis.unusedProviders;
141
+ }
142
+ }
143
+ // Add module depth analysis if enabled
144
+ if (this.checkDepth) {
145
+ const analyzer = new module_depth_analyzer_1.ModuleDepthAnalyzer(this.graph, this.deepModuleThreshold);
146
+ const analysis = analyzer.analyze();
147
+ if (analysis.hasDepthAnalysis) {
148
+ if (!output.analysis) {
149
+ output.analysis = {};
150
+ }
151
+ output.analysis.depthAnalysis = {
152
+ maxDepth: analysis.maxDepth,
153
+ averageDepth: analysis.averageDepth,
154
+ totalModules: analysis.totalModules,
155
+ depthLevels: analysis.depthLevels,
156
+ moduleDetails: analysis.moduleDetails,
157
+ deepModules: analysis.deepModules,
158
+ deepModuleThreshold: analysis.deepModuleThreshold,
159
+ };
160
+ }
161
+ }
162
+ // Add provider scope analysis if enabled
163
+ if (this.checkScope) {
164
+ const analyzer = new provider_scope_analyzer_1.ProviderScopeAnalyzer(this.graph);
165
+ const analysis = analyzer.analyze();
166
+ if (analysis.hasScopeAnalysis) {
167
+ if (!output.analysis) {
168
+ output.analysis = {};
169
+ }
170
+ output.analysis.scopeAnalysis = {
171
+ totalProviders: analysis.totalProviders,
172
+ singletonProviders: analysis.singletonProviders,
173
+ requestProviders: analysis.requestProviders,
174
+ scopeMismatches: analysis.scopeMismatches,
175
+ providerScopes: analysis.providerScopes,
176
+ };
177
+ }
178
+ }
179
+ return output;
180
+ }
181
+ /**
182
+ * Format a module as ModuleInfo
183
+ */
184
+ formatModule(parseNsModule, moduleName) {
185
+ return {
186
+ name: moduleName,
187
+ path: parseNsModule.filePath || "",
188
+ imports: parseNsModule.imports,
189
+ exports: parseNsModule.exports,
190
+ providers: parseNsModule.providers
191
+ .map((p) => p.token)
192
+ .filter((token) => token !== null),
193
+ isGlobal: parseNsModule.isGlobal,
194
+ };
195
+ }
196
+ /**
197
+ * Format a provider as ProviderInfo
198
+ */
199
+ formatProvider(
200
+ // biome-ignore lint/suspicious/noExplicitAny: Provider type is complex
201
+ provider, moduleName) {
202
+ const providerInfo = {
203
+ token: provider.token,
204
+ type: provider.type,
205
+ module: moduleName,
206
+ dependencies: provider.dependencies || [],
207
+ };
208
+ // Add scope if present
209
+ if (provider.scope) {
210
+ providerInfo.scope = provider.scope;
211
+ }
212
+ // Add type-specific fields
213
+ if (provider.type === "UseValue" && provider.value !== undefined) {
214
+ providerInfo.value = String(provider.value);
215
+ }
216
+ if (provider.type === "UseFactory" && provider.inject) {
217
+ providerInfo.factory = provider.inject;
218
+ }
219
+ if (provider.type === "UseClass" && provider.inject) {
220
+ providerInfo.useClass = provider.inject;
221
+ }
222
+ return providerInfo;
223
+ }
224
+ /**
225
+ * Format the dependency graph as a JSON string
226
+ *
227
+ * Convenience method that calls format() and stringifies the result.
228
+ *
229
+ * @param indent - Number of spaces for JSON indentation (default: 2)
230
+ * @returns Formatted JSON string
231
+ *
232
+ * @example
233
+ * ```typescript
234
+ * // Pretty-printed with 2 spaces
235
+ * const json = formatter.formatAsString();
236
+ *
237
+ * // Pretty-printed with 4 spaces
238
+ * const json = formatter.formatAsString(4);
239
+ *
240
+ * // Minified (no indentation)
241
+ * const json = formatter.formatAsString(0);
242
+ *
243
+ * // Save to file
244
+ * fs.writeFileSync('graph.json', json);
245
+ * ```
246
+ */
247
+ formatAsString(indent = 2) {
248
+ return JSON.stringify(this.format(), null, indent);
249
+ }
250
+ }
251
+ exports.JsonFormatter = JsonFormatter;
252
+ //# sourceMappingURL=json-formatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-formatter.js","sourceRoot":"","sources":["../../src/visualize/json-formatter.ts"],"names":[],"mappings":"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"}