nest-graph-inspector 0.2.2 → 0.2.4

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} +42 -211
  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.4",
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,28 @@ 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");
18
+ const constants_1 = require("@nestjs/common/constants");
19
19
  const core_1 = require("@nestjs/core");
20
20
  const nest_graph_inspector_config_1 = require("./nest-graph-inspector.config");
21
- const node_path_1 = require("node:path");
22
21
  const nest_graph_inspector_module_1 = require("./nest-graph-inspector.module");
23
- let NestGraphInspectorService = class NestGraphInspectorService {
22
+ const http_output_driver_1 = require("./drivers/http-output.driver");
23
+ const file_output_driver_1 = require("./drivers/file-output.driver");
24
+ const json_output_driver_1 = require("./drivers/json-output.driver");
25
+ let NestGraphInspectorSetup = class NestGraphInspectorSetup {
24
26
  options;
25
27
  modulesContainer;
26
- constructor(options, modulesContainer) {
28
+ httpOutputAdapter;
29
+ fileOutputAdapter;
30
+ jsonOutputAdapter;
31
+ constructor(options, modulesContainer, httpOutputAdapter, fileOutputAdapter, jsonOutputAdapter) {
27
32
  this.options = options;
28
33
  this.modulesContainer = modulesContainer;
34
+ this.httpOutputAdapter = httpOutputAdapter;
35
+ this.fileOutputAdapter = fileOutputAdapter;
36
+ this.jsonOutputAdapter = jsonOutputAdapter;
29
37
  }
30
38
  ignoreProvider = ['ModuleRef', 'ApplicationConfig'];
31
39
  ignoreImport = [
@@ -42,18 +50,18 @@ let NestGraphInspectorService = class NestGraphInspectorService {
42
50
  ];
43
51
  onModuleInit() {
44
52
  const moduleMap = this.buildModuleMap(this.options.rootModule);
45
- if (!this.options.output) {
53
+ if (!this.options.outputs?.length) {
46
54
  return;
47
55
  }
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');
56
+ for (const output of this.options.outputs) {
57
+ if (output.type === 'markdown') {
58
+ this.fileOutputAdapter.execute(moduleMap, output);
54
59
  }
55
- else if (filePath.endsWith('.json')) {
56
- (0, node_fs_1.writeFileSync)(filePath, JSON.stringify(moduleMap, null, 2), 'utf8');
60
+ else if (output.type === 'json') {
61
+ this.jsonOutputAdapter.execute(moduleMap, output);
62
+ }
63
+ else if (output.type === 'http') {
64
+ this.httpOutputAdapter.execute(moduleMap, output);
57
65
  }
58
66
  }
59
67
  }
@@ -81,6 +89,7 @@ let NestGraphInspectorService = class NestGraphInspectorService {
81
89
  modules[this.nestCoreModuleName] = this.buildNestCoreModule(usedNestCoreProviders);
82
90
  }
83
91
  return {
92
+ version: '1',
84
93
  root: this.moduleName(root),
85
94
  modules,
86
95
  };
@@ -132,182 +141,6 @@ let NestGraphInspectorService = class NestGraphInspectorService {
132
141
  }
133
142
  return providerName;
134
143
  }
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
144
  collectReachableModules(root, visited) {
312
145
  const id = this.moduleId(root);
313
146
  if (visited.has(id))
@@ -371,13 +204,23 @@ let NestGraphInspectorService = class NestGraphInspectorService {
371
204
  }
372
205
  const metatype = wrapper?.metatype;
373
206
  if (metatype && typeof metatype === 'function') {
374
- const paramTypes = Reflect.getMetadata('design:paramtypes', metatype) ?? [];
207
+ const paramTypes = Reflect.getMetadata(constants_1.PARAMTYPES_METADATA, metatype) ?? [];
375
208
  for (const paramType of paramTypes) {
376
209
  const dependencyName = this.resolveDependencyName(paramType, moduleRef);
377
210
  if (dependencyName && dependencyName !== 'Object') {
378
211
  dependencies.add(dependencyName);
379
212
  }
380
213
  }
214
+ const propertyDeps = Reflect.getMetadata(constants_1.PROPERTY_DEPS_METADATA, metatype) ?? [];
215
+ for (const propertyDep of propertyDeps) {
216
+ const token = propertyDep?.type;
217
+ if (token) {
218
+ const dependencyName = this.resolveDependencyName(token, moduleRef);
219
+ if (dependencyName && dependencyName !== 'Object') {
220
+ dependencies.add(dependencyName);
221
+ }
222
+ }
223
+ }
381
224
  }
382
225
  return [...dependencies];
383
226
  }
@@ -482,26 +325,14 @@ let NestGraphInspectorService = class NestGraphInspectorService {
482
325
  return token.name;
483
326
  return String(token);
484
327
  }
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
328
  };
501
- exports.NestGraphInspectorService = NestGraphInspectorService;
502
- exports.NestGraphInspectorService = NestGraphInspectorService = __decorate([
329
+ exports.NestGraphInspectorSetup = NestGraphInspectorSetup;
330
+ exports.NestGraphInspectorSetup = NestGraphInspectorSetup = __decorate([
503
331
  (0, common_1.Injectable)(),
504
332
  __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
333
+ __metadata("design:paramtypes", [Object, core_1.ModulesContainer,
334
+ http_output_driver_1.HttpOutputDriver,
335
+ file_output_driver_1.FileOutputDriver,
336
+ json_output_driver_1.JsonOutputDriver])
337
+ ], NestGraphInspectorSetup);
338
+ //# 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":";;;;;;;;;;;;;;;AAAA,4BAA0B;AAC1B,2CAAwE;AACxE,wDAAuF;AACvF,uCAAgD;AAChD,+EAAqE;AAErE,+EAAyE;AAKzE,qEAAgE;AAChE,qEAAgE;AAChE,qEAAgE;AAGzD,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IAGf;IACA;IACA;IACA;IACA;IANnB,YAEmB,OAAwC,EACxC,gBAAkC,EAClC,iBAAmC,EACnC,iBAAmC,EACnC,iBAAmC;QAJnC,YAAO,GAAP,OAAO,CAAiC;QACxC,qBAAgB,GAAhB,gBAAgB,CAAkB;QAClC,sBAAiB,GAAjB,iBAAiB,CAAkB;QACnC,sBAAiB,GAAjB,iBAAiB,CAAkB;QACnC,sBAAiB,GAAjB,iBAAiB,CAAkB;IAClD,CAAC;IAEY,cAAc,GAAG,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;IACpD,YAAY,GAAG;QAC9B,oBAAoB;QACpB,sDAAwB,CAAC,IAAI;KAC9B,CAAC;IACe,kBAAkB,GAAG,kBAAkB,CAAC;IACxC,iBAAiB,GAAG;QACnC,WAAW;QACX,mBAAmB;QACnB,WAAW;QACX,SAAS;QACT,UAAU;KACX,CAAC;IAEF,YAAY;QACV,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAE/D,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;YAClC,OAAO;QACT,CAAC;QAED,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YAC1C,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBAC/B,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YACpD,CAAC;iBAAM,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAClC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YACpD,CAAC;iBAAM,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAClC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;IACH,CAAC;IAED,cAAc,CAAC,eAAqB;QAClC,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CACnD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,eAAe,CACtC,CAAC;QAEF,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,0BAA0B,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,IAAI,GAAG,EAAU,CAAC,CAAC;QACxE,MAAM,OAAO,GAA4B,EAAE,CAAC;QAE5C,KAAK,MAAM,SAAS,IAAI,SAAS,EAAE,CAAC;YAClC,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YAC9C,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC3C,SAAS;YACX,CAAC;YAED,OAAO,CAAC,UAAU,CAAC,GAAG;gBACpB,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;gBACvC,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;gBACvC,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,UAAU,CAAC;gBACvD,WAAW,EAAE,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,UAAU,CAAC;aAC5D,CAAC;QACJ,CAAC;QAED,MAAM,qBAAqB,GAAG,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC;QAEtE,IAAI,qBAAqB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAAC,mBAAmB,CACzD,qBAAqB,CACtB,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE,GAAG;YACZ,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAC3B,OAAO;SACR,CAAC;IACJ,CAAC;IAEO,mBAAmB,CAAC,aAAuB;QACjD,OAAO;YACL,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,CAAC,GAAG,aAAa,CAAC;YAC3B,SAAS,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;gBAC9C,IAAI,EAAE,YAAY;gBAClB,YAAY,EAAE,EAAE;aACjB,CAAC,CAAC;YACH,WAAW,EAAE,EAAE;SAChB,CAAC;IACJ,CAAC;IAEO,yBAAyB,CAC/B,OAAgC;QAEhC,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;QAExC,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YAChD,KAAK,MAAM,QAAQ,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC;gBAC5C,KAAK,MAAM,cAAc,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC;oBACnD,MAAM,oBAAoB,GACxB,IAAI,CAAC,2BAA2B,CAAC,cAAc,CAAC,CAAC;oBAEnD,IAAI,oBAAoB,EAAE,CAAC;wBACzB,aAAa,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;oBAC1C,CAAC;gBACH,CAAC;YACH,CAAC;YAED,KAAK,MAAM,UAAU,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC;gBAChD,KAAK,MAAM,cAAc,IAAI,UAAU,CAAC,YAAY,EAAE,CAAC;oBACrD,MAAM,oBAAoB,GACxB,IAAI,CAAC,2BAA2B,CAAC,cAAc,CAAC,CAAC;oBAEnD,IAAI,oBAAoB,EAAE,CAAC;wBACzB,aAAa,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;oBAC1C,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE,EAAE,CACpD,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,CAChC,CAAC;IACJ,CAAC;IAEO,2BAA2B,CAAC,cAAsB;QACxD,MAAM,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,GAAG,CAAC;QAE7C,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACvC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,YAAY,GAAG,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACzD,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YACnD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,YAAY,CAAC;IACtB,CAAC;IAEO,uBAAuB,CAAC,IAAS,EAAE,OAAoB;QAC7D,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,OAAO,EAAE,CAAC;QAE/B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC;QACtB,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YAC7C,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;QAClE,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,cAAc,CAAC,SAAc;QACnC,OAAO,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;aACnC,GAAG,CAAC,CAAC,iBAAsB,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;aACnE,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;IACrE,CAAC;IAEO,cAAc,CAAC,SAAc;QACnC,OAAO,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;aACnC,GAAG,CAAC,CAAC,YAAiB,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;aACzD,MAAM,CACL,CAAC,UAAU,EAAwB,EAAE,CACnC,CAAC,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,UAAU,CAAC,CAC5D,CAAC;IACN,CAAC;IAEO,gBAAgB,CACtB,SAAc,EACd,UAAkB;QAElB,OAAO,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;aACrC,GAAG,CAAC,CAAC,OAAY,EAAE,EAAE,CACpB,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC,CACrD;aACA,MAAM,CAAC,CAAC,QAAQ,EAA8B,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAClE,CAAC;IAEO,kBAAkB,CACxB,SAAc,EACd,UAAkB;QAElB,OAAO,CAAC,GAAG,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;aACvC,GAAG,CAAC,CAAC,OAAY,EAAE,EAAE,CACpB,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC,CACvD;aACA,MAAM,CAAC,CAAC,UAAU,EAAkC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAC1E,CAAC;IAEO,eAAe,CACrB,OAAY,EACZ,UAAkB,EAClB,SAAc;QAEd,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YACvE,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO;YACL,IAAI;YACJ,YAAY,EAAE,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,SAAS,CAAC;SAC3D,CAAC;IACJ,CAAC;IAEO,iBAAiB,CACvB,OAAY,EACZ,UAAkB,EAClB,SAAc;QAEd,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO;YACL,IAAI;YACJ,YAAY,EAAE,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,SAAS,CAAC;SAC3D,CAAC;IACJ,CAAC;IAEO,mBAAmB,CAAC,OAAY,EAAE,SAAc;QACtD,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;QAEvC,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC;YACnC,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACnC,MAAM,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;gBACpE,IAAI,cAAc,EAAE,CAAC;oBACnB,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;gBACnC,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,CAAC;QACnC,IAAI,QAAQ,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE,CAAC;YAE/C,MAAM,UAAU,GACd,OAAO,CAAC,WAAW,CAAC,+BAAmB,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;YAE3D,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;gBACnC,MAAM,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;gBACxE,IAAI,cAAc,IAAI,cAAc,KAAK,QAAQ,EAAE,CAAC;oBAClD,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;gBACnC,CAAC;YACH,CAAC;YAGD,MAAM,YAAY,GAChB,OAAO,CAAC,WAAW,CAAC,kCAAsB,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;YAE9D,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;gBACvC,MAAM,KAAK,GAAG,WAAW,EAAE,IAAI,CAAC;gBAChC,IAAI,KAAK,EAAE,CAAC;oBACV,MAAM,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;oBACpE,IAAI,cAAc,IAAI,cAAc,KAAK,QAAQ,EAAE,CAAC;wBAClD,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;oBACnC,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,CAAC,GAAG,YAAY,CAAC,CAAC;IAC3B,CAAC;IAEO,qBAAqB,CAAC,KAAU,EAAE,SAAc;QACtD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAC/C,OAAO,GAAG,IAAI,CAAC,kBAAkB,IAAI,SAAS,EAAE,CAAC;QACnD,CAAC;QAED,MAAM,yBAAyB,GAAG,IAAI,CAAC,iCAAiC,CACtE,SAAS,EACT,KAAK,EACL,KAAK,CACN,CAAC;QAEF,IAAI,yBAAyB,EAAE,CAAC;YAC9B,OAAO,yBAAyB,CAAC;QACnC,CAAC;QAED,KAAK,MAAM,iBAAiB,IAAI,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YAC3D,MAAM,8BAA8B,GAClC,IAAI,CAAC,iCAAiC,CAAC,iBAAiB,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YAEzE,IAAI,8BAA8B,EAAE,CAAC;gBACnC,OAAO,8BAA8B,CAAC;YACxC,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACzD,CAAC;IAEO,iCAAiC,CACvC,SAAc,EACd,KAAU,EACV,mBAA4B;QAE5B,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAE9C,KAAK,MAAM,OAAO,IAAI,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;YACnD,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;gBAC9C,SAAS;YACX,CAAC;YAED,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC/C,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,OAAO,IAAI,CAAC;YACd,CAAC;YAED,IAAI,mBAAmB,EAAE,CAAC;gBACxB,OAAO,GAAG,UAAU,IAAI,YAAY,EAAE,CAAC;YACzC,CAAC;YAED,OAAO,YAAY,CAAC;QACtB,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,mBAAmB,CAAC,OAAY,EAAE,KAAU;QAClD,IAAI,OAAO,EAAE,KAAK,KAAK,KAAK,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,OAAO,EAAE,QAAQ,KAAK,KAAK,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,OAAO,EAAE,QAAQ,EAAE,WAAW,KAAK,KAAK,EAAE,CAAC;YAC7C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,gBAAgB,CAAC,SAAc;QACrC,OAAO,IAAI,GAAG,CACZ,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;aAC9B,GAAG,CAAC,CAAC,OAAY,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;aAChD,MAAM,CAAC,CAAC,YAAY,EAA0B,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CACpE,CAAC;IACJ,CAAC;IAEO,aAAa,CAAC,SAAc;QAClC,OAAO,IAAI,GAAG,CACZ,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;aAC5B,GAAG,CAAC,CAAC,YAAiB,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;aACzD,MAAM,CAAC,CAAC,UAAU,EAAwB,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAC9D,CAAC;IACJ,CAAC;IAEO,UAAU,CAAC,YAAiB;QAClC,OAAO,CACL,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;YAC9B,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,KAAK,IAAI,YAAY,CAAC,CACpD,CAAC;IACJ,CAAC;IAEO,oBAAoB,CAAC,cAAsB,EAAE,SAAc;QACjE,IAAI,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YACpD,OAAO,GAAG,IAAI,CAAC,kBAAkB,IAAI,cAAc,EAAE,CAAC;QACxD,CAAC;QAED,KAAK,MAAM,iBAAiB,IAAI,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YAC3D,MAAM,kBAAkB,GAAG,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;YAC9D,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;YAE5D,IAAI,aAAa,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;gBACtC,OAAO,GAAG,kBAAkB,IAAI,cAAc,EAAE,CAAC;YACnD,CAAC;QACH,CAAC;QAED,OAAO,cAAc,CAAC;IACxB,CAAC;IAEO,UAAU,CAAC,SAAc;QAC/B,OAAO,CACL,SAAS,CAAC,QAAQ,EAAE,IAAI;YACxB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC;YAC/B,iBAAiB,CAClB,CAAC;IACJ,CAAC;IAEO,QAAQ,CAAC,SAAc;QAC7B,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;IACnE,CAAC;IAEO,WAAW,CAAC,OAAY;QAC9B,OAAO,CACL,OAAO,EAAE,QAAQ,EAAE,IAAI;YACvB,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI;YACpC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC;YAC9B,IAAI,CACL,CAAC;IACJ,CAAC;IAEO,SAAS,CAAC,KAAU;QAC1B,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACxB,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;QACvD,IAAI,OAAO,KAAK,KAAK,UAAU;YAAE,OAAO,KAAK,CAAC,IAAI,CAAC;QACnD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;CACF,CAAA;AAhaY,0DAAuB;kCAAvB,uBAAuB;IADnC,IAAA,mBAAU,GAAE;IAGR,WAAA,IAAA,eAAM,EAAC,kDAAoB,CAAC,CAAA;6CAEM,uBAAgB;QACf,qCAAgB;QAChB,qCAAgB;QAChB,qCAAgB;GAP3C,uBAAuB,CAganC"}
@@ -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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"}