@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.
- package/CHANGELOG.md +112 -0
- package/LICENSE +21 -0
- package/README.md +742 -0
- package/dist/analyzer/circular-dependency-detector.d.ts +94 -0
- package/dist/analyzer/circular-dependency-detector.js +203 -0
- package/dist/analyzer/circular-dependency-detector.js.map +1 -0
- package/dist/analyzer/module-depth-analyzer.d.ts +117 -0
- package/dist/analyzer/module-depth-analyzer.js +221 -0
- package/dist/analyzer/module-depth-analyzer.js.map +1 -0
- package/dist/analyzer/provider-scope-analyzer.d.ts +91 -0
- package/dist/analyzer/provider-scope-analyzer.js +137 -0
- package/dist/analyzer/provider-scope-analyzer.js.map +1 -0
- package/dist/analyzer/unused-provider-detector.d.ts +73 -0
- package/dist/analyzer/unused-provider-detector.js +147 -0
- package/dist/analyzer/unused-provider-detector.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +537 -0
- package/dist/cli.js.map +1 -0
- package/dist/config/config-loader.d.ts +27 -0
- package/dist/config/config-loader.js +205 -0
- package/dist/config/config-loader.js.map +1 -0
- package/dist/config/config-schema.d.ts +83 -0
- package/dist/config/config-schema.js +97 -0
- package/dist/config/config-schema.js.map +1 -0
- package/dist/index.d.ts +41 -0
- package/dist/index.js +50 -0
- package/dist/index.js.map +1 -0
- package/dist/interfaces/graph-output.interface.d.ts +126 -0
- package/dist/interfaces/graph-output.interface.js +3 -0
- package/dist/interfaces/graph-output.interface.js.map +1 -0
- package/dist/interfaces/providers.interface.d.ts +10 -0
- package/dist/interfaces/providers.interface.js +3 -0
- package/dist/interfaces/providers.interface.js.map +1 -0
- package/dist/parser/dependency-extractor.d.ts +88 -0
- package/dist/parser/dependency-extractor.js +334 -0
- package/dist/parser/dependency-extractor.js.map +1 -0
- package/dist/parser/parse-entry-file.d.ts +15 -0
- package/dist/parser/parse-entry-file.js +46 -0
- package/dist/parser/parse-entry-file.js.map +1 -0
- package/dist/parser/parse-imports.d.ts +15 -0
- package/dist/parser/parse-imports.js +65 -0
- package/dist/parser/parse-imports.js.map +1 -0
- package/dist/parser/parse-ns-module.d.ts +39 -0
- package/dist/parser/parse-ns-module.js +122 -0
- package/dist/parser/parse-ns-module.js.map +1 -0
- package/dist/parser/parse-provider.d.ts +2 -0
- package/dist/parser/parse-provider.js +7 -0
- package/dist/parser/parse-provider.js.map +1 -0
- package/dist/parser/parse-ts-config.d.ts +10 -0
- package/dist/parser/parse-ts-config.js +40 -0
- package/dist/parser/parse-ts-config.js.map +1 -0
- package/dist/parser/parser-rec.d.ts +1 -0
- package/dist/parser/parser-rec.js +52 -0
- package/dist/parser/parser-rec.js.map +1 -0
- package/dist/parser/parser.d.ts +1 -0
- package/dist/parser/parser.js +61 -0
- package/dist/parser/parser.js.map +1 -0
- package/dist/parser/provider/class-parser.d.ts +20 -0
- package/dist/parser/provider/class-parser.js +137 -0
- package/dist/parser/provider/class-parser.js.map +1 -0
- package/dist/parser/provider/providers-parser.d.ts +9 -0
- package/dist/parser/provider/providers-parser.js +32 -0
- package/dist/parser/provider/providers-parser.js.map +1 -0
- package/dist/parser/provider/use-class-parser.d.ts +25 -0
- package/dist/parser/provider/use-class-parser.js +161 -0
- package/dist/parser/provider/use-class-parser.js.map +1 -0
- package/dist/parser/provider/use-factory-parser.d.ts +15 -0
- package/dist/parser/provider/use-factory-parser.js +53 -0
- package/dist/parser/provider/use-factory-parser.js.map +1 -0
- package/dist/parser/provider/use-value-parser.d.ts +13 -0
- package/dist/parser/provider/use-value-parser.js +41 -0
- package/dist/parser/provider/use-value-parser.js.map +1 -0
- package/dist/parser/rules.d.ts +10 -0
- package/dist/parser/rules.js +37 -0
- package/dist/parser/rules.js.map +1 -0
- package/dist/utils/error-formatter.d.ts +27 -0
- package/dist/utils/error-formatter.js +177 -0
- package/dist/utils/error-formatter.js.map +1 -0
- package/dist/utils/validator.d.ts +45 -0
- package/dist/utils/validator.js +252 -0
- package/dist/utils/validator.js.map +1 -0
- package/dist/visualize/generator.d.ts +26 -0
- package/dist/visualize/generator.js +75 -0
- package/dist/visualize/generator.js.map +1 -0
- package/dist/visualize/graph-analyzer.d.ts +126 -0
- package/dist/visualize/graph-analyzer.js +199 -0
- package/dist/visualize/graph-analyzer.js.map +1 -0
- package/dist/visualize/html-generator.d.ts +71 -0
- package/dist/visualize/html-generator.js +1312 -0
- package/dist/visualize/html-generator.js.map +1 -0
- package/dist/visualize/json-formatter.d.ts +106 -0
- package/dist/visualize/json-formatter.js +252 -0
- package/dist/visualize/json-formatter.js.map +1 -0
- package/docs/API_REFERENCE.md +747 -0
- package/docs/ARCHITECTURE.md +486 -0
- package/docs/CLI_GUIDE.md +576 -0
- package/docs/HTML_VISUALIZATION.md +365 -0
- 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":";;;AAAA,2FAAsF;AACtF,6EAAwE;AACxE,iFAA4E;AAC5E,mFAA8E;AAU9E;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAa,aAAa;IACzB;;;;;;;;;;OAUG;IACH,YACkB,KAAkD,EAClD,UAAkB,EAClB,gBAAgB,KAAK,EACrB,cAAc,KAAK,EACnB,aAAa,KAAK,EAClB,sBAAsB,CAAC,EACvB,aAAa,KAAK;QANlB,UAAK,GAAL,KAAK,CAA6C;QAClD,eAAU,GAAV,UAAU,CAAQ;QAClB,kBAAa,GAAb,aAAa,CAAQ;QACrB,gBAAW,GAAX,WAAW,CAAQ;QACnB,eAAU,GAAV,UAAU,CAAQ;QAClB,wBAAmB,GAAnB,mBAAmB,CAAI;QACvB,eAAU,GAAV,UAAU,CAAQ;IACjC,CAAC;IAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,MAAM;QACL,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAmB,CAAC;QAE9D,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACvC,CAAC;QAED,MAAM,OAAO,GAAiB,EAAE,CAAC;QACjC,MAAM,SAAS,GAAmB,EAAE,CAAC;QACrC,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;QACzC,MAAM,cAAc,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAE1C,uBAAuB;QACvB,OAAO,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,EAAE,CAAC;YAC1C,IAAI,CAAC,UAAU,IAAI,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;gBACnD,SAAS;YACV,CAAC;YAED,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC/B,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAkB,CAAC;YAElE,IAAI,CAAC,aAAa,EAAE,CAAC;gBACpB,SAAS;YACV,CAAC;YAED,kBAAkB;YAClB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC,CAAC;YAE3D,oBAAoB;YACpB,KAAK,MAAM,QAAQ,IAAI,aAAa,CAAC,SAAS,EAAE,CAAC;gBAChD,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;YAC3D,CAAC;YAED,yBAAyB;YACzB,cAAc,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;QAC/C,CAAC;QAED,kBAAkB;QAClB,MAAM,QAAQ,GAAkB;YAC/B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,UAAU,EAAE,WAAW,CAAC,IAAI;YAC5B,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACpC,OAAO,EAAE,OAAO;YAChB,YAAY,EAAE,OAAO,CAAC,MAAM;YAC5B,cAAc,EAAE,SAAS,CAAC,MAAM;SAChC,CAAC;QAEF,MAAM,MAAM,GAAgB;YAC3B,OAAO;YACP,SAAS;YACT,QAAQ;SACR,CAAC;QAEF,8CAA8C;QAC9C,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,MAAM,QAAQ,GAAG,IAAI,yDAA0B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5D,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;YAEpC,IAAI,QAAQ,CAAC,uBAAuB,EAAE,CAAC;gBACtC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;oBACtB,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC;gBACtB,CAAC;gBACD,MAAM,CAAC,QAAQ,CAAC,oBAAoB,GAAG,QAAQ,CAAC,oBAAoB,CAAC;YACtE,CAAC;QACF,CAAC;QAED,0CAA0C;QAC1C,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,MAAM,QAAQ,GAAG,IAAI,iDAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACxD,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;YAEpC,IAAI,QAAQ,CAAC,kBAAkB,EAAE,CAAC;gBACjC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;oBACtB,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC;gBACtB,CAAC;gBACD,MAAM,CAAC,QAAQ,CAAC,eAAe,GAAG,QAAQ,CAAC,eAAe,CAAC;YAC5D,CAAC;QACF,CAAC;QAED,uCAAuC;QACvC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,MAAM,QAAQ,GAAG,IAAI,2CAAmB,CACvC,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,mBAAmB,CACxB,CAAC;YACF,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;YAEpC,IAAI,QAAQ,CAAC,gBAAgB,EAAE,CAAC;gBAC/B,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;oBACtB,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC;gBACtB,CAAC;gBACD,MAAM,CAAC,QAAQ,CAAC,aAAa,GAAG;oBAC/B,QAAQ,EAAE,QAAQ,CAAC,QAAQ;oBAC3B,YAAY,EAAE,QAAQ,CAAC,YAAY;oBACnC,YAAY,EAAE,QAAQ,CAAC,YAAY;oBACnC,WAAW,EAAE,QAAQ,CAAC,WAAW;oBACjC,aAAa,EAAE,QAAQ,CAAC,aAAa;oBACrC,WAAW,EAAE,QAAQ,CAAC,WAAW;oBACjC,mBAAmB,EAAE,QAAQ,CAAC,mBAAmB;iBACjD,CAAC;YACH,CAAC;QACF,CAAC;QAED,yCAAyC;QACzC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,MAAM,QAAQ,GAAG,IAAI,+CAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACvD,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;YAEpC,IAAI,QAAQ,CAAC,gBAAgB,EAAE,CAAC;gBAC/B,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;oBACtB,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC;gBACtB,CAAC;gBACD,MAAM,CAAC,QAAQ,CAAC,aAAa,GAAG;oBAC/B,cAAc,EAAE,QAAQ,CAAC,cAAc;oBACvC,kBAAkB,EAAE,QAAQ,CAAC,kBAAkB;oBAC/C,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB;oBAC3C,eAAe,EAAE,QAAQ,CAAC,eAAe;oBACzC,cAAc,EAAE,QAAQ,CAAC,cAAc;iBACvC,CAAC;YACH,CAAC;QACF,CAAC;QAED,OAAO,MAAM,CAAC;IACf,CAAC;IAED;;OAEG;IACK,YAAY,CACnB,aAA4B,EAC5B,UAAkB;QAElB,OAAO;YACN,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,aAAa,CAAC,QAAQ,IAAI,EAAE;YAClC,OAAO,EAAE,aAAa,CAAC,OAAO;YAC9B,OAAO,EAAE,aAAa,CAAC,OAAO;YAC9B,SAAS,EAAE,aAAa,CAAC,SAAS;iBAChC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;iBACnB,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC;YACpD,QAAQ,EAAE,aAAa,CAAC,QAAQ;SAChC,CAAC;IACH,CAAC;IAED;;OAEG;IACK,cAAc;IACrB,uEAAuE;IACvE,QAAa,EACb,UAAkB;QAElB,MAAM,YAAY,GAAiB;YAClC,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,MAAM,EAAE,UAAU;YAClB,YAAY,EAAE,QAAQ,CAAC,YAAY,IAAI,EAAE;SACzC,CAAC;QAEF,uBAAuB;QACvB,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YACpB,YAAY,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QACrC,CAAC;QAED,2BAA2B;QAC3B,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAClE,YAAY,CAAC,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC7C,CAAC;QAED,IAAI,QAAQ,CAAC,IAAI,KAAK,YAAY,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;YACvD,YAAY,CAAC,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC;QACxC,CAAC;QAED,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;YACrD,YAAY,CAAC,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC;QACzC,CAAC;QAED,OAAO,YAAY,CAAC;IACrB,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,cAAc,CAAC,MAAM,GAAG,CAAC;QACxB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACpD,CAAC;CACD;AAnQD,sCAmQC"}
|