@paretools/build 0.8.5 → 0.10.0

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 (41) hide show
  1. package/README.md +1 -1
  2. package/dist/index.js +1 -1
  3. package/dist/index.js.map +1 -1
  4. package/dist/lib/build-runner.d.ts +2 -2
  5. package/dist/lib/build-runner.d.ts.map +1 -1
  6. package/dist/lib/build-runner.js +6 -6
  7. package/dist/lib/build-runner.js.map +1 -1
  8. package/dist/lib/formatters.d.ts +1 -0
  9. package/dist/lib/formatters.d.ts.map +1 -1
  10. package/dist/lib/formatters.js +61 -9
  11. package/dist/lib/formatters.js.map +1 -1
  12. package/dist/lib/parsers.d.ts +14 -5
  13. package/dist/lib/parsers.d.ts.map +1 -1
  14. package/dist/lib/parsers.js +336 -28
  15. package/dist/lib/parsers.js.map +1 -1
  16. package/dist/schemas/index.d.ts +126 -4
  17. package/dist/schemas/index.d.ts.map +1 -1
  18. package/dist/schemas/index.js +51 -2
  19. package/dist/schemas/index.js.map +1 -1
  20. package/dist/tools/build.d.ts.map +1 -1
  21. package/dist/tools/build.js +29 -12
  22. package/dist/tools/build.js.map +1 -1
  23. package/dist/tools/esbuild.d.ts.map +1 -1
  24. package/dist/tools/esbuild.js +130 -19
  25. package/dist/tools/esbuild.js.map +1 -1
  26. package/dist/tools/nx.d.ts.map +1 -1
  27. package/dist/tools/nx.js +85 -14
  28. package/dist/tools/nx.js.map +1 -1
  29. package/dist/tools/tsc.d.ts.map +1 -1
  30. package/dist/tools/tsc.js +48 -10
  31. package/dist/tools/tsc.js.map +1 -1
  32. package/dist/tools/turbo.d.ts.map +1 -1
  33. package/dist/tools/turbo.js +97 -13
  34. package/dist/tools/turbo.js.map +1 -1
  35. package/dist/tools/vite-build.d.ts.map +1 -1
  36. package/dist/tools/vite-build.js +83 -15
  37. package/dist/tools/vite-build.js.map +1 -1
  38. package/dist/tools/webpack.d.ts.map +1 -1
  39. package/dist/tools/webpack.js +78 -15
  40. package/dist/tools/webpack.js.map +1 -1
  41. package/package.json +2 -2
@@ -1,10 +1,14 @@
1
1
  // tsc output format: file(line,col): error TSxxxx: message
2
2
  const TSC_DIAGNOSTIC_RE = /^(.+?)\((\d+),(\d+)\):\s+(error|warning)\s+TS(\d+):\s+(.+)$/;
3
+ const TSC_SUMMARY_RE = /^Found\s+(\d+)\s+errors?\s+in\s+(\d+)\s+files?\./;
4
+ const TSC_EMITTED_FILE_RE = /^TSFILE:\s+(.+)$/;
3
5
  /** Parses TypeScript compiler (`tsc`) output into structured diagnostics with file, line, and error code. */
4
6
  export function parseTscOutput(stdout, stderr, exitCode) {
5
7
  const output = stdout + "\n" + stderr;
6
8
  const lines = output.split("\n");
7
9
  const diagnostics = [];
10
+ const emittedFiles = [];
11
+ let totalFiles;
8
12
  for (const line of lines) {
9
13
  const match = line.match(TSC_DIAGNOSTIC_RE);
10
14
  if (match) {
@@ -16,6 +20,16 @@ export function parseTscOutput(stdout, stderr, exitCode) {
16
20
  severity: match[4],
17
21
  message: match[6],
18
22
  });
23
+ continue;
24
+ }
25
+ const summaryMatch = line.match(TSC_SUMMARY_RE);
26
+ if (summaryMatch) {
27
+ totalFiles = Number.parseInt(summaryMatch[2], 10);
28
+ continue;
29
+ }
30
+ const emittedMatch = line.match(TSC_EMITTED_FILE_RE);
31
+ if (emittedMatch) {
32
+ emittedFiles.push(emittedMatch[1].trim());
19
33
  }
20
34
  }
21
35
  const errors = diagnostics.filter((d) => d.severity === "error").length;
@@ -24,10 +38,89 @@ export function parseTscOutput(stdout, stderr, exitCode) {
24
38
  success: exitCode === 0,
25
39
  diagnostics,
26
40
  total: diagnostics.length,
41
+ totalFiles,
42
+ emittedFiles: emittedFiles.length > 0 ? emittedFiles : undefined,
27
43
  errors,
28
44
  warnings,
29
45
  };
30
46
  }
47
+ // ---------------------------------------------------------------------------
48
+ // Improved error/warning heuristics (Gap #78)
49
+ // ---------------------------------------------------------------------------
50
+ /** Patterns that identify an error line in generic build output.
51
+ * Each pattern is tested against the full line (case-insensitive unless
52
+ * the regex already specifies flags). */
53
+ const BUILD_ERROR_PATTERNS = [
54
+ // TypeScript: error TS1234
55
+ /\berror\s+TS\d+/i,
56
+ // Webpack: ERROR in ./path
57
+ /^ERROR\s+in\s+/,
58
+ // Generic: Error: message (capital E, colon after)
59
+ /\bError:\s/,
60
+ // Generic: error: message (lowercase, colon after — compilers like clang, rustc)
61
+ /\berror:\s/,
62
+ // Failed / FAILED
63
+ /\bFAILED\b/,
64
+ // Build failed
65
+ /\bbuild\s+failed\b/i,
66
+ // Compilation failed
67
+ /\bcompilation\s+failed\b/i,
68
+ // Module not found (webpack/rollup)
69
+ /\bModule\s+not\s+found\b/i,
70
+ // SyntaxError
71
+ /\bSyntaxError\b/,
72
+ // ReferenceError, TypeError (runtime errors surfaced during build)
73
+ /\bReferenceError\b/,
74
+ /\bTypeError\b/,
75
+ ];
76
+ /** Patterns that identify a warning line. */
77
+ const BUILD_WARNING_PATTERNS = [
78
+ // TypeScript: warning TS1234
79
+ /\bwarning\s+TS\d+/i,
80
+ // Webpack: WARNING in ./path
81
+ /^WARNING\s+in\s+/,
82
+ // Generic: Warning: message (capital W, colon after)
83
+ /\bWarning:\s/,
84
+ // Generic: warning: message (lowercase, colon after)
85
+ /\bwarning:\s/,
86
+ // WARN prefix (npm, pnpm, vite)
87
+ /\bWARN\b/,
88
+ // Vite/Rollup: (!) prefix for warnings
89
+ /^\(\!\)\s/,
90
+ // Deprecation warnings
91
+ /\bDeprecationWarning\b/,
92
+ /\bdeprecated\b/i,
93
+ ];
94
+ /** Lines that should NOT be classified as errors even though they match error patterns.
95
+ * For example "0 errors" or "Found 0 errors". */
96
+ const BUILD_ERROR_EXCLUDE = [
97
+ /\b0\s+errors?\b/i,
98
+ /\bno\s+errors?\b/i,
99
+ /\berrors?:\s*0\b/i,
100
+ ];
101
+ /** Lines that should NOT be classified as warnings. */
102
+ const BUILD_WARNING_EXCLUDE = [
103
+ /\b0\s+warnings?\b/i,
104
+ /\bno\s+warnings?\b/i,
105
+ /\bwarnings?:\s*0\b/i,
106
+ ];
107
+ function matchesAny(line, patterns) {
108
+ return patterns.some((p) => p.test(line));
109
+ }
110
+ function isErrorLine(line) {
111
+ if (!matchesAny(line, BUILD_ERROR_PATTERNS))
112
+ return false;
113
+ if (matchesAny(line, BUILD_ERROR_EXCLUDE))
114
+ return false;
115
+ return true;
116
+ }
117
+ function isWarningLine(line) {
118
+ if (!matchesAny(line, BUILD_WARNING_PATTERNS))
119
+ return false;
120
+ if (matchesAny(line, BUILD_WARNING_EXCLUDE))
121
+ return false;
122
+ return true;
123
+ }
31
124
  /** Parses generic build command output into structured results with success status, errors, and warnings. */
32
125
  export function parseBuildCommandOutput(stdout, stderr, exitCode, duration) {
33
126
  const output = stdout + "\n" + stderr;
@@ -35,19 +128,23 @@ export function parseBuildCommandOutput(stdout, stderr, exitCode, duration) {
35
128
  const errors = [];
36
129
  const warnings = [];
37
130
  for (const line of lines) {
38
- const lower = line.toLowerCase();
39
- if (lower.includes("error") && !lower.includes("0 error")) {
40
- errors.push(line.trim());
131
+ const trimmed = line.trim();
132
+ if (isErrorLine(trimmed)) {
133
+ errors.push(trimmed);
41
134
  }
42
- else if (lower.includes("warn") && !lower.includes("0 warn")) {
43
- warnings.push(line.trim());
135
+ else if (isWarningLine(trimmed)) {
136
+ warnings.push(trimmed);
44
137
  }
45
138
  }
46
139
  return {
47
140
  success: exitCode === 0,
141
+ exitCode,
48
142
  duration,
49
143
  errors,
50
144
  warnings,
145
+ stdout: stdout || undefined,
146
+ stderr: stderr || undefined,
147
+ outputLines: lines.length,
51
148
  };
52
149
  }
53
150
  // ---------------------------------------------------------------------------
@@ -61,11 +158,24 @@ const ESBUILD_DIAG_HEADER_RE = /^[✘✗X▲]\s+\[(ERROR|WARNING)]\s+(.+)$/;
61
158
  const ESBUILD_LOCATION_RE = /^\s+(.+?):(\d+):(\d+):$/;
62
159
  // Alternate format from older esbuild / --log-level output
63
160
  const ESBUILD_INLINE_RE = /^>\s*(.+?):(\d+):(\d+):\s+(error|warning):\s+(.+)$/;
161
+ function isLikelyEsbuildOutputFile(line) {
162
+ const trimmed = line.trim();
163
+ if (!trimmed)
164
+ return false;
165
+ if (trimmed.includes(" "))
166
+ return false;
167
+ if (trimmed.startsWith("✘") || trimmed.startsWith("▲") || trimmed.startsWith(">"))
168
+ return false;
169
+ if (/^\d+\s+(errors?|warnings?)/i.test(trimmed))
170
+ return false;
171
+ // Accept common path patterns and any extension to cover non-standard outputs.
172
+ return /[\\/]/.test(trimmed) || /\.[A-Za-z0-9_-]+$/.test(trimmed);
173
+ }
64
174
  /** Parses esbuild stderr/stdout into structured errors, warnings, and output file info. */
65
- export function parseEsbuildOutput(stdout, stderr, exitCode, duration) {
175
+ export function parseEsbuildOutput(stdout, stderr, exitCode, duration, metafilePath, metafileContent) {
66
176
  const errors = [];
67
177
  const warnings = [];
68
- const outputFiles = [];
178
+ const outputFiles = new Set();
69
179
  const output = stderr + "\n" + stdout;
70
180
  const lines = output.split("\n");
71
181
  for (let i = 0; i < lines.length; i++) {
@@ -121,24 +231,86 @@ export function parseEsbuildOutput(stdout, stderr, exitCode, duration) {
121
231
  // but with --metafile or verbose mode it may list output files)
122
232
  for (const line of stdout.split("\n")) {
123
233
  const trimmed = line.trim();
124
- if (trimmed && /\.(js|mjs|cjs|css|map)$/.test(trimmed) && !trimmed.includes(" ")) {
125
- outputFiles.push(trimmed);
234
+ if (isLikelyEsbuildOutputFile(trimmed)) {
235
+ outputFiles.add(trimmed);
236
+ }
237
+ }
238
+ // Parse metafile if provided (Gap #80)
239
+ let metafile;
240
+ let outputFileStats;
241
+ if (metafileContent) {
242
+ metafile = parseEsbuildMetafile(metafileContent);
243
+ if (metafile) {
244
+ outputFileStats = Object.entries(metafile.outputs).map(([file, entry]) => ({
245
+ file,
246
+ bytes: entry.bytes,
247
+ }));
248
+ for (const file of Object.keys(metafile.outputs)) {
249
+ outputFiles.add(file);
250
+ }
126
251
  }
127
252
  }
128
253
  return {
129
254
  success: exitCode === 0,
130
255
  errors,
131
256
  warnings,
132
- outputFiles: outputFiles.length > 0 ? outputFiles : undefined,
257
+ outputFiles: outputFiles.size > 0 ? [...outputFiles] : undefined,
258
+ outputFileStats,
133
259
  duration,
260
+ metafile,
134
261
  };
135
262
  }
263
+ /** Parses an esbuild metafile JSON string into a structured metafile object. */
264
+ export function parseEsbuildMetafile(content) {
265
+ try {
266
+ const raw = JSON.parse(content);
267
+ const inputs = {};
268
+ const outputs = {};
269
+ const rawInputs = raw.inputs;
270
+ if (rawInputs && typeof rawInputs === "object") {
271
+ for (const [key, val] of Object.entries(rawInputs)) {
272
+ inputs[key] = { bytes: typeof val.bytes === "number" ? val.bytes : 0 };
273
+ }
274
+ }
275
+ const rawOutputs = raw.outputs;
276
+ if (rawOutputs && typeof rawOutputs === "object") {
277
+ for (const [key, val] of Object.entries(rawOutputs)) {
278
+ outputs[key] = { bytes: typeof val.bytes === "number" ? val.bytes : 0 };
279
+ }
280
+ }
281
+ return { inputs, outputs };
282
+ }
283
+ catch {
284
+ return undefined;
285
+ }
286
+ }
136
287
  // ---------------------------------------------------------------------------
137
288
  // vite-build
138
289
  // ---------------------------------------------------------------------------
139
290
  // Vite output format: dist/assets/index-abc123.js 12.34 kB │ gzip: 4.56 kB
140
291
  // or: dist/index.html 0.45 kB │ gzip: 0.29 kB
141
- const VITE_OUTPUT_RE = /^\s*(.+?)\s{2,}(\d+[\d.]*\s*[kKmMgG]?[bB])\s/;
292
+ const VITE_OUTPUT_RE = /^\s*(.+?)\s{2,}(\d+[\d.]*\s*[kKmMgG]?[bB])(?:\s*[|│]\s*gzip:\s*(\d+[\d.]*\s*[kKmMgG]?[bB]))?/;
293
+ /** Parses a human-readable size string (e.g. "45.2 kB", "1.5 MB", "320 B") into bytes.
294
+ * Returns undefined if the string cannot be parsed. */
295
+ export function parseSizeToBytes(sizeStr) {
296
+ const match = sizeStr.trim().match(/^(\d+(?:\.\d+)?)\s*([kKmMgG]?[bB])$/);
297
+ if (!match)
298
+ return undefined;
299
+ const value = parseFloat(match[1]);
300
+ const unit = match[2].toLowerCase();
301
+ switch (unit) {
302
+ case "b":
303
+ return Math.round(value);
304
+ case "kb":
305
+ return Math.round(value * 1000);
306
+ case "mb":
307
+ return Math.round(value * 1_000_000);
308
+ case "gb":
309
+ return Math.round(value * 1_000_000_000);
310
+ default:
311
+ return undefined;
312
+ }
313
+ }
142
314
  /** Parses Vite production build output into structured file list with sizes. */
143
315
  export function parseViteBuildOutput(stdout, stderr, exitCode, duration) {
144
316
  const outputs = [];
@@ -152,21 +324,23 @@ export function parseViteBuildOutput(stdout, stderr, exitCode, duration) {
152
324
  if (outputMatch) {
153
325
  const file = outputMatch[1].trim();
154
326
  const size = outputMatch[2].trim();
327
+ const gzipSize = outputMatch[3]?.trim();
155
328
  // Skip lines that are clearly not file outputs (e.g. header lines)
156
329
  if (file && !file.startsWith("vite") && !file.startsWith("building")) {
157
- outputs.push({ file, size });
330
+ const sizeBytes = parseSizeToBytes(size);
331
+ const gzipBytes = gzipSize ? parseSizeToBytes(gzipSize) : undefined;
332
+ outputs.push({ file, size, sizeBytes, gzipSize, gzipBytes });
158
333
  continue;
159
334
  }
160
335
  }
161
336
  // Collect error and warning lines
162
- const lower = line.toLowerCase();
163
337
  const trimmed = line.trim();
164
338
  if (!trimmed)
165
339
  continue;
166
- if (lower.includes("error") && !lower.includes("0 error")) {
340
+ if (isErrorLine(trimmed)) {
167
341
  errors.push(trimmed);
168
342
  }
169
- else if (lower.includes("warn") && !lower.includes("0 warn")) {
343
+ else if (isWarningLine(trimmed)) {
170
344
  warnings.push(trimmed);
171
345
  }
172
346
  }
@@ -182,7 +356,7 @@ export function parseViteBuildOutput(stdout, stderr, exitCode, duration) {
182
356
  // webpack
183
357
  // ---------------------------------------------------------------------------
184
358
  /** Parses webpack --json output into structured assets, errors, warnings, and module count. */
185
- export function parseWebpackOutput(stdout, stderr, exitCode, duration) {
359
+ export function parseWebpackOutput(stdout, stderr, exitCode, duration, profileEnabled) {
186
360
  // webpack --json outputs a JSON stats object to stdout
187
361
  // Try to parse it; fall back to basic error extraction if it fails
188
362
  let jsonStats;
@@ -198,12 +372,12 @@ export function parseWebpackOutput(stdout, stderr, exitCode, duration) {
198
372
  // JSON parsing failed; fall back to text parsing
199
373
  }
200
374
  if (jsonStats) {
201
- return parseWebpackJson(jsonStats, exitCode, duration);
375
+ return parseWebpackJson(jsonStats, exitCode, duration, profileEnabled);
202
376
  }
203
377
  // Fallback: parse as text output
204
378
  return parseWebpackText(stdout, stderr, exitCode, duration);
205
379
  }
206
- function parseWebpackJson(stats, exitCode, duration) {
380
+ function parseWebpackJson(stats, exitCode, duration, profileEnabled) {
207
381
  const rawAssets = Array.isArray(stats.assets) ? stats.assets : [];
208
382
  const assets = rawAssets.map((a) => ({
209
383
  name: String(a.name ?? ""),
@@ -234,32 +408,80 @@ function parseWebpackJson(stats, exitCode, duration) {
234
408
  else if (Array.isArray(stats.modules)) {
235
409
  modules = stats.modules.length;
236
410
  }
411
+ const rawChunks = Array.isArray(stats.chunks) ? stats.chunks : [];
412
+ const chunks = rawChunks.map((chunk) => {
413
+ const c = chunk;
414
+ return {
415
+ id: typeof c.id === "string" || typeof c.id === "number" ? c.id : undefined,
416
+ names: Array.isArray(c.names)
417
+ ? c.names.filter((n) => typeof n === "string")
418
+ : undefined,
419
+ entry: typeof c.entry === "boolean" ? c.entry : undefined,
420
+ files: Array.isArray(c.files)
421
+ ? c.files.filter((f) => typeof f === "string")
422
+ : undefined,
423
+ };
424
+ });
425
+ const errorsCount = typeof stats.errorsCount === "number" ? stats.errorsCount : undefined;
426
+ // Parse profile data from modules when --profile is enabled (Gap #85)
427
+ let profile;
428
+ if (profileEnabled && Array.isArray(stats.modules)) {
429
+ profile = parseWebpackProfile(stats.modules);
430
+ }
237
431
  return {
238
- success: exitCode === 0 && errors.length === 0,
432
+ success: exitCode === 0 && errors.length === 0 && (errorsCount === undefined || errorsCount === 0),
239
433
  duration,
240
434
  assets,
435
+ chunks: chunks.length > 0 ? chunks : undefined,
241
436
  errors,
242
437
  warnings,
243
438
  modules,
439
+ profile,
244
440
  };
245
441
  }
442
+ /** Extracts timing data from webpack modules when --profile is enabled. */
443
+ export function parseWebpackProfile(modules) {
444
+ const profileModules = [];
445
+ for (const mod of modules) {
446
+ const name = typeof mod.name === "string" ? mod.name : String(mod.name ?? "");
447
+ // webpack --profile adds profile.total (or profile.building) to each module
448
+ let time = 0;
449
+ const profileData = mod.profile;
450
+ if (profileData && typeof profileData === "object") {
451
+ // webpack profile object has: factory, building, dependencies, etc.
452
+ // The total time is the sum of factory + building + dependencies
453
+ const factory = typeof profileData.factory === "number" ? profileData.factory : 0;
454
+ const building = typeof profileData.building === "number" ? profileData.building : 0;
455
+ const dependencies = typeof profileData.dependencies === "number" ? profileData.dependencies : 0;
456
+ time = factory + building + dependencies;
457
+ }
458
+ else if (typeof mod.time === "number") {
459
+ time = mod.time;
460
+ }
461
+ if (name && time > 0) {
462
+ profileModules.push({ name, time });
463
+ }
464
+ }
465
+ if (profileModules.length === 0)
466
+ return undefined;
467
+ return { modules: profileModules };
468
+ }
246
469
  function parseWebpackText(stdout, stderr, exitCode, duration) {
247
470
  const combined = stdout + "\n" + stderr;
248
471
  const lines = combined.split("\n").filter(Boolean);
249
472
  const errors = [];
250
473
  const warnings = [];
251
474
  for (const line of lines) {
252
- const lower = line.toLowerCase();
253
475
  const trimmed = line.trim();
254
- if (lower.includes("error") && !lower.includes("0 error")) {
476
+ if (isErrorLine(trimmed)) {
255
477
  errors.push(trimmed);
256
478
  }
257
- else if (lower.includes("warn") && !lower.includes("0 warn")) {
479
+ else if (isWarningLine(trimmed)) {
258
480
  warnings.push(trimmed);
259
481
  }
260
482
  }
261
483
  return {
262
- success: exitCode === 0,
484
+ success: exitCode === 0 && errors.length === 0,
263
485
  duration,
264
486
  assets: [],
265
487
  errors,
@@ -288,8 +510,29 @@ const TURBO_TASK_FAIL_RE = /^(.+?)#(\S+):.*(?:exited\s*\(\d+\)|ERROR)/;
288
510
  // Summary lines
289
511
  const TURBO_TASKS_SUMMARY_RE = /Tasks:\s+(\d+)\s+successful,\s+(\d+)\s+total/;
290
512
  const TURBO_CACHED_RE = /Cached:\s+(\d+)\s+cached,\s+(\d+)\s+total/;
513
+ /** Parses a duration string like "100ms", "2.5s", "1m30s" into milliseconds. */
514
+ export function parseDurationToMs(durationStr) {
515
+ // Try ms format: "100ms", "1234ms"
516
+ const msMatch = durationStr.match(/^(\d+(?:\.\d+)?)\s*ms$/i);
517
+ if (msMatch)
518
+ return Math.round(parseFloat(msMatch[1]));
519
+ // Try seconds format: "2.5s", "10s"
520
+ const sMatch = durationStr.match(/^(\d+(?:\.\d+)?)\s*s$/i);
521
+ if (sMatch)
522
+ return Math.round(parseFloat(sMatch[1]) * 1000);
523
+ // Try minutes+seconds: "1m30s"
524
+ const minsMatch = durationStr.match(/^(\d+)m(\d+(?:\.\d+)?)s$/i);
525
+ if (minsMatch) {
526
+ return Math.round(parseInt(minsMatch[1], 10) * 60_000 + parseFloat(minsMatch[2]) * 1000);
527
+ }
528
+ // Try minutes only: "2m"
529
+ const mOnlyMatch = durationStr.match(/^(\d+(?:\.\d+)?)\s*m$/i);
530
+ if (mOnlyMatch)
531
+ return Math.round(parseFloat(mOnlyMatch[1]) * 60_000);
532
+ return undefined;
533
+ }
291
534
  /** Parses Turborepo `turbo run` output into structured per-package task results with cache info. */
292
- export function parseTurboOutput(stdout, stderr, exitCode, duration) {
535
+ export function parseTurboOutput(stdout, stderr, exitCode, duration, summaryJsonContent) {
293
536
  const tasks = [];
294
537
  const seenTasks = new Set();
295
538
  const combined = stdout + "\n" + stderr;
@@ -304,11 +547,14 @@ export function parseTurboOutput(stdout, stderr, exitCode, duration) {
304
547
  const key = `${taskMatch[1]}#${taskMatch[2]}`;
305
548
  if (!seenTasks.has(key)) {
306
549
  seenTasks.add(key);
550
+ const durationStr = taskMatch[4];
551
+ const durationMs = parseDurationToMs(durationStr);
307
552
  tasks.push({
308
553
  package: taskMatch[1],
309
554
  task: taskMatch[2],
310
555
  status: "pass",
311
- duration: taskMatch[4],
556
+ duration: durationStr,
557
+ durationMs,
312
558
  cache: taskMatch[3] === "hit" ? "hit" : "miss",
313
559
  });
314
560
  }
@@ -344,6 +590,18 @@ export function parseTurboOutput(stdout, stderr, exitCode, duration) {
344
590
  const failed = tasks.filter((t) => t.status === "fail").length;
345
591
  const cached = tasks.filter((t) => t.cache === "hit").length;
346
592
  const totalTasks = summaryTotal || tasks.length;
593
+ let summary;
594
+ if (summaryJsonContent) {
595
+ try {
596
+ const parsed = JSON.parse(summaryJsonContent);
597
+ if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) {
598
+ summary = parsed;
599
+ }
600
+ }
601
+ catch {
602
+ // Ignore invalid summarize JSON content.
603
+ }
604
+ }
347
605
  return {
348
606
  success: exitCode === 0,
349
607
  duration,
@@ -352,6 +610,7 @@ export function parseTurboOutput(stdout, stderr, exitCode, duration) {
352
610
  passed,
353
611
  failed,
354
612
  cached: summaryCached || cached,
613
+ summary,
355
614
  };
356
615
  }
357
616
  // ---------------------------------------------------------------------------
@@ -365,13 +624,16 @@ export function parseTurboOutput(stdout, stderr, exitCode, duration) {
365
624
  // > NX Ran target build for 5 projects (10.1s)
366
625
  // Also matches lines without duration or cache indicator.
367
626
  const NX_TASK_RE = /^\s*[✔✓✗✖]\s+nx run\s+([\w@/.:-]+):([\w-]+)\s*(?:\[([^\]]+)])?\s*(?:\((\d+(?:\.\d+)?)\s*s\))?/i;
627
+ const NX_SKIPPED_TASK_RE = /^\s*(?:-|•|\*)\s+nx run\s+([\w@/.:-]+):([\w-]+).*skipp(?:ed|ing)/i;
628
+ const NX_AFFECTED_PROJECTS_RE = /affected projects?:\s*(.+)$/i;
368
629
  // Cache hit summary: "N out of N tasks were retrieved from cache"
369
630
  // or individual [local cache] / [remote cache] on task lines (handled inline)
370
631
  /** Parses Nx workspace command output into structured per-project task results. */
371
- export function parseNxOutput(stdout, stderr, exitCode, duration) {
632
+ export function parseNxOutput(stdout, stderr, exitCode, duration, affectedMode) {
372
633
  const combined = stdout + "\n" + stderr;
373
634
  const lines = combined.split("\n");
374
635
  const tasks = [];
636
+ const affectedProjects = new Set();
375
637
  for (const line of lines) {
376
638
  const taskMatch = line.match(NX_TASK_RE);
377
639
  if (taskMatch) {
@@ -383,19 +645,64 @@ export function parseNxOutput(stdout, stderr, exitCode, duration) {
383
645
  const trimmed = line.trimStart();
384
646
  const isFailure = trimmed.startsWith("✖") || trimmed.startsWith("✗");
385
647
  const status = isFailure ? "failure" : "success";
648
+ // Distinguish local vs remote cache (Gap #81)
649
+ let cache;
650
+ if (cacheInfo) {
651
+ const lower = cacheInfo.toLowerCase();
652
+ if (lower.includes("remote")) {
653
+ cache = "remote";
654
+ }
655
+ else if (lower.includes("local")) {
656
+ cache = "local";
657
+ }
658
+ else {
659
+ // Unknown cache type — treat as local
660
+ cache = "local";
661
+ }
662
+ }
663
+ // Tasks without cache info: no cache field (undefined means not cached)
386
664
  tasks.push({
387
665
  project,
388
666
  target,
389
667
  status,
390
668
  duration: dur,
391
- cache: cacheInfo ? true : undefined,
669
+ cache,
670
+ });
671
+ if (affectedMode) {
672
+ affectedProjects.add(project);
673
+ }
674
+ continue;
675
+ }
676
+ const skippedMatch = line.match(NX_SKIPPED_TASK_RE);
677
+ if (skippedMatch) {
678
+ const project = skippedMatch[1];
679
+ const target = skippedMatch[2];
680
+ tasks.push({
681
+ project,
682
+ target,
683
+ status: "skipped",
684
+ cache: "miss",
392
685
  });
686
+ if (affectedMode) {
687
+ affectedProjects.add(project);
688
+ }
689
+ continue;
690
+ }
691
+ const affectedMatch = line.match(NX_AFFECTED_PROJECTS_RE);
692
+ if (affectedMatch) {
693
+ const projects = affectedMatch[1]
694
+ .split(",")
695
+ .map((p) => p.trim())
696
+ .filter(Boolean);
697
+ for (const project of projects) {
698
+ affectedProjects.add(project);
699
+ }
393
700
  continue;
394
701
  }
395
702
  }
396
703
  const passed = tasks.filter((t) => t.status === "success").length;
397
704
  const failed = tasks.filter((t) => t.status === "failure").length;
398
- const cached = tasks.filter((t) => t.cache === true).length;
705
+ const cached = tasks.filter((t) => t.cache !== undefined).length;
399
706
  return {
400
707
  success: exitCode === 0,
401
708
  duration,
@@ -404,6 +711,7 @@ export function parseNxOutput(stdout, stderr, exitCode, duration) {
404
711
  passed,
405
712
  failed,
406
713
  cached,
714
+ affectedProjects: affectedProjects.size > 0 ? [...affectedProjects] : undefined,
407
715
  };
408
716
  }
409
717
  //# sourceMappingURL=parsers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"parsers.js","sourceRoot":"","sources":["../../src/lib/parsers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parsers.js","sourceRoot":"","sources":["../../src/lib/parsers.ts"],"names":[],"mappings":"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"}