nestjs-profiler 1.0.24 → 1.0.25
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/README.md +51 -3
- package/controllers/profiler.controller.d.ts +10 -1
- package/controllers/profiler.controller.js +62 -2
- package/controllers/profiler.controller.js.map +1 -1
- package/package.json +2 -2
- package/profiler.module.js +4 -0
- package/profiler.module.js.map +1 -1
- package/services/code-quality.service.d.ts +65 -0
- package/services/code-quality.service.js +216 -0
- package/services/code-quality.service.js.map +1 -0
- package/services/health.service.d.ts +59 -0
- package/services/health.service.js +175 -0
- package/services/health.service.js.map +1 -0
- package/services/template-builder.service.d.ts +2 -0
- package/services/template-builder.service.js +7 -1
- package/services/template-builder.service.js.map +1 -1
- package/services/view.service.js +4 -0
- package/services/view.service.js.map +1 -1
- package/views/code-quality.html +573 -0
- package/views/health.html +468 -0
- package/views/layout.html +19 -1
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
<img src="https://raw.githubusercontent.com/MohammedRaslan/Nest-JS-Profiler/refs/heads/main/libs/nestjs-profiler/src/assets/logo.png" width="400" alt="NestJS Profiler Logo" />
|
|
5
5
|
</p>
|
|
6
6
|
|
|
7
|
-
A NestJS module for profiling HTTP requests, database queries, cache operations, outbound HTTP calls, and
|
|
7
|
+
A NestJS module for profiling HTTP requests, database queries, cache operations, outbound HTTP calls, application logs, package health, and code quality. Inspired by Symfony Profiler, it provides a web-based dashboard to inspect everything that happens inside a request — from DB queries to downstream API calls — in real time.
|
|
8
8
|
|
|
9
9
|
## Features
|
|
10
10
|
|
|
@@ -23,6 +23,8 @@ A NestJS module for profiling HTTP requests, database queries, cache operations,
|
|
|
23
23
|
- **Summary Dashboard** — Aggregate statistics: avg/p95 duration, error rate, cache hit rate, top slow endpoints, top slow queries, and recent errors.
|
|
24
24
|
- **Entity Explorer** — Lists all registered TypeORM/MikroORM entities and their columns.
|
|
25
25
|
- **Route Explorer** — Lists all registered routes with their controllers and handlers.
|
|
26
|
+
- **Package Health** — Runs `npm audit` and `npm outdated` to surface known vulnerabilities and stale dependencies. Results are cached for 5 minutes. Works with npm, yarn, and pnpm. If the registry is unreachable, outdated packages are still shown with an inline warning.
|
|
27
|
+
- **Code Quality** — Runs ESLint and TypeScript compiler checks (`tsc --noEmit`) against your source code. Issues are displayed grouped by file or by rule, with direct links to ESLint rule docs and TypeScript error references. Auto-fixable issues are flagged. File paths are copyable with one click.
|
|
26
28
|
- **Web UI** — Built-in dashboard at `/__profiler` with no external dependencies.
|
|
27
29
|
- **Zero Hard Dependencies** — Core functionality works out of the box; database drivers are optional peer dependencies.
|
|
28
30
|
|
|
@@ -149,8 +151,9 @@ Navigate to `http://localhost:3000/__profiler`.
|
|
|
149
151
|
|
|
150
152
|
| Path | Description |
|
|
151
153
|
|---|---|
|
|
152
|
-
| `/__profiler` |
|
|
154
|
+
| `/__profiler` | Redirects to Summary (default landing page) |
|
|
153
155
|
| `/__profiler/view/summary` | Aggregate stats: avg/p95 duration, error rate, top slow endpoints |
|
|
156
|
+
| `/__profiler/view/requests` | All captured requests |
|
|
154
157
|
| `/__profiler/view/queries` | All database queries across requests, sorted by duration |
|
|
155
158
|
| `/__profiler/view/http-calls` | All outbound HTTP calls across requests, sorted by duration |
|
|
156
159
|
| `/__profiler/view/logs` | Paginated application logs |
|
|
@@ -158,6 +161,8 @@ Navigate to `http://localhost:3000/__profiler`.
|
|
|
158
161
|
| `/__profiler/view/cache` | Cache operations with hit/miss breakdown |
|
|
159
162
|
| `/__profiler/view/entities` | Registered database entities |
|
|
160
163
|
| `/__profiler/view/routes` | All registered application routes |
|
|
164
|
+
| `/__profiler/view/health` | Package vulnerabilities and outdated dependency report |
|
|
165
|
+
| `/__profiler/view/code-quality` | ESLint and TypeScript static analysis report |
|
|
161
166
|
| `/__profiler/:id` | Full detail view for a single request |
|
|
162
167
|
|
|
163
168
|
### 3. Outbound HTTP Tracking
|
|
@@ -181,7 +186,50 @@ To disable:
|
|
|
181
186
|
ProfilerModule.forRoot({ collectHttp: false })
|
|
182
187
|
```
|
|
183
188
|
|
|
184
|
-
### 4.
|
|
189
|
+
### 4. Package Health
|
|
190
|
+
|
|
191
|
+
The Health tab runs `npm audit` and `npm outdated` from your project root and displays the results in a searchable UI.
|
|
192
|
+
|
|
193
|
+
- **Vulnerabilities** — sorted by severity (critical → high → moderate → low), with fix availability and whether the package is a direct or transitive dependency.
|
|
194
|
+
- **Outdated packages** — shows current, wanted, and latest versions with major-update warnings.
|
|
195
|
+
- Results are **cached for 5 minutes** server-side. Navigating back to the tab shows the cached result instantly without re-running. Click **Re-run audit** to force a fresh scan.
|
|
196
|
+
- If `npm audit` cannot reach the registry (e.g. VPN or proxy), the outdated packages section still renders with an inline warning for the unavailable audit.
|
|
197
|
+
- No configuration required — works automatically for npm, yarn, and pnpm projects.
|
|
198
|
+
|
|
199
|
+
#### JSON endpoint
|
|
200
|
+
|
|
201
|
+
```
|
|
202
|
+
GET /__profiler/api/health # cached result (5 min TTL)
|
|
203
|
+
GET /__profiler/api/health?force=true # force fresh scan
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
### 5. Code Quality
|
|
207
|
+
|
|
208
|
+
The Code Quality tab runs static analysis tools against your source code and surfaces every issue without AI or external services.
|
|
209
|
+
|
|
210
|
+
**ESLint** — uses your project's existing ESLint configuration (`node_modules/.bin/eslint`). Results are shown in two views:
|
|
211
|
+
|
|
212
|
+
- **By File** — expandable accordion rows per file. Each issue shows line:column, severity badge, message, fix indicator (⚡ auto-fixable), and a clickable rule badge linking to the ESLint documentation.
|
|
213
|
+
- **By Rule** — sorted by severity then count, showing how many files are affected per rule.
|
|
214
|
+
|
|
215
|
+
**TypeScript** — runs `tsc --noEmit` using your project's `tsconfig.json`. Each error links to `typescript.tv/errors` for explanations.
|
|
216
|
+
|
|
217
|
+
**Summary cards** show total issues, errors, warnings, auto-fixable count, and files affected at a glance.
|
|
218
|
+
|
|
219
|
+
File paths have a **copy-to-clipboard** button that appears on hover, making it easy to jump to the file in your editor.
|
|
220
|
+
|
|
221
|
+
Results are cached for 5 minutes. Click **Re-run** to force a fresh analysis.
|
|
222
|
+
|
|
223
|
+
> **Note:** Code Quality only lints the `src/` directory (or project root if `src/` doesn't exist) and automatically ignores `dist/`, `build/`, `coverage/`, and other generated directories.
|
|
224
|
+
|
|
225
|
+
#### JSON endpoint
|
|
226
|
+
|
|
227
|
+
```
|
|
228
|
+
GET /__profiler/api/code-quality # cached result (5 min TTL)
|
|
229
|
+
GET /__profiler/api/code-quality?force=true # force fresh scan
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
### 6. JSON API
|
|
185
233
|
|
|
186
234
|
Retrieve profile data programmatically:
|
|
187
235
|
|
|
@@ -4,14 +4,19 @@ import { ViewService } from '../services/view.service';
|
|
|
4
4
|
import { TemplateBuilderService } from '../services/template-builder.service';
|
|
5
5
|
import { EntityExplorerService } from '../services/entity-explorer.service';
|
|
6
6
|
import { RouteExplorerService } from '../services/route-explorer.service';
|
|
7
|
+
import { HealthService } from '../services/health.service';
|
|
8
|
+
import { CodeQualityService } from '../services/code-quality.service';
|
|
7
9
|
export declare class ProfilerController {
|
|
8
10
|
private readonly profilerService;
|
|
9
11
|
private readonly viewService;
|
|
10
12
|
private readonly templateBuilder;
|
|
11
13
|
private readonly entityExplorer;
|
|
12
14
|
private readonly routeExplorer;
|
|
13
|
-
|
|
15
|
+
private readonly healthService;
|
|
16
|
+
private readonly codeQualityService;
|
|
17
|
+
constructor(profilerService: ProfilerService, viewService: ViewService, templateBuilder: TemplateBuilderService, entityExplorer: EntityExplorerService, routeExplorer: RouteExplorerService, healthService: HealthService, codeQualityService: CodeQualityService);
|
|
14
18
|
dashboard(res: Response): Promise<void>;
|
|
19
|
+
requestsList(res: Response): Promise<void>;
|
|
15
20
|
listJson(): Promise<import("..").RequestProfile[]>;
|
|
16
21
|
debugQuery(): Promise<{
|
|
17
22
|
status: string;
|
|
@@ -31,6 +36,10 @@ export declare class ProfilerController {
|
|
|
31
36
|
listRoutes(res: Response): Promise<void>;
|
|
32
37
|
listCache(res: Response): Promise<void>;
|
|
33
38
|
listHttpCalls(res: Response): Promise<void>;
|
|
39
|
+
healthPage(res: Response): Promise<void>;
|
|
40
|
+
healthAudit(force?: string): Promise<import("../services/health.service").HealthReport>;
|
|
41
|
+
codeQualityPage(res: Response): Promise<void>;
|
|
42
|
+
codeQualityAudit(force?: string): Promise<import("../services/code-quality.service").CodeQualityReport>;
|
|
34
43
|
liveLogsPage(res: Response): Promise<void>;
|
|
35
44
|
liveLogsStream(res: Response): void;
|
|
36
45
|
serveAsset(file: string, res: Response): Promise<void>;
|
|
@@ -19,15 +19,22 @@ const view_service_1 = require("../services/view.service");
|
|
|
19
19
|
const template_builder_service_1 = require("../services/template-builder.service");
|
|
20
20
|
const entity_explorer_service_1 = require("../services/entity-explorer.service");
|
|
21
21
|
const route_explorer_service_1 = require("../services/route-explorer.service");
|
|
22
|
+
const health_service_1 = require("../services/health.service");
|
|
23
|
+
const code_quality_service_1 = require("../services/code-quality.service");
|
|
22
24
|
let ProfilerController = class ProfilerController {
|
|
23
|
-
constructor(profilerService, viewService, templateBuilder, entityExplorer, routeExplorer) {
|
|
25
|
+
constructor(profilerService, viewService, templateBuilder, entityExplorer, routeExplorer, healthService, codeQualityService) {
|
|
24
26
|
this.profilerService = profilerService;
|
|
25
27
|
this.viewService = viewService;
|
|
26
28
|
this.templateBuilder = templateBuilder;
|
|
27
29
|
this.entityExplorer = entityExplorer;
|
|
28
30
|
this.routeExplorer = routeExplorer;
|
|
31
|
+
this.healthService = healthService;
|
|
32
|
+
this.codeQualityService = codeQualityService;
|
|
29
33
|
}
|
|
30
34
|
async dashboard(res) {
|
|
35
|
+
res.redirect('/__profiler/view/summary');
|
|
36
|
+
}
|
|
37
|
+
async requestsList(res) {
|
|
31
38
|
const profiles = await this.profilerService.getDashboardData();
|
|
32
39
|
const content = this.templateBuilder.buildDashboard(profiles);
|
|
33
40
|
const html = this.viewService.renderWithLayout('Requests', content, 'requests');
|
|
@@ -129,6 +136,22 @@ let ProfilerController = class ProfilerController {
|
|
|
129
136
|
res.header('Content-Type', 'text/html');
|
|
130
137
|
res.send(html);
|
|
131
138
|
}
|
|
139
|
+
async healthPage(res) {
|
|
140
|
+
const html = this.viewService.renderWithLayout('Health', this.templateBuilder.buildHealthPage(), 'health');
|
|
141
|
+
res.header('Content-Type', 'text/html');
|
|
142
|
+
res.send(html);
|
|
143
|
+
}
|
|
144
|
+
async healthAudit(force) {
|
|
145
|
+
return this.healthService.runHealthCheck(force === 'true');
|
|
146
|
+
}
|
|
147
|
+
async codeQualityPage(res) {
|
|
148
|
+
const html = this.viewService.renderWithLayout('Code Quality', this.templateBuilder.buildCodeQualityPage(), 'code-quality');
|
|
149
|
+
res.header('Content-Type', 'text/html');
|
|
150
|
+
res.send(html);
|
|
151
|
+
}
|
|
152
|
+
async codeQualityAudit(force) {
|
|
153
|
+
return this.codeQualityService.runCheck(force === 'true');
|
|
154
|
+
}
|
|
132
155
|
async liveLogsPage(res) {
|
|
133
156
|
const html = this.viewService.renderWithLayout('Live Logs', this.templateBuilder.buildLiveLogsPage(), 'live-logs');
|
|
134
157
|
res.header('Content-Type', 'text/html');
|
|
@@ -222,6 +245,13 @@ __decorate([
|
|
|
222
245
|
__metadata("design:paramtypes", [Object]),
|
|
223
246
|
__metadata("design:returntype", Promise)
|
|
224
247
|
], ProfilerController.prototype, "dashboard", null);
|
|
248
|
+
__decorate([
|
|
249
|
+
(0, common_1.Get)('view/requests'),
|
|
250
|
+
__param(0, (0, common_1.Res)()),
|
|
251
|
+
__metadata("design:type", Function),
|
|
252
|
+
__metadata("design:paramtypes", [Object]),
|
|
253
|
+
__metadata("design:returntype", Promise)
|
|
254
|
+
], ProfilerController.prototype, "requestsList", null);
|
|
225
255
|
__decorate([
|
|
226
256
|
(0, common_1.Get)('json'),
|
|
227
257
|
__metadata("design:type", Function),
|
|
@@ -299,6 +329,34 @@ __decorate([
|
|
|
299
329
|
__metadata("design:paramtypes", [Object]),
|
|
300
330
|
__metadata("design:returntype", Promise)
|
|
301
331
|
], ProfilerController.prototype, "listHttpCalls", null);
|
|
332
|
+
__decorate([
|
|
333
|
+
(0, common_1.Get)('view/health'),
|
|
334
|
+
__param(0, (0, common_1.Res)()),
|
|
335
|
+
__metadata("design:type", Function),
|
|
336
|
+
__metadata("design:paramtypes", [Object]),
|
|
337
|
+
__metadata("design:returntype", Promise)
|
|
338
|
+
], ProfilerController.prototype, "healthPage", null);
|
|
339
|
+
__decorate([
|
|
340
|
+
(0, common_1.Get)('api/health'),
|
|
341
|
+
__param(0, (0, common_1.Query)('force')),
|
|
342
|
+
__metadata("design:type", Function),
|
|
343
|
+
__metadata("design:paramtypes", [String]),
|
|
344
|
+
__metadata("design:returntype", Promise)
|
|
345
|
+
], ProfilerController.prototype, "healthAudit", null);
|
|
346
|
+
__decorate([
|
|
347
|
+
(0, common_1.Get)('view/code-quality'),
|
|
348
|
+
__param(0, (0, common_1.Res)()),
|
|
349
|
+
__metadata("design:type", Function),
|
|
350
|
+
__metadata("design:paramtypes", [Object]),
|
|
351
|
+
__metadata("design:returntype", Promise)
|
|
352
|
+
], ProfilerController.prototype, "codeQualityPage", null);
|
|
353
|
+
__decorate([
|
|
354
|
+
(0, common_1.Get)('api/code-quality'),
|
|
355
|
+
__param(0, (0, common_1.Query)('force')),
|
|
356
|
+
__metadata("design:type", Function),
|
|
357
|
+
__metadata("design:paramtypes", [String]),
|
|
358
|
+
__metadata("design:returntype", Promise)
|
|
359
|
+
], ProfilerController.prototype, "codeQualityAudit", null);
|
|
302
360
|
__decorate([
|
|
303
361
|
(0, common_1.Get)('view/logs/live'),
|
|
304
362
|
__param(0, (0, common_1.Res)()),
|
|
@@ -335,6 +393,8 @@ exports.ProfilerController = ProfilerController = __decorate([
|
|
|
335
393
|
view_service_1.ViewService,
|
|
336
394
|
template_builder_service_1.TemplateBuilderService,
|
|
337
395
|
entity_explorer_service_1.EntityExplorerService,
|
|
338
|
-
route_explorer_service_1.RouteExplorerService
|
|
396
|
+
route_explorer_service_1.RouteExplorerService,
|
|
397
|
+
health_service_1.HealthService,
|
|
398
|
+
code_quality_service_1.CodeQualityService])
|
|
339
399
|
], ProfilerController);
|
|
340
400
|
//# sourceMappingURL=profiler.controller.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profiler.controller.js","sourceRoot":"","sources":["../../../libs/nestjs-profiler/src/controllers/profiler.controller.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"profiler.controller.js","sourceRoot":"","sources":["../../../libs/nestjs-profiler/src/controllers/profiler.controller.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nestjs-profiler",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"description": "A NestJS module for profiling HTTP requests, database queries, and
|
|
3
|
+
"version": "1.0.25",
|
|
4
|
+
"description": "A NestJS module for profiling HTTP requests, database queries, cache operations, outbound HTTP calls, application logs, package health, and code quality. Inspired by Symfony Profiler, it provides a web-based dashboard to inspect everything that happens inside a request — from DB queries to downstream API calls — in real time.",
|
|
5
5
|
"author": "Mohamed Raslan",
|
|
6
6
|
"main": "./index.js",
|
|
7
7
|
"types": "./index.d.ts",
|
package/profiler.module.js
CHANGED
|
@@ -20,6 +20,8 @@ const mysql_collector_1 = require("./collectors/mysql-collector");
|
|
|
20
20
|
const log_collector_1 = require("./collectors/log-collector");
|
|
21
21
|
const cache_collector_1 = require("./collectors/cache-collector");
|
|
22
22
|
const http_collector_1 = require("./collectors/http-collector");
|
|
23
|
+
const health_service_1 = require("./services/health.service");
|
|
24
|
+
const code_quality_service_1 = require("./services/code-quality.service");
|
|
23
25
|
const explain_analyzer_1 = require("./analyzers/explain-analyzer");
|
|
24
26
|
const in_memory_profiler_storage_1 = require("./storage/in-memory-profiler-storage");
|
|
25
27
|
const profiler_controller_1 = require("./controllers/profiler.controller");
|
|
@@ -62,6 +64,8 @@ let ProfilerModule = ProfilerModule_1 = class ProfilerModule {
|
|
|
62
64
|
log_collector_1.LogCollector,
|
|
63
65
|
cache_collector_1.CacheCollector,
|
|
64
66
|
http_collector_1.HttpCollector,
|
|
67
|
+
health_service_1.HealthService,
|
|
68
|
+
code_quality_service_1.CodeQualityService,
|
|
65
69
|
explain_analyzer_1.ExplainAnalyzer,
|
|
66
70
|
{
|
|
67
71
|
provide: core_1.APP_INTERCEPTOR,
|
package/profiler.module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profiler.module.js","sourceRoot":"","sources":["../../libs/nestjs-profiler/src/profiler.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAQwB;AAExB,kEAA8D;AAC9D,0DAAsD;AACtD,kFAA6E;AAC7E,gFAA2E;AAC3E,8EAAyE;AACzE,wEAAoE;AACpE,kEAA8D;AAC9D,kEAA8D;AAC9D,8DAA0D;AAC1D,kEAA8D;AAC9D,gEAA4D;AAC5D,mEAA+D;AAC/D,qFAA+E;AAC/E,2EAAuE;AACvE,8FAAyF;AACzF,uCAA+C;AAC/C,uDAAmD;AACnD,0EAAsE;AAe/D,IAAM,cAAc,sBAApB,MAAM,cAAc;IACzB,SAAS,CAAC,QAA4B;QACpC,QAAQ;aACL,KAAK,CAAC,wCAAkB,CAAC;aACzB,OAAO,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,sBAAa,CAAC,GAAG,EAAE,CAAC;aAC/D,SAAS,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,sBAAa,CAAC,GAAG,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,UAA2B,EAAE;QAC1C,MAAM,eAAe,GAAa;YAChC,OAAO,EAAE,kBAAkB;YAC3B,QAAQ,EAAE,OAAO;SAClB,CAAC;QAEF,MAAM,eAAe,GAAa;YAChC,OAAO,EAAE,kBAAkB;YAC3B,QAAQ,EACN,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,OAAO,KAAK,IAAI;gBAC7D,CAAC,CAAC,OAAO,CAAC,OAAO;gBACjB,CAAC,CAAC,IAAI,oDAAuB,EAAE;SACpC,CAAC;QAEF,OAAO;YACL,MAAM,EAAE,gBAAc;YACtB,OAAO,EAAE,EAAE;YACX,SAAS,EAAE;gBACT,eAAe;gBACf,eAAe;gBACf,kCAAe;gBACf,0BAAW;gBACX,iDAAsB;gBACtB,+CAAqB;gBACrB,6CAAoB;gBACpB,sCAAiB;gBACjB,gCAAc;gBACd,gCAAc;gBACd,4BAAY;gBACZ,gCAAc;gBACd,8BAAa;gBACb,kCAAe;gBACf;oBACE,OAAO,EAAE,sBAAe;oBACxB,QAAQ,EAAE,yDAA0B;iBACrC;aACF;YACD,OAAO,EAAE,CAAC,kCAAe,CAAC;SAC3B,CAAC;IACJ,CAAC;IAMD,MAAM,CAAC,UAAU,CAAC,GAAQ;QACxB,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;YAChC,MAAM,gBAAgB,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC;YAGhD,MAAM,cAAc,GAAG,GAAG,CAAC,GAAG,CAAC,+CAAqB,CAAC,CAAC;YACtD,cAAc,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;YAG5C,MAAM,aAAa,GAAG,GAAG,CAAC,GAAG,CAAC,6CAAoB,CAAC,CAAC;YACpD,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,EAAE,eAAe;gBAC9C,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,eAAe,EAAE;gBAC9B,CAAC,CAAC,EAAE,CAAC;YACP,aAAa,CAAC,UAAU,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC;QAC3D,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CACV,8EAA8E,EAC9E,CAAC,CACF,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAA;
|
|
1
|
+
{"version":3,"file":"profiler.module.js","sourceRoot":"","sources":["../../libs/nestjs-profiler/src/profiler.module.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
export interface EslintMessage {
|
|
2
|
+
ruleId: string | null;
|
|
3
|
+
severity: 1 | 2;
|
|
4
|
+
message: string;
|
|
5
|
+
line: number;
|
|
6
|
+
column: number;
|
|
7
|
+
endLine?: number;
|
|
8
|
+
endColumn?: number;
|
|
9
|
+
suggestions?: Array<{
|
|
10
|
+
desc: string;
|
|
11
|
+
}>;
|
|
12
|
+
fixable: boolean;
|
|
13
|
+
}
|
|
14
|
+
export interface EslintFileResult {
|
|
15
|
+
filePath: string;
|
|
16
|
+
messages: EslintMessage[];
|
|
17
|
+
errorCount: number;
|
|
18
|
+
warningCount: number;
|
|
19
|
+
fixableErrorCount: number;
|
|
20
|
+
fixableWarningCount: number;
|
|
21
|
+
}
|
|
22
|
+
export interface TscError {
|
|
23
|
+
filePath: string;
|
|
24
|
+
line: number;
|
|
25
|
+
column: number;
|
|
26
|
+
severity: 'error' | 'warning';
|
|
27
|
+
code: string;
|
|
28
|
+
message: string;
|
|
29
|
+
}
|
|
30
|
+
export interface RuleSummary {
|
|
31
|
+
ruleId: string;
|
|
32
|
+
count: number;
|
|
33
|
+
severity: number;
|
|
34
|
+
files: string[];
|
|
35
|
+
}
|
|
36
|
+
export interface CodeQualityReport {
|
|
37
|
+
eslint: {
|
|
38
|
+
available: boolean;
|
|
39
|
+
results: EslintFileResult[];
|
|
40
|
+
totalErrors: number;
|
|
41
|
+
totalWarnings: number;
|
|
42
|
+
totalFixable: number;
|
|
43
|
+
filesAffected: number;
|
|
44
|
+
topRules: RuleSummary[];
|
|
45
|
+
error?: string;
|
|
46
|
+
};
|
|
47
|
+
tsc: {
|
|
48
|
+
available: boolean;
|
|
49
|
+
errors: TscError[];
|
|
50
|
+
totalErrors: number;
|
|
51
|
+
totalWarnings: number;
|
|
52
|
+
error?: string;
|
|
53
|
+
};
|
|
54
|
+
scannedAt: number;
|
|
55
|
+
fromCache?: boolean;
|
|
56
|
+
}
|
|
57
|
+
export declare class CodeQualityService {
|
|
58
|
+
private readonly logger;
|
|
59
|
+
private cachedReport;
|
|
60
|
+
runCheck(force?: boolean): Promise<CodeQualityReport>;
|
|
61
|
+
private runEslint;
|
|
62
|
+
private processEslintResults;
|
|
63
|
+
private runTsc;
|
|
64
|
+
private parseTscOutput;
|
|
65
|
+
}
|
|
@@ -0,0 +1,216 @@
|
|
|
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
19
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
20
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
21
|
+
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;
|
|
22
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
23
|
+
};
|
|
24
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
+
var ownKeys = function(o) {
|
|
26
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
+
var ar = [];
|
|
28
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
+
return ar;
|
|
30
|
+
};
|
|
31
|
+
return ownKeys(o);
|
|
32
|
+
};
|
|
33
|
+
return function (mod) {
|
|
34
|
+
if (mod && mod.__esModule) return mod;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
+
__setModuleDefault(result, mod);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
})();
|
|
41
|
+
var CodeQualityService_1;
|
|
42
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
|
+
exports.CodeQualityService = void 0;
|
|
44
|
+
const common_1 = require("@nestjs/common");
|
|
45
|
+
const child_process_1 = require("child_process");
|
|
46
|
+
const util_1 = require("util");
|
|
47
|
+
const path = __importStar(require("path"));
|
|
48
|
+
const fs = __importStar(require("fs"));
|
|
49
|
+
const execAsync = (0, util_1.promisify)(child_process_1.exec);
|
|
50
|
+
const CACHE_TTL_MS = 5 * 60 * 1000;
|
|
51
|
+
let CodeQualityService = CodeQualityService_1 = class CodeQualityService {
|
|
52
|
+
constructor() {
|
|
53
|
+
this.logger = new common_1.Logger(CodeQualityService_1.name);
|
|
54
|
+
this.cachedReport = null;
|
|
55
|
+
}
|
|
56
|
+
async runCheck(force = false) {
|
|
57
|
+
if (!force && this.cachedReport) {
|
|
58
|
+
const age = Date.now() - this.cachedReport.scannedAt;
|
|
59
|
+
if (age < CACHE_TTL_MS) {
|
|
60
|
+
return { ...this.cachedReport, fromCache: true };
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
const cwd = process.cwd();
|
|
64
|
+
const [eslintResult, tscResult] = await Promise.all([
|
|
65
|
+
this.runEslint(cwd),
|
|
66
|
+
this.runTsc(cwd),
|
|
67
|
+
]);
|
|
68
|
+
const report = {
|
|
69
|
+
eslint: eslintResult,
|
|
70
|
+
tsc: tscResult,
|
|
71
|
+
scannedAt: Date.now(),
|
|
72
|
+
};
|
|
73
|
+
this.cachedReport = report;
|
|
74
|
+
return report;
|
|
75
|
+
}
|
|
76
|
+
async runEslint(cwd) {
|
|
77
|
+
const localBin = path.join(cwd, 'node_modules', '.bin', 'eslint');
|
|
78
|
+
const bin = fs.existsSync(localBin) ? localBin : 'npx eslint';
|
|
79
|
+
const target = fs.existsSync(path.join(cwd, 'src')) ? 'src' : '.';
|
|
80
|
+
const ignores = ['dist', 'build', 'coverage', '.next', 'out']
|
|
81
|
+
.map(d => `--ignore-pattern '${d}/**'`)
|
|
82
|
+
.join(' ');
|
|
83
|
+
const cmd = `${bin} --format json ${ignores} ${target}`;
|
|
84
|
+
const execOpts = { cwd, timeout: 120_000, maxBuffer: 100 * 1024 * 1024, env: process.env };
|
|
85
|
+
try {
|
|
86
|
+
const { stdout } = await execAsync(cmd, execOpts);
|
|
87
|
+
const results = JSON.parse(stdout);
|
|
88
|
+
return this.processEslintResults(results, cwd);
|
|
89
|
+
}
|
|
90
|
+
catch (e) {
|
|
91
|
+
if (e.stdout) {
|
|
92
|
+
try {
|
|
93
|
+
const results = JSON.parse(e.stdout);
|
|
94
|
+
return this.processEslintResults(results, cwd);
|
|
95
|
+
}
|
|
96
|
+
catch { }
|
|
97
|
+
}
|
|
98
|
+
this.logger.warn(`ESLint failed: ${e.message}`);
|
|
99
|
+
return {
|
|
100
|
+
available: false,
|
|
101
|
+
results: [],
|
|
102
|
+
totalErrors: 0,
|
|
103
|
+
totalWarnings: 0,
|
|
104
|
+
totalFixable: 0,
|
|
105
|
+
filesAffected: 0,
|
|
106
|
+
topRules: [],
|
|
107
|
+
error: e.message,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
processEslintResults(raw, cwd) {
|
|
112
|
+
const results = raw
|
|
113
|
+
.filter(r => r.messages && r.messages.length > 0)
|
|
114
|
+
.map(r => ({
|
|
115
|
+
filePath: path.relative(cwd, r.filePath),
|
|
116
|
+
messages: r.messages.map(m => ({
|
|
117
|
+
ruleId: m.ruleId || null,
|
|
118
|
+
severity: m.severity,
|
|
119
|
+
message: m.message,
|
|
120
|
+
line: m.line,
|
|
121
|
+
column: m.column,
|
|
122
|
+
endLine: m.endLine,
|
|
123
|
+
endColumn: m.endColumn,
|
|
124
|
+
fixable: !!m.fix,
|
|
125
|
+
suggestions: m.suggestions?.map((s) => ({ desc: s.desc })),
|
|
126
|
+
})),
|
|
127
|
+
errorCount: r.errorCount,
|
|
128
|
+
warningCount: r.warningCount,
|
|
129
|
+
fixableErrorCount: r.fixableErrorCount || 0,
|
|
130
|
+
fixableWarningCount: r.fixableWarningCount || 0,
|
|
131
|
+
}));
|
|
132
|
+
const totalErrors = results.reduce((s, r) => s + r.errorCount, 0);
|
|
133
|
+
const totalWarnings = results.reduce((s, r) => s + r.warningCount, 0);
|
|
134
|
+
const totalFixable = results.reduce((s, r) => s + r.fixableErrorCount + r.fixableWarningCount, 0);
|
|
135
|
+
const ruleMap = new Map();
|
|
136
|
+
results.forEach(r => {
|
|
137
|
+
r.messages.forEach(m => {
|
|
138
|
+
if (!m.ruleId)
|
|
139
|
+
return;
|
|
140
|
+
const entry = ruleMap.get(m.ruleId) || { count: 0, severity: m.severity, files: new Set() };
|
|
141
|
+
entry.count++;
|
|
142
|
+
entry.severity = Math.max(entry.severity, m.severity);
|
|
143
|
+
entry.files.add(r.filePath);
|
|
144
|
+
ruleMap.set(m.ruleId, entry);
|
|
145
|
+
});
|
|
146
|
+
});
|
|
147
|
+
const topRules = Array.from(ruleMap.entries())
|
|
148
|
+
.map(([ruleId, { count, severity, files }]) => ({ ruleId, count, severity, files: Array.from(files) }))
|
|
149
|
+
.sort((a, b) => b.severity - a.severity || b.count - a.count)
|
|
150
|
+
.slice(0, 30);
|
|
151
|
+
return {
|
|
152
|
+
available: true,
|
|
153
|
+
results,
|
|
154
|
+
totalErrors,
|
|
155
|
+
totalWarnings,
|
|
156
|
+
totalFixable,
|
|
157
|
+
filesAffected: results.length,
|
|
158
|
+
topRules,
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
async runTsc(cwd) {
|
|
162
|
+
if (!fs.existsSync(path.join(cwd, 'tsconfig.json'))) {
|
|
163
|
+
return { available: false, errors: [], totalErrors: 0, totalWarnings: 0, error: 'No tsconfig.json found' };
|
|
164
|
+
}
|
|
165
|
+
try {
|
|
166
|
+
const localTsc = path.join(cwd, 'node_modules', '.bin', 'tsc');
|
|
167
|
+
const tscBin = fs.existsSync(localTsc) ? localTsc : 'npx tsc';
|
|
168
|
+
const { stdout } = await execAsync(`${tscBin} --noEmit 2>&1 || true`, { cwd, timeout: 120_000, maxBuffer: 100 * 1024 * 1024, env: process.env });
|
|
169
|
+
const errors = this.parseTscOutput(stdout, cwd);
|
|
170
|
+
return {
|
|
171
|
+
available: true,
|
|
172
|
+
errors,
|
|
173
|
+
totalErrors: errors.filter(e => e.severity === 'error').length,
|
|
174
|
+
totalWarnings: errors.filter(e => e.severity === 'warning').length,
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
catch (e) {
|
|
178
|
+
const out = e.stdout || e.stderr || '';
|
|
179
|
+
if (out) {
|
|
180
|
+
const errors = this.parseTscOutput(out, cwd);
|
|
181
|
+
return {
|
|
182
|
+
available: true,
|
|
183
|
+
errors,
|
|
184
|
+
totalErrors: errors.filter(e => e.severity === 'error').length,
|
|
185
|
+
totalWarnings: errors.filter(e => e.severity === 'warning').length,
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
return { available: false, errors: [], totalErrors: 0, totalWarnings: 0, error: e.message };
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
parseTscOutput(output, cwd) {
|
|
192
|
+
const errors = [];
|
|
193
|
+
const pattern = /^(.+?)\((\d+),(\d+)\):\s+(error|warning)\s+(TS\d+):\s+(.+)$/gm;
|
|
194
|
+
let match;
|
|
195
|
+
while ((match = pattern.exec(output)) !== null) {
|
|
196
|
+
const [, filePath, line, col, severity, code, message] = match;
|
|
197
|
+
try {
|
|
198
|
+
errors.push({
|
|
199
|
+
filePath: path.relative(cwd, path.resolve(cwd, filePath.trim())),
|
|
200
|
+
line: parseInt(line),
|
|
201
|
+
column: parseInt(col),
|
|
202
|
+
severity: severity,
|
|
203
|
+
code,
|
|
204
|
+
message: message.trim(),
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
catch { }
|
|
208
|
+
}
|
|
209
|
+
return errors;
|
|
210
|
+
}
|
|
211
|
+
};
|
|
212
|
+
exports.CodeQualityService = CodeQualityService;
|
|
213
|
+
exports.CodeQualityService = CodeQualityService = CodeQualityService_1 = __decorate([
|
|
214
|
+
(0, common_1.Injectable)()
|
|
215
|
+
], CodeQualityService);
|
|
216
|
+
//# sourceMappingURL=code-quality.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code-quality.service.js","sourceRoot":"","sources":["../../../libs/nestjs-profiler/src/services/code-quality.service.ts"],"names":[],"mappings":"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"}
|