@reliverse/dler 2.0.0 → 2.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.
Files changed (135) hide show
  1. package/dist/cli.d.ts +2 -0
  2. package/dist/cli.js +3 -0
  3. package/dist/cmds/build/cmd.d.ts +2 -0
  4. package/dist/cmds/build/cmd.js +564 -0
  5. package/dist/cmds/clean/cmd.d.ts +2 -0
  6. package/dist/cmds/clean/cmd.js +146 -0
  7. package/dist/cmds/clean/impl.d.ts +2 -0
  8. package/dist/cmds/clean/impl.js +627 -0
  9. package/dist/cmds/clean/presets.d.ts +10 -0
  10. package/dist/cmds/clean/presets.js +112 -0
  11. package/dist/cmds/clean/types.d.ts +62 -0
  12. package/dist/cmds/clean/types.js +0 -0
  13. package/dist/cmds/init/cmd.d.ts +3 -0
  14. package/dist/cmds/init/cmd.js +56 -0
  15. package/dist/cmds/init/impl/config.d.ts +45 -0
  16. package/dist/cmds/init/impl/config.js +99 -0
  17. package/dist/cmds/init/impl/generators.d.ts +6 -0
  18. package/dist/cmds/init/impl/generators.js +178 -0
  19. package/dist/cmds/init/impl/prompts.d.ts +2 -0
  20. package/dist/cmds/init/impl/prompts.js +98 -0
  21. package/dist/cmds/init/impl/types.d.ts +22 -0
  22. package/dist/cmds/init/impl/types.js +0 -0
  23. package/dist/cmds/init/impl/utils.d.ts +4 -0
  24. package/dist/cmds/init/impl/utils.js +11 -0
  25. package/dist/cmds/init/impl/validators.d.ts +4 -0
  26. package/dist/cmds/init/impl/validators.js +42 -0
  27. package/dist/cmds/integrate/cmd.d.ts +3 -0
  28. package/dist/cmds/integrate/cmd.js +70 -0
  29. package/dist/cmds/integrate/impl.d.ts +7 -0
  30. package/dist/cmds/integrate/impl.js +127 -0
  31. package/dist/cmds/integrate/integrations/base.d.ts +13 -0
  32. package/dist/cmds/integrate/integrations/base.js +41 -0
  33. package/dist/cmds/integrate/integrations/nextjs.d.ts +16 -0
  34. package/dist/cmds/integrate/integrations/nextjs.js +167 -0
  35. package/dist/cmds/integrate/integrations/registry.d.ts +7 -0
  36. package/dist/cmds/integrate/integrations/registry.js +31 -0
  37. package/dist/cmds/integrate/integrations/ultracite.d.ts +11 -0
  38. package/dist/cmds/integrate/integrations/ultracite.js +40 -0
  39. package/dist/cmds/integrate/types.d.ts +39 -0
  40. package/dist/cmds/integrate/types.js +0 -0
  41. package/dist/cmds/integrate/utils/biome.d.ts +4 -0
  42. package/dist/cmds/integrate/utils/biome.js +140 -0
  43. package/dist/cmds/integrate/utils/context.d.ts +3 -0
  44. package/dist/cmds/integrate/utils/context.js +111 -0
  45. package/dist/cmds/integrate/utils/temp.d.ts +3 -0
  46. package/dist/cmds/integrate/utils/temp.js +36 -0
  47. package/dist/cmds/perf/analysis/bundle.d.ts +20 -0
  48. package/dist/cmds/perf/analysis/bundle.js +225 -0
  49. package/dist/cmds/perf/analysis/filesystem.d.ts +27 -0
  50. package/dist/cmds/perf/analysis/filesystem.js +246 -0
  51. package/dist/cmds/perf/analysis/monorepo.d.ts +29 -0
  52. package/dist/cmds/perf/analysis/monorepo.js +307 -0
  53. package/dist/cmds/perf/benchmarks/command.d.ts +21 -0
  54. package/dist/cmds/perf/benchmarks/command.js +162 -0
  55. package/dist/cmds/perf/benchmarks/memory.d.ts +41 -0
  56. package/dist/cmds/perf/benchmarks/memory.js +169 -0
  57. package/dist/cmds/perf/benchmarks/runner.d.ts +22 -0
  58. package/dist/cmds/perf/benchmarks/runner.js +157 -0
  59. package/dist/cmds/perf/cmd.d.ts +2 -0
  60. package/dist/cmds/perf/cmd.js +238 -0
  61. package/dist/cmds/perf/impl.d.ts +24 -0
  62. package/dist/cmds/perf/impl.js +304 -0
  63. package/dist/cmds/perf/reporters/console.d.ts +12 -0
  64. package/dist/cmds/perf/reporters/console.js +257 -0
  65. package/dist/cmds/perf/reporters/html.d.ts +27 -0
  66. package/dist/cmds/perf/reporters/html.js +881 -0
  67. package/dist/cmds/perf/reporters/json.d.ts +9 -0
  68. package/dist/cmds/perf/reporters/json.js +32 -0
  69. package/dist/cmds/perf/types.d.ts +184 -0
  70. package/dist/cmds/perf/types.js +0 -0
  71. package/dist/cmds/perf/utils/cache.d.ts +23 -0
  72. package/dist/cmds/perf/utils/cache.js +171 -0
  73. package/dist/cmds/perf/utils/formatter.d.ts +17 -0
  74. package/dist/cmds/perf/utils/formatter.js +134 -0
  75. package/dist/cmds/perf/utils/stats.d.ts +15 -0
  76. package/dist/cmds/perf/utils/stats.js +101 -0
  77. package/dist/cmds/publish/cmd.d.ts +3 -0
  78. package/dist/cmds/publish/cmd.js +189 -0
  79. package/dist/cmds/shell/cmd.d.ts +3 -0
  80. package/dist/cmds/shell/cmd.js +50 -0
  81. package/dist/cmds/tsc/cache.d.ts +27 -0
  82. package/dist/cmds/tsc/cache.js +160 -0
  83. package/dist/cmds/tsc/cmd.d.ts +2 -0
  84. package/dist/cmds/tsc/cmd.js +111 -0
  85. package/dist/cmds/tsc/impl.d.ts +41 -0
  86. package/dist/cmds/tsc/impl.js +572 -0
  87. package/dist/cmds/tsc/types.d.ts +57 -0
  88. package/dist/cmds/tsc/types.js +0 -0
  89. package/package.json +4 -11
  90. package/src/cli.ts +8 -0
  91. package/src/cmds/build/cmd.ts +582 -0
  92. package/src/cmds/clean/cmd.ts +166 -0
  93. package/src/cmds/clean/impl.ts +900 -0
  94. package/src/cmds/clean/presets.ts +158 -0
  95. package/src/cmds/clean/types.ts +71 -0
  96. package/src/cmds/init/cmd.ts +68 -0
  97. package/src/cmds/init/impl/config.ts +105 -0
  98. package/src/cmds/init/impl/generators.ts +220 -0
  99. package/src/cmds/init/impl/prompts.ts +137 -0
  100. package/src/cmds/init/impl/types.ts +25 -0
  101. package/src/cmds/init/impl/utils.ts +17 -0
  102. package/src/cmds/init/impl/validators.ts +55 -0
  103. package/src/cmds/integrate/cmd.ts +82 -0
  104. package/src/cmds/integrate/impl.ts +204 -0
  105. package/src/cmds/integrate/integrations/base.ts +69 -0
  106. package/src/cmds/integrate/integrations/nextjs.ts +227 -0
  107. package/src/cmds/integrate/integrations/registry.ts +45 -0
  108. package/src/cmds/integrate/integrations/ultracite.ts +53 -0
  109. package/src/cmds/integrate/types.ts +48 -0
  110. package/src/cmds/integrate/utils/biome.ts +173 -0
  111. package/src/cmds/integrate/utils/context.ts +148 -0
  112. package/src/cmds/integrate/utils/temp.ts +47 -0
  113. package/src/cmds/perf/analysis/bundle.ts +311 -0
  114. package/src/cmds/perf/analysis/filesystem.ts +324 -0
  115. package/src/cmds/perf/analysis/monorepo.ts +439 -0
  116. package/src/cmds/perf/benchmarks/command.ts +230 -0
  117. package/src/cmds/perf/benchmarks/memory.ts +249 -0
  118. package/src/cmds/perf/benchmarks/runner.ts +220 -0
  119. package/src/cmds/perf/cmd.ts +285 -0
  120. package/src/cmds/perf/impl.ts +411 -0
  121. package/src/cmds/perf/reporters/console.ts +331 -0
  122. package/src/cmds/perf/reporters/html.ts +984 -0
  123. package/src/cmds/perf/reporters/json.ts +42 -0
  124. package/src/cmds/perf/types.ts +220 -0
  125. package/src/cmds/perf/utils/cache.ts +234 -0
  126. package/src/cmds/perf/utils/formatter.ts +190 -0
  127. package/src/cmds/perf/utils/stats.ts +153 -0
  128. package/src/cmds/publish/cmd.ts +215 -0
  129. package/src/cmds/shell/cmd.ts +61 -0
  130. package/src/cmds/tsc/cache.ts +237 -0
  131. package/src/cmds/tsc/cmd.ts +139 -0
  132. package/src/cmds/tsc/impl.ts +855 -0
  133. package/src/cmds/tsc/types.ts +66 -0
  134. package/tsconfig.json +9 -0
  135. package/cli.js +0 -1316
@@ -0,0 +1,257 @@
1
+ import { logger } from "@reliverse/dler-logger";
2
+ import {
3
+ formatBottleneckType,
4
+ formatBytes,
5
+ formatDuration,
6
+ formatNumber,
7
+ formatPercentage,
8
+ formatRelativeChange,
9
+ formatSeverity,
10
+ formatTable,
11
+ truncatePath
12
+ } from "../utils/formatter.js";
13
+ export class ConsoleReporter {
14
+ verbose;
15
+ constructor(verbose = false) {
16
+ this.verbose = verbose;
17
+ }
18
+ report(report) {
19
+ logger.log("\u2501".repeat(80));
20
+ logger.log("\u{1F4CA} Performance Analysis Report");
21
+ logger.log("\u2501".repeat(80));
22
+ if (report.benchmark) {
23
+ this.reportBenchmark(report.benchmark);
24
+ }
25
+ if (report.bundleAnalysis) {
26
+ this.reportBundleAnalysis(report.bundleAnalysis);
27
+ }
28
+ if (report.fileSystemAnalysis) {
29
+ this.reportFileSystemAnalysis(report.fileSystemAnalysis);
30
+ }
31
+ if (report.monorepoAnalysis) {
32
+ this.reportMonorepoAnalysis(report.monorepoAnalysis);
33
+ }
34
+ if (report.baseline) {
35
+ this.reportBaselineComparison(report.baseline);
36
+ }
37
+ logger.log("\u2501".repeat(80));
38
+ }
39
+ reportBenchmark(result) {
40
+ logger.log("\n\u{1F680} Command Benchmark Results");
41
+ logger.log("\u2500".repeat(40));
42
+ logger.log(`Command: ${result.command}`);
43
+ logger.log(`Runs: ${result.runs} (${result.warmup} warmup)`);
44
+ logger.log(`Concurrency: ${result.concurrency}`);
45
+ logger.log(`Success: ${result.success ? "\u2705" : "\u274C"}`);
46
+ if (!result.success && result.error) {
47
+ logger.error(`Error: ${result.error}`);
48
+ }
49
+ logger.log("\n\u23F1\uFE0F Timing Statistics:");
50
+ logger.log(` Mean: ${formatDuration(result.statistics.mean)}`);
51
+ logger.log(` Median: ${formatDuration(result.statistics.median)}`);
52
+ logger.log(` Min: ${formatDuration(result.statistics.min)}`);
53
+ logger.log(` Max: ${formatDuration(result.statistics.max)}`);
54
+ logger.log(` P95: ${formatDuration(result.statistics.p95)}`);
55
+ logger.log(` P99: ${formatDuration(result.statistics.p99)}`);
56
+ logger.log(
57
+ ` Std Dev: ${formatDuration(result.statistics.standardDeviation)}`
58
+ );
59
+ logger.log(
60
+ ` CV: ${(result.statistics.coefficientOfVariation * 100).toFixed(2)}%`
61
+ );
62
+ logger.log("\n\u{1F4BE} Memory Statistics:");
63
+ logger.log(` Peak RSS: ${formatBytes(result.memory.peak.rss)}`);
64
+ logger.log(` Avg RSS: ${formatBytes(result.memory.average.rss)}`);
65
+ logger.log(` Peak Heap: ${formatBytes(result.memory.peak.heapUsed)}`);
66
+ logger.log(` Avg Heap: ${formatBytes(result.memory.average.heapUsed)}`);
67
+ logger.log(` Growth: ${formatBytes(result.memory.growth)}`);
68
+ if (this.verbose && result.measurements.length > 0) {
69
+ logger.log("\n\u{1F4CB} Individual Runs:");
70
+ const headers = ["Run", "Duration", "RSS", "Heap", "Status"];
71
+ const rows = result.measurements.map((m, i) => [
72
+ (i + 1).toString(),
73
+ formatDuration(m.duration),
74
+ formatBytes(m.memory.rss),
75
+ formatBytes(m.memory.heapUsed),
76
+ m.success ? "\u2705" : "\u274C"
77
+ ]);
78
+ logger.log(formatTable(headers, rows));
79
+ }
80
+ }
81
+ reportBundleAnalysis(result) {
82
+ logger.log("\n\u{1F4E6} Bundle Analysis Results");
83
+ logger.log("\u2500".repeat(40));
84
+ logger.log(`Target: ${result.target}`);
85
+ logger.log(`Total Size: ${formatBytes(result.totalSize)}`);
86
+ logger.log(`File Count: ${formatNumber(result.fileCount)}`);
87
+ logger.log(
88
+ `Compression Potential: ${result.compressionPotential.toFixed(1)}%`
89
+ );
90
+ if (result.largestFiles.length > 0) {
91
+ logger.log("\n\u{1F4C1} Largest Files:");
92
+ const headers = ["File", "Size", "Percentage", "Type"];
93
+ const rows = result.largestFiles.map((file) => [
94
+ truncatePath(file.path, 50),
95
+ formatBytes(file.size),
96
+ formatPercentage(file.percentage, 100),
97
+ file.type
98
+ ]);
99
+ logger.log(formatTable(headers, rows));
100
+ }
101
+ if (result.modules.length > 0) {
102
+ logger.log("\n\u{1F517} Top Modules:");
103
+ const headers = ["Module", "Size", "Percentage", "Type"];
104
+ const rows = result.modules.map((module) => [
105
+ truncatePath(module.name, 50),
106
+ formatBytes(module.size),
107
+ formatPercentage(module.percentage, 100),
108
+ module.isExternal ? "External" : "Internal"
109
+ ]);
110
+ logger.log(formatTable(headers, rows));
111
+ }
112
+ if (result.duplicates.length > 0) {
113
+ logger.log("\n\u{1F504} Duplicate Dependencies:");
114
+ const headers = ["Module", "Count", "Total Size", "Locations"];
115
+ const rows = result.duplicates.map((dup) => [
116
+ truncatePath(dup.name, 30),
117
+ dup.count.toString(),
118
+ formatBytes(dup.totalSize),
119
+ dup.locations.length.toString()
120
+ ]);
121
+ logger.log(formatTable(headers, rows));
122
+ }
123
+ }
124
+ reportFileSystemAnalysis(result) {
125
+ logger.log("\n\u{1F4C1} File System Analysis Results");
126
+ logger.log("\u2500".repeat(40));
127
+ logger.log(`Target: ${result.target}`);
128
+ logger.log(`Total Files: ${formatNumber(result.totalFiles)}`);
129
+ logger.log(`Total Size: ${formatBytes(result.totalSize)}`);
130
+ logger.log(`Directories: ${formatNumber(result.directoryCount)}`);
131
+ logger.log(`Max Depth: ${result.maxDepth}`);
132
+ logger.log(
133
+ `Compression Potential: ${result.compressionPotential.toFixed(1)}%`
134
+ );
135
+ if (result.largestFiles.length > 0) {
136
+ logger.log("\n\u{1F4C4} Largest Files:");
137
+ const headers = ["File", "Size", "Percentage", "Type"];
138
+ const rows = result.largestFiles.map((file) => [
139
+ truncatePath(file.path, 50),
140
+ formatBytes(file.size),
141
+ formatPercentage(file.percentage, 100),
142
+ file.type
143
+ ]);
144
+ logger.log(formatTable(headers, rows));
145
+ }
146
+ if (result.largestDirectories.length > 0) {
147
+ logger.log("\n\u{1F4C2} Largest Directories:");
148
+ const headers = ["Directory", "Size", "Files", "Depth"];
149
+ const rows = result.largestDirectories.map((dir) => [
150
+ truncatePath(dir.path, 50),
151
+ formatBytes(dir.size),
152
+ formatNumber(dir.fileCount),
153
+ dir.depth.toString()
154
+ ]);
155
+ logger.log(formatTable(headers, rows));
156
+ }
157
+ if (result.fileTypes.length > 0) {
158
+ logger.log("\n\u{1F4CA} File Type Distribution:");
159
+ const headers = ["Type", "Count", "Size", "Percentage"];
160
+ const rows = result.fileTypes.map((type) => [
161
+ type.extension || "no-extension",
162
+ formatNumber(type.count),
163
+ formatBytes(type.totalSize),
164
+ formatPercentage(type.percentage, 100)
165
+ ]);
166
+ logger.log(formatTable(headers, rows));
167
+ }
168
+ }
169
+ reportMonorepoAnalysis(result) {
170
+ logger.log("\n\u{1F3D7}\uFE0F Monorepo Analysis Results");
171
+ logger.log("\u2500".repeat(40));
172
+ logger.log(`Packages: ${formatNumber(result.packages.length)}`);
173
+ logger.log(
174
+ `Dependencies: ${formatNumber(result.dependencies.edges.length)}`
175
+ );
176
+ logger.log(`Circular Dependencies: ${result.circularDependencies.length}`);
177
+ logger.log(`Suggested Concurrency: ${result.suggestedConcurrency}`);
178
+ if (result.buildOrder.length > 0) {
179
+ logger.log("\n\u{1F504} Build Order:");
180
+ const levels = result.dependencies.levels;
181
+ for (let i = 0; i < levels.length; i++) {
182
+ const level = levels[i];
183
+ logger.log(` Level ${i + 1}: ${level.join(", ")}`);
184
+ }
185
+ }
186
+ if (result.criticalPath.length > 0) {
187
+ logger.log("\n\u{1F3AF} Critical Path:");
188
+ logger.log(` ${result.criticalPath.slice(0, 10).join(" \u2192 ")}`);
189
+ if (result.criticalPath.length > 10) {
190
+ logger.log(` ... and ${result.criticalPath.length - 10} more`);
191
+ }
192
+ }
193
+ if (result.circularDependencies.length > 0) {
194
+ logger.log("\n\u{1F504} Circular Dependencies:");
195
+ for (const circular of result.circularDependencies) {
196
+ logger.log(
197
+ ` ${formatSeverity(circular.severity)} ${circular.cycle.join(" \u2192 ")}`
198
+ );
199
+ }
200
+ }
201
+ if (result.bottlenecks.length > 0) {
202
+ logger.log("\n\u26A0\uFE0F Bottlenecks:");
203
+ const headers = ["Package", "Type", "Impact", "Suggestion"];
204
+ const rows = result.bottlenecks.map((bottleneck) => [
205
+ bottleneck.package,
206
+ formatBottleneckType(bottleneck.type),
207
+ bottleneck.impact.toString(),
208
+ bottleneck.suggestion
209
+ ]);
210
+ logger.log(formatTable(headers, rows));
211
+ }
212
+ if (this.verbose) {
213
+ logger.log("\n\u{1F4E6} Package Details:");
214
+ const headers = ["Package", "Dependencies", "Dependents", "Type"];
215
+ const rows = result.packages.map((pkg) => [
216
+ pkg.name,
217
+ pkg.dependencies.length.toString(),
218
+ pkg.dependents.length.toString(),
219
+ pkg.dependencies.length > 10 ? "Heavy" : "Light"
220
+ ]);
221
+ logger.log(formatTable(headers, rows));
222
+ }
223
+ }
224
+ reportBaselineComparison(baseline) {
225
+ if (!baseline?.exists) return;
226
+ logger.log("\n\u{1F4C8} Baseline Comparison");
227
+ logger.log("\u2500".repeat(40));
228
+ if (baseline.improvement !== void 0) {
229
+ logger.log(
230
+ `Performance: ${formatRelativeChange(0, baseline.improvement)}`
231
+ );
232
+ }
233
+ if (baseline.regression !== void 0) {
234
+ logger.log(
235
+ `Performance: ${formatRelativeChange(0, -baseline.regression)}`
236
+ );
237
+ }
238
+ if (baseline.changes) {
239
+ const changes = baseline.changes;
240
+ if (changes.duration !== void 0) {
241
+ logger.log(`Duration: ${formatRelativeChange(0, changes.duration)}`);
242
+ }
243
+ if (changes.memory !== void 0) {
244
+ logger.log(`Memory: ${formatRelativeChange(0, changes.memory)}`);
245
+ }
246
+ if (changes.size !== void 0) {
247
+ logger.log(`Size: ${formatRelativeChange(0, changes.size)}`);
248
+ }
249
+ if (changes.files !== void 0) {
250
+ logger.log(`Files: ${formatRelativeChange(0, changes.files)}`);
251
+ }
252
+ }
253
+ }
254
+ }
255
+ export const createConsoleReporter = (verbose = false) => {
256
+ return new ConsoleReporter(verbose);
257
+ };
@@ -0,0 +1,27 @@
1
+ import type { PerfReport } from "../types.js";
2
+ export declare class HtmlReporter {
3
+ private outputPath?;
4
+ constructor(outputPath?: string);
5
+ report(report: PerfReport): void;
6
+ private generateHtml;
7
+ private generateBenchmarkSection;
8
+ private generateBundleAnalysisSection;
9
+ private generateFileSystemAnalysisSection;
10
+ private generateMonorepoAnalysisSection;
11
+ private generateBaselineComparisonSection;
12
+ private generateFileTable;
13
+ private generateModuleTable;
14
+ private generateDuplicateTable;
15
+ private generateDirectoryTable;
16
+ private generateFileTypeTable;
17
+ private generateBuildOrderSection;
18
+ private generateCircularDependenciesSection;
19
+ private generateBottlenecksSection;
20
+ private generateTimingChart;
21
+ private truncatePath;
22
+ private getStyles;
23
+ private getScripts;
24
+ static save(report: PerfReport, outputPath: string): void;
25
+ static print(report: PerfReport): void;
26
+ }
27
+ export declare const createHtmlReporter: (outputPath?: string) => HtmlReporter;