@lakindu_perera/toren 1.0.8 → 1.0.10
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 +12 -0
- package/dist/cli/toren.d.ts +24 -0
- package/dist/cli/toren.js +258 -0
- package/dist/cli/toren.js.map +1 -0
- package/dist/detectors/config-detector.d.ts +3 -0
- package/dist/detectors/config-detector.js +58 -0
- package/dist/detectors/config-detector.js.map +1 -0
- package/dist/detectors/health-detector.d.ts +12 -0
- package/dist/detectors/health-detector.js +53 -0
- package/dist/detectors/health-detector.js.map +1 -0
- package/dist/detectors/important-files-detector.d.ts +51 -0
- package/dist/detectors/important-files-detector.js +455 -0
- package/dist/detectors/important-files-detector.js.map +1 -0
- package/dist/detectors/package-manager-detector.d.ts +7 -0
- package/dist/detectors/package-manager-detector.js +35 -0
- package/dist/detectors/package-manager-detector.js.map +1 -0
- package/dist/detectors/project-info-detector.d.ts +13 -0
- package/dist/detectors/project-info-detector.js +97 -0
- package/dist/detectors/project-info-detector.js.map +1 -0
- package/dist/detectors/script-detector.d.ts +42 -0
- package/dist/detectors/script-detector.js +199 -0
- package/dist/detectors/script-detector.js.map +1 -0
- package/dist/focused-output.d.ts +27 -0
- package/dist/focused-output.js +201 -0
- package/dist/focused-output.js.map +1 -0
- package/dist/lifecycle.d.ts +2 -0
- package/dist/lifecycle.js +114 -0
- package/dist/lifecycle.js.map +1 -0
- package/dist/renderers/console-renderer.d.ts +20 -0
- package/dist/renderers/console-renderer.js +363 -0
- package/dist/renderers/console-renderer.js.map +1 -0
- package/dist/renderers/html-renderer.d.ts +14 -0
- package/{src → dist}/renderers/html-renderer.js +181 -241
- package/dist/renderers/html-renderer.js.map +1 -0
- package/dist/renderers/index.d.ts +7 -0
- package/dist/renderers/index.js +12 -0
- package/dist/renderers/index.js.map +1 -0
- package/dist/renderers/json-renderer.d.ts +10 -0
- package/dist/renderers/json-renderer.js +127 -0
- package/dist/renderers/json-renderer.js.map +1 -0
- package/dist/renderers/markdown-renderer.d.ts +13 -0
- package/dist/renderers/markdown-renderer.js +360 -0
- package/dist/renderers/markdown-renderer.js.map +1 -0
- package/dist/scanner/scan.d.ts +2 -0
- package/dist/scanner/scan.js +573 -0
- package/dist/scanner/scan.js.map +1 -0
- package/dist/types/index.d.ts +85 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +11 -6
- package/bin/toren.js +0 -311
- package/src/detectors/config-detector.js +0 -81
- package/src/detectors/health-detector.js +0 -72
- package/src/detectors/important-files-detector.js +0 -515
- package/src/detectors/package-manager-detector.js +0 -112
- package/src/detectors/project-info-detector.js +0 -89
- package/src/detectors/script-detector.js +0 -248
- package/src/focused-output.js +0 -216
- package/src/lifecycle.js +0 -124
- package/src/renderers/console-renderer.js +0 -399
- package/src/renderers/index.js +0 -41
- package/src/renderers/json-renderer.js +0 -168
- package/src/renderers/markdown-renderer.js +0 -397
- package/src/scanner/scan.js +0 -554
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"html-renderer.js","sourceRoot":"","sources":["../../src/renderers/html-renderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { render as renderConsole } from './console-renderer.js';
|
|
2
|
+
import { render as renderJson } from './json-renderer.js';
|
|
3
|
+
import { render as renderMarkdown } from './markdown-renderer.js';
|
|
4
|
+
import { render as renderHtml } from './html-renderer.js';
|
|
5
|
+
const renderers = {
|
|
6
|
+
console: renderConsole,
|
|
7
|
+
json: renderJson,
|
|
8
|
+
markdown: renderMarkdown,
|
|
9
|
+
html: renderHtml,
|
|
10
|
+
};
|
|
11
|
+
export default renderers;
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/renderers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,MAAM,IAAI,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAK1D,MAAM,SAAS,GAAmC;IAChD,OAAO,EAAE,aAAa;IACtB,IAAI,EAAE,UAAU;IAChB,QAAQ,EAAE,cAAc;IACxB,IAAI,EAAE,UAAU;CACjB,CAAC;AAEF,eAAe,SAAS,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ScanResult } from "../types/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* Render a ScanResult as a stable JSON document to stdout.
|
|
4
|
+
*
|
|
5
|
+
* @param {import('../scanner/scan.js').ScanResult} result
|
|
6
|
+
* @param {{ cwd?: string }} [options]
|
|
7
|
+
*/
|
|
8
|
+
export declare function render(result: ScanResult, options?: {
|
|
9
|
+
cwd?: string;
|
|
10
|
+
}): void;
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Toren — JSON Renderer
|
|
3
|
+
*
|
|
4
|
+
* Consumes a ScanResult and produces a stable, consistently-ordered JSON
|
|
5
|
+
* object suitable for programmatic consumption.
|
|
6
|
+
*
|
|
7
|
+
* Design contract (mirrors all other renderers):
|
|
8
|
+
* - Accepts a ScanResult and an optional options object.
|
|
9
|
+
* - Never scans files or modifies the data it receives.
|
|
10
|
+
* - All arrays are always present — never undefined or missing.
|
|
11
|
+
* - Property order is fixed and documented below.
|
|
12
|
+
* - Backward compatible: no existing field is removed or renamed.
|
|
13
|
+
*
|
|
14
|
+
* Output property order:
|
|
15
|
+
* 1. meta — schema version + generator provenance
|
|
16
|
+
* 2. project — name (basename), path (relative), detected type
|
|
17
|
+
* 3. frameworks — derived array of detected frameworks ([] when none)
|
|
18
|
+
* 4. entryPoints — array of detected entry-point paths
|
|
19
|
+
* 5. configs — array of detected configuration file paths
|
|
20
|
+
* 6. scripts — array of { name, command } objects
|
|
21
|
+
* 7. statistics — file/folder counts and scan duration (structured)
|
|
22
|
+
* 8. structure — recursive file-tree array
|
|
23
|
+
* 9. summary — retained for backward compatibility (same data as statistics)
|
|
24
|
+
*/
|
|
25
|
+
import path from 'node:path';
|
|
26
|
+
import { createRequire } from 'node:module';
|
|
27
|
+
const require = createRequire(import.meta.url);
|
|
28
|
+
const pkg = require('../../package.json');
|
|
29
|
+
function mapTree(node) {
|
|
30
|
+
if (node.type === 'directory') {
|
|
31
|
+
return {
|
|
32
|
+
type: 'folder',
|
|
33
|
+
name: node.name,
|
|
34
|
+
children: (node.children || []).map(mapTree),
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
return {
|
|
38
|
+
type: 'file',
|
|
39
|
+
name: node.name,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
// ---------------------------------------------------------------------------
|
|
43
|
+
// Helpers
|
|
44
|
+
// ---------------------------------------------------------------------------
|
|
45
|
+
/**
|
|
46
|
+
* Derive a `frameworks` array from the scanner's `projectType` string.
|
|
47
|
+
* Returns a single-element array when a framework is detected, empty otherwise.
|
|
48
|
+
* This is a pure presentation decision — no business logic is added.
|
|
49
|
+
*
|
|
50
|
+
* @param {string} projectType
|
|
51
|
+
* @returns {string[]}
|
|
52
|
+
*/
|
|
53
|
+
function deriveFrameworks(projectType) {
|
|
54
|
+
if (!projectType || projectType === 'Unknown')
|
|
55
|
+
return [];
|
|
56
|
+
return [projectType];
|
|
57
|
+
}
|
|
58
|
+
// ---------------------------------------------------------------------------
|
|
59
|
+
// Public API
|
|
60
|
+
// ---------------------------------------------------------------------------
|
|
61
|
+
/**
|
|
62
|
+
* Render a ScanResult as a stable JSON document to stdout.
|
|
63
|
+
*
|
|
64
|
+
* @param {import('../scanner/scan.js').ScanResult} result
|
|
65
|
+
* @param {{ cwd?: string }} [options]
|
|
66
|
+
*/
|
|
67
|
+
export function render(result, options = {}) {
|
|
68
|
+
const { rootPath, projectType, entryPoints = [], configs = [], scripts = [], packageManager, importantFiles = [], projectInfo = null, health = [], tree, flatFiles = [], totalFolders = 0, scanDurationMs, } = result;
|
|
69
|
+
const cwd = options.cwd ?? process.cwd();
|
|
70
|
+
const relRoot = path.relative(cwd, rootPath) || '.';
|
|
71
|
+
const rootName = path.basename(rootPath) || relRoot;
|
|
72
|
+
// Shared statistics values — computed once, used in both `statistics` and
|
|
73
|
+
// the backward-compatible `summary` block.
|
|
74
|
+
// Guard against NaN/undefined: JSON.stringify(NaN) produces null, breaking
|
|
75
|
+
// the schema guarantee that durationMs is always a number.
|
|
76
|
+
const totalFiles = flatFiles.length;
|
|
77
|
+
const durationMs = Number.isFinite(scanDurationMs) ? Math.round(scanDurationMs) : 0;
|
|
78
|
+
const output = {
|
|
79
|
+
// 1. Provenance — lets consumers detect schema changes.
|
|
80
|
+
meta: {
|
|
81
|
+
generatedBy: 'Toren',
|
|
82
|
+
version: pkg.version,
|
|
83
|
+
schema: 1,
|
|
84
|
+
},
|
|
85
|
+
// 2. Project identity — name is the human-readable basename; path is the
|
|
86
|
+
// relative path used for filesystem resolution.
|
|
87
|
+
project: {
|
|
88
|
+
name: (projectInfo && projectInfo.name) ? projectInfo.name : rootName,
|
|
89
|
+
path: relRoot,
|
|
90
|
+
type: projectType,
|
|
91
|
+
packageManager: packageManager || null,
|
|
92
|
+
runtime: projectInfo ? projectInfo.runtime : null,
|
|
93
|
+
language: projectInfo ? projectInfo.language : null,
|
|
94
|
+
framework: projectInfo ? projectInfo.framework : null,
|
|
95
|
+
architecture: projectInfo ? projectInfo.architecture : null,
|
|
96
|
+
entryPoint: projectInfo ? projectInfo.entryPoint : null,
|
|
97
|
+
sourceDirectory: projectInfo ? projectInfo.sourceDirectory : null,
|
|
98
|
+
},
|
|
99
|
+
// 3. Detected frameworks — always an array.
|
|
100
|
+
frameworks: deriveFrameworks(projectType),
|
|
101
|
+
// 4–6. Discovery results — all arrays, always present, never null.
|
|
102
|
+
entryPoints: Array.isArray(entryPoints) ? entryPoints : [],
|
|
103
|
+
configs: Array.isArray(configs) ? configs : [],
|
|
104
|
+
scripts: Array.isArray(scripts) ? scripts : [],
|
|
105
|
+
importantFiles: Array.isArray(importantFiles) ? importantFiles : [],
|
|
106
|
+
health: Array.isArray(health) ? health : [],
|
|
107
|
+
// 7. Structured statistics — always a complete object with numeric values.
|
|
108
|
+
// durationMs is rounded to the nearest millisecond (integer).
|
|
109
|
+
statistics: {
|
|
110
|
+
files: totalFiles,
|
|
111
|
+
folders: totalFolders,
|
|
112
|
+
durationMs,
|
|
113
|
+
},
|
|
114
|
+
// 8. File-tree — array of root-level nodes; always present.
|
|
115
|
+
// Empty array when the scanned directory is empty.
|
|
116
|
+
structure: (tree?.children || []).map(mapTree),
|
|
117
|
+
// 9. Backward-compatible summary block — preserved for existing consumers.
|
|
118
|
+
// Contains the same data under the original field names.
|
|
119
|
+
summary: {
|
|
120
|
+
totalFiles,
|
|
121
|
+
totalFolders,
|
|
122
|
+
scanDurationMs: durationMs,
|
|
123
|
+
},
|
|
124
|
+
};
|
|
125
|
+
console.log(JSON.stringify(output, null, 2));
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=json-renderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-renderer.js","sourceRoot":"","sources":["../../src/renderers/json-renderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ScanResult } from "../types/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* Render a ScanResult as a GitHub-flavored Markdown report to stdout.
|
|
4
|
+
*
|
|
5
|
+
* All sections are built into an in-memory string array and joined once
|
|
6
|
+
* at the end — a single `console.log` call keeps stdout writes atomic.
|
|
7
|
+
*
|
|
8
|
+
* @param {import('../scanner/scan.js').ScanResult} result
|
|
9
|
+
* @param {{ cwd?: string }} [options]
|
|
10
|
+
*/
|
|
11
|
+
export declare function render(result: ScanResult, options?: {
|
|
12
|
+
cwd?: string;
|
|
13
|
+
}): void;
|
|
@@ -0,0 +1,360 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Toren — Markdown Renderer
|
|
3
|
+
*
|
|
4
|
+
* Consumes a {@link ScanResult} and writes a polished, GitHub-flavored
|
|
5
|
+
* Markdown report to stdout.
|
|
6
|
+
*
|
|
7
|
+
* Design contract (mirrors all other renderers):
|
|
8
|
+
* - Accepts a ScanResult and an optional options object.
|
|
9
|
+
* - Never scans files or modifies the data it receives.
|
|
10
|
+
* - Produces only plain Markdown — no ANSI codes, no HTML, no emoji.
|
|
11
|
+
* - All output goes to stdout so users can redirect freely:
|
|
12
|
+
* toren --format markdown > PROJECT_REPORT.md
|
|
13
|
+
*
|
|
14
|
+
* Sections (in order):
|
|
15
|
+
* 1. Title
|
|
16
|
+
* 2. Project Summary (table)
|
|
17
|
+
* 3. Entry Points (list)
|
|
18
|
+
* 4. Folder Structure (fenced code block)
|
|
19
|
+
* 5. Statistics (table)
|
|
20
|
+
* 6. Scan Information
|
|
21
|
+
*
|
|
22
|
+
* @module renderers/markdown-renderer
|
|
23
|
+
*/
|
|
24
|
+
import path from 'node:path';
|
|
25
|
+
// ---------------------------------------------------------------------------
|
|
26
|
+
// Plain-text tree builder (Markdown-safe, no ANSI, no emoji)
|
|
27
|
+
// ---------------------------------------------------------------------------
|
|
28
|
+
/**
|
|
29
|
+
* Recursively serialise a tree node into classic tree-connector lines.
|
|
30
|
+
* Output is plain ASCII — safe for any Markdown renderer.
|
|
31
|
+
*
|
|
32
|
+
* @param {object} node - Current tree node
|
|
33
|
+
* @param {string} prefix - Accumulated prefix string for indentation
|
|
34
|
+
* @param {boolean} isLast - Whether this node is the last sibling
|
|
35
|
+
* @param {string[]} lines - Accumulator for output lines
|
|
36
|
+
* @param {number} depth - Current recursion depth
|
|
37
|
+
* @param {number} maxDepth - Maximum depth to render
|
|
38
|
+
*/
|
|
39
|
+
function serializeNode(node, prefix, isLast, lines, depth = 0, maxDepth = 5) {
|
|
40
|
+
if (depth >= maxDepth)
|
|
41
|
+
return;
|
|
42
|
+
const connector = isLast ? '└── ' : '├── ';
|
|
43
|
+
const childPad = isLast ? ' ' : '│ ';
|
|
44
|
+
const label = node.type === 'directory' ? `${node.name}/` : node.name;
|
|
45
|
+
lines.push(`${prefix}${connector}${label}`);
|
|
46
|
+
if (node.type === 'directory') {
|
|
47
|
+
const children = node.children || [];
|
|
48
|
+
// Truncate deep directories with an ellipsis rather than cutting silently.
|
|
49
|
+
if (depth === maxDepth - 1 && children.length > 0) {
|
|
50
|
+
lines.push(`${prefix}${childPad}└── ...`);
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
for (let i = 0; i < children.length; i++) {
|
|
54
|
+
serializeNode(children[i], prefix + childPad, i === children.length - 1, lines, depth + 1, maxDepth);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Convert a ScanResult tree into a Markdown-safe tree string.
|
|
60
|
+
*
|
|
61
|
+
* @param {import('../scanner/scan.js').DirNode} tree
|
|
62
|
+
* @param {string} rootName - Display name for the root node (e.g. "my-app/")
|
|
63
|
+
* @param {number} totalFiles
|
|
64
|
+
* @returns {string}
|
|
65
|
+
*/
|
|
66
|
+
function buildTreeString(tree, rootName, totalFiles) {
|
|
67
|
+
if (totalFiles === 0)
|
|
68
|
+
return '';
|
|
69
|
+
const lines = [`${rootName}/`];
|
|
70
|
+
const children = tree.children || [];
|
|
71
|
+
for (let i = 0; i < children.length; i++) {
|
|
72
|
+
serializeNode(children[i], '', i === children.length - 1, lines);
|
|
73
|
+
}
|
|
74
|
+
return lines.join('\n');
|
|
75
|
+
}
|
|
76
|
+
// ---------------------------------------------------------------------------
|
|
77
|
+
// Formatting helpers
|
|
78
|
+
// ---------------------------------------------------------------------------
|
|
79
|
+
/**
|
|
80
|
+
* Format a scan duration in milliseconds to a human-readable string.
|
|
81
|
+
*
|
|
82
|
+
* @param {number} ms
|
|
83
|
+
* @returns {string}
|
|
84
|
+
*/
|
|
85
|
+
function formatDuration(ms) {
|
|
86
|
+
if (ms < 1)
|
|
87
|
+
return '< 1 ms';
|
|
88
|
+
if (ms >= 1000)
|
|
89
|
+
return `${(ms / 1000).toFixed(2)} s`;
|
|
90
|
+
return `${Math.round(ms)} ms`;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Build a Markdown table from an array of two-element [label, value] pairs.
|
|
94
|
+
* Column widths are padded to keep the source Markdown tidy.
|
|
95
|
+
*
|
|
96
|
+
* @param {[string, string][]} rows
|
|
97
|
+
* @returns {string}
|
|
98
|
+
*/
|
|
99
|
+
function markdownTable(rows) {
|
|
100
|
+
const colA = Math.max(8, ...rows.map(([k]) => k.length));
|
|
101
|
+
const colB = Math.max(5, ...rows.map(([, v]) => String(v).length));
|
|
102
|
+
const pad = (s, n) => String(s).padEnd(n);
|
|
103
|
+
const hr = `|${'-'.repeat(colA + 2)}|${'-'.repeat(colB + 2)}|`;
|
|
104
|
+
const head = `| ${pad('Property', colA)} | ${pad('Value', colB)} |`;
|
|
105
|
+
const body = rows.map(([k, v]) => `| ${pad(k, colA)} | ${pad(v, colB)} |`);
|
|
106
|
+
return [head, hr, ...body].join('\n');
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Derive a frameworks array from the projectType string.
|
|
110
|
+
* Returns [] when no specific framework is detected.
|
|
111
|
+
* Mirrors the identical derivation in console-renderer.js and json-renderer.js.
|
|
112
|
+
*
|
|
113
|
+
* @param {string} projectType
|
|
114
|
+
* @returns {string[]}
|
|
115
|
+
*/
|
|
116
|
+
function deriveFrameworks(projectType) {
|
|
117
|
+
if (!projectType || projectType === 'Unknown')
|
|
118
|
+
return [];
|
|
119
|
+
return [projectType];
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Build a right-aligned Markdown table (used for statistics).
|
|
123
|
+
*
|
|
124
|
+
* @param {[string, string|number][]} rows
|
|
125
|
+
* @returns {string}
|
|
126
|
+
*/
|
|
127
|
+
function statsTable(rows) {
|
|
128
|
+
const colA = Math.max(6, ...rows.map(([k]) => k.length));
|
|
129
|
+
const colB = Math.max(5, ...rows.map(([, v]) => String(v).length));
|
|
130
|
+
const padL = (s, n) => String(s).padEnd(n);
|
|
131
|
+
const padR = (s, n) => String(s).padStart(n);
|
|
132
|
+
const hr = `|${'-'.repeat(colA + 2)}|${'-'.repeat(colB + 1)}:|`;
|
|
133
|
+
const head = `| ${padL('Metric', colA)} | ${padR('Value', colB)} |`;
|
|
134
|
+
const body = rows.map(([k, v]) => `| ${padL(k, colA)} | ${padR(v, colB)} |`);
|
|
135
|
+
return [head, hr, ...body].join('\n');
|
|
136
|
+
}
|
|
137
|
+
// ---------------------------------------------------------------------------
|
|
138
|
+
// Section builders (private — one function per report section)
|
|
139
|
+
// ---------------------------------------------------------------------------
|
|
140
|
+
/** @param {string[]} out */
|
|
141
|
+
function sectionTitle(out) {
|
|
142
|
+
out.push('# Toren Report');
|
|
143
|
+
out.push('');
|
|
144
|
+
out.push('Generated by **Toren** — Codebase Onboarding Intelligence');
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* @param {string[]} out
|
|
148
|
+
* @param {import('../scanner/scan.js').ScanResult} result
|
|
149
|
+
* @param {string} relRoot
|
|
150
|
+
*/
|
|
151
|
+
function sectionSummary(out, result, relRoot) {
|
|
152
|
+
const { projectType, flatFiles, totalFolders, packageManager, projectInfo } = result;
|
|
153
|
+
out.push('');
|
|
154
|
+
out.push('## Project');
|
|
155
|
+
out.push('');
|
|
156
|
+
const rows = [];
|
|
157
|
+
if (projectInfo && projectInfo.name)
|
|
158
|
+
rows.push(['Name', projectInfo.name]);
|
|
159
|
+
rows.push(['Project Type', projectType]);
|
|
160
|
+
if (packageManager)
|
|
161
|
+
rows.push(['Package Manager', packageManager]);
|
|
162
|
+
if (projectInfo && projectInfo.runtime)
|
|
163
|
+
rows.push(['Runtime', projectInfo.runtime]);
|
|
164
|
+
if (projectInfo && projectInfo.language)
|
|
165
|
+
rows.push(['Language', projectInfo.language]);
|
|
166
|
+
if (projectInfo && projectInfo.architecture)
|
|
167
|
+
rows.push(['Architecture', projectInfo.architecture]);
|
|
168
|
+
if (projectInfo && projectInfo.framework)
|
|
169
|
+
rows.push(['Framework', projectInfo.framework]);
|
|
170
|
+
if (projectInfo && projectInfo.entryPoint)
|
|
171
|
+
rows.push(['Entry Point', projectInfo.entryPoint]);
|
|
172
|
+
if (projectInfo && projectInfo.sourceDirectory)
|
|
173
|
+
rows.push(['Source Directory', projectInfo.sourceDirectory]);
|
|
174
|
+
rows.push(['Scan Path', relRoot]);
|
|
175
|
+
rows.push(['Total Files', String(flatFiles.length)]);
|
|
176
|
+
rows.push(['Total Folders', String(totalFolders)]);
|
|
177
|
+
out.push(markdownTable(rows));
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* @param {string[]} out
|
|
181
|
+
* @param {string} projectType
|
|
182
|
+
*/
|
|
183
|
+
function sectionFrameworks(out, projectType) {
|
|
184
|
+
const frameworks = deriveFrameworks(projectType);
|
|
185
|
+
out.push('');
|
|
186
|
+
out.push('## Frameworks');
|
|
187
|
+
out.push('');
|
|
188
|
+
if (frameworks.length === 0) {
|
|
189
|
+
out.push('No frameworks detected.');
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
for (const fw of frameworks) {
|
|
193
|
+
out.push(`- ${fw}`);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* @param {string[]} out
|
|
199
|
+
* @param {string[]} configs
|
|
200
|
+
*/
|
|
201
|
+
function sectionConfigurationFiles(out, configs) {
|
|
202
|
+
out.push('');
|
|
203
|
+
out.push('## Configurations');
|
|
204
|
+
out.push('');
|
|
205
|
+
if (configs.length === 0) {
|
|
206
|
+
out.push('No configuration files detected.');
|
|
207
|
+
}
|
|
208
|
+
else {
|
|
209
|
+
for (const c of configs) {
|
|
210
|
+
out.push(`- ${c}`);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* @param {string[]} out
|
|
216
|
+
* @param {Array<{name: string, command: string, description: string, usage: string}>} scripts
|
|
217
|
+
*/
|
|
218
|
+
function sectionPackageScripts(out, scripts) {
|
|
219
|
+
out.push('');
|
|
220
|
+
out.push('## Scripts');
|
|
221
|
+
out.push('');
|
|
222
|
+
if (scripts.length === 0) {
|
|
223
|
+
out.push('No package scripts detected.');
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
for (const s of scripts) {
|
|
227
|
+
const usage = s.usage || `npm run ${s.name}`;
|
|
228
|
+
out.push(`- **${usage}**`);
|
|
229
|
+
if (s.description) {
|
|
230
|
+
out.push(` ${s.description} `);
|
|
231
|
+
out.push(` \`${s.command}\``);
|
|
232
|
+
}
|
|
233
|
+
else {
|
|
234
|
+
out.push(` \`${s.command}\``);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* @param {string[]} out
|
|
241
|
+
* @param {Array<{path: string, reason: string}>} importantFiles
|
|
242
|
+
*/
|
|
243
|
+
function sectionImportantFiles(out, importantFiles) {
|
|
244
|
+
out.push('');
|
|
245
|
+
out.push('## Important Files');
|
|
246
|
+
out.push('');
|
|
247
|
+
if (importantFiles.length === 0) {
|
|
248
|
+
out.push('No important files detected.');
|
|
249
|
+
}
|
|
250
|
+
else {
|
|
251
|
+
for (const f of importantFiles) {
|
|
252
|
+
out.push(`- **${f.path}** `);
|
|
253
|
+
out.push(` ${f.reason}`);
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* @param {string[]} out
|
|
259
|
+
* @param {Array<{id: string, status: string, message: string}>} health
|
|
260
|
+
*/
|
|
261
|
+
function sectionProjectHealth(out, health) {
|
|
262
|
+
out.push('');
|
|
263
|
+
out.push('## Project Health');
|
|
264
|
+
out.push('');
|
|
265
|
+
if (health.length === 0) {
|
|
266
|
+
out.push('No project health observations available.');
|
|
267
|
+
}
|
|
268
|
+
else {
|
|
269
|
+
for (const h of health) {
|
|
270
|
+
let icon = 'ℹ';
|
|
271
|
+
if (h.status === 'pass')
|
|
272
|
+
icon = '✓';
|
|
273
|
+
else if (h.status === 'warning')
|
|
274
|
+
icon = '⚠';
|
|
275
|
+
out.push(`- ${icon} ${h.message}`);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* @param {string[]} out
|
|
281
|
+
* @param {string[]} entryPoints
|
|
282
|
+
*/
|
|
283
|
+
function sectionEntryPoints(out, entryPoints) {
|
|
284
|
+
out.push('');
|
|
285
|
+
out.push('## Entry Points');
|
|
286
|
+
out.push('');
|
|
287
|
+
if (entryPoints.length === 0) {
|
|
288
|
+
out.push('No entry points detected.');
|
|
289
|
+
}
|
|
290
|
+
else {
|
|
291
|
+
for (const ep of entryPoints) {
|
|
292
|
+
out.push(`- ${ep}`);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* @param {string[]} out
|
|
298
|
+
* @param {import('../scanner/scan.js').DirNode} tree
|
|
299
|
+
* @param {number} totalFiles
|
|
300
|
+
* @param {string} rootName
|
|
301
|
+
*/
|
|
302
|
+
function sectionFolderStructure(out, tree, totalFiles, rootName) {
|
|
303
|
+
// Contract: omit section entirely when no files were scanned.
|
|
304
|
+
if (totalFiles === 0)
|
|
305
|
+
return;
|
|
306
|
+
out.push('');
|
|
307
|
+
out.push('## Structure');
|
|
308
|
+
out.push('');
|
|
309
|
+
const treeStr = buildTreeString(tree, rootName, totalFiles);
|
|
310
|
+
out.push('```text');
|
|
311
|
+
out.push(treeStr);
|
|
312
|
+
out.push('```');
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* @param {string[]} out
|
|
316
|
+
* @param {import('../scanner/scan.js').ScanResult} result
|
|
317
|
+
*/
|
|
318
|
+
function sectionStatistics(out, result) {
|
|
319
|
+
const { flatFiles, totalFolders, scanDurationMs } = result;
|
|
320
|
+
out.push('');
|
|
321
|
+
out.push('## Statistics');
|
|
322
|
+
out.push('');
|
|
323
|
+
out.push(statsTable([
|
|
324
|
+
['Files', flatFiles.length.toString()],
|
|
325
|
+
['Folders', totalFolders.toString()],
|
|
326
|
+
['Scan Duration', formatDuration(scanDurationMs)],
|
|
327
|
+
]));
|
|
328
|
+
}
|
|
329
|
+
// ---------------------------------------------------------------------------
|
|
330
|
+
// Public API
|
|
331
|
+
// ---------------------------------------------------------------------------
|
|
332
|
+
/**
|
|
333
|
+
* Render a ScanResult as a GitHub-flavored Markdown report to stdout.
|
|
334
|
+
*
|
|
335
|
+
* All sections are built into an in-memory string array and joined once
|
|
336
|
+
* at the end — a single `console.log` call keeps stdout writes atomic.
|
|
337
|
+
*
|
|
338
|
+
* @param {import('../scanner/scan.js').ScanResult} result
|
|
339
|
+
* @param {{ cwd?: string }} [options]
|
|
340
|
+
*/
|
|
341
|
+
export function render(result, options = {}) {
|
|
342
|
+
const { rootPath, projectType, entryPoints, configs = [], scripts = [], flatFiles, tree, importantFiles = [], health = [] } = result;
|
|
343
|
+
const cwd = options.cwd ?? process.cwd();
|
|
344
|
+
const relRoot = path.relative(cwd, rootPath) || '.';
|
|
345
|
+
const rootName = relRoot === '.' ? path.basename(rootPath) : relRoot;
|
|
346
|
+
/** @type {string[]} */
|
|
347
|
+
const out = [];
|
|
348
|
+
sectionTitle(out);
|
|
349
|
+
sectionSummary(out, result, relRoot);
|
|
350
|
+
sectionProjectHealth(out, health);
|
|
351
|
+
sectionImportantFiles(out, importantFiles);
|
|
352
|
+
sectionFrameworks(out, projectType);
|
|
353
|
+
sectionEntryPoints(out, entryPoints);
|
|
354
|
+
sectionConfigurationFiles(out, configs);
|
|
355
|
+
sectionPackageScripts(out, scripts);
|
|
356
|
+
sectionStatistics(out, result);
|
|
357
|
+
sectionFolderStructure(out, tree, flatFiles.length, rootName);
|
|
358
|
+
console.log(out.join('\n'));
|
|
359
|
+
}
|
|
360
|
+
//# sourceMappingURL=markdown-renderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown-renderer.js","sourceRoot":"","sources":["../../src/renderers/markdown-renderer.ts"],"names":[],"mappings":"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"}
|