nuartz 0.1.1 → 0.1.2
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/package.json +1 -1
- package/src/__tests__/markdown.test.ts +1 -1
- package/src/fs.ts +44 -4
- package/src/markdown.ts +1 -1
- package/dist/__tests__/backlinks.test.d.ts +0 -2
- package/dist/__tests__/backlinks.test.d.ts.map +0 -1
- package/dist/__tests__/backlinks.test.js +0 -132
- package/dist/__tests__/backlinks.test.js.map +0 -1
- package/dist/__tests__/fs.test.d.ts +0 -2
- package/dist/__tests__/fs.test.d.ts.map +0 -1
- package/dist/__tests__/fs.test.js +0 -153
- package/dist/__tests__/fs.test.js.map +0 -1
- package/dist/__tests__/markdown.test.d.ts +0 -2
- package/dist/__tests__/markdown.test.d.ts.map +0 -1
- package/dist/__tests__/markdown.test.js +0 -102
- package/dist/__tests__/markdown.test.js.map +0 -1
- package/dist/__tests__/search.test.d.ts +0 -2
- package/dist/__tests__/search.test.d.ts.map +0 -1
- package/dist/__tests__/search.test.js +0 -147
- package/dist/__tests__/search.test.js.map +0 -1
- package/dist/backlinks.d.ts +0 -25
- package/dist/backlinks.d.ts.map +0 -1
- package/dist/backlinks.js +0 -37
- package/dist/backlinks.js.map +0 -1
- package/dist/config.d.ts +0 -46
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js +0 -23
- package/dist/config.js.map +0 -1
- package/dist/fs.d.ts +0 -27
- package/dist/fs.d.ts.map +0 -1
- package/dist/fs.js +0 -113
- package/dist/fs.js.map +0 -1
- package/dist/index.d.ts +0 -17
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -29
- package/dist/index.js.map +0 -1
- package/dist/markdown.d.ts +0 -3
- package/dist/markdown.d.ts.map +0 -1
- package/dist/markdown.js +0 -119
- package/dist/markdown.js.map +0 -1
- package/dist/plugins/arrows.d.ts +0 -4
- package/dist/plugins/arrows.d.ts.map +0 -1
- package/dist/plugins/arrows.js +0 -16
- package/dist/plugins/arrows.js.map +0 -1
- package/dist/plugins/callout.d.ts +0 -4
- package/dist/plugins/callout.d.ts.map +0 -1
- package/dist/plugins/callout.js +0 -75
- package/dist/plugins/callout.js.map +0 -1
- package/dist/plugins/callout.test.d.ts +0 -2
- package/dist/plugins/callout.test.d.ts.map +0 -1
- package/dist/plugins/callout.test.js +0 -75
- package/dist/plugins/callout.test.js.map +0 -1
- package/dist/plugins/comment.d.ts +0 -4
- package/dist/plugins/comment.d.ts.map +0 -1
- package/dist/plugins/comment.js +0 -36
- package/dist/plugins/comment.js.map +0 -1
- package/dist/plugins/comment.test.d.ts +0 -2
- package/dist/plugins/comment.test.d.ts.map +0 -1
- package/dist/plugins/comment.test.js +0 -55
- package/dist/plugins/comment.test.js.map +0 -1
- package/dist/plugins/highlight.d.ts +0 -4
- package/dist/plugins/highlight.d.ts.map +0 -1
- package/dist/plugins/highlight.js +0 -33
- package/dist/plugins/highlight.js.map +0 -1
- package/dist/plugins/highlight.test.d.ts +0 -2
- package/dist/plugins/highlight.test.d.ts.map +0 -1
- package/dist/plugins/highlight.test.js +0 -51
- package/dist/plugins/highlight.test.js.map +0 -1
- package/dist/plugins/tag.d.ts +0 -11
- package/dist/plugins/tag.d.ts.map +0 -1
- package/dist/plugins/tag.js +0 -47
- package/dist/plugins/tag.js.map +0 -1
- package/dist/plugins/tag.test.d.ts +0 -2
- package/dist/plugins/tag.test.d.ts.map +0 -1
- package/dist/plugins/tag.test.js +0 -75
- package/dist/plugins/tag.test.js.map +0 -1
- package/dist/plugins/wikilink.d.ts +0 -12
- package/dist/plugins/wikilink.d.ts.map +0 -1
- package/dist/plugins/wikilink.js +0 -85
- package/dist/plugins/wikilink.js.map +0 -1
- package/dist/plugins/wikilink.test.d.ts +0 -2
- package/dist/plugins/wikilink.test.d.ts.map +0 -1
- package/dist/plugins/wikilink.test.js +0 -99
- package/dist/plugins/wikilink.test.js.map +0 -1
- package/dist/search.d.ts +0 -14
- package/dist/search.d.ts.map +0 -1
- package/dist/search.js +0 -35
- package/dist/search.js.map +0 -1
- package/dist/types.d.ts +0 -33
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -3
- package/dist/types.js.map +0 -1
package/package.json
CHANGED
|
@@ -87,7 +87,7 @@ Content with #beta and #gamma`
|
|
|
87
87
|
})
|
|
88
88
|
|
|
89
89
|
it("renders LaTeX with KaTeX", async () => {
|
|
90
|
-
const result = await renderMarkdown("Inline math:
|
|
90
|
+
const result = await renderMarkdown("Inline math: $$x^2$$")
|
|
91
91
|
expect(result.html).toContain("katex")
|
|
92
92
|
})
|
|
93
93
|
|
package/src/fs.ts
CHANGED
|
@@ -8,6 +8,7 @@ export interface MarkdownFile {
|
|
|
8
8
|
filePath: string // absolute file path
|
|
9
9
|
frontmatter: Frontmatter
|
|
10
10
|
raw: string
|
|
11
|
+
mtime?: Date // File modification time
|
|
11
12
|
}
|
|
12
13
|
|
|
13
14
|
/**
|
|
@@ -39,11 +40,22 @@ export async function getAllMarkdownFiles(
|
|
|
39
40
|
|
|
40
41
|
const relative = path.relative(contentDir, fullPath)
|
|
41
42
|
const slug = relative.replace(/\.md$/, "").replace(/\\/g, "/")
|
|
43
|
+
|
|
44
|
+
// Get file modification time
|
|
45
|
+
let mtime: Date | undefined
|
|
46
|
+
try {
|
|
47
|
+
const stat = await fs.stat(fullPath)
|
|
48
|
+
mtime = stat.mtime
|
|
49
|
+
} catch {
|
|
50
|
+
mtime = undefined
|
|
51
|
+
}
|
|
52
|
+
|
|
42
53
|
results.push({
|
|
43
54
|
slug,
|
|
44
55
|
filePath: fullPath,
|
|
45
56
|
frontmatter: data as Frontmatter,
|
|
46
57
|
raw,
|
|
58
|
+
mtime,
|
|
47
59
|
})
|
|
48
60
|
}
|
|
49
61
|
}
|
|
@@ -65,7 +77,14 @@ export async function getMarkdownBySlug(
|
|
|
65
77
|
try {
|
|
66
78
|
const raw = await fs.readFile(filePath, "utf-8")
|
|
67
79
|
const { data } = matter(raw)
|
|
68
|
-
|
|
80
|
+
let mtime: Date | undefined
|
|
81
|
+
try {
|
|
82
|
+
const stat = await fs.stat(filePath)
|
|
83
|
+
mtime = stat.mtime
|
|
84
|
+
} catch {
|
|
85
|
+
mtime = undefined
|
|
86
|
+
}
|
|
87
|
+
return { slug, filePath, frontmatter: data as Frontmatter, raw, mtime }
|
|
69
88
|
} catch {
|
|
70
89
|
return null
|
|
71
90
|
}
|
|
@@ -76,16 +95,30 @@ export interface FileTreeNode {
|
|
|
76
95
|
path: string
|
|
77
96
|
type: "file" | "folder"
|
|
78
97
|
children?: FileTreeNode[]
|
|
98
|
+
mtime?: Date // File modification time (for sorting)
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
export interface BuildFileTreeOptions {
|
|
102
|
+
/** Sort method: 'name' (alphabetical) or 'modified' (newest first) */
|
|
103
|
+
sortBy?: 'name' | 'modified'
|
|
79
104
|
}
|
|
80
105
|
|
|
81
106
|
/**
|
|
82
107
|
* Builds a nested file tree from a flat list of MarkdownFile entries.
|
|
83
108
|
*/
|
|
84
|
-
export function buildFileTree(files: MarkdownFile[]): FileTreeNode[] {
|
|
109
|
+
export function buildFileTree(files: MarkdownFile[], options?: BuildFileTreeOptions): FileTreeNode[] {
|
|
110
|
+
const { sortBy = 'name' } = options ?? {}
|
|
85
111
|
const root: FileTreeNode[] = []
|
|
86
112
|
const nodeMap = new Map<string, FileTreeNode>()
|
|
87
113
|
|
|
88
|
-
const sortedFiles = [...files].sort((a, b) =>
|
|
114
|
+
const sortedFiles = [...files].sort((a, b) => {
|
|
115
|
+
if (sortBy === 'modified') {
|
|
116
|
+
const timeA = a.mtime?.getTime() ?? 0
|
|
117
|
+
const timeB = b.mtime?.getTime() ?? 0
|
|
118
|
+
return timeB - timeA // Newest first
|
|
119
|
+
}
|
|
120
|
+
return a.slug.localeCompare(b.slug)
|
|
121
|
+
})
|
|
89
122
|
|
|
90
123
|
for (const file of sortedFiles) {
|
|
91
124
|
const parts = file.slug.split("/")
|
|
@@ -101,6 +134,7 @@ export function buildFileTree(files: MarkdownFile[]): FileTreeNode[] {
|
|
|
101
134
|
name: file.frontmatter.title ?? part,
|
|
102
135
|
path: file.slug,
|
|
103
136
|
type: "file",
|
|
137
|
+
mtime: file.mtime,
|
|
104
138
|
}
|
|
105
139
|
parentList.push(node)
|
|
106
140
|
} else {
|
|
@@ -115,10 +149,16 @@ export function buildFileTree(files: MarkdownFile[]): FileTreeNode[] {
|
|
|
115
149
|
}
|
|
116
150
|
}
|
|
117
151
|
|
|
118
|
-
// Sort each level: folders first, then
|
|
152
|
+
// Sort each level: folders first, then by name or modification time
|
|
119
153
|
function sortNodes(nodes: FileTreeNode[]): FileTreeNode[] {
|
|
120
154
|
nodes.sort((a, b) => {
|
|
121
155
|
if (a.type !== b.type) return a.type === "folder" ? -1 : 1
|
|
156
|
+
|
|
157
|
+
if (sortBy === 'modified') {
|
|
158
|
+
const timeA = a.mtime?.getTime() ?? 0
|
|
159
|
+
const timeB = b.mtime?.getTime() ?? 0
|
|
160
|
+
return timeB - timeA // Newest first
|
|
161
|
+
}
|
|
122
162
|
return a.name.localeCompare(b.name, undefined, { sensitivity: "base" })
|
|
123
163
|
})
|
|
124
164
|
for (const node of nodes) {
|
package/src/markdown.ts
CHANGED
|
@@ -86,7 +86,7 @@ export async function renderMarkdown(
|
|
|
86
86
|
.use(remarkFrontmatter, ["yaml", "toml"])
|
|
87
87
|
.use(remarkObsidianComment)
|
|
88
88
|
.use(remarkGfm)
|
|
89
|
-
.use(remarkMath)
|
|
89
|
+
.use(remarkMath, { singleDollarTextMath: false })
|
|
90
90
|
.use(remarkBreaks)
|
|
91
91
|
.use(remarkWikilink, { baseUrl, resolve: resolveLink, knownSlugs })
|
|
92
92
|
.use(remarkCallout)
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"backlinks.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/backlinks.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const vitest_1 = require("vitest");
|
|
4
|
-
const backlinks_1 = require("../backlinks");
|
|
5
|
-
function mockPage(links, title, raw) {
|
|
6
|
-
return {
|
|
7
|
-
result: {
|
|
8
|
-
html: "",
|
|
9
|
-
frontmatter: { title },
|
|
10
|
-
toc: [],
|
|
11
|
-
links,
|
|
12
|
-
tags: [],
|
|
13
|
-
},
|
|
14
|
-
raw,
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
(0, vitest_1.describe)("buildBacklinkIndex", () => {
|
|
18
|
-
(0, vitest_1.it)("builds index from pages with outgoing links", () => {
|
|
19
|
-
const pages = new Map([
|
|
20
|
-
["page-a", mockPage(["Page B"], "Page A", "Links to Page B")],
|
|
21
|
-
["page-b", mockPage(["Page A"], "Page B", "Links to Page A")],
|
|
22
|
-
]);
|
|
23
|
-
const index = (0, backlinks_1.buildBacklinkIndex)(pages);
|
|
24
|
-
// "Page B" normalizes to "page-b"
|
|
25
|
-
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");
|
|
30
|
-
});
|
|
31
|
-
(0, vitest_1.it)("normalizes target slugs: lowercase and spaces to hyphens", () => {
|
|
32
|
-
const pages = new Map([
|
|
33
|
-
["source", mockPage(["My Target Page"], "Source", "Content here")],
|
|
34
|
-
]);
|
|
35
|
-
const index = (0, backlinks_1.buildBacklinkIndex)(pages);
|
|
36
|
-
(0, vitest_1.expect)(index.has("my-target-page")).toBe(true);
|
|
37
|
-
});
|
|
38
|
-
(0, vitest_1.it)("strips non-word/non-hyphen characters from target slug", () => {
|
|
39
|
-
const pages = new Map([
|
|
40
|
-
["source", mockPage(["Page (draft)"], "Source", "Content")],
|
|
41
|
-
]);
|
|
42
|
-
const index = (0, backlinks_1.buildBacklinkIndex)(pages);
|
|
43
|
-
// "Page (draft)" -> "page-draft" (parens removed)
|
|
44
|
-
(0, vitest_1.expect)(index.has("page-draft")).toBe(true);
|
|
45
|
-
});
|
|
46
|
-
(0, vitest_1.it)("collects multiple backlinks for the same target", () => {
|
|
47
|
-
const pages = new Map([
|
|
48
|
-
["alpha", mockPage(["Target"], "Alpha", "Alpha links to target")],
|
|
49
|
-
["beta", mockPage(["Target"], "Beta", "Beta links to target")],
|
|
50
|
-
["gamma", mockPage(["Target"], "Gamma", "Gamma links to target")],
|
|
51
|
-
]);
|
|
52
|
-
const index = (0, backlinks_1.buildBacklinkIndex)(pages);
|
|
53
|
-
const backlinks = index.get("target");
|
|
54
|
-
(0, vitest_1.expect)(backlinks).toHaveLength(3);
|
|
55
|
-
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");
|
|
59
|
-
});
|
|
60
|
-
(0, vitest_1.it)("generates excerpt from raw content stripping frontmatter", () => {
|
|
61
|
-
const raw = `---
|
|
62
|
-
title: Source Page
|
|
63
|
-
---
|
|
64
|
-
|
|
65
|
-
This is the body content that should appear in the excerpt.`;
|
|
66
|
-
const pages = new Map([
|
|
67
|
-
["source", mockPage(["Target"], "Source Page", raw)],
|
|
68
|
-
]);
|
|
69
|
-
const index = (0, backlinks_1.buildBacklinkIndex)(pages);
|
|
70
|
-
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("---");
|
|
73
|
-
});
|
|
74
|
-
(0, vitest_1.it)("truncates excerpt to 160 characters plus ellipsis", () => {
|
|
75
|
-
const longBody = "A".repeat(200);
|
|
76
|
-
const pages = new Map([
|
|
77
|
-
["source", mockPage(["Target"], "Source", longBody)],
|
|
78
|
-
]);
|
|
79
|
-
const index = (0, backlinks_1.buildBacklinkIndex)(pages);
|
|
80
|
-
const backlinks = index.get("target");
|
|
81
|
-
// 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$/);
|
|
84
|
-
});
|
|
85
|
-
(0, vitest_1.it)("uses slug as title fallback when no frontmatter title", () => {
|
|
86
|
-
const pages = new Map([
|
|
87
|
-
[
|
|
88
|
-
"no-title-page",
|
|
89
|
-
{
|
|
90
|
-
result: {
|
|
91
|
-
html: "",
|
|
92
|
-
frontmatter: {},
|
|
93
|
-
toc: [],
|
|
94
|
-
links: ["Target"],
|
|
95
|
-
tags: [],
|
|
96
|
-
},
|
|
97
|
-
raw: "Some content",
|
|
98
|
-
},
|
|
99
|
-
],
|
|
100
|
-
]);
|
|
101
|
-
const index = (0, backlinks_1.buildBacklinkIndex)(pages);
|
|
102
|
-
const backlinks = index.get("target");
|
|
103
|
-
(0, vitest_1.expect)(backlinks[0].title).toBe("no-title-page");
|
|
104
|
-
});
|
|
105
|
-
});
|
|
106
|
-
(0, vitest_1.describe)("getBacklinks", () => {
|
|
107
|
-
(0, vitest_1.it)("returns correct BacklinkEntry[] for known slug", () => {
|
|
108
|
-
const pages = new Map([
|
|
109
|
-
["source", mockPage(["Target"], "Source Title", "Content about target")],
|
|
110
|
-
]);
|
|
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();
|
|
117
|
-
});
|
|
118
|
-
(0, vitest_1.it)("returns empty array for unknown slug", () => {
|
|
119
|
-
const pages = new Map([
|
|
120
|
-
["source", mockPage(["Target"], "Source", "Content")],
|
|
121
|
-
]);
|
|
122
|
-
const index = (0, backlinks_1.buildBacklinkIndex)(pages);
|
|
123
|
-
const backlinks = (0, backlinks_1.getBacklinks)(index, "nonexistent");
|
|
124
|
-
(0, vitest_1.expect)(backlinks).toEqual([]);
|
|
125
|
-
});
|
|
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([]);
|
|
130
|
-
});
|
|
131
|
-
});
|
|
132
|
-
//# sourceMappingURL=backlinks.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"backlinks.test.js","sourceRoot":"","sources":["../../src/__tests__/backlinks.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fs.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/fs.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,153 +0,0 @@
|
|
|
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", () => {
|
|
12
|
-
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-"));
|
|
15
|
-
});
|
|
16
|
-
(0, vitest_1.afterEach)(async () => {
|
|
17
|
-
await promises_1.default.rm(tmpDir, { recursive: true, force: true });
|
|
18
|
-
});
|
|
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);
|
|
24
|
-
const slugs = files.map((f) => f.slug);
|
|
25
|
-
(0, vitest_1.expect)(slugs).toContain("root");
|
|
26
|
-
(0, vitest_1.expect)(slugs).toContain("sub/nested");
|
|
27
|
-
});
|
|
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);
|
|
32
|
-
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 () => {
|
|
46
|
-
const content = `---
|
|
47
|
-
title: My Note
|
|
48
|
-
tags:
|
|
49
|
-
- test
|
|
50
|
-
---
|
|
51
|
-
|
|
52
|
-
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"]);
|
|
57
|
-
});
|
|
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([]);
|
|
61
|
-
});
|
|
62
|
-
});
|
|
63
|
-
(0, vitest_1.describe)("getMarkdownBySlug", () => {
|
|
64
|
-
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-"));
|
|
67
|
-
});
|
|
68
|
-
(0, vitest_1.afterEach)(async () => {
|
|
69
|
-
await promises_1.default.rm(tmpDir, { recursive: true, force: true });
|
|
70
|
-
});
|
|
71
|
-
(0, vitest_1.it)("returns MarkdownFile for existing slug", async () => {
|
|
72
|
-
const content = `---
|
|
73
|
-
title: Hello
|
|
74
|
-
---
|
|
75
|
-
|
|
76
|
-
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");
|
|
94
|
-
});
|
|
95
|
-
});
|
|
96
|
-
(0, vitest_1.describe)("buildFileTree", () => {
|
|
97
|
-
(0, vitest_1.it)("builds tree from flat list of files", () => {
|
|
98
|
-
const files = [
|
|
99
|
-
{ slug: "alpha", filePath: "/alpha.md", frontmatter: { title: "Alpha" }, raw: "" },
|
|
100
|
-
{ slug: "beta", filePath: "/beta.md", frontmatter: { title: "Beta" }, raw: "" },
|
|
101
|
-
];
|
|
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", () => {
|
|
110
|
-
const files = [
|
|
111
|
-
{ slug: "notes/page1", filePath: "/notes/page1.md", frontmatter: { title: "Page 1" }, raw: "" },
|
|
112
|
-
{ slug: "notes/page2", filePath: "/notes/page2.md", frontmatter: { title: "Page 2" }, raw: "" },
|
|
113
|
-
];
|
|
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", () => {
|
|
123
|
-
const files = [
|
|
124
|
-
{ slug: "my-file", filePath: "/my-file.md", frontmatter: { title: "Custom Title" }, raw: "" },
|
|
125
|
-
];
|
|
126
|
-
const tree = (0, fs_1.buildFileTree)(files);
|
|
127
|
-
(0, vitest_1.expect)(tree[0].name).toBe("Custom Title");
|
|
128
|
-
});
|
|
129
|
-
(0, vitest_1.it)("falls back to filename when no title", () => {
|
|
130
|
-
const files = [
|
|
131
|
-
{ slug: "my-file", filePath: "/my-file.md", frontmatter: {}, raw: "" },
|
|
132
|
-
];
|
|
133
|
-
const tree = (0, fs_1.buildFileTree)(files);
|
|
134
|
-
(0, vitest_1.expect)(tree[0].name).toBe("my-file");
|
|
135
|
-
});
|
|
136
|
-
(0, vitest_1.it)("handles deeply nested structures", () => {
|
|
137
|
-
const files = [
|
|
138
|
-
{ slug: "a/b/c", filePath: "/a/b/c.md", frontmatter: { title: "Deep" }, raw: "" },
|
|
139
|
-
];
|
|
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([]);
|
|
151
|
-
});
|
|
152
|
-
});
|
|
153
|
-
//# sourceMappingURL=fs.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fs.test.js","sourceRoot":"","sources":["../../src/__tests__/fs.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"markdown.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/markdown.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const vitest_1 = require("vitest");
|
|
4
|
-
const markdown_1 = require("../markdown");
|
|
5
|
-
(0, vitest_1.describe)("renderMarkdown", () => {
|
|
6
|
-
(0, vitest_1.it)("returns empty result for empty string", async () => {
|
|
7
|
-
const result = await (0, markdown_1.renderMarkdown)("");
|
|
8
|
-
(0, vitest_1.expect)(result.html).toBe("");
|
|
9
|
-
(0, vitest_1.expect)(result.toc).toEqual([]);
|
|
10
|
-
(0, vitest_1.expect)(result.tags).toEqual([]);
|
|
11
|
-
(0, vitest_1.expect)(result.links).toEqual([]);
|
|
12
|
-
});
|
|
13
|
-
(0, vitest_1.it)("extracts heading into toc", async () => {
|
|
14
|
-
const result = await (0, markdown_1.renderMarkdown)("# Hello World");
|
|
15
|
-
(0, vitest_1.expect)(result.toc).toHaveLength(1);
|
|
16
|
-
(0, vitest_1.expect)(result.toc[0]).toMatchObject({
|
|
17
|
-
depth: 1,
|
|
18
|
-
text: "Hello World",
|
|
19
|
-
});
|
|
20
|
-
(0, vitest_1.expect)(result.toc[0].id).toBeTruthy();
|
|
21
|
-
});
|
|
22
|
-
(0, vitest_1.it)("builds nested toc tree", async () => {
|
|
23
|
-
const md = "# Top\n## Sub\n### Deep";
|
|
24
|
-
const result = await (0, markdown_1.renderMarkdown)(md);
|
|
25
|
-
(0, vitest_1.expect)(result.toc).toHaveLength(1);
|
|
26
|
-
(0, vitest_1.expect)(result.toc[0].text).toBe("Top");
|
|
27
|
-
(0, vitest_1.expect)(result.toc[0].children).toHaveLength(1);
|
|
28
|
-
(0, vitest_1.expect)(result.toc[0].children[0].text).toBe("Sub");
|
|
29
|
-
(0, vitest_1.expect)(result.toc[0].children[0].children).toHaveLength(1);
|
|
30
|
-
(0, vitest_1.expect)(result.toc[0].children[0].children[0].text).toBe("Deep");
|
|
31
|
-
});
|
|
32
|
-
(0, vitest_1.it)("parses frontmatter", async () => {
|
|
33
|
-
const md = `---
|
|
34
|
-
title: My Page
|
|
35
|
-
date: 2024-01-01
|
|
36
|
-
---
|
|
37
|
-
|
|
38
|
-
Some content`;
|
|
39
|
-
const result = await (0, markdown_1.renderMarkdown)(md);
|
|
40
|
-
(0, vitest_1.expect)(result.frontmatter.title).toBe("My Page");
|
|
41
|
-
// gray-matter parses YAML dates as Date objects
|
|
42
|
-
const date = result.frontmatter.date;
|
|
43
|
-
const dateStr = date instanceof Date ? date.toISOString().split("T")[0] : date;
|
|
44
|
-
(0, vitest_1.expect)(dateStr).toBe("2024-01-01");
|
|
45
|
-
});
|
|
46
|
-
(0, vitest_1.it)("extracts wikilinks into links array", async () => {
|
|
47
|
-
const result = await (0, markdown_1.renderMarkdown)("Check [[Some Page]] for details");
|
|
48
|
-
(0, vitest_1.expect)(result.links).toContain("Some Page");
|
|
49
|
-
});
|
|
50
|
-
(0, vitest_1.it)("extracts wikilink with alias", async () => {
|
|
51
|
-
const result = await (0, markdown_1.renderMarkdown)("See [[Target|display text]]");
|
|
52
|
-
(0, vitest_1.expect)(result.links).toContain("Target");
|
|
53
|
-
(0, vitest_1.expect)(result.html).toContain("display text");
|
|
54
|
-
});
|
|
55
|
-
(0, vitest_1.it)("extracts inline tags", async () => {
|
|
56
|
-
const result = await (0, markdown_1.renderMarkdown)("This has #mytag in it");
|
|
57
|
-
(0, vitest_1.expect)(result.tags).toContain("mytag");
|
|
58
|
-
});
|
|
59
|
-
(0, vitest_1.it)("merges frontmatter tags with inline tags and deduplicates", async () => {
|
|
60
|
-
const md = `---
|
|
61
|
-
tags:
|
|
62
|
-
- alpha
|
|
63
|
-
- beta
|
|
64
|
-
---
|
|
65
|
-
|
|
66
|
-
Content with #beta and #gamma`;
|
|
67
|
-
const result = await (0, markdown_1.renderMarkdown)(md);
|
|
68
|
-
(0, vitest_1.expect)(result.tags).toContain("alpha");
|
|
69
|
-
(0, vitest_1.expect)(result.tags).toContain("beta");
|
|
70
|
-
(0, vitest_1.expect)(result.tags).toContain("gamma");
|
|
71
|
-
// beta should appear only once
|
|
72
|
-
const betaCount = result.tags.filter((t) => t === "beta").length;
|
|
73
|
-
(0, vitest_1.expect)(betaCount).toBe(1);
|
|
74
|
-
});
|
|
75
|
-
(0, vitest_1.it)("renders callout with correct class", async () => {
|
|
76
|
-
const md = "> [!note]\n> Some note content";
|
|
77
|
-
const result = await (0, markdown_1.renderMarkdown)(md);
|
|
78
|
-
(0, vitest_1.expect)(result.html).toContain("callout");
|
|
79
|
-
(0, vitest_1.expect)(result.html).toContain("callout-note");
|
|
80
|
-
});
|
|
81
|
-
(0, vitest_1.it)("renders LaTeX with KaTeX", async () => {
|
|
82
|
-
const result = await (0, markdown_1.renderMarkdown)("Inline math: $x^2$");
|
|
83
|
-
(0, vitest_1.expect)(result.html).toContain("katex");
|
|
84
|
-
});
|
|
85
|
-
(0, vitest_1.it)("renders display math with KaTeX", async () => {
|
|
86
|
-
const result = await (0, markdown_1.renderMarkdown)("$$\nx^2 + y^2 = z^2\n$$");
|
|
87
|
-
(0, vitest_1.expect)(result.html).toContain("katex");
|
|
88
|
-
});
|
|
89
|
-
(0, vitest_1.it)("generates html for basic markdown", async () => {
|
|
90
|
-
const result = await (0, markdown_1.renderMarkdown)("Hello **world**");
|
|
91
|
-
(0, vitest_1.expect)(result.html).toContain("<strong>world</strong>");
|
|
92
|
-
});
|
|
93
|
-
(0, vitest_1.it)("does not include embed links in outgoing links", async () => {
|
|
94
|
-
const result = await (0, markdown_1.renderMarkdown)("![[image.png]]");
|
|
95
|
-
(0, vitest_1.expect)(result.links).not.toContain("image.png");
|
|
96
|
-
});
|
|
97
|
-
(0, vitest_1.it)("adds slug ids to headings via rehype-slug", async () => {
|
|
98
|
-
const result = await (0, markdown_1.renderMarkdown)("## My Section");
|
|
99
|
-
(0, vitest_1.expect)(result.html).toContain('id="my-section"');
|
|
100
|
-
});
|
|
101
|
-
});
|
|
102
|
-
//# sourceMappingURL=markdown.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"markdown.test.js","sourceRoot":"","sources":["../../src/__tests__/markdown.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"search.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/search.test.ts"],"names":[],"mappings":""}
|