mdsvr 2.2.18 → 2.2.20
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 +17 -13
- package/dist/cli.js +16 -8
- package/dist/cli.js.map +1 -1
- package/dist/export-state.d.ts +44 -0
- package/dist/export-state.d.ts.map +1 -0
- package/dist/export-state.js +164 -0
- package/dist/export-state.js.map +1 -0
- package/dist/generators/static-export.d.ts +1 -0
- package/dist/generators/static-export.d.ts.map +1 -1
- package/dist/generators/static-export.js +182 -30
- package/dist/generators/static-export.js.map +1 -1
- package/dist/og/generator.js +2 -2
- package/dist/og/generator.js.map +1 -1
- package/dist/og/incremental.d.ts +48 -0
- package/dist/og/incremental.d.ts.map +1 -0
- package/dist/og/incremental.js +194 -0
- package/dist/og/incremental.js.map +1 -0
- package/dist/og/index.d.ts +3 -2
- package/dist/og/index.d.ts.map +1 -1
- package/dist/og/index.js +3 -2
- package/dist/og/index.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +2 -2
- package/dist/server.js.map +1 -1
- package/dist/settings/defaults.d.ts.map +1 -1
- package/dist/settings/defaults.js +1 -0
- package/dist/settings/defaults.js.map +1 -1
- package/dist/settings/index.d.ts.map +1 -1
- package/dist/settings/index.js +13 -6
- package/dist/settings/index.js.map +1 -1
- package/dist/settings/schema.js +1 -1
- package/dist/settings/schema.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -42,15 +42,17 @@ npx mdsvr ./docs
|
|
|
42
42
|
|
|
43
43
|
> mdsvr is **56× faster to start** than Docusaurus and requires **zero configuration**.
|
|
44
44
|
|
|
45
|
+
> The measurement is based on MacBook with M1 chip, can be different on other devices.
|
|
46
|
+
|
|
45
47
|
## Features
|
|
46
48
|
|
|
47
49
|
### Markdown & MDX Rendering
|
|
48
50
|
|
|
49
51
|
Serve `.md` and `.mdx` files as fully rendered HTML pages. MDX support enables interactive React components inline with your content — callouts, steps, tabs, code groups, and more — all processed server-side with zero client-side framework required.
|
|
50
52
|
|
|
51
|
-
### Site Settings (`settings.json`)
|
|
53
|
+
### Site Settings (`_mdsvr/settings.json`)
|
|
52
54
|
|
|
53
|
-
Place a `settings.json` in your docs root to configure everything: site title, description, language, accent color, theme, navigation, search, SEO, and MDX. Validated against a JSON Schema. Hot-reloads automatically when changed — no server restart needed.
|
|
55
|
+
Place a `_mdsvr/settings.json` in your docs root to configure everything: site title, description, language, accent color, theme, navigation, search, SEO, and MDX. Validated against a JSON Schema. Hot-reloads automatically when changed — no server restart needed.
|
|
54
56
|
|
|
55
57
|
### Dark / Light Mode
|
|
56
58
|
|
|
@@ -101,7 +103,7 @@ When navigating to a directory without a README, mdsvr renders a clean listing o
|
|
|
101
103
|
# One-shot, no install
|
|
102
104
|
npx mdsvr ./docs
|
|
103
105
|
|
|
104
|
-
# Create a starter settings.json
|
|
106
|
+
# Create a starter _mdsvr/settings.json
|
|
105
107
|
npx mdsvr ./docs --init
|
|
106
108
|
|
|
107
109
|
# With options
|
|
@@ -155,16 +157,16 @@ Options:
|
|
|
155
157
|
-o, --open Auto-open browser
|
|
156
158
|
-s, --silent Suppress console output
|
|
157
159
|
-e, --export [PATH] Export static HTML (default: _html/public)
|
|
158
|
-
--init Create a starter settings.json in [dir]
|
|
159
|
-
--validate Validate settings.json and exit
|
|
160
|
-
--no-watch Disable settings.json hot-reload
|
|
160
|
+
--init Create a starter _mdsvr/settings.json in [dir]
|
|
161
|
+
--validate Validate _mdsvr/settings.json and exit
|
|
162
|
+
--no-watch Disable _mdsvr/settings.json hot-reload
|
|
161
163
|
-v, --version Print version
|
|
162
164
|
-h, --help Print this help
|
|
163
165
|
```
|
|
164
166
|
|
|
165
|
-
## Configuration (`settings.json`)
|
|
167
|
+
## Configuration (`_mdsvr/settings.json`)
|
|
166
168
|
|
|
167
|
-
Place `settings.json` in your docs root for full customization:
|
|
169
|
+
Place `_mdsvr/settings.json` in your docs root for full customization:
|
|
168
170
|
|
|
169
171
|
```json
|
|
170
172
|
{
|
|
@@ -254,7 +256,7 @@ const server = await createServer("./docs", {
|
|
|
254
256
|
host: "localhost",
|
|
255
257
|
open: true,
|
|
256
258
|
silent: false,
|
|
257
|
-
watchSettings: true, // Auto-reload on settings.json changes
|
|
259
|
+
watchSettings: true, // Auto-reload on _mdsvr/settings.json changes
|
|
258
260
|
});
|
|
259
261
|
|
|
260
262
|
console.log(`Running at ${server.url}`);
|
|
@@ -275,7 +277,7 @@ import { loadSettings, validateSettingsFile } from "mdsvr";
|
|
|
275
277
|
// Load settings from directory
|
|
276
278
|
const settings = await loadSettings("./docs");
|
|
277
279
|
|
|
278
|
-
// Validate settings.json
|
|
280
|
+
// Validate _mdsvr/settings.json
|
|
279
281
|
const result = await validateSettingsFile("./docs");
|
|
280
282
|
if (!result.valid) {
|
|
281
283
|
console.error(result.errors);
|
|
@@ -358,7 +360,7 @@ firebase deploy
|
|
|
358
360
|
|
|
359
361
|
## Generated Endpoints
|
|
360
362
|
|
|
361
|
-
When enabled in `settings.json`:
|
|
363
|
+
When enabled in `_mdsvr/settings.json`:
|
|
362
364
|
|
|
363
365
|
| Endpoint | Description |
|
|
364
366
|
| -------------------- | ----------------------------------- |
|
|
@@ -370,7 +372,9 @@ When enabled in `settings.json`:
|
|
|
370
372
|
|
|
371
373
|
```
|
|
372
374
|
docs/
|
|
373
|
-
├──
|
|
375
|
+
├── _mdsvr/
|
|
376
|
+
│ ├── settings.json # Site configuration (optional)
|
|
377
|
+
│ └── export-state.json # Export state tracking (auto-generated)
|
|
374
378
|
├── README.md # Homepage (auto-detected)
|
|
375
379
|
├── guide/
|
|
376
380
|
│ ├── getting-started.md
|
|
@@ -384,7 +388,7 @@ docs/
|
|
|
384
388
|
## Security
|
|
385
389
|
|
|
386
390
|
- **Path traversal**: Resolved paths are verified to be within root directory
|
|
387
|
-
- **Hidden files**: Files starting with `_` or listed in `settings.json` are hidden
|
|
391
|
+
- **Hidden files**: Files starting with `_` or listed in `_mdsvr/settings.json` are hidden
|
|
388
392
|
- **Blocked extensions**: `.env`, `.key`, `.pem`, etc. are blocked by default
|
|
389
393
|
- **Read-only**: Server only serves files, no write operations
|
|
390
394
|
|
package/dist/cli.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createServer, getNetworkAddress } from "./server.js";
|
|
3
3
|
import path from "node:path";
|
|
4
|
-
import { readFile, writeFile } from "node:fs/promises";
|
|
4
|
+
import { readFile, writeFile, mkdir } from "node:fs/promises";
|
|
5
5
|
import { fileURLToPath } from "node:url";
|
|
6
6
|
import { validateSettingsFile, generateDefaultSettings, } from "./settings/index.js";
|
|
7
7
|
function parseArgs(argv) {
|
|
@@ -18,6 +18,7 @@ function parseArgs(argv) {
|
|
|
18
18
|
validate: false,
|
|
19
19
|
watchSettings: true,
|
|
20
20
|
export: null,
|
|
21
|
+
forceOg: false,
|
|
21
22
|
};
|
|
22
23
|
for (let i = 0; i < argv.length; i++) {
|
|
23
24
|
const arg = argv[i];
|
|
@@ -64,6 +65,9 @@ function parseArgs(argv) {
|
|
|
64
65
|
args.export = null; // Will use default _html folder
|
|
65
66
|
}
|
|
66
67
|
}
|
|
68
|
+
else if (arg === "--force-og") {
|
|
69
|
+
args.forceOg = true;
|
|
70
|
+
}
|
|
67
71
|
else if (!arg.startsWith("--") && !arg.startsWith("-")) {
|
|
68
72
|
args.dir = arg;
|
|
69
73
|
args.dirSpecified = true;
|
|
@@ -82,9 +86,10 @@ Options:
|
|
|
82
86
|
-o, --open Auto-open browser
|
|
83
87
|
-s, --silent Suppress console output
|
|
84
88
|
-e, --export [PATH] Export static HTML (default: _html/public in input dir)
|
|
85
|
-
--
|
|
86
|
-
--
|
|
87
|
-
--
|
|
89
|
+
--force-og Force full OG image regeneration (skip incremental)
|
|
90
|
+
--init Create a starter _mdsvr/settings.json in [dir]
|
|
91
|
+
--validate Validate _mdsvr/settings.json and exit
|
|
92
|
+
--no-watch Disable _mdsvr/settings.json hot-reload
|
|
88
93
|
-v, --version Print version
|
|
89
94
|
-h, --help Print this help
|
|
90
95
|
|
|
@@ -94,6 +99,7 @@ Examples:
|
|
|
94
99
|
mdsvr . --host 0.0.0.0 --port 8080
|
|
95
100
|
mdsvr ./docs --export # Export to ./_html/public
|
|
96
101
|
mdsvr ./docs -e ./output # Export to custom directory
|
|
102
|
+
mdsvr ./docs --export --force-og # Export with full OG regeneration
|
|
97
103
|
mdsvr ./docs --init
|
|
98
104
|
mdsvr ./docs --validate
|
|
99
105
|
`);
|
|
@@ -120,8 +126,9 @@ async function openBrowser(url) {
|
|
|
120
126
|
exec(`${cmd} "${url}"`);
|
|
121
127
|
}
|
|
122
128
|
async function initSettings(dir) {
|
|
123
|
-
const settingsPath = path.join(dir, "settings.json");
|
|
129
|
+
const settingsPath = path.join(dir, "_mdsvr/settings.json");
|
|
124
130
|
const defaultSettings = generateDefaultSettings();
|
|
131
|
+
await mkdir(path.join(dir, "_mdsvr"), { recursive: true });
|
|
125
132
|
await writeFile(settingsPath, JSON.stringify(defaultSettings, null, 2), "utf-8");
|
|
126
133
|
}
|
|
127
134
|
async function main() {
|
|
@@ -146,7 +153,7 @@ async function main() {
|
|
|
146
153
|
if (args.init) {
|
|
147
154
|
try {
|
|
148
155
|
await initSettings(absoluteDir);
|
|
149
|
-
console.log(`\n ✔ Created ${args.dir}/settings.json with defaults`);
|
|
156
|
+
console.log(`\n ✔ Created ${args.dir}/_mdsvr/settings.json with defaults`);
|
|
150
157
|
console.log(` ✔ Run \`npx mdsvr ${args.dir}\` to start\n`);
|
|
151
158
|
process.exit(0);
|
|
152
159
|
}
|
|
@@ -160,11 +167,11 @@ async function main() {
|
|
|
160
167
|
try {
|
|
161
168
|
const result = await validateSettingsFile(absoluteDir);
|
|
162
169
|
if (result.valid) {
|
|
163
|
-
console.log(`\n ✔ settings.json is valid\n`);
|
|
170
|
+
console.log(`\n ✔ _mdsvr/settings.json is valid\n`);
|
|
164
171
|
process.exit(0);
|
|
165
172
|
}
|
|
166
173
|
else {
|
|
167
|
-
console.log(`\n ✖ settings.json has errors:`);
|
|
174
|
+
console.log(`\n ✖ _mdsvr/settings.json has errors:`);
|
|
168
175
|
result.errors?.forEach((e) => console.log(` - ${e}`));
|
|
169
176
|
console.log();
|
|
170
177
|
process.exit(1);
|
|
@@ -190,6 +197,7 @@ async function main() {
|
|
|
190
197
|
outputDir,
|
|
191
198
|
settings,
|
|
192
199
|
silent: args.silent,
|
|
200
|
+
forceOg: args.forceOg,
|
|
193
201
|
});
|
|
194
202
|
if (!args.silent) {
|
|
195
203
|
console.log(`\n ✔ Static site exported to: ${outputDir}\n`);
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export interface ExportState {
|
|
2
|
+
settingsHash: string;
|
|
3
|
+
html: Record<string, PageState>;
|
|
4
|
+
og: Record<string, OgState>;
|
|
5
|
+
}
|
|
6
|
+
export interface PageState {
|
|
7
|
+
outputPath: string;
|
|
8
|
+
sourcePath: string;
|
|
9
|
+
hash: string;
|
|
10
|
+
}
|
|
11
|
+
export interface OgState {
|
|
12
|
+
outputPath: string;
|
|
13
|
+
hash: string;
|
|
14
|
+
}
|
|
15
|
+
export interface CleanupResult {
|
|
16
|
+
deleted: string[];
|
|
17
|
+
deletedDirs: string[];
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Load the export state file from the root directory
|
|
21
|
+
*/
|
|
22
|
+
export declare function loadExportState(rootDir: string): Promise<ExportState>;
|
|
23
|
+
/**
|
|
24
|
+
* Save the export state file to the root directory
|
|
25
|
+
*/
|
|
26
|
+
export declare function saveExportState(rootDir: string, state: ExportState): Promise<void>;
|
|
27
|
+
/**
|
|
28
|
+
* Migrate old OG state format to new export state format
|
|
29
|
+
*/
|
|
30
|
+
export declare function migrateOldState(rootDir: string, exportDir: string): Promise<ExportState | null>;
|
|
31
|
+
/**
|
|
32
|
+
* Calculate hash for a file
|
|
33
|
+
*/
|
|
34
|
+
export declare function calculateFileHash(filePath: string): Promise<string>;
|
|
35
|
+
/**
|
|
36
|
+
* Calculate hash of settings file
|
|
37
|
+
* If settings file doesn't exist, use default settings hash
|
|
38
|
+
*/
|
|
39
|
+
export declare function calculateSettingsHash(rootDir: string): Promise<string>;
|
|
40
|
+
/**
|
|
41
|
+
* Clean up orphaned files (files that exist in old state but not in new state)
|
|
42
|
+
*/
|
|
43
|
+
export declare function cleanupOrphanedFiles(exportDir: string, oldState: ExportState, newState: ExportState): Promise<CleanupResult>;
|
|
44
|
+
//# sourceMappingURL=export-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export-state.d.ts","sourceRoot":"","sources":["../src/export-state.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAChC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC7B;AAED,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,OAAO;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAS3E;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,WAAW,GACjB,OAAO,CAAC,IAAI,CAAC,CAIf;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAgC7B;AAiBD;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAOzE;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAe5E;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,WAAW,EACrB,QAAQ,EAAE,WAAW,GACpB,OAAO,CAAC,aAAa,CAAC,CAiCxB"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
// Centralized export state management for HTML and OG files
|
|
2
|
+
import { promises as fs } from "node:fs";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { createHash } from "node:crypto";
|
|
5
|
+
import { generateDefaultSettings } from "./settings/index.js";
|
|
6
|
+
const STATE_FILE_NAME = "_mdsvr/export-state.json";
|
|
7
|
+
const OLD_STATE_FILE_NAME = ".mdsvr-og-state.json";
|
|
8
|
+
/**
|
|
9
|
+
* Load the export state file from the root directory
|
|
10
|
+
*/
|
|
11
|
+
export async function loadExportState(rootDir) {
|
|
12
|
+
const statePath = path.join(rootDir, STATE_FILE_NAME);
|
|
13
|
+
try {
|
|
14
|
+
const content = await fs.readFile(statePath, "utf-8");
|
|
15
|
+
return JSON.parse(content);
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
// File doesn't exist or is invalid, return empty state
|
|
19
|
+
return { settingsHash: "", html: {}, og: {} };
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Save the export state file to the root directory
|
|
24
|
+
*/
|
|
25
|
+
export async function saveExportState(rootDir, state) {
|
|
26
|
+
const statePath = path.join(rootDir, STATE_FILE_NAME);
|
|
27
|
+
await fs.mkdir(path.join(rootDir, "_mdsvr"), { recursive: true });
|
|
28
|
+
await fs.writeFile(statePath, JSON.stringify(state, null, 2), "utf-8");
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Migrate old OG state format to new export state format
|
|
32
|
+
*/
|
|
33
|
+
export async function migrateOldState(rootDir, exportDir) {
|
|
34
|
+
const oldOgDir = path.join(exportDir, "public", "assets", "og");
|
|
35
|
+
const oldStatePath = path.join(oldOgDir, OLD_STATE_FILE_NAME);
|
|
36
|
+
try {
|
|
37
|
+
const content = await fs.readFile(oldStatePath, "utf-8");
|
|
38
|
+
const oldOgState = JSON.parse(content);
|
|
39
|
+
// Convert old format to new format
|
|
40
|
+
const newState = {
|
|
41
|
+
settingsHash: "",
|
|
42
|
+
html: {},
|
|
43
|
+
og: {},
|
|
44
|
+
};
|
|
45
|
+
for (const [filePath, hash] of Object.entries(oldOgState)) {
|
|
46
|
+
// Generate OG filename from file path
|
|
47
|
+
const ogFilename = generateOgFilename(filePath, "jpg");
|
|
48
|
+
newState.og[filePath] = {
|
|
49
|
+
outputPath: path.join("public", "assets", "og", ogFilename),
|
|
50
|
+
hash,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
// Delete old state file after migration
|
|
54
|
+
await fs.unlink(oldStatePath);
|
|
55
|
+
return newState;
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
// Old state file doesn't exist or is invalid, return null
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Generate OG filename from file path
|
|
64
|
+
* e.g., /docs/README.md -> docs-readme-og.jpg
|
|
65
|
+
*/
|
|
66
|
+
function generateOgFilename(filePath, format = "jpg") {
|
|
67
|
+
const normalized = filePath.replace(/^\//, "").replace(/\\/g, "/");
|
|
68
|
+
const segments = normalized.split("/").map((segment) => {
|
|
69
|
+
return segment.toLowerCase().replace(/\.(md|mdx)$/, "");
|
|
70
|
+
});
|
|
71
|
+
return segments.join("-") + `-og.${format}`;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Calculate hash for a file
|
|
75
|
+
*/
|
|
76
|
+
export async function calculateFileHash(filePath) {
|
|
77
|
+
try {
|
|
78
|
+
const content = await fs.readFile(filePath, "utf-8");
|
|
79
|
+
return createHash("sha256").update(content).digest("hex");
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
return "";
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Calculate hash of settings file
|
|
87
|
+
* If settings file doesn't exist, use default settings hash
|
|
88
|
+
*/
|
|
89
|
+
export async function calculateSettingsHash(rootDir) {
|
|
90
|
+
const settingsPath = path.join(rootDir, "_mdsvr/settings.json");
|
|
91
|
+
try {
|
|
92
|
+
const content = await fs.readFile(settingsPath, "utf-8");
|
|
93
|
+
const parsed = JSON.parse(content);
|
|
94
|
+
delete parsed.$schema; // Exclude schema from hash
|
|
95
|
+
return createHash("sha256").update(JSON.stringify(parsed)).digest("hex");
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
// No settings file, use hash of default settings
|
|
99
|
+
const defaultSettings = generateDefaultSettings();
|
|
100
|
+
const { $schema, ...settingsWithoutSchema } = defaultSettings;
|
|
101
|
+
return createHash("sha256")
|
|
102
|
+
.update(JSON.stringify(settingsWithoutSchema))
|
|
103
|
+
.digest("hex");
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Clean up orphaned files (files that exist in old state but not in new state)
|
|
108
|
+
*/
|
|
109
|
+
export async function cleanupOrphanedFiles(exportDir, oldState, newState) {
|
|
110
|
+
const deleted = [];
|
|
111
|
+
const deletedDirs = [];
|
|
112
|
+
// Cleanup HTML
|
|
113
|
+
for (const [urlPath, pageState] of Object.entries(oldState.html)) {
|
|
114
|
+
if (!newState.html[urlPath]) {
|
|
115
|
+
const fullPath = path.join(exportDir, pageState.outputPath);
|
|
116
|
+
try {
|
|
117
|
+
await fs.unlink(fullPath);
|
|
118
|
+
deleted.push(fullPath);
|
|
119
|
+
await cleanupEmptyDir(path.dirname(fullPath), exportDir, deletedDirs);
|
|
120
|
+
}
|
|
121
|
+
catch {
|
|
122
|
+
// File might not exist, ignore
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
// Cleanup OG
|
|
127
|
+
for (const [urlPath, ogState] of Object.entries(oldState.og)) {
|
|
128
|
+
if (!newState.og[urlPath]) {
|
|
129
|
+
const fullPath = path.join(exportDir, ogState.outputPath);
|
|
130
|
+
try {
|
|
131
|
+
await fs.unlink(fullPath);
|
|
132
|
+
deleted.push(fullPath);
|
|
133
|
+
await cleanupEmptyDir(path.dirname(fullPath), exportDir, deletedDirs);
|
|
134
|
+
}
|
|
135
|
+
catch {
|
|
136
|
+
// File might not exist, ignore
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
return { deleted, deletedDirs };
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Recursively delete empty directories up to rootDir
|
|
144
|
+
*/
|
|
145
|
+
async function cleanupEmptyDir(dir, rootDir, deletedDirs) {
|
|
146
|
+
while (dir !== rootDir) {
|
|
147
|
+
try {
|
|
148
|
+
const entries = await fs.readdir(dir);
|
|
149
|
+
if (entries.length === 0) {
|
|
150
|
+
await fs.rmdir(dir);
|
|
151
|
+
deletedDirs.push(dir);
|
|
152
|
+
dir = path.dirname(dir);
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
break;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
catch {
|
|
159
|
+
// Directory might not exist, stop
|
|
160
|
+
break;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=export-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export-state.js","sourceRoot":"","sources":["../src/export-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"static-export.d.ts","sourceRoot":"","sources":["../../src/generators/static-export.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"static-export.d.ts","sourceRoot":"","sources":["../../src/generators/static-export.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAkBrD,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAyBD,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAyL5E"}
|