nuartz 0.1.4 → 0.1.6

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 (45) hide show
  1. package/dist/__tests__/backlinks.test.js +48 -50
  2. package/dist/__tests__/backlinks.test.js.map +1 -1
  3. package/dist/__tests__/fs.test.js +100 -105
  4. package/dist/__tests__/fs.test.js.map +1 -1
  5. package/dist/__tests__/markdown.test.js +61 -63
  6. package/dist/__tests__/markdown.test.js.map +1 -1
  7. package/dist/__tests__/search.test.js +52 -54
  8. package/dist/__tests__/search.test.js.map +1 -1
  9. package/dist/backlinks.js +2 -6
  10. package/dist/backlinks.js.map +1 -1
  11. package/dist/config.js +1 -4
  12. package/dist/config.js.map +1 -1
  13. package/dist/fs.js +16 -24
  14. package/dist/fs.js.map +1 -1
  15. package/dist/index.js +11 -28
  16. package/dist/index.js.map +1 -1
  17. package/dist/markdown.js +44 -50
  18. package/dist/markdown.js.map +1 -1
  19. package/dist/plugins/arrows.js +3 -7
  20. package/dist/plugins/arrows.js.map +1 -1
  21. package/dist/plugins/callout.js +3 -7
  22. package/dist/plugins/callout.js.map +1 -1
  23. package/dist/plugins/callout.test.js +39 -44
  24. package/dist/plugins/callout.test.js.map +1 -1
  25. package/dist/plugins/comment.js +3 -7
  26. package/dist/plugins/comment.js.map +1 -1
  27. package/dist/plugins/comment.test.js +32 -37
  28. package/dist/plugins/comment.test.js.map +1 -1
  29. package/dist/plugins/highlight.js +3 -7
  30. package/dist/plugins/highlight.js.map +1 -1
  31. package/dist/plugins/highlight.test.js +28 -33
  32. package/dist/plugins/highlight.test.js.map +1 -1
  33. package/dist/plugins/tag.js +3 -7
  34. package/dist/plugins/tag.js.map +1 -1
  35. package/dist/plugins/tag.test.js +42 -47
  36. package/dist/plugins/tag.test.js.map +1 -1
  37. package/dist/plugins/wikilink.js +3 -7
  38. package/dist/plugins/wikilink.js.map +1 -1
  39. package/dist/plugins/wikilink.test.js +54 -59
  40. package/dist/plugins/wikilink.test.js.map +1 -1
  41. package/dist/search.js +1 -4
  42. package/dist/search.js.map +1 -1
  43. package/dist/types.js +1 -2
  44. package/package.json +26 -6
  45. package/styles/prose.css +254 -0
@@ -1,7 +1,5 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const vitest_1 = require("vitest");
4
- const backlinks_1 = require("../backlinks");
1
+ import { describe, it, expect } from "vitest";
2
+ import { buildBacklinkIndex, getBacklinks } from "../backlinks";
5
3
  function mockPage(links, title, raw) {
6
4
  return {
7
5
  result: {
@@ -14,50 +12,50 @@ function mockPage(links, title, raw) {
14
12
  raw,
15
13
  };
16
14
  }
17
- (0, vitest_1.describe)("buildBacklinkIndex", () => {
18
- (0, vitest_1.it)("builds index from pages with outgoing links", () => {
15
+ describe("buildBacklinkIndex", () => {
16
+ it("builds index from pages with outgoing links", () => {
19
17
  const pages = new Map([
20
18
  ["page-a", mockPage(["Page B"], "Page A", "Links to Page B")],
21
19
  ["page-b", mockPage(["Page A"], "Page B", "Links to Page A")],
22
20
  ]);
23
- const index = (0, backlinks_1.buildBacklinkIndex)(pages);
21
+ const index = buildBacklinkIndex(pages);
24
22
  // "Page B" normalizes to "page-b"
25
23
  const backlinksForB = index.get("page-b");
26
- (0, vitest_1.expect)(backlinksForB).toBeDefined();
27
- (0, vitest_1.expect)(backlinksForB).toHaveLength(1);
28
- (0, vitest_1.expect)(backlinksForB[0].slug).toBe("page-a");
29
- (0, vitest_1.expect)(backlinksForB[0].title).toBe("Page A");
24
+ expect(backlinksForB).toBeDefined();
25
+ expect(backlinksForB).toHaveLength(1);
26
+ expect(backlinksForB[0].slug).toBe("page-a");
27
+ expect(backlinksForB[0].title).toBe("Page A");
30
28
  });
31
- (0, vitest_1.it)("normalizes target slugs: lowercase and spaces to hyphens", () => {
29
+ it("normalizes target slugs: lowercase and spaces to hyphens", () => {
32
30
  const pages = new Map([
33
31
  ["source", mockPage(["My Target Page"], "Source", "Content here")],
34
32
  ]);
35
- const index = (0, backlinks_1.buildBacklinkIndex)(pages);
36
- (0, vitest_1.expect)(index.has("my-target-page")).toBe(true);
33
+ const index = buildBacklinkIndex(pages);
34
+ expect(index.has("my-target-page")).toBe(true);
37
35
  });
38
- (0, vitest_1.it)("strips non-word/non-hyphen characters from target slug", () => {
36
+ it("strips non-word/non-hyphen characters from target slug", () => {
39
37
  const pages = new Map([
40
38
  ["source", mockPage(["Page (draft)"], "Source", "Content")],
41
39
  ]);
42
- const index = (0, backlinks_1.buildBacklinkIndex)(pages);
40
+ const index = buildBacklinkIndex(pages);
43
41
  // "Page (draft)" -> "page-draft" (parens removed)
44
- (0, vitest_1.expect)(index.has("page-draft")).toBe(true);
42
+ expect(index.has("page-draft")).toBe(true);
45
43
  });
46
- (0, vitest_1.it)("collects multiple backlinks for the same target", () => {
44
+ it("collects multiple backlinks for the same target", () => {
47
45
  const pages = new Map([
48
46
  ["alpha", mockPage(["Target"], "Alpha", "Alpha links to target")],
49
47
  ["beta", mockPage(["Target"], "Beta", "Beta links to target")],
50
48
  ["gamma", mockPage(["Target"], "Gamma", "Gamma links to target")],
51
49
  ]);
52
- const index = (0, backlinks_1.buildBacklinkIndex)(pages);
50
+ const index = buildBacklinkIndex(pages);
53
51
  const backlinks = index.get("target");
54
- (0, vitest_1.expect)(backlinks).toHaveLength(3);
52
+ expect(backlinks).toHaveLength(3);
55
53
  const slugs = backlinks.map((b) => b.slug);
56
- (0, vitest_1.expect)(slugs).toContain("alpha");
57
- (0, vitest_1.expect)(slugs).toContain("beta");
58
- (0, vitest_1.expect)(slugs).toContain("gamma");
54
+ expect(slugs).toContain("alpha");
55
+ expect(slugs).toContain("beta");
56
+ expect(slugs).toContain("gamma");
59
57
  });
60
- (0, vitest_1.it)("generates excerpt from raw content stripping frontmatter", () => {
58
+ it("generates excerpt from raw content stripping frontmatter", () => {
61
59
  const raw = `---
62
60
  title: Source Page
63
61
  ---
@@ -66,23 +64,23 @@ This is the body content that should appear in the excerpt.`;
66
64
  const pages = new Map([
67
65
  ["source", mockPage(["Target"], "Source Page", raw)],
68
66
  ]);
69
- const index = (0, backlinks_1.buildBacklinkIndex)(pages);
67
+ const index = buildBacklinkIndex(pages);
70
68
  const backlinks = index.get("target");
71
- (0, vitest_1.expect)(backlinks[0].excerpt).toContain("This is the body content");
72
- (0, vitest_1.expect)(backlinks[0].excerpt).not.toContain("---");
69
+ expect(backlinks[0].excerpt).toContain("This is the body content");
70
+ expect(backlinks[0].excerpt).not.toContain("---");
73
71
  });
74
- (0, vitest_1.it)("truncates excerpt to 160 characters plus ellipsis", () => {
72
+ it("truncates excerpt to 160 characters plus ellipsis", () => {
75
73
  const longBody = "A".repeat(200);
76
74
  const pages = new Map([
77
75
  ["source", mockPage(["Target"], "Source", longBody)],
78
76
  ]);
79
- const index = (0, backlinks_1.buildBacklinkIndex)(pages);
77
+ const index = buildBacklinkIndex(pages);
80
78
  const backlinks = index.get("target");
81
79
  // 160 chars + ellipsis character
82
- (0, vitest_1.expect)(backlinks[0].excerpt.length).toBeLessThanOrEqual(161);
83
- (0, vitest_1.expect)(backlinks[0].excerpt).toMatch(/\u2026$/);
80
+ expect(backlinks[0].excerpt.length).toBeLessThanOrEqual(161);
81
+ expect(backlinks[0].excerpt).toMatch(/\u2026$/);
84
82
  });
85
- (0, vitest_1.it)("uses slug as title fallback when no frontmatter title", () => {
83
+ it("uses slug as title fallback when no frontmatter title", () => {
86
84
  const pages = new Map([
87
85
  [
88
86
  "no-title-page",
@@ -98,35 +96,35 @@ This is the body content that should appear in the excerpt.`;
98
96
  },
99
97
  ],
100
98
  ]);
101
- const index = (0, backlinks_1.buildBacklinkIndex)(pages);
99
+ const index = buildBacklinkIndex(pages);
102
100
  const backlinks = index.get("target");
103
- (0, vitest_1.expect)(backlinks[0].title).toBe("no-title-page");
101
+ expect(backlinks[0].title).toBe("no-title-page");
104
102
  });
105
103
  });
106
- (0, vitest_1.describe)("getBacklinks", () => {
107
- (0, vitest_1.it)("returns correct BacklinkEntry[] for known slug", () => {
104
+ describe("getBacklinks", () => {
105
+ it("returns correct BacklinkEntry[] for known slug", () => {
108
106
  const pages = new Map([
109
107
  ["source", mockPage(["Target"], "Source Title", "Content about target")],
110
108
  ]);
111
- const index = (0, backlinks_1.buildBacklinkIndex)(pages);
112
- const backlinks = (0, backlinks_1.getBacklinks)(index, "target");
113
- (0, vitest_1.expect)(backlinks).toHaveLength(1);
114
- (0, vitest_1.expect)(backlinks[0].slug).toBe("source");
115
- (0, vitest_1.expect)(backlinks[0].title).toBe("Source Title");
116
- (0, vitest_1.expect)(backlinks[0].excerpt).toBeTruthy();
109
+ const index = buildBacklinkIndex(pages);
110
+ const backlinks = getBacklinks(index, "target");
111
+ expect(backlinks).toHaveLength(1);
112
+ expect(backlinks[0].slug).toBe("source");
113
+ expect(backlinks[0].title).toBe("Source Title");
114
+ expect(backlinks[0].excerpt).toBeTruthy();
117
115
  });
118
- (0, vitest_1.it)("returns empty array for unknown slug", () => {
116
+ it("returns empty array for unknown slug", () => {
119
117
  const pages = new Map([
120
118
  ["source", mockPage(["Target"], "Source", "Content")],
121
119
  ]);
122
- const index = (0, backlinks_1.buildBacklinkIndex)(pages);
123
- const backlinks = (0, backlinks_1.getBacklinks)(index, "nonexistent");
124
- (0, vitest_1.expect)(backlinks).toEqual([]);
120
+ const index = buildBacklinkIndex(pages);
121
+ const backlinks = getBacklinks(index, "nonexistent");
122
+ expect(backlinks).toEqual([]);
125
123
  });
126
- (0, vitest_1.it)("returns empty array for empty index", () => {
127
- const index = (0, backlinks_1.buildBacklinkIndex)(new Map());
128
- const backlinks = (0, backlinks_1.getBacklinks)(index, "anything");
129
- (0, vitest_1.expect)(backlinks).toEqual([]);
124
+ it("returns empty array for empty index", () => {
125
+ const index = buildBacklinkIndex(new Map());
126
+ const backlinks = getBacklinks(index, "anything");
127
+ expect(backlinks).toEqual([]);
130
128
  });
131
129
  });
132
130
  //# sourceMappingURL=backlinks.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"backlinks.test.js","sourceRoot":"","sources":["../../src/__tests__/backlinks.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"backlinks.test.js","sourceRoot":"","sources":["../../src/__tests__/backlinks.test.ts"],"names":[],"mappings":"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"}
@@ -1,48 +1,43 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const vitest_1 = require("vitest");
7
- const promises_1 = __importDefault(require("node:fs/promises"));
8
- const node_os_1 = __importDefault(require("node:os"));
9
- const node_path_1 = __importDefault(require("node:path"));
10
- const fs_1 = require("../fs");
11
- (0, vitest_1.describe)("getAllMarkdownFiles", () => {
1
+ import { describe, it, expect, beforeEach, afterEach } from "vitest";
2
+ import fs from "node:fs/promises";
3
+ import os from "node:os";
4
+ import path from "node:path";
5
+ import { getAllMarkdownFiles, getMarkdownBySlug, buildFileTree } from "../fs";
6
+ describe("getAllMarkdownFiles", () => {
12
7
  let tmpDir;
13
- (0, vitest_1.beforeEach)(async () => {
14
- tmpDir = await promises_1.default.mkdtemp(node_path_1.default.join(node_os_1.default.tmpdir(), "nuartz-fs-test-"));
8
+ beforeEach(async () => {
9
+ tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), "nuartz-fs-test-"));
15
10
  });
16
- (0, vitest_1.afterEach)(async () => {
17
- await promises_1.default.rm(tmpDir, { recursive: true, force: true });
11
+ afterEach(async () => {
12
+ await fs.rm(tmpDir, { recursive: true, force: true });
18
13
  });
19
- (0, vitest_1.it)("returns all .md files recursively", async () => {
20
- await promises_1.default.writeFile(node_path_1.default.join(tmpDir, "root.md"), "# Root");
21
- await promises_1.default.mkdir(node_path_1.default.join(tmpDir, "sub"), { recursive: true });
22
- await promises_1.default.writeFile(node_path_1.default.join(tmpDir, "sub", "nested.md"), "# Nested");
23
- const files = await (0, fs_1.getAllMarkdownFiles)(tmpDir);
14
+ it("returns all .md files recursively", async () => {
15
+ await fs.writeFile(path.join(tmpDir, "root.md"), "# Root");
16
+ await fs.mkdir(path.join(tmpDir, "sub"), { recursive: true });
17
+ await fs.writeFile(path.join(tmpDir, "sub", "nested.md"), "# Nested");
18
+ const files = await getAllMarkdownFiles(tmpDir);
24
19
  const slugs = files.map((f) => f.slug);
25
- (0, vitest_1.expect)(slugs).toContain("root");
26
- (0, vitest_1.expect)(slugs).toContain("sub/nested");
20
+ expect(slugs).toContain("root");
21
+ expect(slugs).toContain("sub/nested");
27
22
  });
28
- (0, vitest_1.it)("excludes files starting with _", async () => {
29
- await promises_1.default.writeFile(node_path_1.default.join(tmpDir, "visible.md"), "# Visible");
30
- await promises_1.default.writeFile(node_path_1.default.join(tmpDir, "_hidden.md"), "# Hidden");
31
- const files = await (0, fs_1.getAllMarkdownFiles)(tmpDir);
23
+ it("excludes files starting with _", async () => {
24
+ await fs.writeFile(path.join(tmpDir, "visible.md"), "# Visible");
25
+ await fs.writeFile(path.join(tmpDir, "_hidden.md"), "# Hidden");
26
+ const files = await getAllMarkdownFiles(tmpDir);
32
27
  const slugs = files.map((f) => f.slug);
33
- (0, vitest_1.expect)(slugs).toContain("visible");
34
- (0, vitest_1.expect)(slugs).not.toContain("_hidden");
35
- });
36
- (0, vitest_1.it)("returns MarkdownFile[] with correct slug format", async () => {
37
- await promises_1.default.mkdir(node_path_1.default.join(tmpDir, "notes"), { recursive: true });
38
- await promises_1.default.writeFile(node_path_1.default.join(tmpDir, "notes", "foo.md"), "# Foo");
39
- const files = await (0, fs_1.getAllMarkdownFiles)(tmpDir);
40
- (0, vitest_1.expect)(files).toHaveLength(1);
41
- (0, vitest_1.expect)(files[0].slug).toBe("notes/foo");
42
- (0, vitest_1.expect)(files[0].filePath).toBe(node_path_1.default.join(tmpDir, "notes", "foo.md"));
43
- (0, vitest_1.expect)(files[0].raw).toContain("# Foo");
44
- });
45
- (0, vitest_1.it)("parses frontmatter", async () => {
28
+ expect(slugs).toContain("visible");
29
+ expect(slugs).not.toContain("_hidden");
30
+ });
31
+ it("returns MarkdownFile[] with correct slug format", async () => {
32
+ await fs.mkdir(path.join(tmpDir, "notes"), { recursive: true });
33
+ await fs.writeFile(path.join(tmpDir, "notes", "foo.md"), "# Foo");
34
+ const files = await getAllMarkdownFiles(tmpDir);
35
+ expect(files).toHaveLength(1);
36
+ expect(files[0].slug).toBe("notes/foo");
37
+ expect(files[0].filePath).toBe(path.join(tmpDir, "notes", "foo.md"));
38
+ expect(files[0].raw).toContain("# Foo");
39
+ });
40
+ it("parses frontmatter", async () => {
46
41
  const content = `---
47
42
  title: My Note
48
43
  tags:
@@ -50,104 +45,104 @@ tags:
50
45
  ---
51
46
 
52
47
  Body content`;
53
- await promises_1.default.writeFile(node_path_1.default.join(tmpDir, "note.md"), content);
54
- const files = await (0, fs_1.getAllMarkdownFiles)(tmpDir);
55
- (0, vitest_1.expect)(files[0].frontmatter.title).toBe("My Note");
56
- (0, vitest_1.expect)(files[0].frontmatter.tags).toEqual(["test"]);
48
+ await fs.writeFile(path.join(tmpDir, "note.md"), content);
49
+ const files = await getAllMarkdownFiles(tmpDir);
50
+ expect(files[0].frontmatter.title).toBe("My Note");
51
+ expect(files[0].frontmatter.tags).toEqual(["test"]);
57
52
  });
58
- (0, vitest_1.it)("returns empty array for non-existent directory", async () => {
59
- const files = await (0, fs_1.getAllMarkdownFiles)(node_path_1.default.join(tmpDir, "nonexistent"));
60
- (0, vitest_1.expect)(files).toEqual([]);
53
+ it("returns empty array for non-existent directory", async () => {
54
+ const files = await getAllMarkdownFiles(path.join(tmpDir, "nonexistent"));
55
+ expect(files).toEqual([]);
61
56
  });
62
57
  });
63
- (0, vitest_1.describe)("getMarkdownBySlug", () => {
58
+ describe("getMarkdownBySlug", () => {
64
59
  let tmpDir;
65
- (0, vitest_1.beforeEach)(async () => {
66
- tmpDir = await promises_1.default.mkdtemp(node_path_1.default.join(node_os_1.default.tmpdir(), "nuartz-slug-test-"));
60
+ beforeEach(async () => {
61
+ tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), "nuartz-slug-test-"));
67
62
  });
68
- (0, vitest_1.afterEach)(async () => {
69
- await promises_1.default.rm(tmpDir, { recursive: true, force: true });
63
+ afterEach(async () => {
64
+ await fs.rm(tmpDir, { recursive: true, force: true });
70
65
  });
71
- (0, vitest_1.it)("returns MarkdownFile for existing slug", async () => {
66
+ it("returns MarkdownFile for existing slug", async () => {
72
67
  const content = `---
73
68
  title: Hello
74
69
  ---
75
70
 
76
71
  World`;
77
- await promises_1.default.writeFile(node_path_1.default.join(tmpDir, "hello.md"), content);
78
- const file = await (0, fs_1.getMarkdownBySlug)(tmpDir, "hello");
79
- (0, vitest_1.expect)(file).not.toBeNull();
80
- (0, vitest_1.expect)(file.slug).toBe("hello");
81
- (0, vitest_1.expect)(file.frontmatter.title).toBe("Hello");
82
- (0, vitest_1.expect)(file.raw).toContain("World");
83
- });
84
- (0, vitest_1.it)("returns null for non-existent slug", async () => {
85
- const file = await (0, fs_1.getMarkdownBySlug)(tmpDir, "does-not-exist");
86
- (0, vitest_1.expect)(file).toBeNull();
87
- });
88
- (0, vitest_1.it)("works with nested slugs", async () => {
89
- await promises_1.default.mkdir(node_path_1.default.join(tmpDir, "notes"), { recursive: true });
90
- await promises_1.default.writeFile(node_path_1.default.join(tmpDir, "notes", "deep.md"), "# Deep");
91
- const file = await (0, fs_1.getMarkdownBySlug)(tmpDir, "notes/deep");
92
- (0, vitest_1.expect)(file).not.toBeNull();
93
- (0, vitest_1.expect)(file.slug).toBe("notes/deep");
72
+ await fs.writeFile(path.join(tmpDir, "hello.md"), content);
73
+ const file = await getMarkdownBySlug(tmpDir, "hello");
74
+ expect(file).not.toBeNull();
75
+ expect(file.slug).toBe("hello");
76
+ expect(file.frontmatter.title).toBe("Hello");
77
+ expect(file.raw).toContain("World");
78
+ });
79
+ it("returns null for non-existent slug", async () => {
80
+ const file = await getMarkdownBySlug(tmpDir, "does-not-exist");
81
+ expect(file).toBeNull();
82
+ });
83
+ it("works with nested slugs", async () => {
84
+ await fs.mkdir(path.join(tmpDir, "notes"), { recursive: true });
85
+ await fs.writeFile(path.join(tmpDir, "notes", "deep.md"), "# Deep");
86
+ const file = await getMarkdownBySlug(tmpDir, "notes/deep");
87
+ expect(file).not.toBeNull();
88
+ expect(file.slug).toBe("notes/deep");
94
89
  });
95
90
  });
96
- (0, vitest_1.describe)("buildFileTree", () => {
97
- (0, vitest_1.it)("builds tree from flat list of files", () => {
91
+ describe("buildFileTree", () => {
92
+ it("builds tree from flat list of files", () => {
98
93
  const files = [
99
94
  { slug: "alpha", filePath: "/alpha.md", frontmatter: { title: "Alpha" }, raw: "" },
100
95
  { slug: "beta", filePath: "/beta.md", frontmatter: { title: "Beta" }, raw: "" },
101
96
  ];
102
- const tree = (0, fs_1.buildFileTree)(files);
103
- (0, vitest_1.expect)(tree).toHaveLength(2);
104
- (0, vitest_1.expect)(tree[0].name).toBe("Alpha");
105
- (0, vitest_1.expect)(tree[0].type).toBe("file");
106
- (0, vitest_1.expect)(tree[0].path).toBe("alpha");
107
- (0, vitest_1.expect)(tree[1].name).toBe("Beta");
108
- });
109
- (0, vitest_1.it)("creates folder nodes for nested files", () => {
97
+ const tree = buildFileTree(files);
98
+ expect(tree).toHaveLength(2);
99
+ expect(tree[0].name).toBe("Alpha");
100
+ expect(tree[0].type).toBe("file");
101
+ expect(tree[0].path).toBe("alpha");
102
+ expect(tree[1].name).toBe("Beta");
103
+ });
104
+ it("creates folder nodes for nested files", () => {
110
105
  const files = [
111
106
  { slug: "notes/page1", filePath: "/notes/page1.md", frontmatter: { title: "Page 1" }, raw: "" },
112
107
  { slug: "notes/page2", filePath: "/notes/page2.md", frontmatter: { title: "Page 2" }, raw: "" },
113
108
  ];
114
- const tree = (0, fs_1.buildFileTree)(files);
115
- (0, vitest_1.expect)(tree).toHaveLength(1);
116
- (0, vitest_1.expect)(tree[0].type).toBe("folder");
117
- (0, vitest_1.expect)(tree[0].name).toBe("notes");
118
- (0, vitest_1.expect)(tree[0].children).toHaveLength(2);
119
- (0, vitest_1.expect)(tree[0].children[0].name).toBe("Page 1");
120
- (0, vitest_1.expect)(tree[0].children[1].name).toBe("Page 2");
121
- });
122
- (0, vitest_1.it)("uses frontmatter.title for file display name", () => {
109
+ const tree = buildFileTree(files);
110
+ expect(tree).toHaveLength(1);
111
+ expect(tree[0].type).toBe("folder");
112
+ expect(tree[0].name).toBe("notes");
113
+ expect(tree[0].children).toHaveLength(2);
114
+ expect(tree[0].children[0].name).toBe("Page 1");
115
+ expect(tree[0].children[1].name).toBe("Page 2");
116
+ });
117
+ it("uses frontmatter.title for file display name", () => {
123
118
  const files = [
124
119
  { slug: "my-file", filePath: "/my-file.md", frontmatter: { title: "Custom Title" }, raw: "" },
125
120
  ];
126
- const tree = (0, fs_1.buildFileTree)(files);
127
- (0, vitest_1.expect)(tree[0].name).toBe("Custom Title");
121
+ const tree = buildFileTree(files);
122
+ expect(tree[0].name).toBe("Custom Title");
128
123
  });
129
- (0, vitest_1.it)("falls back to filename when no title", () => {
124
+ it("falls back to filename when no title", () => {
130
125
  const files = [
131
126
  { slug: "my-file", filePath: "/my-file.md", frontmatter: {}, raw: "" },
132
127
  ];
133
- const tree = (0, fs_1.buildFileTree)(files);
134
- (0, vitest_1.expect)(tree[0].name).toBe("my-file");
128
+ const tree = buildFileTree(files);
129
+ expect(tree[0].name).toBe("my-file");
135
130
  });
136
- (0, vitest_1.it)("handles deeply nested structures", () => {
131
+ it("handles deeply nested structures", () => {
137
132
  const files = [
138
133
  { slug: "a/b/c", filePath: "/a/b/c.md", frontmatter: { title: "Deep" }, raw: "" },
139
134
  ];
140
- const tree = (0, fs_1.buildFileTree)(files);
141
- (0, vitest_1.expect)(tree[0].type).toBe("folder");
142
- (0, vitest_1.expect)(tree[0].name).toBe("a");
143
- (0, vitest_1.expect)(tree[0].children[0].type).toBe("folder");
144
- (0, vitest_1.expect)(tree[0].children[0].name).toBe("b");
145
- (0, vitest_1.expect)(tree[0].children[0].children[0].type).toBe("file");
146
- (0, vitest_1.expect)(tree[0].children[0].children[0].name).toBe("Deep");
147
- });
148
- (0, vitest_1.it)("returns empty array for empty input", () => {
149
- const tree = (0, fs_1.buildFileTree)([]);
150
- (0, vitest_1.expect)(tree).toEqual([]);
135
+ const tree = buildFileTree(files);
136
+ expect(tree[0].type).toBe("folder");
137
+ expect(tree[0].name).toBe("a");
138
+ expect(tree[0].children[0].type).toBe("folder");
139
+ expect(tree[0].children[0].name).toBe("b");
140
+ expect(tree[0].children[0].children[0].type).toBe("file");
141
+ expect(tree[0].children[0].children[0].name).toBe("Deep");
142
+ });
143
+ it("returns empty array for empty input", () => {
144
+ const tree = buildFileTree([]);
145
+ expect(tree).toEqual([]);
151
146
  });
152
147
  });
153
148
  //# sourceMappingURL=fs.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fs.test.js","sourceRoot":"","sources":["../../src/__tests__/fs.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fs.test.js","sourceRoot":"","sources":["../../src/__tests__/fs.test.ts"],"names":[],"mappings":"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"}