nest-graph-inspector 0.2.2 → 0.2.3

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 (32) hide show
  1. package/package.json +1 -1
  2. package/src/drivers/file-output.driver.d.ts +31 -0
  3. package/src/drivers/file-output.driver.js +214 -0
  4. package/src/drivers/file-output.driver.js.map +1 -0
  5. package/src/drivers/http-output.driver.d.ts +13 -0
  6. package/src/drivers/http-output.driver.js +35 -0
  7. package/src/drivers/http-output.driver.js.map +1 -0
  8. package/src/drivers/json-output.driver.d.ts +10 -0
  9. package/src/drivers/json-output.driver.js +22 -0
  10. package/src/drivers/json-output.driver.js.map +1 -0
  11. package/src/nest-graph-inspector.module.js +10 -3
  12. package/src/nest-graph-inspector.module.js.map +1 -1
  13. package/src/{nest-graph-inspector.service.d.ts → nest-graph-inspector.setup.d.ts} +9 -42
  14. package/src/{nest-graph-inspector.service.js → nest-graph-inspector.setup.js} +30 -210
  15. package/src/nest-graph-inspector.setup.js.map +1 -0
  16. package/src/nest-graph-inspector.type.d.ts +11 -7
  17. package/src/ports/output.adapter.d.ts +4 -0
  18. package/src/ports/output.adapter.js +3 -0
  19. package/src/ports/output.adapter.js.map +1 -0
  20. package/src/types/module-controller.type.d.ts +4 -0
  21. package/src/types/module-controller.type.js +3 -0
  22. package/src/types/module-controller.type.js.map +1 -0
  23. package/src/types/module-map.type.d.ts +6 -0
  24. package/src/types/module-map.type.js +3 -0
  25. package/src/types/module-map.type.js.map +1 -0
  26. package/src/types/module-provider.type.d.ts +4 -0
  27. package/src/types/module-provider.type.js +3 -0
  28. package/src/types/module-provider.type.js.map +1 -0
  29. package/src/types/module.type.d.ts +8 -0
  30. package/src/types/module.type.js +3 -0
  31. package/src/types/module.type.js.map +1 -0
  32. package/src/nest-graph-inspector.service.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nest-graph-inspector",
3
- "version": "0.2.2",
3
+ "version": "0.2.3",
4
4
  "description": "NestJS module graph inspector for discovery and dependency analysis",
5
5
  "license": "MIT",
6
6
  "main": "src/index.js",
@@ -0,0 +1,31 @@
1
+ import { ModuleMap } from '../types/module-map.type';
2
+ import { OutputAdapter } from '../ports/output.adapter';
3
+ import { NestGraphInspectorOutput } from '../nest-graph-inspector.type';
4
+ type FileOutputConfig = Extract<NestGraphInspectorOutput, {
5
+ type: 'markdown';
6
+ }>;
7
+ export declare class FileOutputDriver implements OutputAdapter<FileOutputConfig> {
8
+ private readonly nestCoreModuleName;
9
+ execute(moduleMap: ModuleMap, config: FileOutputConfig): Promise<void>;
10
+ buildMarkdownText(moduleMap: ModuleMap): string;
11
+ private appendMermaidModuleGroups;
12
+ private appendMermaidModuleRelations;
13
+ private appendMermaidImportRelations;
14
+ private appendMermaidProviderRelations;
15
+ private appendMermaidControllerRelations;
16
+ private appendDependencyRelations;
17
+ private appendLegend;
18
+ private appendModuleSections;
19
+ private appendStringSection;
20
+ private appendProviderSection;
21
+ private appendControllerSection;
22
+ private appendNamedDependencyItem;
23
+ private findDependencyTarget;
24
+ private toMermaidNodeId;
25
+ private escapeMermaidLabel;
26
+ private moduleGroupId;
27
+ private providerNodeId;
28
+ private controllerNodeId;
29
+ private dependencyNodeId;
30
+ }
31
+ export {};
@@ -0,0 +1,214 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.FileOutputDriver = void 0;
10
+ const promises_1 = require("node:fs/promises");
11
+ const common_1 = require("@nestjs/common");
12
+ const node_path_1 = require("node:path");
13
+ let FileOutputDriver = class FileOutputDriver {
14
+ nestCoreModuleName = 'NestJSCoreModule';
15
+ async execute(moduleMap, config) {
16
+ const filePath = (0, node_path_1.join)(process.cwd(), config.path);
17
+ const markdownText = this.buildMarkdownText(moduleMap);
18
+ await (0, promises_1.writeFile)(filePath, markdownText, 'utf8');
19
+ }
20
+ buildMarkdownText(moduleMap) {
21
+ const lines = [];
22
+ const moduleEntries = Object.entries(moduleMap.modules);
23
+ lines.push('# NestJS Dependency Graph');
24
+ lines.push('');
25
+ lines.push(`Root Module: \`${moduleMap.root}\``);
26
+ lines.push(`Version: \`${moduleMap.version}\``);
27
+ lines.push('');
28
+ lines.push('```mermaid');
29
+ lines.push('graph TD');
30
+ lines.push('');
31
+ this.appendMermaidModuleGroups(lines, moduleEntries);
32
+ this.appendMermaidModuleRelations(lines, moduleEntries, moduleMap);
33
+ lines.push('```');
34
+ lines.push('');
35
+ this.appendLegend(lines);
36
+ this.appendModuleSections(lines, moduleEntries);
37
+ return lines.join('\n');
38
+ }
39
+ appendMermaidModuleGroups(lines, moduleEntries) {
40
+ for (const [moduleName, moduleData] of moduleEntries) {
41
+ lines.push(` subgraph ${this.moduleGroupId(moduleName)}["${this.escapeMermaidLabel(moduleName)}"]`);
42
+ for (const provider of moduleData.providers) {
43
+ lines.push(` ${this.providerNodeId(moduleName, provider.name)}["${this.escapeMermaidLabel(provider.name)}"]`);
44
+ }
45
+ for (const controller of moduleData.controllers) {
46
+ lines.push(` ${this.controllerNodeId(moduleName, controller.name)}["${this.escapeMermaidLabel(controller.name)}"]`);
47
+ }
48
+ lines.push(' end');
49
+ }
50
+ }
51
+ appendMermaidModuleRelations(lines, moduleEntries, moduleMap) {
52
+ for (const [moduleName, moduleData] of moduleEntries) {
53
+ this.appendMermaidImportRelations(lines, moduleName, moduleData, moduleMap);
54
+ this.appendMermaidProviderRelations(lines, moduleName, moduleData, moduleMap);
55
+ this.appendMermaidControllerRelations(lines, moduleName, moduleData, moduleMap);
56
+ }
57
+ }
58
+ appendMermaidImportRelations(lines, moduleName, moduleData, moduleMap) {
59
+ const moduleGroupId = this.moduleGroupId(moduleName);
60
+ if (moduleName === this.nestCoreModuleName) {
61
+ return;
62
+ }
63
+ for (const importedModuleName of moduleData.imports) {
64
+ if (!moduleMap.modules[importedModuleName]) {
65
+ continue;
66
+ }
67
+ lines.push(` ${this.moduleGroupId(importedModuleName)} --> ${moduleGroupId}`);
68
+ }
69
+ }
70
+ appendMermaidProviderRelations(lines, moduleName, moduleData, moduleMap) {
71
+ for (const provider of moduleData.providers) {
72
+ const providerNodeId = this.providerNodeId(moduleName, provider.name);
73
+ this.appendDependencyRelations(lines, providerNodeId, moduleName, provider.name, provider.dependencies, moduleMap);
74
+ }
75
+ }
76
+ appendMermaidControllerRelations(lines, moduleName, moduleData, moduleMap) {
77
+ for (const controller of moduleData.controllers) {
78
+ const controllerNodeId = this.controllerNodeId(moduleName, controller.name);
79
+ this.appendDependencyRelations(lines, controllerNodeId, moduleName, controller.name, controller.dependencies, moduleMap);
80
+ }
81
+ }
82
+ appendDependencyRelations(lines, ownerNodeId, moduleName, ownerName, dependencies, moduleMap) {
83
+ for (const dependencyName of dependencies) {
84
+ const dependencyTarget = this.findDependencyTarget(dependencyName, moduleName, moduleMap);
85
+ if (dependencyTarget) {
86
+ lines.push(` ${this.providerNodeId(dependencyTarget.moduleName, dependencyTarget.providerName)} --> ${ownerNodeId}`);
87
+ continue;
88
+ }
89
+ const dependencyNodeId = this.dependencyNodeId(moduleName, ownerName, dependencyName);
90
+ lines.push(` ${dependencyNodeId}["${this.escapeMermaidLabel(dependencyName)}"]`);
91
+ lines.push(` ${dependencyNodeId} --> ${ownerNodeId}`);
92
+ }
93
+ }
94
+ appendLegend(lines) {
95
+ lines.push('## Legend');
96
+ lines.push('');
97
+ lines.push('- Each module is rendered as a Mermaid group');
98
+ lines.push('- Inside each module group: providers and controllers owned by that module');
99
+ lines.push('- Arrows between groups: imported module points to importing module');
100
+ lines.push('- Arrows point from dependency/owned node to the dependent/owner node');
101
+ lines.push('- Providers and controllers are grouped inside their owning module without extra ownership arrows');
102
+ lines.push('- Internal and external runtime dependencies point to the provider/controller that uses them');
103
+ lines.push('- Standalone dependency nodes are only used when a dependency cannot be resolved to a provider node');
104
+ lines.push('');
105
+ }
106
+ appendModuleSections(lines, moduleEntries) {
107
+ for (const [moduleName, moduleData] of moduleEntries) {
108
+ lines.push(`## ${moduleName}`);
109
+ lines.push('');
110
+ this.appendStringSection(lines, 'Imports', moduleData.imports);
111
+ this.appendStringSection(lines, 'Exports', moduleData.exports);
112
+ this.appendProviderSection(lines, 'Providers', moduleData.providers);
113
+ this.appendControllerSection(lines, 'Controllers', moduleData.controllers);
114
+ }
115
+ }
116
+ appendStringSection(lines, title, values) {
117
+ lines.push(`### ${title}`);
118
+ if (values.length === 0) {
119
+ lines.push('- None');
120
+ lines.push('');
121
+ return;
122
+ }
123
+ for (const value of values) {
124
+ lines.push(`- ${value}`);
125
+ }
126
+ lines.push('');
127
+ }
128
+ appendProviderSection(lines, title, providers) {
129
+ lines.push(`### ${title}`);
130
+ if (providers.length === 0) {
131
+ lines.push('- None');
132
+ lines.push('');
133
+ return;
134
+ }
135
+ for (const provider of providers) {
136
+ this.appendNamedDependencyItem(lines, provider.name, provider.dependencies);
137
+ }
138
+ lines.push('');
139
+ }
140
+ appendControllerSection(lines, title, controllers) {
141
+ lines.push(`### ${title}`);
142
+ if (controllers.length === 0) {
143
+ lines.push('- None');
144
+ lines.push('');
145
+ return;
146
+ }
147
+ for (const controller of controllers) {
148
+ this.appendNamedDependencyItem(lines, controller.name, controller.dependencies);
149
+ }
150
+ lines.push('');
151
+ }
152
+ appendNamedDependencyItem(lines, name, dependencies) {
153
+ lines.push(`- ${name}`);
154
+ for (const dependencyName of dependencies) {
155
+ lines.push(` - depends on: ${dependencyName}`);
156
+ }
157
+ }
158
+ findDependencyTarget(dependencyName, currentModuleName, moduleMap) {
159
+ const currentModule = moduleMap.modules[currentModuleName];
160
+ if (currentModule) {
161
+ const hasInternalProvider = currentModule.providers.some((provider) => provider.name === dependencyName);
162
+ if (hasInternalProvider) {
163
+ return {
164
+ moduleName: currentModuleName,
165
+ providerName: dependencyName,
166
+ };
167
+ }
168
+ }
169
+ const separatorIndex = dependencyName.indexOf(':');
170
+ if (separatorIndex === -1) {
171
+ return null;
172
+ }
173
+ const moduleName = dependencyName.slice(0, separatorIndex);
174
+ const providerName = dependencyName.slice(separatorIndex + 1);
175
+ if (!moduleName || !providerName) {
176
+ return null;
177
+ }
178
+ const moduleData = moduleMap.modules[moduleName];
179
+ if (!moduleData) {
180
+ return null;
181
+ }
182
+ const hasProvider = moduleData.providers.some((provider) => provider.name === providerName);
183
+ if (!hasProvider) {
184
+ return null;
185
+ }
186
+ return {
187
+ moduleName,
188
+ providerName,
189
+ };
190
+ }
191
+ toMermaidNodeId(value) {
192
+ return value.replace(/[^a-zA-Z0-9_]/g, '_');
193
+ }
194
+ escapeMermaidLabel(value) {
195
+ return value.replace(/\\/g, '\\\\').replace(/"/g, '\\"');
196
+ }
197
+ moduleGroupId(moduleName) {
198
+ return this.toMermaidNodeId(`module-group:${moduleName}`);
199
+ }
200
+ providerNodeId(moduleName, providerName) {
201
+ return this.toMermaidNodeId(`provider:${moduleName}:${providerName}`);
202
+ }
203
+ controllerNodeId(moduleName, controllerName) {
204
+ return this.toMermaidNodeId(`controller:${moduleName}:${controllerName}`);
205
+ }
206
+ dependencyNodeId(moduleName, ownerName, dependencyName) {
207
+ return this.toMermaidNodeId(`dependency:${moduleName}:${ownerName}:${dependencyName}`);
208
+ }
209
+ };
210
+ exports.FileOutputDriver = FileOutputDriver;
211
+ exports.FileOutputDriver = FileOutputDriver = __decorate([
212
+ (0, common_1.Injectable)()
213
+ ], FileOutputDriver);
214
+ //# sourceMappingURL=file-output.driver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-output.driver.js","sourceRoot":"","sources":["../../../../../libs/nest-graph-inspector/src/drivers/file-output.driver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { HttpAdapterHost } from '@nestjs/core';
2
+ import { OutputAdapter } from '../ports/output.adapter';
3
+ import { ModuleMap } from '../types/module-map.type';
4
+ import { NestGraphInspectorOutput } from '../nest-graph-inspector.type';
5
+ type HttpOutputConfig = Extract<NestGraphInspectorOutput, {
6
+ type: 'http';
7
+ }>;
8
+ export declare class HttpOutputDriver implements OutputAdapter<HttpOutputConfig> {
9
+ private readonly adapterHost;
10
+ constructor(adapterHost: HttpAdapterHost);
11
+ execute(moduleMap: ModuleMap, config: HttpOutputConfig): Promise<void>;
12
+ }
13
+ export {};
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.HttpOutputDriver = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const core_1 = require("@nestjs/core");
15
+ let HttpOutputDriver = class HttpOutputDriver {
16
+ adapterHost;
17
+ constructor(adapterHost) {
18
+ this.adapterHost = adapterHost;
19
+ }
20
+ execute(moduleMap, config) {
21
+ config.path = config.path || '/__nest-graph-inspector';
22
+ const httpAdapter = this.adapterHost.httpAdapter;
23
+ const path = config.path.startsWith('/') ? config.path : `/${config.path}`;
24
+ httpAdapter.get(path, (_req, res) => {
25
+ httpAdapter.reply(res, moduleMap, 200);
26
+ });
27
+ return Promise.resolve();
28
+ }
29
+ };
30
+ exports.HttpOutputDriver = HttpOutputDriver;
31
+ exports.HttpOutputDriver = HttpOutputDriver = __decorate([
32
+ (0, common_1.Injectable)(),
33
+ __metadata("design:paramtypes", [core_1.HttpAdapterHost])
34
+ ], HttpOutputDriver);
35
+ //# sourceMappingURL=http-output.driver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-output.driver.js","sourceRoot":"","sources":["../../../../../libs/nest-graph-inspector/src/drivers/http-output.driver.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,uCAA+C;AAQxC,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IACE;IAA7B,YAA6B,WAA4B;QAA5B,gBAAW,GAAX,WAAW,CAAiB;IAAI,CAAC;IAE9D,OAAO,CAAC,SAAoB,EAAE,MAAwB;QACpD,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,yBAAyB,CAAC;QAEvD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC;QACjD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAE3E,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;YAClC,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;CACF,CAAA;AAfY,4CAAgB;2BAAhB,gBAAgB;IAD5B,IAAA,mBAAU,GAAE;qCAE+B,sBAAe;GAD9C,gBAAgB,CAe5B"}
@@ -0,0 +1,10 @@
1
+ import { ModuleMap } from '../types/module-map.type';
2
+ import { OutputAdapter } from '../ports/output.adapter';
3
+ import { NestGraphInspectorOutput } from '../nest-graph-inspector.type';
4
+ type JsonOutputConfig = Extract<NestGraphInspectorOutput, {
5
+ type: 'json';
6
+ }>;
7
+ export declare class JsonOutputDriver implements OutputAdapter<JsonOutputConfig> {
8
+ execute(moduleMap: ModuleMap, config: JsonOutputConfig): Promise<void>;
9
+ }
10
+ export {};
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.JsonOutputDriver = void 0;
10
+ const promises_1 = require("node:fs/promises");
11
+ const common_1 = require("@nestjs/common");
12
+ let JsonOutputDriver = class JsonOutputDriver {
13
+ async execute(moduleMap, config) {
14
+ const json = JSON.stringify(moduleMap, null, 2);
15
+ await (0, promises_1.writeFile)(config.path, json);
16
+ }
17
+ };
18
+ exports.JsonOutputDriver = JsonOutputDriver;
19
+ exports.JsonOutputDriver = JsonOutputDriver = __decorate([
20
+ (0, common_1.Injectable)()
21
+ ], JsonOutputDriver);
22
+ //# sourceMappingURL=json-output.driver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-output.driver.js","sourceRoot":"","sources":["../../../../../libs/nest-graph-inspector/src/drivers/json-output.driver.ts"],"names":[],"mappings":";;;;;;;;;AAAA,+CAA6C;AAC7C,2CAA4C;AAQrC,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAC3B,KAAK,CAAC,OAAO,CAAC,SAAoB,EAAE,MAAwB;QAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAChD,MAAM,IAAA,oBAAS,EAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC;CACF,CAAA;AALY,4CAAgB;2BAAhB,gBAAgB;IAD5B,IAAA,mBAAU,GAAE;GACA,gBAAgB,CAK5B"}
@@ -9,14 +9,21 @@ Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.NestGraphInspectorModule = void 0;
10
10
  const common_1 = require("@nestjs/common");
11
11
  const nest_graph_inspector_config_1 = require("./nest-graph-inspector.config");
12
- const nest_graph_inspector_service_1 = require("./nest-graph-inspector.service");
12
+ const nest_graph_inspector_setup_1 = require("./nest-graph-inspector.setup");
13
+ const json_output_driver_1 = require("./drivers/json-output.driver");
14
+ const file_output_driver_1 = require("./drivers/file-output.driver");
15
+ const http_output_driver_1 = require("./drivers/http-output.driver");
13
16
  let NestGraphInspectorModule = class NestGraphInspectorModule extends nest_graph_inspector_config_1.ConfigurableModuleClass {
14
17
  };
15
18
  exports.NestGraphInspectorModule = NestGraphInspectorModule;
16
19
  exports.NestGraphInspectorModule = NestGraphInspectorModule = __decorate([
17
20
  (0, common_1.Module)({
18
- providers: [nest_graph_inspector_service_1.NestGraphInspectorService],
19
- exports: [nest_graph_inspector_service_1.NestGraphInspectorService],
21
+ providers: [
22
+ nest_graph_inspector_setup_1.NestGraphInspectorSetup,
23
+ json_output_driver_1.JsonOutputDriver,
24
+ file_output_driver_1.FileOutputDriver,
25
+ http_output_driver_1.HttpOutputDriver,
26
+ ],
20
27
  })
21
28
  ], NestGraphInspectorModule);
22
29
  //# sourceMappingURL=nest-graph-inspector.module.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"nest-graph-inspector.module.js","sourceRoot":"","sources":["../../../../libs/nest-graph-inspector/src/nest-graph-inspector.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,+EAAwE;AACxE,iFAA2E;AAMpE,IAAM,wBAAwB,GAA9B,MAAM,wBAAyB,SAAQ,qDAAuB;CAAG,CAAA;AAA3D,4DAAwB;mCAAxB,wBAAwB;IAJpC,IAAA,eAAM,EAAC;QACN,SAAS,EAAE,CAAC,wDAAyB,CAAC;QACtC,OAAO,EAAE,CAAC,wDAAyB,CAAC;KACrC,CAAC;GACW,wBAAwB,CAAmC"}
1
+ {"version":3,"file":"nest-graph-inspector.module.js","sourceRoot":"","sources":["../../../../libs/nest-graph-inspector/src/nest-graph-inspector.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,+EAAwE;AACxE,6EAAuE;AACvE,qEAAgE;AAChE,qEAAgE;AAChE,qEAAgE;AAUzD,IAAM,wBAAwB,GAA9B,MAAM,wBAAyB,SAAQ,qDAAuB;CAAI,CAAA;AAA5D,4DAAwB;mCAAxB,wBAAwB;IARpC,IAAA,eAAM,EAAC;QACN,SAAS,EAAE;YACT,oDAAuB;YACvB,qCAAgB;YAChB,qCAAgB;YAChB,qCAAgB;SACjB;KACF,CAAC;GACW,wBAAwB,CAAoC"}
@@ -2,28 +2,17 @@ import 'reflect-metadata';
2
2
  import { OnModuleInit, Type } from '@nestjs/common';
3
3
  import { ModulesContainer } from '@nestjs/core';
4
4
  import type { NestGraphInspectorModuleOptions } from './nest-graph-inspector.type';
5
- type ModuleController = {
6
- name: string;
7
- dependencies: string[];
8
- };
9
- type ModuleProvider = {
10
- name: string;
11
- dependencies: string[];
12
- };
13
- type Modules = {
14
- providers: ModuleProvider[];
15
- controllers: ModuleController[];
16
- imports: string[];
17
- exports: string[];
18
- };
19
- type ModuleMap = {
20
- root: string;
21
- modules: Record<string, Modules>;
22
- };
23
- export declare class NestGraphInspectorService implements OnModuleInit {
5
+ import { ModuleMap } from './types/module-map.type';
6
+ import { HttpOutputDriver } from './drivers/http-output.driver';
7
+ import { FileOutputDriver } from './drivers/file-output.driver';
8
+ import { JsonOutputDriver } from './drivers/json-output.driver';
9
+ export declare class NestGraphInspectorSetup implements OnModuleInit {
24
10
  private readonly options;
25
11
  private readonly modulesContainer;
26
- constructor(options: NestGraphInspectorModuleOptions, modulesContainer: ModulesContainer);
12
+ private readonly httpOutputAdapter;
13
+ private readonly fileOutputAdapter;
14
+ private readonly jsonOutputAdapter;
15
+ constructor(options: NestGraphInspectorModuleOptions, modulesContainer: ModulesContainer, httpOutputAdapter: HttpOutputDriver, fileOutputAdapter: FileOutputDriver, jsonOutputAdapter: JsonOutputDriver);
27
16
  private readonly ignoreProvider;
28
17
  private readonly ignoreImport;
29
18
  private readonly nestCoreModuleName;
@@ -33,22 +22,6 @@ export declare class NestGraphInspectorService implements OnModuleInit {
33
22
  private buildNestCoreModule;
34
23
  private findUsedNestCoreProviders;
35
24
  private extractNestCoreProviderName;
36
- buildMarkdownText(moduleMap: ModuleMap): string;
37
- private appendMermaidModuleGroups;
38
- private appendMermaidModuleRelations;
39
- private appendMermaidImportRelations;
40
- private appendMermaidProviderRelations;
41
- private appendMermaidControllerRelations;
42
- private appendDependencyRelations;
43
- private appendLegend;
44
- private appendModuleSections;
45
- private appendStringSection;
46
- private appendProviderSection;
47
- private appendControllerSection;
48
- private appendNamedDependencyItem;
49
- private findDependencyTarget;
50
- private toMermaidNodeId;
51
- private escapeMermaidLabel;
52
25
  private collectReachableModules;
53
26
  private extractImports;
54
27
  private extractExports;
@@ -68,10 +41,4 @@ export declare class NestGraphInspectorService implements OnModuleInit {
68
41
  private moduleId;
69
42
  private wrapperName;
70
43
  private tokenName;
71
- private moduleGroupId;
72
- private moduleNodeId;
73
- private providerNodeId;
74
- private controllerNodeId;
75
- private dependencyNodeId;
76
44
  }
77
- export {};
@@ -12,20 +12,27 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
12
  return function (target, key) { decorator(target, key, paramIndex); }
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.NestGraphInspectorService = void 0;
15
+ exports.NestGraphInspectorSetup = void 0;
16
16
  require("reflect-metadata");
17
- const node_fs_1 = require("node:fs");
18
17
  const common_1 = require("@nestjs/common");
19
18
  const core_1 = require("@nestjs/core");
20
19
  const nest_graph_inspector_config_1 = require("./nest-graph-inspector.config");
21
- const node_path_1 = require("node:path");
22
20
  const nest_graph_inspector_module_1 = require("./nest-graph-inspector.module");
23
- let NestGraphInspectorService = class NestGraphInspectorService {
21
+ const http_output_driver_1 = require("./drivers/http-output.driver");
22
+ const file_output_driver_1 = require("./drivers/file-output.driver");
23
+ const json_output_driver_1 = require("./drivers/json-output.driver");
24
+ let NestGraphInspectorSetup = class NestGraphInspectorSetup {
24
25
  options;
25
26
  modulesContainer;
26
- constructor(options, modulesContainer) {
27
+ httpOutputAdapter;
28
+ fileOutputAdapter;
29
+ jsonOutputAdapter;
30
+ constructor(options, modulesContainer, httpOutputAdapter, fileOutputAdapter, jsonOutputAdapter) {
27
31
  this.options = options;
28
32
  this.modulesContainer = modulesContainer;
33
+ this.httpOutputAdapter = httpOutputAdapter;
34
+ this.fileOutputAdapter = fileOutputAdapter;
35
+ this.jsonOutputAdapter = jsonOutputAdapter;
29
36
  }
30
37
  ignoreProvider = ['ModuleRef', 'ApplicationConfig'];
31
38
  ignoreImport = [
@@ -42,18 +49,18 @@ let NestGraphInspectorService = class NestGraphInspectorService {
42
49
  ];
43
50
  onModuleInit() {
44
51
  const moduleMap = this.buildModuleMap(this.options.rootModule);
45
- if (!this.options.output) {
52
+ if (!this.options.outputs?.length) {
46
53
  return;
47
54
  }
48
- const { file } = this.options.output;
49
- if (file) {
50
- const filePath = (0, node_path_1.join)(process.cwd(), file);
51
- if (filePath.endsWith('.md')) {
52
- const markdownText = this.buildMarkdownText(moduleMap);
53
- (0, node_fs_1.writeFileSync)(filePath, markdownText, 'utf8');
55
+ for (const output of this.options.outputs) {
56
+ if (output.type === 'markdown') {
57
+ this.fileOutputAdapter.execute(moduleMap, output);
54
58
  }
55
- else if (filePath.endsWith('.json')) {
56
- (0, node_fs_1.writeFileSync)(filePath, JSON.stringify(moduleMap, null, 2), 'utf8');
59
+ else if (output.type === 'json') {
60
+ this.jsonOutputAdapter.execute(moduleMap, output);
61
+ }
62
+ else if (output.type === 'http') {
63
+ this.httpOutputAdapter.execute(moduleMap, output);
57
64
  }
58
65
  }
59
66
  }
@@ -81,6 +88,7 @@ let NestGraphInspectorService = class NestGraphInspectorService {
81
88
  modules[this.nestCoreModuleName] = this.buildNestCoreModule(usedNestCoreProviders);
82
89
  }
83
90
  return {
91
+ version: '1',
84
92
  root: this.moduleName(root),
85
93
  modules,
86
94
  };
@@ -132,182 +140,6 @@ let NestGraphInspectorService = class NestGraphInspectorService {
132
140
  }
133
141
  return providerName;
134
142
  }
135
- buildMarkdownText(moduleMap) {
136
- const lines = [];
137
- const moduleEntries = Object.entries(moduleMap.modules);
138
- lines.push('# NestJS Dependency Graph');
139
- lines.push('');
140
- lines.push(`Root Module: \`${moduleMap.root}\``);
141
- lines.push('');
142
- lines.push('```mermaid');
143
- lines.push('graph TD');
144
- lines.push('');
145
- this.appendMermaidModuleGroups(lines, moduleEntries);
146
- this.appendMermaidModuleRelations(lines, moduleEntries, moduleMap);
147
- lines.push('```');
148
- lines.push('');
149
- this.appendLegend(lines);
150
- this.appendModuleSections(lines, moduleEntries);
151
- return lines.join('\n');
152
- }
153
- appendMermaidModuleGroups(lines, moduleEntries) {
154
- for (const [moduleName, moduleData] of moduleEntries) {
155
- lines.push(` subgraph ${this.moduleGroupId(moduleName)}["${this.escapeMermaidLabel(moduleName)}"]`);
156
- for (const provider of moduleData.providers) {
157
- lines.push(` ${this.providerNodeId(moduleName, provider.name)}["${this.escapeMermaidLabel(provider.name)}"]`);
158
- }
159
- for (const controller of moduleData.controllers) {
160
- lines.push(` ${this.controllerNodeId(moduleName, controller.name)}["${this.escapeMermaidLabel(controller.name)}"]`);
161
- }
162
- lines.push(' end');
163
- }
164
- }
165
- appendMermaidModuleRelations(lines, moduleEntries, moduleMap) {
166
- for (const [moduleName, moduleData] of moduleEntries) {
167
- this.appendMermaidImportRelations(lines, moduleName, moduleData, moduleMap);
168
- this.appendMermaidProviderRelations(lines, moduleName, moduleData, moduleMap);
169
- this.appendMermaidControllerRelations(lines, moduleName, moduleData, moduleMap);
170
- }
171
- }
172
- appendMermaidImportRelations(lines, moduleName, moduleData, moduleMap) {
173
- const moduleGroupId = this.moduleGroupId(moduleName);
174
- if (moduleName === this.nestCoreModuleName) {
175
- return;
176
- }
177
- for (const importedModuleName of moduleData.imports) {
178
- if (!moduleMap.modules[importedModuleName]) {
179
- continue;
180
- }
181
- lines.push(` ${this.moduleGroupId(importedModuleName)} --> ${moduleGroupId}`);
182
- }
183
- }
184
- appendMermaidProviderRelations(lines, moduleName, moduleData, moduleMap) {
185
- for (const provider of moduleData.providers) {
186
- const providerNodeId = this.providerNodeId(moduleName, provider.name);
187
- this.appendDependencyRelations(lines, providerNodeId, moduleName, provider.name, provider.dependencies, moduleMap);
188
- }
189
- }
190
- appendMermaidControllerRelations(lines, moduleName, moduleData, moduleMap) {
191
- for (const controller of moduleData.controllers) {
192
- const controllerNodeId = this.controllerNodeId(moduleName, controller.name);
193
- this.appendDependencyRelations(lines, controllerNodeId, moduleName, controller.name, controller.dependencies, moduleMap);
194
- }
195
- }
196
- appendDependencyRelations(lines, ownerNodeId, moduleName, ownerName, dependencies, moduleMap) {
197
- for (const dependencyName of dependencies) {
198
- const dependencyTarget = this.findDependencyTarget(dependencyName, moduleName, moduleMap);
199
- if (dependencyTarget) {
200
- lines.push(` ${this.providerNodeId(dependencyTarget.moduleName, dependencyTarget.providerName)} --> ${ownerNodeId}`);
201
- continue;
202
- }
203
- const dependencyNodeId = this.dependencyNodeId(moduleName, ownerName, dependencyName);
204
- lines.push(` ${dependencyNodeId}["${this.escapeMermaidLabel(dependencyName)}"]`);
205
- lines.push(` ${dependencyNodeId} --> ${ownerNodeId}`);
206
- }
207
- }
208
- appendLegend(lines) {
209
- lines.push('## Legend');
210
- lines.push('');
211
- lines.push('- Each module is rendered as a Mermaid group');
212
- lines.push('- Inside each module group: providers and controllers owned by that module');
213
- lines.push('- Arrows between groups: imported module points to importing module');
214
- lines.push('- Arrows point from dependency/owned node to the dependent/owner node');
215
- lines.push('- Providers and controllers are grouped inside their owning module without extra ownership arrows');
216
- lines.push('- Internal and external runtime dependencies point to the provider/controller that uses them');
217
- lines.push('- Standalone dependency nodes are only used when a dependency cannot be resolved to a provider node');
218
- lines.push('');
219
- }
220
- appendModuleSections(lines, moduleEntries) {
221
- for (const [moduleName, moduleData] of moduleEntries) {
222
- lines.push(`## ${moduleName}`);
223
- lines.push('');
224
- this.appendStringSection(lines, 'Imports', moduleData.imports);
225
- this.appendStringSection(lines, 'Exports', moduleData.exports);
226
- this.appendProviderSection(lines, 'Providers', moduleData.providers);
227
- this.appendControllerSection(lines, 'Controllers', moduleData.controllers);
228
- }
229
- }
230
- appendStringSection(lines, title, values) {
231
- lines.push(`### ${title}`);
232
- if (values.length === 0) {
233
- lines.push('- None');
234
- lines.push('');
235
- return;
236
- }
237
- for (const value of values) {
238
- lines.push(`- ${value}`);
239
- }
240
- lines.push('');
241
- }
242
- appendProviderSection(lines, title, providers) {
243
- lines.push(`### ${title}`);
244
- if (providers.length === 0) {
245
- lines.push('- None');
246
- lines.push('');
247
- return;
248
- }
249
- for (const provider of providers) {
250
- this.appendNamedDependencyItem(lines, provider.name, provider.dependencies);
251
- }
252
- lines.push('');
253
- }
254
- appendControllerSection(lines, title, controllers) {
255
- lines.push(`### ${title}`);
256
- if (controllers.length === 0) {
257
- lines.push('- None');
258
- lines.push('');
259
- return;
260
- }
261
- for (const controller of controllers) {
262
- this.appendNamedDependencyItem(lines, controller.name, controller.dependencies);
263
- }
264
- lines.push('');
265
- }
266
- appendNamedDependencyItem(lines, name, dependencies) {
267
- lines.push(`- ${name}`);
268
- for (const dependencyName of dependencies) {
269
- lines.push(` - depends on: ${dependencyName}`);
270
- }
271
- }
272
- findDependencyTarget(dependencyName, currentModuleName, moduleMap) {
273
- const currentModule = moduleMap.modules[currentModuleName];
274
- if (currentModule) {
275
- const hasInternalProvider = currentModule.providers.some((provider) => provider.name === dependencyName);
276
- if (hasInternalProvider) {
277
- return {
278
- moduleName: currentModuleName,
279
- providerName: dependencyName,
280
- };
281
- }
282
- }
283
- const separatorIndex = dependencyName.indexOf(':');
284
- if (separatorIndex === -1) {
285
- return null;
286
- }
287
- const moduleName = dependencyName.slice(0, separatorIndex);
288
- const providerName = dependencyName.slice(separatorIndex + 1);
289
- if (!moduleName || !providerName) {
290
- return null;
291
- }
292
- const moduleData = moduleMap.modules[moduleName];
293
- if (!moduleData) {
294
- return null;
295
- }
296
- const hasProvider = moduleData.providers.some((provider) => provider.name === providerName);
297
- if (!hasProvider) {
298
- return null;
299
- }
300
- return {
301
- moduleName,
302
- providerName,
303
- };
304
- }
305
- toMermaidNodeId(value) {
306
- return value.replace(/[^a-zA-Z0-9_]/g, '_');
307
- }
308
- escapeMermaidLabel(value) {
309
- return value.replace(/\\/g, '\\\\').replace(/"/g, '\\"');
310
- }
311
143
  collectReachableModules(root, visited) {
312
144
  const id = this.moduleId(root);
313
145
  if (visited.has(id))
@@ -482,26 +314,14 @@ let NestGraphInspectorService = class NestGraphInspectorService {
482
314
  return token.name;
483
315
  return String(token);
484
316
  }
485
- moduleGroupId(moduleName) {
486
- return this.toMermaidNodeId(`module-group:${moduleName}`);
487
- }
488
- moduleNodeId(moduleName) {
489
- return this.toMermaidNodeId(`module:${moduleName}`);
490
- }
491
- providerNodeId(moduleName, providerName) {
492
- return this.toMermaidNodeId(`provider:${moduleName}:${providerName}`);
493
- }
494
- controllerNodeId(moduleName, controllerName) {
495
- return this.toMermaidNodeId(`controller:${moduleName}:${controllerName}`);
496
- }
497
- dependencyNodeId(moduleName, ownerName, dependencyName) {
498
- return this.toMermaidNodeId(`dependency:${moduleName}:${ownerName}:${dependencyName}`);
499
- }
500
317
  };
501
- exports.NestGraphInspectorService = NestGraphInspectorService;
502
- exports.NestGraphInspectorService = NestGraphInspectorService = __decorate([
318
+ exports.NestGraphInspectorSetup = NestGraphInspectorSetup;
319
+ exports.NestGraphInspectorSetup = NestGraphInspectorSetup = __decorate([
503
320
  (0, common_1.Injectable)(),
504
321
  __param(0, (0, common_1.Inject)(nest_graph_inspector_config_1.MODULE_OPTIONS_TOKEN)),
505
- __metadata("design:paramtypes", [Object, core_1.ModulesContainer])
506
- ], NestGraphInspectorService);
507
- //# sourceMappingURL=nest-graph-inspector.service.js.map
322
+ __metadata("design:paramtypes", [Object, core_1.ModulesContainer,
323
+ http_output_driver_1.HttpOutputDriver,
324
+ file_output_driver_1.FileOutputDriver,
325
+ json_output_driver_1.JsonOutputDriver])
326
+ ], NestGraphInspectorSetup);
327
+ //# sourceMappingURL=nest-graph-inspector.setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nest-graph-inspector.setup.js","sourceRoot":"","sources":["../../../../libs/nest-graph-inspector/src/nest-graph-inspector.setup.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,15 @@
1
1
  import { Type } from '@nestjs/common';
2
- type MdFile = `${string}.md`;
3
- type JsonFile = `${string}.json`;
4
- export interface NestGraphInspectorOutput {
5
- file: MdFile | JsonFile;
6
- }
2
+ export type NestGraphInspectorOutput = {
3
+ type: 'markdown';
4
+ path: string;
5
+ } | {
6
+ type: 'json';
7
+ path: string;
8
+ } | {
9
+ type: 'http';
10
+ path?: string;
11
+ };
7
12
  export interface NestGraphInspectorModuleOptions {
8
13
  rootModule: Type;
9
- output?: NestGraphInspectorOutput;
14
+ outputs?: NestGraphInspectorOutput[];
10
15
  }
11
- export {};
@@ -0,0 +1,4 @@
1
+ import { ModuleMap } from '../types/module-map.type';
2
+ export interface OutputAdapter<Config = unknown> {
3
+ execute(moduleMap: ModuleMap, config: Config): Promise<void>;
4
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=output.adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.adapter.js","sourceRoot":"","sources":["../../../../../libs/nest-graph-inspector/src/ports/output.adapter.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ export type ModuleController = {
2
+ name: string;
3
+ dependencies: string[];
4
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=module-controller.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module-controller.type.js","sourceRoot":"","sources":["../../../../../libs/nest-graph-inspector/src/types/module-controller.type.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import { Modules } from './module.type';
2
+ export type ModuleMap = {
3
+ version: string;
4
+ root: string;
5
+ modules: Record<string, Modules>;
6
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=module-map.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module-map.type.js","sourceRoot":"","sources":["../../../../../libs/nest-graph-inspector/src/types/module-map.type.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ export type ModuleProvider = {
2
+ name: string;
3
+ dependencies: string[];
4
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=module-provider.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module-provider.type.js","sourceRoot":"","sources":["../../../../../libs/nest-graph-inspector/src/types/module-provider.type.ts"],"names":[],"mappings":""}
@@ -0,0 +1,8 @@
1
+ import { ModuleController } from './module-controller.type';
2
+ import { ModuleProvider } from './module-provider.type';
3
+ export type Modules = {
4
+ providers: ModuleProvider[];
5
+ controllers: ModuleController[];
6
+ imports: string[];
7
+ exports: string[];
8
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=module.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module.type.js","sourceRoot":"","sources":["../../../../../libs/nest-graph-inspector/src/types/module.type.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"nest-graph-inspector.service.js","sourceRoot":"","sources":["../../../../libs/nest-graph-inspector/src/nest-graph-inspector.service.ts"],"names":[],"mappings":"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"}