@hardlydifficult/text 1.0.6 → 1.0.7
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/dist/buildFileTree.d.ts
CHANGED
|
@@ -2,6 +2,8 @@ export interface BuildTreeOptions {
|
|
|
2
2
|
maxLevel2?: number;
|
|
3
3
|
maxLevel3?: number;
|
|
4
4
|
annotations?: ReadonlyMap<string, string>;
|
|
5
|
+
/** Directory names to collapse. Matched dirs show a content summary instead of expanding children. */
|
|
6
|
+
collapseDirs?: readonly string[];
|
|
5
7
|
}
|
|
6
8
|
/** Default truncation limits for file tree rendering. */
|
|
7
9
|
export declare const FILE_TREE_DEFAULTS: Required<Pick<BuildTreeOptions, "maxLevel2" | "maxLevel3">>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildFileTree.d.ts","sourceRoot":"","sources":["../src/buildFileTree.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"buildFileTree.d.ts","sourceRoot":"","sources":["../src/buildFileTree.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,sGAAsG;IACtG,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAClC;AAED,yDAAyD;AACzD,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CACvC,IAAI,CAAC,gBAAgB,EAAE,WAAW,GAAG,WAAW,CAAC,CAIlD,CAAC;AAiCF;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,SAAS,EAAE,SAAS,MAAM,EAAE,EAC5B,OAAO,GAAE,gBAAqB,GAC7B,MAAM,CAyFR"}
|
package/dist/buildFileTree.js
CHANGED
|
@@ -7,12 +7,43 @@ exports.FILE_TREE_DEFAULTS = {
|
|
|
7
7
|
maxLevel2: 10,
|
|
8
8
|
maxLevel3: 3,
|
|
9
9
|
};
|
|
10
|
+
/**
|
|
11
|
+
* Count all descendant files and directories within a node.
|
|
12
|
+
*/
|
|
13
|
+
function countDescendants(node) {
|
|
14
|
+
let files = 0;
|
|
15
|
+
let dirs = 0;
|
|
16
|
+
for (const child of node.children ?? []) {
|
|
17
|
+
if (child.isDir) {
|
|
18
|
+
dirs++;
|
|
19
|
+
const sub = countDescendants(child);
|
|
20
|
+
files += sub.files;
|
|
21
|
+
dirs += sub.dirs;
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
files++;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return { files, dirs };
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Format a collapsed directory summary, e.g. "(42 files across 3 dirs)".
|
|
31
|
+
*/
|
|
32
|
+
function formatCollapsedSummary(files, dirs) {
|
|
33
|
+
const filePart = `${String(files)} ${files === 1 ? "file" : "files"}`;
|
|
34
|
+
if (dirs === 0) {
|
|
35
|
+
return `(${filePart})`;
|
|
36
|
+
}
|
|
37
|
+
const dirPart = `${String(dirs)} ${dirs === 1 ? "dir" : "dirs"}`;
|
|
38
|
+
return `(${filePart} across ${dirPart})`;
|
|
39
|
+
}
|
|
10
40
|
/**
|
|
11
41
|
* Builds a hierarchical file tree from flat paths with depth-based truncation.
|
|
12
42
|
* Optionally annotates entries with short descriptions from the annotations map.
|
|
13
43
|
*/
|
|
14
44
|
function buildFileTree(filePaths, options = {}) {
|
|
15
|
-
const { maxLevel2 = exports.FILE_TREE_DEFAULTS.maxLevel2, maxLevel3 = exports.FILE_TREE_DEFAULTS.maxLevel3, annotations, } = options;
|
|
45
|
+
const { maxLevel2 = exports.FILE_TREE_DEFAULTS.maxLevel2, maxLevel3 = exports.FILE_TREE_DEFAULTS.maxLevel3, annotations, collapseDirs, } = options;
|
|
46
|
+
const collapseSet = collapseDirs ? new Set(collapseDirs) : undefined;
|
|
16
47
|
// Build tree structure
|
|
17
48
|
const root = { name: "", isDir: true, children: [], fullPath: "" };
|
|
18
49
|
for (const filePath of filePaths) {
|
|
@@ -67,7 +98,13 @@ function buildFileTree(filePaths, options = {}) {
|
|
|
67
98
|
const annotation = annotations?.get(child.fullPath) ?? "";
|
|
68
99
|
const suffix = annotation !== "" ? ` — ${annotation}` : "";
|
|
69
100
|
lines.push(`${prefix}${child.name}${marker}${suffix}`);
|
|
70
|
-
if (child.
|
|
101
|
+
if (child.isDir && collapseSet?.has(child.name) === true) {
|
|
102
|
+
const { files, dirs } = countDescendants(child);
|
|
103
|
+
if (files > 0 || dirs > 0) {
|
|
104
|
+
lines.push(`${prefix} ${formatCollapsedSummary(files, dirs)}`);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
else if (child.children && child.children.length > 0) {
|
|
71
108
|
renderNode(child, depth + 1, `${prefix} `);
|
|
72
109
|
}
|
|
73
110
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildFileTree.js","sourceRoot":"","sources":["../src/buildFileTree.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"buildFileTree.js","sourceRoot":"","sources":["../src/buildFileTree.ts"],"names":[],"mappings":"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"}
|