@quenty/cli-output-helpers 1.10.0 → 1.11.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.
- package/CHANGELOG.md +28 -96
- package/dist/outputHelper.d.ts +5 -0
- package/dist/outputHelper.d.ts.map +1 -1
- package/dist/outputHelper.js +10 -1
- package/dist/outputHelper.js.map +1 -1
- package/dist/reporting/build-result-reporter.d.ts +33 -0
- package/dist/reporting/build-result-reporter.d.ts.map +1 -0
- package/dist/reporting/build-result-reporter.js +33 -0
- package/dist/reporting/build-result-reporter.js.map +1 -0
- package/dist/reporting/build-result-reporter.test.d.ts +2 -0
- package/dist/reporting/build-result-reporter.test.d.ts.map +1 -0
- package/dist/reporting/build-result-reporter.test.js +42 -0
- package/dist/reporting/build-result-reporter.test.js.map +1 -0
- package/dist/reporting/composite-reporter.d.ts.map +1 -1
- package/dist/reporting/composite-reporter.js.map +1 -1
- package/dist/reporting/composite-result-reporter.d.ts +15 -0
- package/dist/reporting/composite-result-reporter.d.ts.map +1 -0
- package/dist/reporting/composite-result-reporter.js +43 -0
- package/dist/reporting/composite-result-reporter.js.map +1 -0
- package/dist/reporting/composite-result-reporter.test.d.ts +2 -0
- package/dist/reporting/composite-result-reporter.test.d.ts.map +1 -0
- package/dist/reporting/composite-result-reporter.test.js +61 -0
- package/dist/reporting/composite-result-reporter.test.js.map +1 -0
- package/dist/reporting/file-result-reporter.d.ts +29 -0
- package/dist/reporting/file-result-reporter.d.ts.map +1 -0
- package/dist/reporting/file-result-reporter.js +61 -0
- package/dist/reporting/file-result-reporter.js.map +1 -0
- package/dist/reporting/file-result-reporter.test.d.ts +2 -0
- package/dist/reporting/file-result-reporter.test.d.ts.map +1 -0
- package/dist/reporting/file-result-reporter.test.js +78 -0
- package/dist/reporting/file-result-reporter.test.js.map +1 -0
- package/dist/reporting/format-json.d.ts +9 -0
- package/dist/reporting/format-json.d.ts.map +1 -0
- package/dist/reporting/format-json.js +12 -0
- package/dist/reporting/format-json.js.map +1 -0
- package/dist/reporting/format-json.test.d.ts +2 -0
- package/dist/reporting/format-json.test.d.ts.map +1 -0
- package/dist/reporting/format-json.test.js +29 -0
- package/dist/reporting/format-json.test.js.map +1 -0
- package/dist/reporting/format-table.d.ts +18 -0
- package/dist/reporting/format-table.d.ts.map +1 -0
- package/dist/reporting/format-table.js +61 -0
- package/dist/reporting/format-table.js.map +1 -0
- package/dist/reporting/format-table.test.d.ts +2 -0
- package/dist/reporting/format-table.test.d.ts.map +1 -0
- package/dist/reporting/format-table.test.js +90 -0
- package/dist/reporting/format-table.test.js.map +1 -0
- package/dist/reporting/github/annotations.d.ts.map +1 -1
- package/dist/reporting/github/annotations.js +1 -4
- package/dist/reporting/github/annotations.js.map +1 -1
- package/dist/reporting/github/annotations.test.js.map +1 -1
- package/dist/reporting/github/comment-table-reporter.d.ts.map +1 -1
- package/dist/reporting/github/comment-table-reporter.js.map +1 -1
- package/dist/reporting/github/formatting.d.ts.map +1 -1
- package/dist/reporting/github/formatting.js +9 -14
- package/dist/reporting/github/formatting.js.map +1 -1
- package/dist/reporting/github/job-summary-reporter.d.ts.map +1 -1
- package/dist/reporting/github/job-summary-reporter.js.map +1 -1
- package/dist/reporting/grouped-reporter.d.ts.map +1 -1
- package/dist/reporting/grouped-reporter.js +6 -2
- package/dist/reporting/grouped-reporter.js.map +1 -1
- package/dist/reporting/index.d.ts +9 -0
- package/dist/reporting/index.d.ts.map +1 -1
- package/dist/reporting/index.js +12 -1
- package/dist/reporting/index.js.map +1 -1
- package/dist/reporting/json-file-reporter.d.ts.map +1 -1
- package/dist/reporting/json-file-reporter.js +2 -1
- package/dist/reporting/json-file-reporter.js.map +1 -1
- package/dist/reporting/progress-format.d.ts.map +1 -1
- package/dist/reporting/progress-format.js.map +1 -1
- package/dist/reporting/reporter.d.ts.map +1 -1
- package/dist/reporting/reporter.js.map +1 -1
- package/dist/reporting/result-reporter.d.ts +37 -0
- package/dist/reporting/result-reporter.d.ts.map +1 -0
- package/dist/reporting/result-reporter.js +22 -0
- package/dist/reporting/result-reporter.js.map +1 -0
- package/dist/reporting/simple-reporter.d.ts.map +1 -1
- package/dist/reporting/simple-reporter.js +3 -1
- package/dist/reporting/simple-reporter.js.map +1 -1
- package/dist/reporting/spinner-reporter.d.ts.map +1 -1
- package/dist/reporting/spinner-reporter.js +4 -4
- package/dist/reporting/spinner-reporter.js.map +1 -1
- package/dist/reporting/spinner-reporter.test.js.map +1 -1
- package/dist/reporting/state/live-state-tracker.d.ts.map +1 -1
- package/dist/reporting/state/live-state-tracker.js +1 -1
- package/dist/reporting/state/live-state-tracker.js.map +1 -1
- package/dist/reporting/state/loaded-state-tracker.d.ts.map +1 -1
- package/dist/reporting/state/loaded-state-tracker.js.map +1 -1
- package/dist/reporting/state/state-tracker.d.ts.map +1 -1
- package/dist/reporting/stdout-result-reporter.d.ts +14 -0
- package/dist/reporting/stdout-result-reporter.d.ts.map +1 -0
- package/dist/reporting/stdout-result-reporter.js +16 -0
- package/dist/reporting/stdout-result-reporter.js.map +1 -0
- package/dist/reporting/stdout-result-reporter.test.d.ts +2 -0
- package/dist/reporting/stdout-result-reporter.test.d.ts.map +1 -0
- package/dist/reporting/stdout-result-reporter.test.js +28 -0
- package/dist/reporting/stdout-result-reporter.test.js.map +1 -0
- package/dist/reporting/summary-table-reporter.d.ts +2 -0
- package/dist/reporting/summary-table-reporter.d.ts.map +1 -1
- package/dist/reporting/summary-table-reporter.js +44 -33
- package/dist/reporting/summary-table-reporter.js.map +1 -1
- package/dist/reporting/watch-renderer.d.ts +16 -0
- package/dist/reporting/watch-renderer.d.ts.map +1 -0
- package/dist/reporting/watch-renderer.js +110 -0
- package/dist/reporting/watch-renderer.js.map +1 -0
- package/dist/reporting/watch-renderer.test.d.ts +2 -0
- package/dist/reporting/watch-renderer.test.d.ts.map +1 -0
- package/dist/reporting/watch-renderer.test.js +103 -0
- package/dist/reporting/watch-renderer.test.js.map +1 -0
- package/dist/reporting/watch-result-reporter.d.ts +21 -0
- package/dist/reporting/watch-result-reporter.d.ts.map +1 -0
- package/dist/reporting/watch-result-reporter.js +34 -0
- package/dist/reporting/watch-result-reporter.js.map +1 -0
- package/dist/reporting/watch-result-reporter.test.d.ts +2 -0
- package/dist/reporting/watch-result-reporter.test.d.ts.map +1 -0
- package/dist/reporting/watch-result-reporter.test.js +37 -0
- package/dist/reporting/watch-result-reporter.test.js.map +1 -0
- package/package.json +2 -2
- package/src/outputHelper.ts +12 -3
- package/src/reporting/build-result-reporter.test.ts +48 -0
- package/src/reporting/build-result-reporter.ts +58 -0
- package/src/reporting/composite-reporter.ts +10 -2
- package/src/reporting/composite-result-reporter.test.ts +71 -0
- package/src/reporting/composite-result-reporter.ts +58 -0
- package/src/reporting/file-result-reporter.test.ts +112 -0
- package/src/reporting/file-result-reporter.ts +75 -0
- package/src/reporting/format-json.test.ts +34 -0
- package/src/reporting/format-json.ts +16 -0
- package/src/reporting/format-table.test.ts +113 -0
- package/src/reporting/format-table.ts +97 -0
- package/src/reporting/github/annotations.test.ts +1 -3
- package/src/reporting/github/annotations.ts +13 -12
- package/src/reporting/github/comment-table-reporter.ts +5 -5
- package/src/reporting/github/formatting.ts +18 -16
- package/src/reporting/github/job-summary-reporter.ts +3 -1
- package/src/reporting/grouped-reporter.ts +6 -2
- package/src/reporting/index.ts +34 -1
- package/src/reporting/json-file-reporter.ts +2 -1
- package/src/reporting/progress-format.ts +5 -2
- package/src/reporting/reporter.ts +15 -2
- package/src/reporting/result-reporter.ts +40 -0
- package/src/reporting/simple-reporter.ts +3 -1
- package/src/reporting/spinner-reporter.test.ts +7 -6
- package/src/reporting/spinner-reporter.ts +20 -8
- package/src/reporting/state/live-state-tracker.ts +12 -6
- package/src/reporting/state/loaded-state-tracker.ts +2 -7
- package/src/reporting/state/state-tracker.ts +5 -1
- package/src/reporting/stdout-result-reporter.test.ts +34 -0
- package/src/reporting/stdout-result-reporter.ts +23 -0
- package/src/reporting/summary-table-reporter.ts +51 -36
- package/src/reporting/watch-renderer.test.ts +127 -0
- package/src/reporting/watch-renderer.ts +132 -0
- package/src/reporting/watch-result-reporter.test.ts +44 -0
- package/src/reporting/watch-result-reporter.ts +45 -0
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Writes a rendered result to a file. Each onResult overwrites the file —
|
|
3
|
+
* usable for both single writes and watch-mode file rewrites.
|
|
4
|
+
*
|
|
5
|
+
* Optional `binary` callback returns a Buffer to write instead of the
|
|
6
|
+
* rendered text — used for screenshot/binary output.
|
|
7
|
+
*/
|
|
8
|
+
import * as fs from 'fs';
|
|
9
|
+
import { execFileSync } from 'child_process';
|
|
10
|
+
import { BaseResultReporter } from './result-reporter.js';
|
|
11
|
+
export class FileResultReporter extends BaseResultReporter {
|
|
12
|
+
_outputPath;
|
|
13
|
+
_render;
|
|
14
|
+
_binary;
|
|
15
|
+
_open;
|
|
16
|
+
_reportPath;
|
|
17
|
+
_hasOpened = false;
|
|
18
|
+
constructor(options) {
|
|
19
|
+
super();
|
|
20
|
+
this._outputPath = options.outputPath;
|
|
21
|
+
this._render = options.render;
|
|
22
|
+
this._binary = options.binary;
|
|
23
|
+
this._open = options.open ?? false;
|
|
24
|
+
this._reportPath = options.reportPath ?? true;
|
|
25
|
+
}
|
|
26
|
+
onResult(result) {
|
|
27
|
+
const buffer = this._binary?.(result);
|
|
28
|
+
const isBinary = buffer !== undefined;
|
|
29
|
+
if (isBinary) {
|
|
30
|
+
fs.writeFileSync(this._outputPath, buffer);
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
fs.writeFileSync(this._outputPath, this._render(result), 'utf-8');
|
|
34
|
+
}
|
|
35
|
+
if (this._reportPath) {
|
|
36
|
+
const label = isBinary ? 'binary output' : 'output';
|
|
37
|
+
process.stderr.write(`Wrote ${label} to ${this._outputPath}\n`);
|
|
38
|
+
}
|
|
39
|
+
if (this._open && !this._hasOpened) {
|
|
40
|
+
this._hasOpened = true;
|
|
41
|
+
tryOpenFile(this._outputPath);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/** Best-effort open a file with the platform's default viewer. */
|
|
46
|
+
function tryOpenFile(filePath) {
|
|
47
|
+
try {
|
|
48
|
+
if (process.platform === 'win32') {
|
|
49
|
+
// `start` is a cmd builtin; the empty "" is the window title slot
|
|
50
|
+
execFileSync('cmd', ['/c', 'start', '""', filePath], { stdio: 'ignore' });
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
const cmd = process.platform === 'darwin' ? 'open' : 'xdg-open';
|
|
54
|
+
execFileSync(cmd, [filePath], { stdio: 'ignore' });
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
// Fire-and-forget — don't fail the command if open doesn't work
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=file-result-reporter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-result-reporter.js","sourceRoot":"","sources":["../../src/reporting/file-result-reporter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAa1D,MAAM,OAAO,kBAAgC,SAAQ,kBAAqB;IAChE,WAAW,CAAS;IACpB,OAAO,CAAwB;IAC/B,OAAO,CAAqC;IAC5C,KAAK,CAAU;IACf,WAAW,CAAU;IACrB,UAAU,GAAG,KAAK,CAAC;IAE3B,YAAY,OAAqC;QAC/C,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;QACtC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;QAC9B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;QAC9B,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC;QACnC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC;IAChD,CAAC;IAEQ,QAAQ,CAAC,MAAS;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,MAAM,KAAK,SAAS,CAAC;QACtC,IAAI,QAAQ,EAAE,CAAC;YACb,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC;QACpE,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC;YACpD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,KAAK,OAAO,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC;QAClE,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACnC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;CACF;AAED,kEAAkE;AAClE,SAAS,WAAW,CAAC,QAAgB;IACnC,IAAI,CAAC;QACH,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YACjC,kEAAkE;YAClE,YAAY,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC5E,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC;YAChE,YAAY,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,gEAAgE;IAClE,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-result-reporter.test.d.ts","sourceRoot":"","sources":["../../src/reporting/file-result-reporter.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
|
|
2
|
+
const { mockWriteFileSync } = vi.hoisted(() => ({
|
|
3
|
+
mockWriteFileSync: vi.fn(),
|
|
4
|
+
}));
|
|
5
|
+
vi.mock('fs', () => ({
|
|
6
|
+
writeFileSync: mockWriteFileSync,
|
|
7
|
+
}));
|
|
8
|
+
vi.mock('child_process', () => ({
|
|
9
|
+
execSync: vi.fn(),
|
|
10
|
+
}));
|
|
11
|
+
import { FileResultReporter } from './file-result-reporter.js';
|
|
12
|
+
describe('FileResultReporter', () => {
|
|
13
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
14
|
+
let stderrSpy;
|
|
15
|
+
beforeEach(() => {
|
|
16
|
+
mockWriteFileSync.mockReset();
|
|
17
|
+
stderrSpy = vi
|
|
18
|
+
.spyOn(process.stderr, 'write')
|
|
19
|
+
.mockImplementation(() => true);
|
|
20
|
+
});
|
|
21
|
+
afterEach(() => {
|
|
22
|
+
stderrSpy.mockRestore();
|
|
23
|
+
});
|
|
24
|
+
it('writes rendered text to the output path with utf-8 encoding', () => {
|
|
25
|
+
const reporter = new FileResultReporter({
|
|
26
|
+
outputPath: '/tmp/out.txt',
|
|
27
|
+
render: (r) => r.msg,
|
|
28
|
+
});
|
|
29
|
+
reporter.onResult({ msg: 'hello' });
|
|
30
|
+
expect(mockWriteFileSync).toHaveBeenCalledWith('/tmp/out.txt', 'hello', 'utf-8');
|
|
31
|
+
});
|
|
32
|
+
it('writes a Buffer when binary callback returns one', () => {
|
|
33
|
+
const buf = Buffer.from([1, 2, 3]);
|
|
34
|
+
const reporter = new FileResultReporter({
|
|
35
|
+
outputPath: '/tmp/out.bin',
|
|
36
|
+
render: () => 'fallback',
|
|
37
|
+
binary: (r) => r.b,
|
|
38
|
+
});
|
|
39
|
+
reporter.onResult({ b: buf });
|
|
40
|
+
expect(mockWriteFileSync).toHaveBeenCalledWith('/tmp/out.bin', buf);
|
|
41
|
+
});
|
|
42
|
+
it('reports "binary output" status for binary writes', () => {
|
|
43
|
+
const reporter = new FileResultReporter({
|
|
44
|
+
outputPath: '/tmp/out.bin',
|
|
45
|
+
render: () => '',
|
|
46
|
+
binary: (r) => r.b,
|
|
47
|
+
});
|
|
48
|
+
reporter.onResult({ b: Buffer.from([0]) });
|
|
49
|
+
expect(stderrSpy).toHaveBeenCalledWith('Wrote binary output to /tmp/out.bin\n');
|
|
50
|
+
});
|
|
51
|
+
it('falls back to text render when binary returns undefined', () => {
|
|
52
|
+
const reporter = new FileResultReporter({
|
|
53
|
+
outputPath: '/tmp/out.txt',
|
|
54
|
+
render: () => 'text',
|
|
55
|
+
binary: () => undefined,
|
|
56
|
+
});
|
|
57
|
+
reporter.onResult({});
|
|
58
|
+
expect(mockWriteFileSync).toHaveBeenCalledWith('/tmp/out.txt', 'text', 'utf-8');
|
|
59
|
+
});
|
|
60
|
+
it('emits a status line to stderr by default', () => {
|
|
61
|
+
const reporter = new FileResultReporter({
|
|
62
|
+
outputPath: '/tmp/out.txt',
|
|
63
|
+
render: () => '',
|
|
64
|
+
});
|
|
65
|
+
reporter.onResult(null);
|
|
66
|
+
expect(stderrSpy).toHaveBeenCalledWith('Wrote output to /tmp/out.txt\n');
|
|
67
|
+
});
|
|
68
|
+
it('suppresses status when reportPath is false', () => {
|
|
69
|
+
const reporter = new FileResultReporter({
|
|
70
|
+
outputPath: '/tmp/out.txt',
|
|
71
|
+
render: () => '',
|
|
72
|
+
reportPath: false,
|
|
73
|
+
});
|
|
74
|
+
reporter.onResult(null);
|
|
75
|
+
expect(stderrSpy).not.toHaveBeenCalled();
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
//# sourceMappingURL=file-result-reporter.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-result-reporter.test.js","sourceRoot":"","sources":["../../src/reporting/file-result-reporter.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JSON output formatter. Pretty-prints when connected to a TTY,
|
|
3
|
+
* emits compact JSON when piped.
|
|
4
|
+
*/
|
|
5
|
+
export interface JsonOutputOptions {
|
|
6
|
+
pretty?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare function formatJson(data: unknown, options?: JsonOutputOptions): string;
|
|
9
|
+
//# sourceMappingURL=format-json.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-json.d.ts","sourceRoot":"","sources":["../../src/reporting/format-json.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAM7E"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JSON output formatter. Pretty-prints when connected to a TTY,
|
|
3
|
+
* emits compact JSON when piped.
|
|
4
|
+
*/
|
|
5
|
+
export function formatJson(data, options) {
|
|
6
|
+
const pretty = options?.pretty ?? (process.stdout.isTTY ? true : false);
|
|
7
|
+
if (pretty) {
|
|
8
|
+
return JSON.stringify(data, null, 2);
|
|
9
|
+
}
|
|
10
|
+
return JSON.stringify(data);
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=format-json.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-json.js","sourceRoot":"","sources":["../../src/reporting/format-json.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,MAAM,UAAU,UAAU,CAAC,IAAa,EAAE,OAA2B;IACnE,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACxE,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-json.test.d.ts","sourceRoot":"","sources":["../../src/reporting/format-json.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { describe, it, expect, afterEach } from 'vitest';
|
|
2
|
+
import { formatJson } from './format-json.js';
|
|
3
|
+
describe('formatJson', () => {
|
|
4
|
+
const originalIsTTY = process.stdout.isTTY;
|
|
5
|
+
afterEach(() => {
|
|
6
|
+
process.stdout.isTTY = originalIsTTY;
|
|
7
|
+
});
|
|
8
|
+
it('pretty-prints with indentation when pretty: true', () => {
|
|
9
|
+
const result = formatJson({ a: 1, b: [2, 3] }, { pretty: true });
|
|
10
|
+
expect(result).toBe(JSON.stringify({ a: 1, b: [2, 3] }, null, 2));
|
|
11
|
+
expect(result).toContain('\n');
|
|
12
|
+
});
|
|
13
|
+
it('emits compact single-line JSON when pretty: false', () => {
|
|
14
|
+
const result = formatJson({ a: 1, b: [2, 3] }, { pretty: false });
|
|
15
|
+
expect(result).toBe('{"a":1,"b":[2,3]}');
|
|
16
|
+
expect(result).not.toContain('\n');
|
|
17
|
+
});
|
|
18
|
+
it('explicit pretty: true overrides non-TTY', () => {
|
|
19
|
+
process.stdout.isTTY = undefined;
|
|
20
|
+
const result = formatJson({ x: 1 }, { pretty: true });
|
|
21
|
+
expect(result).toContain('\n');
|
|
22
|
+
});
|
|
23
|
+
it('explicit pretty: false overrides TTY', () => {
|
|
24
|
+
process.stdout.isTTY = true;
|
|
25
|
+
const result = formatJson({ x: 1 }, { pretty: false });
|
|
26
|
+
expect(result).not.toContain('\n');
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
//# sourceMappingURL=format-json.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-json.test.js","sourceRoot":"","sources":["../../src/reporting/format-json.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;IAE3C,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,aAAa,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,MAAM,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QACjE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAClE,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,MAAM,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAClE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACzC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,SAAgB,CAAC;QACxC,MAAM,MAAM,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QACtD,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;QAC5B,MAAM,MAAM,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QACvD,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generic table formatter for CLI output. Computes column widths from data,
|
|
3
|
+
* handles ANSI color codes in values, and supports left/right alignment.
|
|
4
|
+
*/
|
|
5
|
+
export interface TableColumn<T> {
|
|
6
|
+
header: string;
|
|
7
|
+
value: (row: T) => string;
|
|
8
|
+
minWidth?: number;
|
|
9
|
+
align?: 'left' | 'right';
|
|
10
|
+
format?: (value: string, row: T) => string;
|
|
11
|
+
}
|
|
12
|
+
export interface TableOptions {
|
|
13
|
+
showHeaders?: boolean;
|
|
14
|
+
showSeparator?: boolean;
|
|
15
|
+
indent?: string;
|
|
16
|
+
}
|
|
17
|
+
export declare function formatTable<T>(rows: T[], columns: TableColumn<T>[], options?: TableOptions): string;
|
|
18
|
+
//# sourceMappingURL=format-table.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-table.d.ts","sourceRoot":"","sources":["../../src/reporting/format-table.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACzB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,MAAM,CAAC;CAC5C;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAgBD,wBAAgB,WAAW,CAAC,CAAC,EAC3B,IAAI,EAAE,CAAC,EAAE,EACT,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,EACzB,OAAO,CAAC,EAAE,YAAY,GACrB,MAAM,CA2DR"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generic table formatter for CLI output. Computes column widths from data,
|
|
3
|
+
* handles ANSI color codes in values, and supports left/right alignment.
|
|
4
|
+
*/
|
|
5
|
+
/** Strip ANSI escape codes so width calculations reflect visible characters. */
|
|
6
|
+
function stripAnsi(text) {
|
|
7
|
+
return text.replace(/\x1b\[[0-9;]*m/g, '');
|
|
8
|
+
}
|
|
9
|
+
function padCell(text, width, align) {
|
|
10
|
+
const visibleLength = stripAnsi(text).length;
|
|
11
|
+
const padding = Math.max(0, width - visibleLength);
|
|
12
|
+
if (align === 'right') {
|
|
13
|
+
return ' '.repeat(padding) + text;
|
|
14
|
+
}
|
|
15
|
+
return text + ' '.repeat(padding);
|
|
16
|
+
}
|
|
17
|
+
export function formatTable(rows, columns, options) {
|
|
18
|
+
if (rows.length === 0) {
|
|
19
|
+
return '';
|
|
20
|
+
}
|
|
21
|
+
const showHeaders = options?.showHeaders ?? true;
|
|
22
|
+
const showSeparator = options?.showSeparator ?? true;
|
|
23
|
+
const indent = options?.indent ?? '';
|
|
24
|
+
// Pre-compute raw string values for every cell
|
|
25
|
+
const cellValues = rows.map((row) => columns.map((col) => col.value(row)));
|
|
26
|
+
// Compute column widths
|
|
27
|
+
const widths = columns.map((col, colIndex) => {
|
|
28
|
+
const headerWidth = col.header.length;
|
|
29
|
+
const minWidth = col.minWidth ?? 0;
|
|
30
|
+
const maxDataWidth = cellValues.reduce((max, rowValues) => Math.max(max, stripAnsi(rowValues[colIndex]).length), 0);
|
|
31
|
+
return Math.max(headerWidth, minWidth, maxDataWidth);
|
|
32
|
+
});
|
|
33
|
+
const lines = [];
|
|
34
|
+
// Header row
|
|
35
|
+
if (showHeaders) {
|
|
36
|
+
const headerCells = columns.map((col, i) => padCell(col.header, widths[i], col.align ?? 'left'));
|
|
37
|
+
lines.push(headerCells.join(' '));
|
|
38
|
+
}
|
|
39
|
+
// Separator row
|
|
40
|
+
if (showSeparator && showHeaders) {
|
|
41
|
+
const separatorCells = widths.map((w) => '-'.repeat(w));
|
|
42
|
+
lines.push(separatorCells.join(' '));
|
|
43
|
+
}
|
|
44
|
+
// Data rows
|
|
45
|
+
for (let rowIndex = 0; rowIndex < rows.length; rowIndex++) {
|
|
46
|
+
const row = rows[rowIndex];
|
|
47
|
+
const cells = columns.map((col, colIndex) => {
|
|
48
|
+
let value = cellValues[rowIndex][colIndex];
|
|
49
|
+
if (col.format) {
|
|
50
|
+
value = col.format(value, row);
|
|
51
|
+
}
|
|
52
|
+
return padCell(value, widths[colIndex], col.align ?? 'left');
|
|
53
|
+
});
|
|
54
|
+
lines.push(cells.join(' '));
|
|
55
|
+
}
|
|
56
|
+
if (indent) {
|
|
57
|
+
return lines.map((line) => indent + line).join('\n');
|
|
58
|
+
}
|
|
59
|
+
return lines.join('\n');
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=format-table.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-table.js","sourceRoot":"","sources":["../../src/reporting/format-table.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAgBH,gFAAgF;AAChF,SAAS,SAAS,CAAC,IAAY;IAC7B,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,OAAO,CAAC,IAAY,EAAE,KAAa,EAAE,KAAuB;IACnE,MAAM,aAAa,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;IAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,aAAa,CAAC,CAAC;IACnD,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;QACtB,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACpC,CAAC;IACD,OAAO,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,IAAS,EACT,OAAyB,EACzB,OAAsB;IAEtB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,IAAI,IAAI,CAAC;IACjD,MAAM,aAAa,GAAG,OAAO,EAAE,aAAa,IAAI,IAAI,CAAC;IACrD,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,EAAE,CAAC;IAErC,+CAA+C;IAC/C,MAAM,UAAU,GAAe,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAC9C,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CACrC,CAAC;IAEF,wBAAwB;IACxB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE;QAC3C,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;QACtC,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,IAAI,CAAC,CAAC;QACnC,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CACpC,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,EACxE,CAAC,CACF,CAAC;QACF,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,aAAa;IACb,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CACzC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,IAAI,MAAM,CAAC,CACpD,CAAC;QACF,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACrC,CAAC;IAED,gBAAgB;IAChB,IAAI,aAAa,IAAI,WAAW,EAAE,CAAC;QACjC,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACxD,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACxC,CAAC;IAED,YAAY;IACZ,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC;QAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE;YAC1C,IAAI,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC;YAC3C,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;gBACf,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YACjC,CAAC;YACD,OAAO,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-table.test.d.ts","sourceRoot":"","sources":["../../src/reporting/format-table.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { formatTable } from './format-table.js';
|
|
3
|
+
const basicColumns = [
|
|
4
|
+
{ header: 'Name', value: (r) => r.name },
|
|
5
|
+
{ header: 'Value', value: (r) => String(r.value) },
|
|
6
|
+
];
|
|
7
|
+
describe('formatTable', () => {
|
|
8
|
+
it('renders a basic table with 2 columns and 2 rows', () => {
|
|
9
|
+
const rows = [
|
|
10
|
+
{ name: 'alpha', value: 10 },
|
|
11
|
+
{ name: 'beta', value: 200 },
|
|
12
|
+
];
|
|
13
|
+
const result = formatTable(rows, basicColumns);
|
|
14
|
+
const lines = result.split('\n');
|
|
15
|
+
expect(lines).toHaveLength(4); // header + separator + 2 data rows
|
|
16
|
+
expect(lines[0]).toContain('Name');
|
|
17
|
+
expect(lines[0]).toContain('Value');
|
|
18
|
+
expect(lines[1]).toMatch(/^-+\s+-+$/);
|
|
19
|
+
expect(lines[2]).toContain('alpha');
|
|
20
|
+
expect(lines[3]).toContain('beta');
|
|
21
|
+
});
|
|
22
|
+
it('returns empty string for empty rows', () => {
|
|
23
|
+
expect(formatTable([], basicColumns)).toBe('');
|
|
24
|
+
});
|
|
25
|
+
it('handles ANSI color codes in values without breaking alignment', () => {
|
|
26
|
+
const rows = [
|
|
27
|
+
{ name: '\x1b[32mgreen\x1b[0m', value: 1 },
|
|
28
|
+
{ name: 'plain', value: 2 },
|
|
29
|
+
];
|
|
30
|
+
const result = formatTable(rows, basicColumns);
|
|
31
|
+
const lines = result.split('\n');
|
|
32
|
+
// Both data rows should produce the same visible width for the Name column.
|
|
33
|
+
// The ANSI-colored row should have padding based on visible "green" (5 chars),
|
|
34
|
+
// not the full escape-code string length.
|
|
35
|
+
const stripAnsi = (s) => s.replace(/\x1b\[[0-9;]*m/g, '');
|
|
36
|
+
const dataLine0 = stripAnsi(lines[2]);
|
|
37
|
+
const dataLine1 = stripAnsi(lines[3]);
|
|
38
|
+
// Split by double-space to find column boundary
|
|
39
|
+
const col0Width0 = dataLine0.indexOf('1');
|
|
40
|
+
const col0Width1 = dataLine1.indexOf('2');
|
|
41
|
+
expect(col0Width0).toBe(col0Width1);
|
|
42
|
+
});
|
|
43
|
+
it('right-aligns by padding on the left', () => {
|
|
44
|
+
const columns = [
|
|
45
|
+
{ header: 'Name', value: (r) => r.name },
|
|
46
|
+
{ header: 'Value', value: (r) => String(r.value), align: 'right' },
|
|
47
|
+
];
|
|
48
|
+
const rows = [
|
|
49
|
+
{ name: 'a', value: 1 },
|
|
50
|
+
{ name: 'b', value: 200 },
|
|
51
|
+
];
|
|
52
|
+
const result = formatTable(rows, columns);
|
|
53
|
+
const lines = result.split('\n');
|
|
54
|
+
// The header "Value" is 5 chars wide; data "1" should be padded to " 1" or similar
|
|
55
|
+
// In the first data row, the value column should end with '1' preceded by spaces
|
|
56
|
+
const dataLine = lines[2];
|
|
57
|
+
// Right-aligned: the value "1" should appear at the right edge of the value column
|
|
58
|
+
expect(dataLine).toMatch(/\s+1$/);
|
|
59
|
+
});
|
|
60
|
+
it('applies custom indent to every line', () => {
|
|
61
|
+
const rows = [{ name: 'x', value: 1 }];
|
|
62
|
+
const result = formatTable(rows, basicColumns, { indent: ' ' });
|
|
63
|
+
const lines = result.split('\n');
|
|
64
|
+
for (const line of lines) {
|
|
65
|
+
expect(line.startsWith(' ')).toBe(true);
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
it('respects minWidth', () => {
|
|
69
|
+
const columns = [
|
|
70
|
+
{ header: 'N', value: (r) => r.name, minWidth: 20 },
|
|
71
|
+
{ header: 'V', value: (r) => String(r.value) },
|
|
72
|
+
];
|
|
73
|
+
const rows = [{ name: 'a', value: 1 }];
|
|
74
|
+
const result = formatTable(rows, columns);
|
|
75
|
+
const lines = result.split('\n');
|
|
76
|
+
// The separator dashes for the first column should be at least 20 chars
|
|
77
|
+
const separatorParts = lines[1].split(' ');
|
|
78
|
+
expect(separatorParts[0].length).toBeGreaterThanOrEqual(20);
|
|
79
|
+
});
|
|
80
|
+
it('applies format function to cell values', () => {
|
|
81
|
+
const columns = [
|
|
82
|
+
{ header: 'Name', value: (r) => r.name, format: (v) => `[${v}]` },
|
|
83
|
+
{ header: 'Value', value: (r) => String(r.value) },
|
|
84
|
+
];
|
|
85
|
+
const rows = [{ name: 'test', value: 42 }];
|
|
86
|
+
const result = formatTable(rows, columns);
|
|
87
|
+
expect(result).toContain('[test]');
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
//# sourceMappingURL=format-table.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-table.test.js","sourceRoot":"","sources":["../../src/reporting/format-table.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"annotations.d.ts","sourceRoot":"","sources":["../../../src/reporting/github/annotations.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAQH,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEhE,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;
|
|
1
|
+
{"version":3,"file":"annotations.d.ts","sourceRoot":"","sources":["../../../src/reporting/github/annotations.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAQH,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEhE,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAwBD,uEAAuE;AACvE,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAqB/D;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,IAAI,CAI/D;AAID,sDAAsD;AACtD,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,UAAU,EAAE,GACxB,iBAAiB,CA4BnB;AAED,qEAAqE;AACrE,wBAAgB,+BAA+B,CAC7C,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,UAAU,EAAE,GACxB,MAAM,CAyER;AAED;;;GAGG;AACH,wBAAsB,2BAA2B,CAC/C,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,UAAU,EAAE,GACxB,OAAO,CAAC,IAAI,CAAC,CAkBf"}
|
|
@@ -24,10 +24,7 @@ function _escapeProperty(value) {
|
|
|
24
24
|
}
|
|
25
25
|
/** Escape a workflow command message (data portion). */
|
|
26
26
|
function _escapeMessage(value) {
|
|
27
|
-
return value
|
|
28
|
-
.replace(/%/g, '%25')
|
|
29
|
-
.replace(/\r/g, '%0D')
|
|
30
|
-
.replace(/\n/g, '%0A');
|
|
27
|
+
return value.replace(/%/g, '%25').replace(/\r/g, '%0D').replace(/\n/g, '%0A');
|
|
31
28
|
}
|
|
32
29
|
// ── Annotation emission ─────────────────────────────────────────────────────
|
|
33
30
|
/** Format a single diagnostic as a GitHub Actions workflow command. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"annotations.js","sourceRoot":"","sources":["../../../src/reporting/github/annotations.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AA0B1C,+EAA+E;AAE/E;;;GAGG;AACH,SAAS,eAAe,CAAC,KAAa;IACpC,OAAO,KAAK;SACT,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;SACpB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;SACrB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;SACpB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC1B,CAAC;AAED,wDAAwD;AACxD,SAAS,cAAc,CAAC,KAAa;IACnC,OAAO,KAAK
|
|
1
|
+
{"version":3,"file":"annotations.js","sourceRoot":"","sources":["../../../src/reporting/github/annotations.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AA0B1C,+EAA+E;AAE/E;;;GAGG;AACH,SAAS,eAAe,CAAC,KAAa;IACpC,OAAO,KAAK;SACT,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;SACpB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;SACrB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;SACpB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC1B,CAAC;AAED,wDAAwD;AACxD,SAAS,cAAc,CAAC,KAAa;IACnC,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAChF,CAAC;AAED,+EAA+E;AAE/E,uEAAuE;AACvE,MAAM,UAAU,gBAAgB,CAAC,UAAsB;IACrD,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,QAAQ,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACvD,KAAK,CAAC,IAAI,CAAC,QAAQ,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;IAEtC,IAAI,UAAU,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,WAAW,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9C,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,OAAO,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;IACzC,CAAC;IACD,IAAI,UAAU,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACvC,KAAK,CAAC,IAAI,CAAC,aAAa,UAAU,CAAC,SAAS,EAAE,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;QACrB,KAAK,CAAC,IAAI,CAAC,SAAS,eAAe,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,OAAO,GAAG,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACnD,OAAO,KAAK,UAAU,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,OAAO,EAAE,CAAC;AACnE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,WAAyB;IACvD,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC;AACH,CAAC;AAED,+EAA+E;AAE/E,sDAAsD;AACtD,MAAM,UAAU,oBAAoB,CAClC,WAAyB;IAEzB,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAEhC,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;QAC5B,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAClB,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;YACnB,KAAK,OAAO;gBACV,MAAM,EAAE,CAAC;gBACT,MAAM;YACR,KAAK,SAAS;gBACZ,QAAQ,EAAE,CAAC;gBACX,MAAM;YACR,KAAK,QAAQ;gBACX,OAAO,EAAE,CAAC;gBACV,MAAM;QACV,CAAC;IACH,CAAC;IAED,OAAO;QACL,MAAM;QACN,QAAQ;QACR,OAAO;QACP,KAAK,EAAE,WAAW,CAAC,MAAM;QACzB,SAAS,EAAE,KAAK,CAAC,IAAI;KACtB,CAAC;AACJ,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,+BAA+B,CAC7C,UAAkB,EAClB,WAAyB;IAEzB,MAAM,OAAO,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAElD,IAAI,EAAE,GAAG,OAAO,UAAU,MAAM,CAAC;IAEjC,IAAI,OAAO,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;QACxB,EAAE,IAAI,oBAAoB,CAAC;QAC3B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,SAAS,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC1E,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CACR,GAAG,OAAO,CAAC,QAAQ,WAAW,OAAO,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAClE,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,OAAO,UAAU,OAAO,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED,EAAE,IAAI,KAAK,OAAO,CAAC,KAAK,SAAS,OAAO,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,aAC7D,OAAO,CAAC,SACV,QAAQ,OAAO,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;IAEtE,4BAA4B;IAC5B,MAAM,MAAM,GAAG,IAAI,GAAG,EAAwB,CAAC;IAC/C,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACtC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACb,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC3B,CAAC;IAED,4DAA4D;IAC5D,MAAM,SAAS,GAAG,EAAE,CAAC;IACrB,MAAM,YAAY,GAAG,EAAE,CAAC;IACxB,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE,CAAC;QACnC,IAAI,SAAS,IAAI,SAAS,EAAE,CAAC;YAC3B,EAAE,IAAI,cAAc,MAAM,CAAC,IAAI,GAAG,SAAS,kBAAkB,CAAC;YAC9D,MAAM;QACR,CAAC;QAED,EAAE,IAAI,2BAA2B,IAAI,YAAY,KAAK,CAAC,MAAM,iBAAiB,CAAC;QAC/E,EAAE,IAAI,iCAAiC,CAAC;QACxC,EAAE,IAAI,iCAAiC,CAAC;QAExC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;QAC3C,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,MAAM,GAAG,GACP,CAAC,CAAC,QAAQ,KAAK,OAAO;gBACpB,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS;oBAC1B,CAAC,CAAC,WAAW;oBACb,CAAC,CAAC,UAAU,CAAC;YACjB,MAAM,UAAU,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YACvE,EAAE,IAAI,KAAK,CAAC,CAAC,IAAI,MAAM,GAAG,MAAM,UAAU,MAAM,CAAC;QACnD,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,GAAG,YAAY,EAAE,CAAC;YAChC,EAAE,IAAI,cACJ,KAAK,CAAC,MAAM,GAAG,YACjB,gCAAgC,CAAC;QACnC,CAAC;QAED,EAAE,IAAI,kBAAkB,CAAC;QACzB,SAAS,EAAE,CAAC;IACd,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,UAAkB,EAClB,WAAyB;IAEzB,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC;QAChD,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,+BAA+B,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IAC1E,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IAEpD,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,UAAU,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAC3C,YAAY,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;IACnE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,YAAY,CAAC,IAAI,CACf,gCACE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CACjD,EAAE,CACH,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"annotations.test.js","sourceRoot":"","sources":["../../../src/reporting/github/annotations.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAC7D,OAAO,EAEL,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,+BAA+B,GAChC,MAAM,kBAAkB,CAAC;AAE1B,SAAS,cAAc,CAAC,YAAiC,EAAE;IACzD,OAAO;QACL,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,EAAE;QACR,QAAQ,EAAE,OAAO;QACjB,OAAO,EAAE,sBAAsB;QAC/B,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,MAAM,GAAG,gBAAgB,CAAC,cAAc,EAAE,CAAC,CAAC;QAClD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CACjB,wDAAwD,CACzD,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,MAAM,GAAG,gBAAgB,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;QACzE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CACjB,0DAA0D,CAC3D,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,MAAM,GAAG,gBAAgB,CAC7B,cAAc,CAAC;YACb,OAAO,EAAE,EAAE;YACX,MAAM,EAAE,CAAC;YACT,SAAS,EAAE,EAAE;YACb,KAAK,EAAE,WAAW;SACnB,CAAC,CACH,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CACjB,sGAAsG,CACvG,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,MAAM,GAAG,gBAAgB,
|
|
1
|
+
{"version":3,"file":"annotations.test.js","sourceRoot":"","sources":["../../../src/reporting/github/annotations.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"comment-table-reporter.d.ts","sourceRoot":"","sources":["../../../src/reporting/github/comment-table-reporter.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,YAAY,EACb,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EACL,KAAK,wBAAwB,EAI9B,MAAM,iBAAiB,CAAC;AAOzB,YAAY,EACV,mBAAmB,EACnB,wBAAwB,EACxB,cAAc,GACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD;;;;;;GAMG;AACH,qBAAa,0BAA2B,SAAQ,YAAY;IAC1D,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,OAAO,CAA2B;IAC1C,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,YAAY,CAA4C;IAChE,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,eAAe,CAAqB;IAE5C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAU;gBAG3C,KAAK,EAAE,aAAa,GAAG,SAAS,EAChC,MAAM,EAAE,wBAAwB,EAChC,WAAW,CAAC,EAAE,MAAM;IAQtB;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI7B;;;OAGG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIrB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAKjC,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAInC,oBAAoB,
|
|
1
|
+
{"version":3,"file":"comment-table-reporter.d.ts","sourceRoot":"","sources":["../../../src/reporting/github/comment-table-reporter.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,YAAY,EACb,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EACL,KAAK,wBAAwB,EAI9B,MAAM,iBAAiB,CAAC;AAOzB,YAAY,EACV,mBAAmB,EACnB,wBAAwB,EACxB,cAAc,GACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD;;;;;;GAMG;AACH,qBAAa,0BAA2B,SAAQ,YAAY;IAC1D,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,OAAO,CAA2B;IAC1C,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,YAAY,CAA4C;IAChE,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,eAAe,CAAqB;IAE5C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAU;gBAG3C,KAAK,EAAE,aAAa,GAAG,SAAS,EAChC,MAAM,EAAE,wBAAwB,EAChC,WAAW,CAAC,EAAE,MAAM;IAQtB;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI7B;;;OAGG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIrB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAKjC,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAInC,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI;IAIhE,uBAAuB,CAC9B,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,eAAe,GACzB,IAAI;IAIE,eAAe,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAIvC,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAqBzC,OAAO,CAAC,eAAe;YAmBT,gBAAgB;YAUhB,iBAAiB;CAOhC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"comment-table-reporter.js","sourceRoot":"","sources":["../../../src/reporting/github/comment-table-reporter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAIL,YAAY,GACb,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAEL,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,wBAAwB,EACxB,+BAA+B,GAChC,MAAM,iBAAiB,CAAC;AAQzB,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD;;;;;;GAMG;AACH,MAAM,OAAO,0BAA2B,SAAQ,YAAY;IAClD,MAAM,CAA4B;IAClC,OAAO,CAA2B;IAClC,YAAY,CAAS;IACrB,YAAY,CAA4C;IACxD,cAAc,GAAG,KAAK,CAAC;IACvB,SAAS,GAAG,KAAK,CAAC;IAClB,MAAM,CAAqB;IAC3B,eAAe,CAAqB;IAEpC,MAAM,CAAU,WAAW,GAAG,MAAM,CAAC;IAE7C,YACE,KAAgC,EAChC,MAAgC,EAChC,WAAoB;QAEpB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,YAAY,GAAG,WAAW,IAAI,CAAC,CAAC;IACvC,CAAC;IAED;;;OAGG;IACH,QAAQ,CAAC,KAAa;QACpB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;IAED;;;OAGG;IACH,aAAa,CAAC,OAAe;QAC3B,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC;IACjC,CAAC;IAEQ,KAAK,CAAC,UAAU;QACvB,IAAI,CAAC,uBAAuB,EAAE;YAAE,OAAO;QACvC,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAChC,CAAC;IAEQ,cAAc,CAAC,KAAa;QACnC,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAEQ,oBAAoB,
|
|
1
|
+
{"version":3,"file":"comment-table-reporter.js","sourceRoot":"","sources":["../../../src/reporting/github/comment-table-reporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatting.d.ts","sourceRoot":"","sources":["../../../src/reporting/github/formatting.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,QAAQ,EACd,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,YAAY,EAClB,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"formatting.d.ts","sourceRoot":"","sources":["../../../src/reporting/github/formatting.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,QAAQ,EACd,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,YAAY,EAClB,MAAM,2BAA2B,CAAC;AASnC,sDAAsD;AACtD,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAAC;IAClC,kEAAkE;IAClE,UAAU,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;CAChC;AAED,gDAAgD;AAChD,MAAM,WAAW,wBAAwB;IACvC,8DAA8D;IAC9D,OAAO,EAAE,MAAM,CAAC;IAChB,kEAAkE;IAClE,aAAa,EAAE,MAAM,CAAC;IACtB,kEAAkE;IAClE,YAAY,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACrC,8DAA8D;IAC9D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uEAAuE;IACvE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iEAAiE;IACjE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6FAA6F;IAC7F,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,iDAAiD;AACjD,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAID;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,QAAQ,GAAG,MAAM,CAkB5E;AA4BD,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,aAAa,EACpB,QAAQ,CAAC,EAAE,eAAe,GACzB,MAAM,CAOR;AAED,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,aAAa,EAClB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,GACnB,MAAM,CAiBR;AAED,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,SAAS,CAUrD;AAED,kEAAkE;AAClE,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,wBAAwB,EAChC,IAAI,EAAE,cAAc,EAAE,EACtB,YAAY,EAAE,mBAAmB,EAAE,EACnC,MAAM,EAAE,MAAM,GACb,MAAM,CAyCR;AA8BD;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,wBAAwB,EAChC,WAAW,EAAE,MAAM,GAClB,MAAM,CA4ER;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,wBAAwB,EAChC,OAAO,EAAE,MAAM,GACd,MAAM,CAWR;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,wBAAwB,EAChC,KAAK,EAAE,MAAM,GACZ,MAAM,CAcR"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* render identical markdown tables from batch run state.
|
|
6
6
|
*/
|
|
7
7
|
import { formatDurationMs } from '../../cli-utils.js';
|
|
8
|
-
import { formatProgressInline, formatProgressResult, isEmptyTestRun } from '../progress-format.js';
|
|
8
|
+
import { formatProgressInline, formatProgressResult, isEmptyTestRun, } from '../progress-format.js';
|
|
9
9
|
// ── Error summarization ─────────────────────────────────────────────────────
|
|
10
10
|
/**
|
|
11
11
|
* Summarize an error string for display in compact contexts (tables, etc.).
|
|
@@ -65,10 +65,10 @@ export function formatResultStatus(pkg, successLabel, failureLabel) {
|
|
|
65
65
|
const progressText = formatProgressResult(pkg.progressSummary);
|
|
66
66
|
const empty = isEmptyTestRun(pkg.progressSummary);
|
|
67
67
|
if (pkg.success) {
|
|
68
|
-
const label = progressText
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
68
|
+
const label = progressText
|
|
69
|
+
? `${successLabel} ${progressText}`
|
|
70
|
+
: successLabel;
|
|
71
|
+
return empty ? `⚠️ ${label} (${duration})` : `✅ ${label} (${duration})`;
|
|
72
72
|
}
|
|
73
73
|
const failedPhase = pkg.failedPhase;
|
|
74
74
|
const label = failedPhase
|
|
@@ -183,9 +183,7 @@ export function formatGithubTableBody(state, config, concurrency) {
|
|
|
183
183
|
}
|
|
184
184
|
else {
|
|
185
185
|
const done = packages.filter((p) => p.status === 'passed' || p.status === 'failed').length;
|
|
186
|
-
const running = packages.filter((p) => p.status !== 'pending' &&
|
|
187
|
-
p.status !== 'passed' &&
|
|
188
|
-
p.status !== 'failed').length;
|
|
186
|
+
const running = packages.filter((p) => p.status !== 'pending' && p.status !== 'passed' && p.status !== 'failed').length;
|
|
189
187
|
const pending = packages.filter((p) => p.status === 'pending').length;
|
|
190
188
|
const parts = [];
|
|
191
189
|
if (done > 0)
|
|
@@ -204,13 +202,10 @@ export function formatGithubTableBody(state, config, concurrency) {
|
|
|
204
202
|
export function formatGithubNoTestsBody(config, message) {
|
|
205
203
|
const actionsRunUrl = getActionsRunUrl();
|
|
206
204
|
const heading = config.heading;
|
|
205
|
+
const logsPart = actionsRunUrl ? ` · [View logs](${actionsRunUrl})` : '';
|
|
207
206
|
let body = config.commentMarker + '\n';
|
|
208
|
-
body += `## ${heading}\n
|
|
209
|
-
body += `ℹ️
|
|
210
|
-
body += `${message}\n`;
|
|
211
|
-
if (actionsRunUrl) {
|
|
212
|
-
body += `\n[View logs](${actionsRunUrl})\n`;
|
|
213
|
-
}
|
|
207
|
+
body += `## ${heading}\n`;
|
|
208
|
+
body += `ℹ️ ${message}${logsPart}\n`;
|
|
214
209
|
return body;
|
|
215
210
|
}
|
|
216
211
|
/**
|