mdsvr 2.3.2 → 2.3.4
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/README.md +8 -3
- package/dist/generators/sitemap.d.ts.map +1 -1
- package/dist/generators/sitemap.js +6 -1
- package/dist/generators/sitemap.js.map +1 -1
- package/dist/generators/static-export.d.ts.map +1 -1
- package/dist/generators/static-export.js +40 -151
- package/dist/generators/static-export.js.map +1 -1
- package/dist/link-transform.d.ts +10 -0
- package/dist/link-transform.d.ts.map +1 -0
- package/dist/link-transform.js +29 -0
- package/dist/link-transform.js.map +1 -0
- package/dist/render-page.d.ts +45 -0
- package/dist/render-page.d.ts.map +1 -0
- package/dist/render-page.js +142 -0
- package/dist/render-page.js.map +1 -0
- package/dist/router.d.ts.map +1 -1
- package/dist/router.js +92 -105
- package/dist/router.js.map +1 -1
- package/dist/server.d.ts +4 -3
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +19 -18
- package/dist/server.js.map +1 -1
- package/dist/settings/index.d.ts +2 -1
- package/dist/settings/index.d.ts.map +1 -1
- package/dist/settings/index.js +1 -1
- package/dist/settings/index.js.map +1 -1
- package/dist/settings/schema.d.ts +8 -0
- package/dist/settings/schema.d.ts.map +1 -1
- package/dist/settings/schema.js +3 -0
- package/dist/settings/schema.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { promises as fs } from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { renderMarkdown, } from "./renderer/markdown.js";
|
|
4
|
+
import { renderMdx } from "./renderer/mdx.js";
|
|
5
|
+
import { renderPage } from "./template/index.js";
|
|
6
|
+
import { buildSidebar } from "./template/sidebar.js";
|
|
7
|
+
import { renderDirectory } from "./directory.js";
|
|
8
|
+
import { convertMarkdownLinks } from "./link-transform.js";
|
|
9
|
+
export async function renderPageService(input) {
|
|
10
|
+
const { sourcePath, urlPath, rootDir, settings, mode } = input;
|
|
11
|
+
const isStatic = mode === "static";
|
|
12
|
+
const content = await fs.readFile(sourcePath, "utf-8");
|
|
13
|
+
const ext = path.extname(sourcePath).toLowerCase();
|
|
14
|
+
let result;
|
|
15
|
+
if (ext === ".mdx" && settings.mdx.enabled) {
|
|
16
|
+
result = await renderMdx(content, settings);
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
result = renderMarkdown(content, settings);
|
|
20
|
+
}
|
|
21
|
+
const title = result.frontmatter.title ||
|
|
22
|
+
extractFirstHeading(content) ||
|
|
23
|
+
humanizeFilename(path.basename(sourcePath, ext));
|
|
24
|
+
let sidebar = [];
|
|
25
|
+
if (settings.navigation.sidebar.enabled) {
|
|
26
|
+
sidebar = await buildSidebar(rootDir, urlPath, settings, isStatic);
|
|
27
|
+
}
|
|
28
|
+
let body = result.html;
|
|
29
|
+
if (isStatic) {
|
|
30
|
+
body = convertMarkdownLinks(fixAssetPaths(body, urlPath));
|
|
31
|
+
}
|
|
32
|
+
else if (settings.generate.cleanUrls) {
|
|
33
|
+
// Preview static-export output: rewrite .md/.mdx links to clean URLs
|
|
34
|
+
body = convertMarkdownLinks(body);
|
|
35
|
+
}
|
|
36
|
+
const html = renderPage({
|
|
37
|
+
title,
|
|
38
|
+
body,
|
|
39
|
+
filePath: urlPath,
|
|
40
|
+
settings,
|
|
41
|
+
frontmatter: result.frontmatter,
|
|
42
|
+
toc: result.toc,
|
|
43
|
+
sidebar,
|
|
44
|
+
urlPath,
|
|
45
|
+
isStaticExport: isStatic,
|
|
46
|
+
});
|
|
47
|
+
return {
|
|
48
|
+
html,
|
|
49
|
+
title,
|
|
50
|
+
frontmatter: result.frontmatter,
|
|
51
|
+
toc: result.toc,
|
|
52
|
+
description: result.frontmatter.description,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
export async function renderDirectoryPage(input) {
|
|
56
|
+
const { listDir, urlPath, rootDir, settings, mode, isEntryVisible, title: titleOverride, } = input;
|
|
57
|
+
const isStatic = mode === "static";
|
|
58
|
+
const entries = await fs.readdir(listDir, { withFileTypes: true });
|
|
59
|
+
const visibleEntries = entries.filter((entry) => !isHidden(entry.name, settings) && (isEntryVisible?.(entry) ?? true));
|
|
60
|
+
const entriesWithSize = await Promise.all(visibleEntries.map(async (entry) => {
|
|
61
|
+
if (entry.isFile()) {
|
|
62
|
+
const fullPath = path.join(listDir, entry.name);
|
|
63
|
+
const stat = await fs.stat(fullPath);
|
|
64
|
+
return Object.assign(entry, { size: stat.size });
|
|
65
|
+
}
|
|
66
|
+
return Object.assign(entry, { size: 0 });
|
|
67
|
+
}));
|
|
68
|
+
let sidebar = [];
|
|
69
|
+
if (settings.navigation.sidebar.enabled) {
|
|
70
|
+
sidebar = await buildSidebar(rootDir, urlPath, settings, isStatic);
|
|
71
|
+
}
|
|
72
|
+
const dirName = urlPath
|
|
73
|
+
? path.basename(urlPath.replace(/\/+$/, "")) || urlPath
|
|
74
|
+
: "";
|
|
75
|
+
const title = titleOverride ?? (dirName ? humanizeFilename(dirName) : "Index");
|
|
76
|
+
const html = renderPage({
|
|
77
|
+
title,
|
|
78
|
+
body: renderDirectory({ urlPath, entries: entriesWithSize }),
|
|
79
|
+
filePath: urlPath,
|
|
80
|
+
settings,
|
|
81
|
+
urlPath,
|
|
82
|
+
sidebar,
|
|
83
|
+
isStaticExport: isStatic,
|
|
84
|
+
});
|
|
85
|
+
return { html, title, frontmatter: {}, toc: [] };
|
|
86
|
+
}
|
|
87
|
+
export function isHidden(filename, settings) {
|
|
88
|
+
for (const pattern of settings.files.extensions.hidden) {
|
|
89
|
+
if (filename === pattern)
|
|
90
|
+
return true;
|
|
91
|
+
if (pattern.startsWith("*") && filename.endsWith(pattern.slice(1)))
|
|
92
|
+
return true;
|
|
93
|
+
}
|
|
94
|
+
if (filename.startsWith("_"))
|
|
95
|
+
return true;
|
|
96
|
+
return false;
|
|
97
|
+
}
|
|
98
|
+
export function isBlocked(ext, settings) {
|
|
99
|
+
return settings.files.extensions.block.includes(ext);
|
|
100
|
+
}
|
|
101
|
+
export function isAllowedExtension(ext, settings) {
|
|
102
|
+
return settings.files.extensions.serve.includes(ext);
|
|
103
|
+
}
|
|
104
|
+
export function extractFirstHeading(content) {
|
|
105
|
+
const h1Match = content.match(/^#\s+(.+)$/m);
|
|
106
|
+
if (h1Match) {
|
|
107
|
+
return h1Match[1].trim();
|
|
108
|
+
}
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
export function humanizeFilename(filename) {
|
|
112
|
+
return filename
|
|
113
|
+
.replace(/^\d+\./, "")
|
|
114
|
+
.replace(/[-_]/g, " ")
|
|
115
|
+
.trim()
|
|
116
|
+
.replace(/^\w/, (c) => c.toUpperCase());
|
|
117
|
+
}
|
|
118
|
+
export function fixAssetPaths(html, urlPath) {
|
|
119
|
+
// Calculate the root path for assets (everything up to the current directory)
|
|
120
|
+
const pathSegments = urlPath.split("/").filter(Boolean);
|
|
121
|
+
// Build the absolute assets path based on the current directory structure
|
|
122
|
+
let absoluteAssetsPath = "";
|
|
123
|
+
if (pathSegments.length === 0) {
|
|
124
|
+
// Root level: /assets/
|
|
125
|
+
absoluteAssetsPath = "/assets/";
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
// Subdirectory: assets are at the root level of the project
|
|
129
|
+
// Use all segments except the last one to build the path to assets
|
|
130
|
+
// For /k8s/LFS158-docs/12/, assets should be at /k8s/LFS158-docs/assets/
|
|
131
|
+
const rootSegments = pathSegments.slice(0, -1);
|
|
132
|
+
if (rootSegments.length > 0) {
|
|
133
|
+
absoluteAssetsPath = "/" + rootSegments.join("/") + "/assets/";
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
absoluteAssetsPath = "/assets/";
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
// Replace all relative assets/ paths with absolute paths
|
|
140
|
+
return html.replace(/(src|href|data-src|poster|content)="assets\//g, `$1="${absoluteAssetsPath}`);
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=render-page.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render-page.js","sourceRoot":"","sources":["../src/render-page.ts"],"names":[],"mappings":"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"}
|
package/dist/router.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAa5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AA8BpD,wBAAsB,KAAK,CACzB,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,QAAQ,EAClB,gBAAgB,EAAE,OAAO,GACxB,OAAO,CAAC,IAAI,CAAC,CA8Jf"}
|
package/dist/router.js
CHANGED
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
import { promises as fs, createReadStream } from "node:fs";
|
|
2
2
|
import path from "node:path";
|
|
3
|
-
import { renderMarkdown } from "./renderer/markdown.js";
|
|
4
|
-
import { renderMdx } from "./renderer/mdx.js";
|
|
5
3
|
import { renderPage } from "./template/index.js";
|
|
6
|
-
import { renderDirectory } from "./directory.js";
|
|
7
4
|
import { generateSitemap } from "./generators/sitemap.js";
|
|
8
5
|
import { generateFeed } from "./generators/feed.js";
|
|
9
|
-
import {
|
|
6
|
+
import { renderPageService, renderDirectoryPage, isHidden, isBlocked, isAllowedExtension, } from "./render-page.js";
|
|
10
7
|
const MIME = {
|
|
11
8
|
".html": "text/html",
|
|
12
9
|
".css": "text/css",
|
|
@@ -64,10 +61,24 @@ export async function route(req, res, rootDir, settings, searchIndexCache) {
|
|
|
64
61
|
res.end(JSON.stringify(searchIndexCache ?? []));
|
|
65
62
|
return;
|
|
66
63
|
}
|
|
64
|
+
// When cleanUrls is enabled, .md/.mdx URLs redirect to canonical clean URLs
|
|
65
|
+
// (README.md maps to the directory URL, matching static export structure)
|
|
66
|
+
if (settings.generate.cleanUrls && /\.mdx?$/i.test(urlPath)) {
|
|
67
|
+
const queryIndex = url.indexOf("?");
|
|
68
|
+
const rawQuery = queryIndex === -1 ? "" : url.slice(queryIndex);
|
|
69
|
+
const baseName = path.posix.basename(urlPath).replace(/\.mdx?$/i, "");
|
|
70
|
+
const cleanUrl = baseName.toLowerCase() === "readme"
|
|
71
|
+
? urlPath.replace(/[^/]+$/, "")
|
|
72
|
+
: urlPath.replace(/\.mdx?$/i, "");
|
|
73
|
+
res.writeHead(308, { Location: `${cleanUrl}${rawQuery}` });
|
|
74
|
+
res.end();
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
67
77
|
// Resolve path and check for path traversal
|
|
68
78
|
const cleanUrlPath = urlPath.replace(/^\/+/, "");
|
|
69
|
-
const
|
|
70
|
-
|
|
79
|
+
const resolvedRootPath = path.resolve(rootDir);
|
|
80
|
+
const resolvedPath = path.resolve(path.join(resolvedRootPath, cleanUrlPath));
|
|
81
|
+
if (!isPathWithinRoot(resolvedRootPath, resolvedPath)) {
|
|
71
82
|
sendError(res, 403, "Forbidden", settings);
|
|
72
83
|
return;
|
|
73
84
|
}
|
|
@@ -83,15 +94,34 @@ export async function route(req, res, rootDir, settings, searchIndexCache) {
|
|
|
83
94
|
return;
|
|
84
95
|
}
|
|
85
96
|
try {
|
|
86
|
-
const
|
|
97
|
+
const realPath = await resolveContainedRealPath(resolvedRootPath, resolvedPath);
|
|
98
|
+
if (realPath === null) {
|
|
99
|
+
sendError(res, 403, "Forbidden", settings);
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
const stat = await fs.stat(realPath);
|
|
87
103
|
if (stat.isDirectory()) {
|
|
88
|
-
|
|
104
|
+
const encodedPath = urlPath
|
|
105
|
+
.split("/")
|
|
106
|
+
.filter((segment) => segment.length > 0)
|
|
107
|
+
.map(encodeURIComponent)
|
|
108
|
+
.join("/");
|
|
109
|
+
const canonicalPath = encodedPath ? `/${encodedPath}/` : "/";
|
|
110
|
+
const queryIndex = url.indexOf("?");
|
|
111
|
+
const requestPath = queryIndex === -1 ? url : url.slice(0, queryIndex);
|
|
112
|
+
const rawQuery = queryIndex === -1 ? "" : url.slice(queryIndex);
|
|
113
|
+
if (requestPath !== canonicalPath) {
|
|
114
|
+
res.writeHead(308, { Location: `${canonicalPath}${rawQuery}` });
|
|
115
|
+
res.end();
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
await serveDirectory(res, realPath, urlPath, rootDir, settings);
|
|
89
119
|
}
|
|
90
120
|
else if (ext === ".md" || (ext === ".mdx" && settings.mdx.enabled)) {
|
|
91
|
-
await serveMarkdownOrMdx(res,
|
|
121
|
+
await serveMarkdownOrMdx(res, realPath, urlPath, rootDir, settings);
|
|
92
122
|
}
|
|
93
123
|
else if (isAllowedExtension(ext, settings)) {
|
|
94
|
-
await serveStatic(req, res,
|
|
124
|
+
await serveStatic(req, res, realPath, ext);
|
|
95
125
|
}
|
|
96
126
|
else {
|
|
97
127
|
sendError(res, 403, "Forbidden", settings);
|
|
@@ -105,16 +135,24 @@ export async function route(req, res, rootDir, settings, searchIndexCache) {
|
|
|
105
135
|
const mdPath = resolvedPath + ".md";
|
|
106
136
|
const mdxPath = resolvedPath + ".mdx";
|
|
107
137
|
try {
|
|
108
|
-
await
|
|
109
|
-
|
|
138
|
+
const realMdPath = await resolveContainedRealPath(resolvedRootPath, mdPath);
|
|
139
|
+
if (realMdPath === null) {
|
|
140
|
+
sendError(res, 403, "Forbidden", settings);
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
await serveMarkdownOrMdx(res, realMdPath, urlPath, rootDir, settings);
|
|
110
144
|
return;
|
|
111
145
|
}
|
|
112
146
|
catch {
|
|
113
147
|
// Try .mdx
|
|
114
148
|
if (settings.mdx.enabled) {
|
|
115
149
|
try {
|
|
116
|
-
await
|
|
117
|
-
|
|
150
|
+
const realMdxPath = await resolveContainedRealPath(resolvedRootPath, mdxPath);
|
|
151
|
+
if (realMdxPath === null) {
|
|
152
|
+
sendError(res, 403, "Forbidden", settings);
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
await serveMarkdownOrMdx(res, realMdxPath, urlPath, rootDir, settings);
|
|
118
156
|
return;
|
|
119
157
|
}
|
|
120
158
|
catch {
|
|
@@ -130,15 +168,34 @@ export async function route(req, res, rootDir, settings, searchIndexCache) {
|
|
|
130
168
|
}
|
|
131
169
|
}
|
|
132
170
|
}
|
|
171
|
+
async function resolveContainedRealPath(rootPath, candidatePath) {
|
|
172
|
+
const [realRootPath, realCandidatePath] = await Promise.all([
|
|
173
|
+
fs.realpath(rootPath),
|
|
174
|
+
fs.realpath(candidatePath),
|
|
175
|
+
]);
|
|
176
|
+
return isPathWithinRoot(realRootPath, realCandidatePath)
|
|
177
|
+
? realCandidatePath
|
|
178
|
+
: null;
|
|
179
|
+
}
|
|
180
|
+
function isPathWithinRoot(rootPath, candidatePath) {
|
|
181
|
+
const relativePath = path.relative(rootPath, candidatePath);
|
|
182
|
+
return (relativePath !== ".." &&
|
|
183
|
+
!relativePath.startsWith(`..${path.sep}`) &&
|
|
184
|
+
!path.isAbsolute(relativePath));
|
|
185
|
+
}
|
|
133
186
|
async function serveDirectory(res, dirPath, urlPath, rootDir, settings) {
|
|
134
187
|
// Try to find index files from settings
|
|
135
188
|
for (const indexFile of settings.files.indexFiles) {
|
|
136
189
|
const indexPath = path.join(dirPath, indexFile);
|
|
137
190
|
try {
|
|
138
|
-
await
|
|
191
|
+
const realIndexPath = await resolveContainedRealPath(rootDir, indexPath);
|
|
192
|
+
if (realIndexPath === null) {
|
|
193
|
+
sendError(res, 403, "Forbidden", settings);
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
139
196
|
const ext = path.extname(indexFile).toLowerCase();
|
|
140
197
|
if (ext === ".md" || (ext === ".mdx" && settings.mdx.enabled)) {
|
|
141
|
-
await serveMarkdownOrMdx(res,
|
|
198
|
+
await serveMarkdownOrMdx(res, realIndexPath, path.join(urlPath, indexFile), rootDir, settings);
|
|
142
199
|
return;
|
|
143
200
|
}
|
|
144
201
|
}
|
|
@@ -149,77 +206,38 @@ async function serveDirectory(res, dirPath, urlPath, rootDir, settings) {
|
|
|
149
206
|
// Try index.html
|
|
150
207
|
const indexHtml = path.join(dirPath, "index.html");
|
|
151
208
|
try {
|
|
152
|
-
await
|
|
153
|
-
|
|
209
|
+
const realIndexHtml = await resolveContainedRealPath(rootDir, indexHtml);
|
|
210
|
+
if (realIndexHtml === null) {
|
|
211
|
+
sendError(res, 403, "Forbidden", settings);
|
|
212
|
+
return;
|
|
213
|
+
}
|
|
214
|
+
await serveStatic({ method: "GET", url: urlPath }, res, realIndexHtml, ".html");
|
|
154
215
|
return;
|
|
155
216
|
}
|
|
156
217
|
catch {
|
|
157
218
|
// Continue to directory listing
|
|
158
219
|
}
|
|
159
|
-
//
|
|
160
|
-
const
|
|
161
|
-
|
|
162
|
-
const visibleEntries = entries.filter((entry) => !isHidden(entry.name, settings));
|
|
163
|
-
// Add size information to entries
|
|
164
|
-
const entriesWithSize = await Promise.all(visibleEntries.map(async (entry) => {
|
|
165
|
-
if (entry.isFile()) {
|
|
166
|
-
const fullPath = path.join(dirPath, entry.name);
|
|
167
|
-
const stat = await fs.stat(fullPath);
|
|
168
|
-
return Object.assign(entry, { size: stat.size });
|
|
169
|
-
}
|
|
170
|
-
return Object.assign(entry, { size: 0 });
|
|
171
|
-
}));
|
|
172
|
-
// Build sidebar if enabled
|
|
173
|
-
let sidebar = [];
|
|
174
|
-
if (settings.navigation.sidebar.enabled) {
|
|
175
|
-
sidebar = await buildSidebar(rootDir, urlPath, settings, false);
|
|
176
|
-
}
|
|
177
|
-
const dirName = urlPath
|
|
178
|
-
? path.basename(urlPath.replace(/\/+$/, "")) || urlPath
|
|
179
|
-
: "";
|
|
180
|
-
const html = renderPage({
|
|
181
|
-
title: dirName ? humanizeFilename(dirName) : "Index",
|
|
182
|
-
body: renderDirectory({ urlPath, entries: entriesWithSize }),
|
|
183
|
-
filePath: urlPath,
|
|
184
|
-
settings,
|
|
220
|
+
// Render directory listing through the shared page service
|
|
221
|
+
const page = await renderDirectoryPage({
|
|
222
|
+
listDir: dirPath,
|
|
185
223
|
urlPath,
|
|
186
|
-
|
|
187
|
-
|
|
224
|
+
rootDir,
|
|
225
|
+
settings,
|
|
226
|
+
mode: "dynamic",
|
|
188
227
|
});
|
|
189
228
|
res.writeHead(200, { "Content-Type": "text/html; charset=utf-8" });
|
|
190
|
-
res.end(html);
|
|
229
|
+
res.end(page.html);
|
|
191
230
|
}
|
|
192
231
|
async function serveMarkdownOrMdx(res, filePath, urlPath, rootDir, settings) {
|
|
193
|
-
const
|
|
194
|
-
|
|
195
|
-
let result;
|
|
196
|
-
if (ext === ".mdx" && settings.mdx.enabled) {
|
|
197
|
-
result = await renderMdx(content, settings);
|
|
198
|
-
}
|
|
199
|
-
else {
|
|
200
|
-
result = renderMarkdown(content, settings);
|
|
201
|
-
}
|
|
202
|
-
const title = result.frontmatter.title ||
|
|
203
|
-
extractFirstHeading(content) ||
|
|
204
|
-
humanizeFilename(path.basename(filePath, ext));
|
|
205
|
-
// Build sidebar if enabled
|
|
206
|
-
let sidebar = [];
|
|
207
|
-
if (settings.navigation.sidebar.enabled) {
|
|
208
|
-
sidebar = await buildSidebar(rootDir, urlPath, settings, false);
|
|
209
|
-
}
|
|
210
|
-
const html = renderPage({
|
|
211
|
-
title,
|
|
212
|
-
body: result.html,
|
|
213
|
-
filePath: urlPath,
|
|
214
|
-
settings,
|
|
215
|
-
frontmatter: result.frontmatter,
|
|
216
|
-
toc: result.toc,
|
|
217
|
-
sidebar,
|
|
232
|
+
const page = await renderPageService({
|
|
233
|
+
sourcePath: filePath,
|
|
218
234
|
urlPath,
|
|
219
|
-
|
|
235
|
+
rootDir,
|
|
236
|
+
settings,
|
|
237
|
+
mode: "dynamic",
|
|
220
238
|
});
|
|
221
239
|
res.writeHead(200, { "Content-Type": "text/html; charset=utf-8" });
|
|
222
|
-
res.end(html);
|
|
240
|
+
res.end(page.html);
|
|
223
241
|
}
|
|
224
242
|
function serveStatic(req, res, filePath, ext) {
|
|
225
243
|
const contentType = MIME[ext] || "application/octet-stream";
|
|
@@ -246,35 +264,4 @@ function sendError(res, code, message, settings) {
|
|
|
246
264
|
res.writeHead(code, { "Content-Type": "text/html; charset=utf-8" });
|
|
247
265
|
res.end(html);
|
|
248
266
|
}
|
|
249
|
-
function isHidden(filename, settings) {
|
|
250
|
-
for (const pattern of settings.files.extensions.hidden) {
|
|
251
|
-
if (filename === pattern)
|
|
252
|
-
return true;
|
|
253
|
-
if (pattern.startsWith("*") && filename.endsWith(pattern.slice(1)))
|
|
254
|
-
return true;
|
|
255
|
-
}
|
|
256
|
-
if (filename.startsWith("_"))
|
|
257
|
-
return true;
|
|
258
|
-
return false;
|
|
259
|
-
}
|
|
260
|
-
function isBlocked(ext, settings) {
|
|
261
|
-
return settings.files.extensions.block.includes(ext);
|
|
262
|
-
}
|
|
263
|
-
function isAllowedExtension(ext, settings) {
|
|
264
|
-
return settings.files.extensions.serve.includes(ext);
|
|
265
|
-
}
|
|
266
|
-
function extractFirstHeading(content) {
|
|
267
|
-
const h1Match = content.match(/^#\s+(.+)$/m);
|
|
268
|
-
if (h1Match) {
|
|
269
|
-
return h1Match[1].trim();
|
|
270
|
-
}
|
|
271
|
-
return null;
|
|
272
|
-
}
|
|
273
|
-
function humanizeFilename(filename) {
|
|
274
|
-
return filename
|
|
275
|
-
.replace(/^\d+\./, "")
|
|
276
|
-
.replace(/[-_]/g, " ")
|
|
277
|
-
.trim()
|
|
278
|
-
.replace(/^\w/, (c) => c.toUpperCase());
|
|
279
|
-
}
|
|
280
267
|
//# sourceMappingURL=router.js.map
|
package/dist/router.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}
|
package/dist/server.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import type { ServeOptions, ServerInstance } from "./types.js";
|
|
2
2
|
import { type Settings } from "./settings/index.js";
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
export interface ServerContext {
|
|
4
|
+
settings: Settings;
|
|
5
|
+
searchIndexCache: unknown;
|
|
6
|
+
}
|
|
5
7
|
export declare function createServer(rootDir: string, options?: ServeOptions): Promise<ServerInstance>;
|
|
6
8
|
export declare function getNetworkAddress(): string | undefined;
|
|
7
|
-
export { currentSettings, searchIndexCache };
|
|
8
9
|
//# sourceMappingURL=server.d.ts.map
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE/D,OAAO,EAGL,KAAK,QAAQ,EACd,MAAM,qBAAqB,CAAC;AAK7B,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,QAAQ,CAAC;IACnB,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,wBAAsB,YAAY,CAChC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,cAAc,CAAC,CAuKzB;AAED,wBAAgB,iBAAiB,IAAI,MAAM,GAAG,SAAS,CAYtD"}
|
package/dist/server.js
CHANGED
|
@@ -5,9 +5,6 @@ import os from "node:os";
|
|
|
5
5
|
import { route } from "./router.js";
|
|
6
6
|
import { loadSettings, watchSettings, } from "./settings/index.js";
|
|
7
7
|
import { buildSearchIndex } from "./generators/search-index.js";
|
|
8
|
-
// Global state for the server
|
|
9
|
-
let currentSettings;
|
|
10
|
-
let searchIndexCache = null;
|
|
11
8
|
export async function createServer(rootDir, options = {}) {
|
|
12
9
|
// Resolve rootDir to absolute path
|
|
13
10
|
const absoluteRoot = path.resolve(rootDir);
|
|
@@ -21,11 +18,13 @@ export async function createServer(rootDir, options = {}) {
|
|
|
21
18
|
catch (err) {
|
|
22
19
|
throw new Error(`Directory does not exist: ${absoluteRoot}`);
|
|
23
20
|
}
|
|
24
|
-
|
|
25
|
-
|
|
21
|
+
const ctx = {
|
|
22
|
+
settings: await loadSettings(absoluteRoot),
|
|
23
|
+
searchIndexCache: null,
|
|
24
|
+
};
|
|
26
25
|
// Build search index
|
|
27
|
-
if (
|
|
28
|
-
searchIndexCache = await buildSearchIndex(absoluteRoot,
|
|
26
|
+
if (ctx.settings.search.enabled) {
|
|
27
|
+
ctx.searchIndexCache = await buildSearchIndex(absoluteRoot, ctx.settings);
|
|
29
28
|
}
|
|
30
29
|
const port = options.port ?? 1800;
|
|
31
30
|
const host = options.host ?? "localhost";
|
|
@@ -34,9 +33,10 @@ export async function createServer(rootDir, options = {}) {
|
|
|
34
33
|
return new Promise((resolve, reject) => {
|
|
35
34
|
let currentPort = port;
|
|
36
35
|
let retryCount = 0;
|
|
36
|
+
let settingsWatcher = null;
|
|
37
37
|
const tryListen = () => {
|
|
38
38
|
const server = http.createServer((req, res) => {
|
|
39
|
-
route(req, res, absoluteRoot,
|
|
39
|
+
route(req, res, absoluteRoot, ctx.settings, ctx.searchIndexCache).catch((err) => {
|
|
40
40
|
console.error("Routing error:", err);
|
|
41
41
|
res.writeHead(500, { "Content-Type": "text/plain" });
|
|
42
42
|
res.end("Internal Server Error");
|
|
@@ -80,10 +80,10 @@ export async function createServer(rootDir, options = {}) {
|
|
|
80
80
|
try {
|
|
81
81
|
const settingsPath = path.join(absoluteRoot, "_mdsvr/settings.json");
|
|
82
82
|
await fs.access(settingsPath);
|
|
83
|
-
watchSettings(absoluteRoot, async (newSettings) => {
|
|
84
|
-
|
|
85
|
-
if (
|
|
86
|
-
searchIndexCache = await buildSearchIndex(absoluteRoot,
|
|
83
|
+
settingsWatcher = watchSettings(absoluteRoot, async (newSettings) => {
|
|
84
|
+
ctx.settings = newSettings;
|
|
85
|
+
if (ctx.settings.search.enabled) {
|
|
86
|
+
ctx.searchIndexCache = await buildSearchIndex(absoluteRoot, ctx.settings);
|
|
87
87
|
}
|
|
88
88
|
if (!options.silent) {
|
|
89
89
|
console.log("[mdsvr] Settings reloaded");
|
|
@@ -99,8 +99,11 @@ export async function createServer(rootDir, options = {}) {
|
|
|
99
99
|
port: actualPort,
|
|
100
100
|
host,
|
|
101
101
|
url,
|
|
102
|
-
settings
|
|
102
|
+
get settings() {
|
|
103
|
+
return ctx.settings;
|
|
104
|
+
},
|
|
103
105
|
close: () => new Promise((res, rej) => {
|
|
106
|
+
settingsWatcher?.close();
|
|
104
107
|
server.close((err) => {
|
|
105
108
|
if (err)
|
|
106
109
|
rej(err);
|
|
@@ -109,9 +112,9 @@ export async function createServer(rootDir, options = {}) {
|
|
|
109
112
|
});
|
|
110
113
|
}),
|
|
111
114
|
reloadSettings: async () => {
|
|
112
|
-
|
|
113
|
-
if (
|
|
114
|
-
searchIndexCache = await buildSearchIndex(absoluteRoot,
|
|
115
|
+
ctx.settings = await loadSettings(absoluteRoot);
|
|
116
|
+
if (ctx.settings.search.enabled) {
|
|
117
|
+
ctx.searchIndexCache = await buildSearchIndex(absoluteRoot, ctx.settings);
|
|
115
118
|
}
|
|
116
119
|
},
|
|
117
120
|
};
|
|
@@ -153,6 +156,4 @@ export function getNetworkAddress() {
|
|
|
153
156
|
}
|
|
154
157
|
return undefined;
|
|
155
158
|
}
|
|
156
|
-
// Export for use by router
|
|
157
|
-
export { currentSettings, searchIndexCache };
|
|
158
159
|
//# sourceMappingURL=server.js.map
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,QAAQ,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/dist/settings/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import { type FSWatcher } from "node:fs";
|
|
1
2
|
import { type Settings } from "./schema.js";
|
|
2
3
|
export declare function loadSettings(rootDir: string): Promise<Settings>;
|
|
3
|
-
export declare function watchSettings(rootDir: string, onChange: (s: Settings) => void):
|
|
4
|
+
export declare function watchSettings(rootDir: string, onChange: (s: Settings) => void): FSWatcher;
|
|
4
5
|
export declare function validateSettingsFile(rootDir: string): Promise<{
|
|
5
6
|
valid: boolean;
|
|
6
7
|
errors?: string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/settings/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/settings/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,SAAS,EAAE,MAAM,SAAS,CAAC;AAGhD,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5D,wBAAsB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAiBrE;AAED,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,CAAC,CAAC,EAAE,QAAQ,KAAK,IAAI,GAC9B,SAAS,CAMX;AAED,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAuBhD;AAED,wBAAgB,uBAAuB,IAAI,MAAM,CAoChD;AAED,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EACV,QAAQ,EACR,IAAI,EACJ,IAAI,EACJ,UAAU,EACV,UAAU,EACV,MAAM,EACN,GAAG,EACH,KAAK,EACL,GAAG,EACH,MAAM,EACN,QAAQ,GACT,MAAM,aAAa,CAAC"}
|
package/dist/settings/index.js
CHANGED
|
@@ -20,7 +20,7 @@ export async function loadSettings(rootDir) {
|
|
|
20
20
|
}
|
|
21
21
|
export function watchSettings(rootDir, onChange) {
|
|
22
22
|
// Re-load on file change without restarting server
|
|
23
|
-
watch(path.join(rootDir, "_mdsvr/settings.json"), async () => {
|
|
23
|
+
return watch(path.join(rootDir, "_mdsvr/settings.json"), async () => {
|
|
24
24
|
const newSettings = await loadSettings(rootDir);
|
|
25
25
|
onChange(newSettings);
|
|
26
26
|
});
|