nest-graph-inspector 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "name": "nest-graph-inspector",
3
+ "version": "0.0.1",
4
+ "main": "index.js",
5
+ "types": "index.d.ts"
6
+ }
package/src/index.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export * from './nestjs-devtool.module';
2
+ export * from './nestjs-devtool.service';
package/src/index.js ADDED
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./nestjs-devtool.module"), exports);
18
+ __exportStar(require("./nestjs-devtool.service"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../libs/nestjs-devtool/src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0DAAwC;AACxC,2DAAyC"}
@@ -0,0 +1,2 @@
1
+ export declare class NestjsDevtoolModule {
2
+ }
@@ -0,0 +1,21 @@
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.NestjsDevtoolModule = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ const nestjs_devtool_service_1 = require("./nestjs-devtool.service");
12
+ let NestjsDevtoolModule = class NestjsDevtoolModule {
13
+ };
14
+ exports.NestjsDevtoolModule = NestjsDevtoolModule;
15
+ exports.NestjsDevtoolModule = NestjsDevtoolModule = __decorate([
16
+ (0, common_1.Module)({
17
+ providers: [nestjs_devtool_service_1.NestJSDevtoolService],
18
+ exports: [nestjs_devtool_service_1.NestJSDevtoolService],
19
+ })
20
+ ], NestjsDevtoolModule);
21
+ //# sourceMappingURL=nestjs-devtool.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nestjs-devtool.module.js","sourceRoot":"","sources":["../../../../libs/nestjs-devtool/src/nestjs-devtool.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,qEAAgE;AAMzD,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;CAAG,CAAA;AAAtB,kDAAmB;8BAAnB,mBAAmB;IAJ/B,IAAA,eAAM,EAAC;QACN,SAAS,EAAE,CAAC,6CAAoB,CAAC;QACjC,OAAO,EAAE,CAAC,6CAAoB,CAAC;KAChC,CAAC;GACW,mBAAmB,CAAG"}
@@ -0,0 +1,75 @@
1
+ import 'reflect-metadata';
2
+ import { OnModuleInit } from '@nestjs/common';
3
+ import { ModulesContainer } from '@nestjs/core';
4
+ type ModuleController = {
5
+ name: string;
6
+ dependencies: string[];
7
+ };
8
+ type ModuleProvider = {
9
+ name: string;
10
+ dependencies: string[];
11
+ };
12
+ type Modules = {
13
+ providers: ModuleProvider[];
14
+ controllers: ModuleController[];
15
+ imports: string[];
16
+ exports: string[];
17
+ };
18
+ type ModuleMap = {
19
+ root: string;
20
+ modules: Record<string, Modules>;
21
+ };
22
+ export declare class NestJSDevtoolService implements OnModuleInit {
23
+ private readonly modulesContainer;
24
+ constructor(modulesContainer: ModulesContainer);
25
+ private readonly ignoreProvider;
26
+ private readonly ignoreImport;
27
+ private readonly nestCoreModuleName;
28
+ private readonly nestCoreProviders;
29
+ onModuleInit(): void;
30
+ buildModuleMap(rootModuleClass: Function): ModuleMap;
31
+ private buildNestCoreModule;
32
+ private findUsedNestCoreProviders;
33
+ private extractNestCoreProviderName;
34
+ buildMarkdownText(moduleMap: ModuleMap): string;
35
+ private appendMermaidModuleGroups;
36
+ private appendMermaidModuleRelations;
37
+ private appendMermaidImportRelations;
38
+ private appendMermaidProviderRelations;
39
+ private appendMermaidControllerRelations;
40
+ private appendDependencyRelations;
41
+ private appendLegend;
42
+ private appendModuleSections;
43
+ private appendStringSection;
44
+ private appendProviderSection;
45
+ private appendControllerSection;
46
+ private appendNamedDependencyItem;
47
+ private findDependencyTarget;
48
+ private toMermaidNodeId;
49
+ private escapeMermaidLabel;
50
+ private collectReachableModules;
51
+ private extractImports;
52
+ private extractExports;
53
+ private extractProviders;
54
+ private extractControllers;
55
+ private extractProvider;
56
+ private extractController;
57
+ private extractDependencies;
58
+ private resolveDependencyName;
59
+ private findProviderDependencyNameByToken;
60
+ private isSameProviderToken;
61
+ private ownProviderNames;
62
+ private exportedNames;
63
+ private exportName;
64
+ private formatDependencyName;
65
+ private moduleName;
66
+ private moduleId;
67
+ private wrapperName;
68
+ private tokenName;
69
+ private moduleGroupId;
70
+ private moduleNodeId;
71
+ private providerNodeId;
72
+ private controllerNodeId;
73
+ private dependencyNodeId;
74
+ }
75
+ export {};
@@ -0,0 +1,487 @@
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.NestJSDevtoolService = void 0;
13
+ require("reflect-metadata");
14
+ const node_fs_1 = require("node:fs");
15
+ const node_path_1 = require("node:path");
16
+ const common_1 = require("@nestjs/common");
17
+ const core_1 = require("@nestjs/core");
18
+ const app_module_1 = require("../../../src/app.module");
19
+ let NestJSDevtoolService = class NestJSDevtoolService {
20
+ modulesContainer;
21
+ constructor(modulesContainer) {
22
+ this.modulesContainer = modulesContainer;
23
+ }
24
+ ignoreProvider = ['ModuleRef', 'ApplicationConfig'];
25
+ ignoreImport = ['InternalCoreModule', 'NestjsDevtoolModule'];
26
+ nestCoreModuleName = 'NestJSCoreModule';
27
+ nestCoreProviders = [
28
+ 'ModuleRef',
29
+ 'ApplicationConfig',
30
+ 'Reflector',
31
+ 'REQUEST',
32
+ 'INQUIRER',
33
+ ];
34
+ onModuleInit() {
35
+ const moduleMap = this.buildModuleMap(app_module_1.AppModule);
36
+ const markdownText = this.buildMarkdownText(moduleMap);
37
+ const markdownFilePath = (0, node_path_1.join)(__dirname, 'nestjs-dependency-graph.md');
38
+ console.log(JSON.stringify(moduleMap, null, 2));
39
+ (0, node_fs_1.writeFileSync)(markdownFilePath, markdownText, 'utf8');
40
+ }
41
+ buildModuleMap(rootModuleClass) {
42
+ const root = [...this.modulesContainer.values()].find((m) => m.metatype === rootModuleClass);
43
+ if (!root) {
44
+ throw new Error(`Root module not found: ${rootModuleClass.name}`);
45
+ }
46
+ const reachable = this.collectReachableModules(root, new Set());
47
+ const modules = {};
48
+ for (const moduleRef of reachable) {
49
+ const moduleName = this.moduleName(moduleRef);
50
+ if (this.ignoreImport.includes(moduleName)) {
51
+ continue;
52
+ }
53
+ modules[moduleName] = {
54
+ imports: this.extractImports(moduleRef),
55
+ exports: this.extractExports(moduleRef),
56
+ providers: this.extractProviders(moduleRef, moduleName),
57
+ controllers: this.extractControllers(moduleRef, moduleName),
58
+ };
59
+ }
60
+ const usedNestCoreProviders = this.findUsedNestCoreProviders(modules);
61
+ if (usedNestCoreProviders.length > 0) {
62
+ modules[this.nestCoreModuleName] = this.buildNestCoreModule(usedNestCoreProviders);
63
+ }
64
+ return {
65
+ root: this.moduleName(root),
66
+ modules,
67
+ };
68
+ }
69
+ buildNestCoreModule(usedProviders) {
70
+ return {
71
+ imports: [],
72
+ exports: [...usedProviders],
73
+ providers: usedProviders.map((providerName) => ({
74
+ name: providerName,
75
+ dependencies: [],
76
+ })),
77
+ controllers: [],
78
+ };
79
+ }
80
+ findUsedNestCoreProviders(modules) {
81
+ const usedProviders = new Set();
82
+ for (const moduleData of Object.values(modules)) {
83
+ for (const provider of moduleData.providers) {
84
+ for (const dependencyName of provider.dependencies) {
85
+ const nestCoreProviderName = this.extractNestCoreProviderName(dependencyName);
86
+ if (nestCoreProviderName) {
87
+ usedProviders.add(nestCoreProviderName);
88
+ }
89
+ }
90
+ }
91
+ for (const controller of moduleData.controllers) {
92
+ for (const dependencyName of controller.dependencies) {
93
+ const nestCoreProviderName = this.extractNestCoreProviderName(dependencyName);
94
+ if (nestCoreProviderName) {
95
+ usedProviders.add(nestCoreProviderName);
96
+ }
97
+ }
98
+ }
99
+ }
100
+ return this.nestCoreProviders.filter((providerName) => usedProviders.has(providerName));
101
+ }
102
+ extractNestCoreProviderName(dependencyName) {
103
+ const prefix = `${this.nestCoreModuleName}:`;
104
+ if (!dependencyName.startsWith(prefix)) {
105
+ return null;
106
+ }
107
+ const providerName = dependencyName.slice(prefix.length);
108
+ if (!providerName) {
109
+ return null;
110
+ }
111
+ if (!this.nestCoreProviders.includes(providerName)) {
112
+ return null;
113
+ }
114
+ return providerName;
115
+ }
116
+ buildMarkdownText(moduleMap) {
117
+ const lines = [];
118
+ const moduleEntries = Object.entries(moduleMap.modules);
119
+ lines.push('# NestJS Dependency Graph');
120
+ lines.push('');
121
+ lines.push(`Root Module: \`${moduleMap.root}\``);
122
+ lines.push('');
123
+ lines.push('```mermaid');
124
+ lines.push('graph TD');
125
+ lines.push('');
126
+ this.appendMermaidModuleGroups(lines, moduleEntries);
127
+ this.appendMermaidModuleRelations(lines, moduleEntries, moduleMap);
128
+ lines.push('```');
129
+ lines.push('');
130
+ this.appendLegend(lines);
131
+ this.appendModuleSections(lines, moduleEntries);
132
+ return lines.join('\n');
133
+ }
134
+ appendMermaidModuleGroups(lines, moduleEntries) {
135
+ for (const [moduleName, moduleData] of moduleEntries) {
136
+ lines.push(` subgraph ${this.moduleGroupId(moduleName)}["${this.escapeMermaidLabel(moduleName)}"]`);
137
+ for (const provider of moduleData.providers) {
138
+ lines.push(` ${this.providerNodeId(moduleName, provider.name)}["${this.escapeMermaidLabel(provider.name)}"]`);
139
+ }
140
+ for (const controller of moduleData.controllers) {
141
+ lines.push(` ${this.controllerNodeId(moduleName, controller.name)}["${this.escapeMermaidLabel(controller.name)}"]`);
142
+ }
143
+ lines.push(' end');
144
+ }
145
+ }
146
+ appendMermaidModuleRelations(lines, moduleEntries, moduleMap) {
147
+ for (const [moduleName, moduleData] of moduleEntries) {
148
+ this.appendMermaidImportRelations(lines, moduleName, moduleData, moduleMap);
149
+ this.appendMermaidProviderRelations(lines, moduleName, moduleData, moduleMap);
150
+ this.appendMermaidControllerRelations(lines, moduleName, moduleData, moduleMap);
151
+ }
152
+ }
153
+ appendMermaidImportRelations(lines, moduleName, moduleData, moduleMap) {
154
+ const moduleGroupId = this.moduleGroupId(moduleName);
155
+ if (moduleName === this.nestCoreModuleName) {
156
+ return;
157
+ }
158
+ for (const importedModuleName of moduleData.imports) {
159
+ if (!moduleMap.modules[importedModuleName]) {
160
+ continue;
161
+ }
162
+ lines.push(` ${this.moduleGroupId(importedModuleName)} --> ${moduleGroupId}`);
163
+ }
164
+ }
165
+ appendMermaidProviderRelations(lines, moduleName, moduleData, moduleMap) {
166
+ for (const provider of moduleData.providers) {
167
+ const providerNodeId = this.providerNodeId(moduleName, provider.name);
168
+ this.appendDependencyRelations(lines, providerNodeId, moduleName, provider.name, provider.dependencies, moduleMap);
169
+ }
170
+ }
171
+ appendMermaidControllerRelations(lines, moduleName, moduleData, moduleMap) {
172
+ for (const controller of moduleData.controllers) {
173
+ const controllerNodeId = this.controllerNodeId(moduleName, controller.name);
174
+ this.appendDependencyRelations(lines, controllerNodeId, moduleName, controller.name, controller.dependencies, moduleMap);
175
+ }
176
+ }
177
+ appendDependencyRelations(lines, ownerNodeId, moduleName, ownerName, dependencies, moduleMap) {
178
+ for (const dependencyName of dependencies) {
179
+ const dependencyTarget = this.findDependencyTarget(dependencyName, moduleName, moduleMap);
180
+ if (dependencyTarget) {
181
+ lines.push(` ${this.providerNodeId(dependencyTarget.moduleName, dependencyTarget.providerName)} --> ${ownerNodeId}`);
182
+ continue;
183
+ }
184
+ const dependencyNodeId = this.dependencyNodeId(moduleName, ownerName, dependencyName);
185
+ lines.push(` ${dependencyNodeId}["${this.escapeMermaidLabel(dependencyName)}"]`);
186
+ lines.push(` ${dependencyNodeId} --> ${ownerNodeId}`);
187
+ }
188
+ }
189
+ appendLegend(lines) {
190
+ lines.push('## Legend');
191
+ lines.push('');
192
+ lines.push('- Each module is rendered as a Mermaid group');
193
+ lines.push('- Inside each module group: providers and controllers owned by that module');
194
+ lines.push('- Arrows between groups: imported module points to importing module');
195
+ lines.push('- Arrows point from dependency/owned node to the dependent/owner node');
196
+ lines.push('- Providers and controllers are grouped inside their owning module without extra ownership arrows');
197
+ lines.push('- Internal and external runtime dependencies point to the provider/controller that uses them');
198
+ lines.push('- Standalone dependency nodes are only used when a dependency cannot be resolved to a provider node');
199
+ lines.push('');
200
+ }
201
+ appendModuleSections(lines, moduleEntries) {
202
+ for (const [moduleName, moduleData] of moduleEntries) {
203
+ lines.push(`## ${moduleName}`);
204
+ lines.push('');
205
+ this.appendStringSection(lines, 'Imports', moduleData.imports);
206
+ this.appendStringSection(lines, 'Exports', moduleData.exports);
207
+ this.appendProviderSection(lines, 'Providers', moduleData.providers);
208
+ this.appendControllerSection(lines, 'Controllers', moduleData.controllers);
209
+ }
210
+ }
211
+ appendStringSection(lines, title, values) {
212
+ lines.push(`### ${title}`);
213
+ if (values.length === 0) {
214
+ lines.push('- None');
215
+ lines.push('');
216
+ return;
217
+ }
218
+ for (const value of values) {
219
+ lines.push(`- ${value}`);
220
+ }
221
+ lines.push('');
222
+ }
223
+ appendProviderSection(lines, title, providers) {
224
+ lines.push(`### ${title}`);
225
+ if (providers.length === 0) {
226
+ lines.push('- None');
227
+ lines.push('');
228
+ return;
229
+ }
230
+ for (const provider of providers) {
231
+ this.appendNamedDependencyItem(lines, provider.name, provider.dependencies);
232
+ }
233
+ lines.push('');
234
+ }
235
+ appendControllerSection(lines, title, controllers) {
236
+ lines.push(`### ${title}`);
237
+ if (controllers.length === 0) {
238
+ lines.push('- None');
239
+ lines.push('');
240
+ return;
241
+ }
242
+ for (const controller of controllers) {
243
+ this.appendNamedDependencyItem(lines, controller.name, controller.dependencies);
244
+ }
245
+ lines.push('');
246
+ }
247
+ appendNamedDependencyItem(lines, name, dependencies) {
248
+ lines.push(`- ${name}`);
249
+ for (const dependencyName of dependencies) {
250
+ lines.push(` - depends on: ${dependencyName}`);
251
+ }
252
+ }
253
+ findDependencyTarget(dependencyName, currentModuleName, moduleMap) {
254
+ const currentModule = moduleMap.modules[currentModuleName];
255
+ if (currentModule) {
256
+ const hasInternalProvider = currentModule.providers.some((provider) => provider.name === dependencyName);
257
+ if (hasInternalProvider) {
258
+ return {
259
+ moduleName: currentModuleName,
260
+ providerName: dependencyName,
261
+ };
262
+ }
263
+ }
264
+ const separatorIndex = dependencyName.indexOf(':');
265
+ if (separatorIndex === -1) {
266
+ return null;
267
+ }
268
+ const moduleName = dependencyName.slice(0, separatorIndex);
269
+ const providerName = dependencyName.slice(separatorIndex + 1);
270
+ if (!moduleName || !providerName) {
271
+ return null;
272
+ }
273
+ const moduleData = moduleMap.modules[moduleName];
274
+ if (!moduleData) {
275
+ return null;
276
+ }
277
+ const hasProvider = moduleData.providers.some((provider) => provider.name === providerName);
278
+ if (!hasProvider) {
279
+ return null;
280
+ }
281
+ return {
282
+ moduleName,
283
+ providerName,
284
+ };
285
+ }
286
+ toMermaidNodeId(value) {
287
+ return value.replace(/[^a-zA-Z0-9_]/g, '_');
288
+ }
289
+ escapeMermaidLabel(value) {
290
+ return value.replace(/"/g, '\\"');
291
+ }
292
+ collectReachableModules(root, visited) {
293
+ const id = this.moduleId(root);
294
+ if (visited.has(id))
295
+ return [];
296
+ visited.add(id);
297
+ const result = [root];
298
+ for (const imported of root.imports.values()) {
299
+ result.push(...this.collectReachableModules(imported, visited));
300
+ }
301
+ return result;
302
+ }
303
+ extractImports(moduleRef) {
304
+ return [...moduleRef.imports.values()]
305
+ .map((importedModuleRef) => this.moduleName(importedModuleRef))
306
+ .filter((importName) => !this.ignoreImport.includes(importName));
307
+ }
308
+ extractExports(moduleRef) {
309
+ return [...moduleRef.exports.values()]
310
+ .map((exportedItem) => this.exportName(exportedItem))
311
+ .filter((exportName) => !!exportName && !this.ignoreProvider.includes(exportName));
312
+ }
313
+ extractProviders(moduleRef, moduleName) {
314
+ return [...moduleRef.providers.values()]
315
+ .map((wrapper) => this.extractProvider(wrapper, moduleName, moduleRef))
316
+ .filter((provider) => !!provider);
317
+ }
318
+ extractControllers(moduleRef, moduleName) {
319
+ return [...moduleRef.controllers.values()]
320
+ .map((wrapper) => this.extractController(wrapper, moduleName, moduleRef))
321
+ .filter((controller) => !!controller);
322
+ }
323
+ extractProvider(wrapper, moduleName, moduleRef) {
324
+ const name = this.wrapperName(wrapper);
325
+ if (!name || this.ignoreProvider.includes(name) || name === moduleName) {
326
+ return null;
327
+ }
328
+ return {
329
+ name,
330
+ dependencies: this.extractDependencies(wrapper, moduleRef),
331
+ };
332
+ }
333
+ extractController(wrapper, moduleName, moduleRef) {
334
+ const name = this.wrapperName(wrapper);
335
+ if (!name) {
336
+ return null;
337
+ }
338
+ return {
339
+ name,
340
+ dependencies: this.extractDependencies(wrapper, moduleRef),
341
+ };
342
+ }
343
+ extractDependencies(wrapper, moduleRef) {
344
+ const dependencies = new Set();
345
+ if (Array.isArray(wrapper?.inject)) {
346
+ for (const token of wrapper.inject) {
347
+ const dependencyName = this.resolveDependencyName(token, moduleRef);
348
+ if (dependencyName) {
349
+ dependencies.add(dependencyName);
350
+ }
351
+ }
352
+ }
353
+ const metatype = wrapper?.metatype;
354
+ if (metatype && typeof metatype === 'function') {
355
+ const paramTypes = Reflect.getMetadata('design:paramtypes', metatype) ?? [];
356
+ for (const paramType of paramTypes) {
357
+ const dependencyName = this.resolveDependencyName(paramType, moduleRef);
358
+ if (dependencyName && dependencyName !== 'Object') {
359
+ dependencies.add(dependencyName);
360
+ }
361
+ }
362
+ }
363
+ return [...dependencies];
364
+ }
365
+ resolveDependencyName(token, moduleRef) {
366
+ const tokenName = this.tokenName(token);
367
+ if (!tokenName) {
368
+ return null;
369
+ }
370
+ if (this.nestCoreProviders.includes(tokenName)) {
371
+ return `${this.nestCoreModuleName}:${tokenName}`;
372
+ }
373
+ const ownProviderDependencyName = this.findProviderDependencyNameByToken(moduleRef, token, false);
374
+ if (ownProviderDependencyName) {
375
+ return ownProviderDependencyName;
376
+ }
377
+ for (const importedModuleRef of moduleRef.imports.values()) {
378
+ const importedProviderDependencyName = this.findProviderDependencyNameByToken(importedModuleRef, token, true);
379
+ if (importedProviderDependencyName) {
380
+ return importedProviderDependencyName;
381
+ }
382
+ }
383
+ return this.formatDependencyName(tokenName, moduleRef);
384
+ }
385
+ findProviderDependencyNameByToken(moduleRef, token, includeModulePrefix) {
386
+ const moduleName = this.moduleName(moduleRef);
387
+ for (const wrapper of moduleRef.providers.values()) {
388
+ if (!this.isSameProviderToken(wrapper, token)) {
389
+ continue;
390
+ }
391
+ const providerName = this.wrapperName(wrapper);
392
+ if (!providerName) {
393
+ return null;
394
+ }
395
+ if (includeModulePrefix) {
396
+ return `${moduleName}:${providerName}`;
397
+ }
398
+ return providerName;
399
+ }
400
+ return null;
401
+ }
402
+ isSameProviderToken(wrapper, token) {
403
+ if (wrapper?.token === token) {
404
+ return true;
405
+ }
406
+ if (wrapper?.metatype === token) {
407
+ return true;
408
+ }
409
+ if (wrapper?.instance?.constructor === token) {
410
+ return true;
411
+ }
412
+ return false;
413
+ }
414
+ ownProviderNames(moduleRef) {
415
+ return new Set([...moduleRef.providers.values()]
416
+ .map((wrapper) => this.wrapperName(wrapper))
417
+ .filter((providerName) => !!providerName));
418
+ }
419
+ exportedNames(moduleRef) {
420
+ return new Set([...moduleRef.exports.values()]
421
+ .map((exportedItem) => this.exportName(exportedItem))
422
+ .filter((exportName) => !!exportName));
423
+ }
424
+ exportName(exportedItem) {
425
+ return (this.wrapperName(exportedItem) ||
426
+ this.tokenName(exportedItem?.token || exportedItem));
427
+ }
428
+ formatDependencyName(dependencyName, moduleRef) {
429
+ if (this.nestCoreProviders.includes(dependencyName)) {
430
+ return `${this.nestCoreModuleName}:${dependencyName}`;
431
+ }
432
+ for (const importedModuleRef of moduleRef.imports.values()) {
433
+ const importedModuleName = this.moduleName(importedModuleRef);
434
+ const exportedNames = this.exportedNames(importedModuleRef);
435
+ if (exportedNames.has(dependencyName)) {
436
+ return `${importedModuleName}:${dependencyName}`;
437
+ }
438
+ }
439
+ return dependencyName;
440
+ }
441
+ moduleName(moduleRef) {
442
+ return (moduleRef.metatype?.name ||
443
+ this.tokenName(moduleRef.token) ||
444
+ 'AnonymousModule');
445
+ }
446
+ moduleId(moduleRef) {
447
+ return this.moduleName(moduleRef).replace(/[^a-zA-Z0-9_]/g, '_');
448
+ }
449
+ wrapperName(wrapper) {
450
+ return (wrapper?.metatype?.name ||
451
+ wrapper?.instance?.constructor?.name ||
452
+ this.tokenName(wrapper?.token) ||
453
+ null);
454
+ }
455
+ tokenName(token) {
456
+ if (!token)
457
+ return null;
458
+ if (typeof token === 'string')
459
+ return token;
460
+ if (typeof token === 'symbol')
461
+ return token.toString();
462
+ if (typeof token === 'function')
463
+ return token.name;
464
+ return String(token);
465
+ }
466
+ moduleGroupId(moduleName) {
467
+ return this.toMermaidNodeId(`module-group:${moduleName}`);
468
+ }
469
+ moduleNodeId(moduleName) {
470
+ return this.toMermaidNodeId(`module:${moduleName}`);
471
+ }
472
+ providerNodeId(moduleName, providerName) {
473
+ return this.toMermaidNodeId(`provider:${moduleName}:${providerName}`);
474
+ }
475
+ controllerNodeId(moduleName, controllerName) {
476
+ return this.toMermaidNodeId(`controller:${moduleName}:${controllerName}`);
477
+ }
478
+ dependencyNodeId(moduleName, ownerName, dependencyName) {
479
+ return this.toMermaidNodeId(`dependency:${moduleName}:${ownerName}:${dependencyName}`);
480
+ }
481
+ };
482
+ exports.NestJSDevtoolService = NestJSDevtoolService;
483
+ exports.NestJSDevtoolService = NestJSDevtoolService = __decorate([
484
+ (0, common_1.Injectable)(),
485
+ __metadata("design:paramtypes", [core_1.ModulesContainer])
486
+ ], NestJSDevtoolService);
487
+ //# sourceMappingURL=nestjs-devtool.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nestjs-devtool.service.js","sourceRoot":"","sources":["../../../../libs/nestjs-devtool/src/nestjs-devtool.service.ts"],"names":[],"mappings":"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"}