jamdesk 1.0.5 → 1.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/__tests__/integration/init.integration.test.d.ts +2 -0
- package/dist/__tests__/integration/init.integration.test.d.ts.map +1 -0
- package/dist/__tests__/integration/init.integration.test.js +135 -0
- package/dist/__tests__/integration/init.integration.test.js.map +1 -0
- package/dist/__tests__/unit/deploy-templates.test.js +8 -0
- package/dist/__tests__/unit/deploy-templates.test.js.map +1 -1
- package/dist/__tests__/unit/deps-sync.test.js +77 -1
- package/dist/__tests__/unit/deps-sync.test.js.map +1 -1
- package/dist/__tests__/unit/init.test.d.ts +2 -0
- package/dist/__tests__/unit/init.test.d.ts.map +1 -0
- package/dist/__tests__/unit/init.test.js +202 -0
- package/dist/__tests__/unit/init.test.js.map +1 -0
- package/dist/commands/deploy/templates.d.ts.map +1 -1
- package/dist/commands/deploy/templates.js +8 -1
- package/dist/commands/deploy/templates.js.map +1 -1
- package/dist/commands/init.d.ts +7 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +64 -33
- package/dist/commands/init.js.map +1 -1
- package/dist/index.js +6 -5
- package/dist/index.js.map +1 -1
- package/dist/lib/deps.js +4 -4
- package/dist/lib/deps.js.map +1 -1
- package/dist/lib/download.d.ts +12 -0
- package/dist/lib/download.d.ts.map +1 -0
- package/dist/lib/download.js +65 -0
- package/dist/lib/download.js.map +1 -0
- package/dist/lib/template-substitution.d.ts +14 -0
- package/dist/lib/template-substitution.d.ts.map +1 -0
- package/dist/lib/template-substitution.js +29 -0
- package/dist/lib/template-substitution.js.map +1 -0
- package/dist/utils/update-checker.d.ts.map +1 -1
- package/dist/utils/update-checker.js +15 -4
- package/dist/utils/update-checker.js.map +1 -1
- package/package.json +3 -3
- package/vendored/app/[[...slug]]/page.tsx +6 -1
- package/vendored/app/api/mcp/[project]/route.ts +10 -5
- package/vendored/app/api/r2/[project]/[...path]/route.ts +17 -14
- package/vendored/app/layout.tsx +6 -6
- package/vendored/components/navigation/Header.tsx +1 -1
- package/vendored/components/navigation/Sidebar.tsx +1 -1
- package/vendored/lib/build/error-parser.ts +14 -0
- package/vendored/lib/docs-types.ts +22 -7
- package/vendored/lib/mdx-security-options.ts +11 -0
- package/vendored/lib/mdx.ts +3 -1
- package/vendored/lib/page-isr-helpers.ts +10 -2
- package/vendored/lib/preprocess-mdx.ts +56 -80
- package/vendored/lib/revalidation-helpers.ts +3 -2
- package/vendored/lib/revalidation-trigger.ts +57 -52
- package/vendored/next.config.js +12 -0
package/dist/commands/init.js
CHANGED
|
@@ -1,34 +1,81 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Init Command
|
|
3
3
|
*
|
|
4
|
-
* Scaffolds a new docs project
|
|
4
|
+
* Scaffolds a new docs project by downloading the starter template from GitHub.
|
|
5
|
+
* Falls back to bundled minimal templates when offline or on failure.
|
|
5
6
|
*/
|
|
6
7
|
import fs from 'fs-extra';
|
|
7
8
|
import path from 'path';
|
|
8
|
-
import { output } from '../lib/output.js';
|
|
9
9
|
import { fileURLToPath } from 'url';
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
import { output } from '../lib/output.js';
|
|
11
|
+
import { spinner } from '../lib/spinner.js';
|
|
12
|
+
import { downloadStarterDocs } from '../lib/download.js';
|
|
13
|
+
import { personalizeDocsJson } from '../lib/template-substitution.js';
|
|
14
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
12
15
|
export async function init(projectName) {
|
|
13
|
-
const targetDir = projectName
|
|
14
|
-
|
|
16
|
+
const targetDir = projectName ? path.resolve(projectName) : process.cwd();
|
|
17
|
+
const displayName = path.basename(targetDir);
|
|
15
18
|
if (fs.existsSync(path.join(targetDir, 'docs.json'))) {
|
|
16
19
|
output.error('docs.json already exists in this directory');
|
|
17
20
|
process.exit(1);
|
|
18
21
|
}
|
|
19
|
-
|
|
22
|
+
if (fs.existsSync(targetDir)) {
|
|
23
|
+
const existing = (await fs.readdir(targetDir)).filter((f) => !f.startsWith('.'));
|
|
24
|
+
if (existing.length > 0) {
|
|
25
|
+
output.warn(`Directory is not empty — existing files may be overwritten`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
20
28
|
if (projectName) {
|
|
21
29
|
await fs.ensureDir(targetDir);
|
|
22
30
|
}
|
|
23
|
-
|
|
31
|
+
const spin = spinner('Downloading starter template...');
|
|
32
|
+
const result = await downloadStarterDocs(targetDir);
|
|
33
|
+
if (result.success) {
|
|
34
|
+
spin.succeed('Downloaded starter template');
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
spin.warn('Could not download starter template, using bundled templates');
|
|
38
|
+
if (result.error) {
|
|
39
|
+
output.hint(result.error);
|
|
40
|
+
}
|
|
41
|
+
await copyBundledTemplates(targetDir, displayName);
|
|
42
|
+
}
|
|
43
|
+
await personalizeDocsJson(targetDir, displayName);
|
|
44
|
+
const devUrl = getDevUrl(targetDir);
|
|
45
|
+
output.success(`Created new Jamdesk project${projectName ? ` in ${projectName}/` : ''}`);
|
|
46
|
+
console.log(`
|
|
47
|
+
Next steps:
|
|
48
|
+
${projectName ? `cd ${projectName}\n ` : ''}jamdesk dev
|
|
49
|
+
|
|
50
|
+
Your docs will be available at ${devUrl}
|
|
51
|
+
`);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Read docs.json to determine the correct dev server URL.
|
|
55
|
+
* If hostAtDocs is true, pages are served under /docs/.
|
|
56
|
+
*/
|
|
57
|
+
export function getDevUrl(targetDir) {
|
|
58
|
+
try {
|
|
59
|
+
const docsJson = fs.readJsonSync(path.join(targetDir, 'docs.json'));
|
|
60
|
+
const basePath = docsJson.hostAtDocs ? '/docs' : '';
|
|
61
|
+
return `http://localhost:3000${basePath}`;
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
return 'http://localhost:3000';
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Fallback: copy from bundled templates directory or generate inline.
|
|
69
|
+
* Preserved for offline use — creates a minimal 3-file project.
|
|
70
|
+
*/
|
|
71
|
+
async function copyBundledTemplates(targetDir, projectName) {
|
|
24
72
|
const templateDir = path.join(__dirname, '../../templates');
|
|
25
73
|
if (fs.existsSync(templateDir)) {
|
|
26
74
|
await fs.copy(templateDir, targetDir);
|
|
27
75
|
}
|
|
28
76
|
else {
|
|
29
|
-
// Create minimal template if templates directory doesn't exist
|
|
30
77
|
const docsJson = {
|
|
31
|
-
name: projectName
|
|
78
|
+
name: projectName,
|
|
32
79
|
navigation: {
|
|
33
80
|
groups: [
|
|
34
81
|
{
|
|
@@ -38,8 +85,10 @@ export async function init(projectName) {
|
|
|
38
85
|
],
|
|
39
86
|
},
|
|
40
87
|
};
|
|
41
|
-
await fs.writeJson(path.join(targetDir, 'docs.json'), docsJson, {
|
|
42
|
-
|
|
88
|
+
await fs.writeJson(path.join(targetDir, 'docs.json'), docsJson, {
|
|
89
|
+
spaces: 2,
|
|
90
|
+
});
|
|
91
|
+
await fs.writeFile(path.join(targetDir, 'introduction.mdx'), `---
|
|
43
92
|
title: Introduction
|
|
44
93
|
description: Welcome to your documentation
|
|
45
94
|
---
|
|
@@ -51,8 +100,8 @@ This is your new documentation site powered by Jamdesk.
|
|
|
51
100
|
## Getting Started
|
|
52
101
|
|
|
53
102
|
Edit this file to customize your documentation. Add new MDX files and update \`docs.json\` to add them to the navigation.
|
|
54
|
-
|
|
55
|
-
|
|
103
|
+
`);
|
|
104
|
+
await fs.writeFile(path.join(targetDir, 'quickstart.mdx'), `---
|
|
56
105
|
title: Quickstart
|
|
57
106
|
description: Get up and running in minutes
|
|
58
107
|
---
|
|
@@ -72,25 +121,7 @@ Create new \`.mdx\` files and add them to the navigation in \`docs.json\`.
|
|
|
72
121
|
## Step 3: Preview
|
|
73
122
|
|
|
74
123
|
Run \`jamdesk dev\` to preview your documentation locally.
|
|
75
|
-
`;
|
|
76
|
-
await fs.writeFile(path.join(targetDir, 'introduction.mdx'), introContent);
|
|
77
|
-
await fs.writeFile(path.join(targetDir, 'quickstart.mdx'), quickstartContent);
|
|
78
|
-
}
|
|
79
|
-
// Replace placeholder in docs.json with project name
|
|
80
|
-
const docsJsonPath = path.join(targetDir, 'docs.json');
|
|
81
|
-
if (fs.existsSync(docsJsonPath)) {
|
|
82
|
-
let docsJsonContent = await fs.readFile(docsJsonPath, 'utf-8');
|
|
83
|
-
const name = projectName || path.basename(process.cwd());
|
|
84
|
-
docsJsonContent = docsJsonContent.replace(/\{\{PROJECT_NAME\}\}/g, name);
|
|
85
|
-
await fs.writeFile(docsJsonPath, docsJsonContent);
|
|
86
|
-
}
|
|
87
|
-
output.success(`Created new Jamdesk project${projectName ? ` in ${projectName}/` : ''}`);
|
|
88
|
-
console.log(`
|
|
89
|
-
Next steps:
|
|
90
|
-
${projectName ? `cd ${projectName}` : ''}
|
|
91
|
-
jamdesk dev
|
|
92
|
-
|
|
93
|
-
Your docs will be available at http://localhost:3000/docs
|
|
94
124
|
`);
|
|
125
|
+
}
|
|
95
126
|
}
|
|
96
127
|
//# sourceMappingURL=init.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -41,13 +41,14 @@ program
|
|
|
41
41
|
.description('Create a new docs project')
|
|
42
42
|
.addHelpText('after', `
|
|
43
43
|
Examples:
|
|
44
|
-
$ jamdesk init Create in current directory
|
|
44
|
+
$ jamdesk init Create in current directory
|
|
45
45
|
$ jamdesk init my-docs Create new "my-docs" directory
|
|
46
46
|
|
|
47
|
-
|
|
48
|
-
• docs.json configuration
|
|
49
|
-
• Sample
|
|
50
|
-
•
|
|
47
|
+
Downloads the starter template from GitHub with:
|
|
48
|
+
• docs.json configuration with navigation, themes, and colors
|
|
49
|
+
• Sample pages (API reference, components, writing guides)
|
|
50
|
+
• OpenAPI spec example
|
|
51
|
+
• Falls back to minimal bundled templates if offline
|
|
51
52
|
|
|
52
53
|
After init, run "jamdesk dev" to start the local server.
|
|
53
54
|
`)
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAY,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAAwB,CAAC;AAC9D,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;AAE5B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,SAAS,CAAC;KACf,WAAW,CAAC,qDAAqD,CAAC;KAClE,OAAO,CAAC,OAAO,CAAC;KAChB,MAAM,CAAC,eAAe,EAAE,uBAAuB,CAAC;KAChD,WAAW,CAAC,OAAO,EAAE;;;;;;;;CAQvB,CAAC,CAAC;AAEH,mCAAmC;AACnC,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;AAClC,IAAI,MAAM,CAAC,YAAY,KAAK,KAAK,EAAE,CAAC;IAClC,gCAAgC;IAChC,eAAe,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED,eAAe;AACf,OAAO;KACJ,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,2BAA2B,CAAC;KACxC,WAAW,CAAC,OAAO,EAAE
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/deps.js
CHANGED
|
@@ -27,7 +27,7 @@ const REQUIRED_DEPS = {
|
|
|
27
27
|
'react': '^19.2.4',
|
|
28
28
|
'react-dom': '^19.2.4',
|
|
29
29
|
'@next/mdx': '^16.1.6',
|
|
30
|
-
'next-mdx-remote': '^
|
|
30
|
+
'next-mdx-remote': '^6.0.0',
|
|
31
31
|
'next-themes': '^0.4.6',
|
|
32
32
|
// Icons
|
|
33
33
|
'@fortawesome/fontawesome-svg-core': '^7.1.0',
|
|
@@ -68,15 +68,15 @@ const REQUIRED_DEPS = {
|
|
|
68
68
|
'unist-util-visit': '^5.0.0',
|
|
69
69
|
'hast': '^1.0.0',
|
|
70
70
|
// CSS
|
|
71
|
-
'tailwindcss': '^4.
|
|
72
|
-
'@tailwindcss/postcss': '^4.
|
|
71
|
+
'tailwindcss': '^4.2.0',
|
|
72
|
+
'@tailwindcss/postcss': '^4.2.0',
|
|
73
73
|
'@tailwindcss/typography': '^0.5.10',
|
|
74
74
|
'postcss': '^8.4.32',
|
|
75
75
|
'autoprefixer': '^10.4.24',
|
|
76
76
|
// Script dependencies (for vendored scripts)
|
|
77
77
|
'fs-extra': '^11.3.3',
|
|
78
78
|
'json5': '^2.2.3',
|
|
79
|
-
'glob': '^13.0.
|
|
79
|
+
'glob': '^13.0.3',
|
|
80
80
|
// TypeScript (needed for Next.js to avoid auto-install breaking symlink)
|
|
81
81
|
'typescript': '^5.3.3',
|
|
82
82
|
'@types/node': '^25.2.0',
|
package/dist/lib/deps.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deps.js","sourceRoot":"","sources":["../../src/lib/deps.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEvC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,UAAU,GAAG,OAAO,CAAC,oBAAoB,CAAwB,CAAC;AAExE,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC;AACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;AAExD,uCAAuC;AACvC,MAAM,aAAa,GAA2B;IAC5C,oBAAoB;IACpB,MAAM,EAAE,SAAS;IACjB,8CAA8C;IAC9C,6BAA6B,EAAE,SAAS;IACxC,eAAe,EAAE,SAAS;IAC1B,OAAO,EAAE,SAAS;IAClB,WAAW,EAAE,SAAS;IACtB,WAAW,EAAE,SAAS;IACtB,iBAAiB,EAAE,QAAQ;IAC3B,aAAa,EAAE,QAAQ;IACvB,QAAQ;IACR,mCAAmC,EAAE,QAAQ;IAC7C,oCAAoC,EAAE,QAAQ;IAC9C,qCAAqC,EAAE,QAAQ;IAC/C,mCAAmC,EAAE,QAAQ;IAC7C,gCAAgC,EAAE,QAAQ;IAC1C,cAAc,EAAE,UAAU;IAC1B,6BAA6B;IAC7B,aAAa,EAAE,QAAQ;IACvB,YAAY,EAAE,UAAU;IACxB,SAAS,EAAE,QAAQ;IACnB,qBAAqB;IACrB,cAAc,EAAE,SAAS;IACzB,gCAAgC,EAAE,SAAS;IAC3C,gBAAgB,EAAE,SAAS;IAC3B,OAAO,EAAE,SAAS;IAClB,iBAAiB,EAAE,SAAS;IAC5B,uBAAuB,EAAE,SAAS;IAClC,kBAAkB,EAAE,QAAQ;IAC5B,cAAc,EAAE,QAAQ;IACxB,aAAa,EAAE,QAAQ;IACvB,YAAY,EAAE,QAAQ;IACtB,aAAa,EAAE,QAAQ;IACvB,oBAAoB,EAAE,QAAQ;IAC9B,uBAAuB;IACvB,OAAO,EAAE,UAAU;IACnB,WAAW;IACX,SAAS,EAAE,UAAU;IACrB,oBAAoB;IACpB,KAAK,EAAE,SAAS;IAChB,yCAAyC;IACzC,aAAa,EAAE,QAAQ;IACvB,sDAAsD;IACtD,mBAAmB,EAAE,SAAS;IAC9B,4CAA4C;IAC5C,SAAS,EAAE,SAAS;IACpB,kBAAkB,EAAE,QAAQ;IAC5B,MAAM,EAAE,QAAQ;IAChB,MAAM;IACN,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"deps.js","sourceRoot":"","sources":["../../src/lib/deps.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Download Starter Template
|
|
3
|
+
*
|
|
4
|
+
* Downloads and extracts the starter-docs template from GitHub.
|
|
5
|
+
* Uses codeload.github.com (no API rate limits, no redirect hop).
|
|
6
|
+
*/
|
|
7
|
+
export interface DownloadResult {
|
|
8
|
+
success: boolean;
|
|
9
|
+
error?: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function downloadStarterDocs(targetDir: string): Promise<DownloadResult>;
|
|
12
|
+
//# sourceMappingURL=download.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../../src/lib/download.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAcH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,cAAc,CAAC,CAoDzB"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Download Starter Template
|
|
3
|
+
*
|
|
4
|
+
* Downloads and extracts the starter-docs template from GitHub.
|
|
5
|
+
* Uses codeload.github.com (no API rate limits, no redirect hop).
|
|
6
|
+
*/
|
|
7
|
+
import { execFileSync } from 'child_process';
|
|
8
|
+
import fs from 'fs-extra';
|
|
9
|
+
import path from 'path';
|
|
10
|
+
import os from 'os';
|
|
11
|
+
const STARTER_TARBALL_URL = 'https://codeload.github.com/jamdesk/starter-docs/tar.gz/main';
|
|
12
|
+
const DOWNLOAD_TIMEOUT_MS = 15_000;
|
|
13
|
+
/** Files/dirs to exclude from the extracted starter template. */
|
|
14
|
+
const EXCLUDE = ['README.md', 'LICENSE', 'docs'];
|
|
15
|
+
export async function downloadStarterDocs(targetDir) {
|
|
16
|
+
const tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), 'jamdesk-init-'));
|
|
17
|
+
const tarballPath = path.join(tmpDir, 'starter.tar.gz');
|
|
18
|
+
try {
|
|
19
|
+
const controller = new AbortController();
|
|
20
|
+
const timeout = setTimeout(() => controller.abort(), DOWNLOAD_TIMEOUT_MS);
|
|
21
|
+
const response = await fetch(STARTER_TARBALL_URL, {
|
|
22
|
+
signal: controller.signal,
|
|
23
|
+
});
|
|
24
|
+
clearTimeout(timeout);
|
|
25
|
+
if (!response.ok) {
|
|
26
|
+
return {
|
|
27
|
+
success: false,
|
|
28
|
+
error: `GitHub responded with ${response.status}`,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
const buffer = Buffer.from(await response.arrayBuffer());
|
|
32
|
+
await fs.writeFile(tarballPath, buffer);
|
|
33
|
+
// --strip-components=1 removes the top-level dir GitHub adds (e.g. "starter-docs-abc123/")
|
|
34
|
+
const extractDir = path.join(tmpDir, 'extracted');
|
|
35
|
+
await fs.ensureDir(extractDir);
|
|
36
|
+
try {
|
|
37
|
+
execFileSync('tar', [
|
|
38
|
+
'-xzf', tarballPath,
|
|
39
|
+
'-C', extractDir,
|
|
40
|
+
'--strip-components=1',
|
|
41
|
+
], { timeout: 30_000 });
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
return {
|
|
45
|
+
success: false,
|
|
46
|
+
error: 'Could not extract template (tar command failed)',
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
const entries = await fs.readdir(extractDir);
|
|
50
|
+
for (const entry of entries) {
|
|
51
|
+
if (EXCLUDE.includes(entry))
|
|
52
|
+
continue;
|
|
53
|
+
await fs.copy(path.join(extractDir, entry), path.join(targetDir, entry));
|
|
54
|
+
}
|
|
55
|
+
return { success: true };
|
|
56
|
+
}
|
|
57
|
+
catch (err) {
|
|
58
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
59
|
+
return { success: false, error: message };
|
|
60
|
+
}
|
|
61
|
+
finally {
|
|
62
|
+
await fs.remove(tmpDir).catch(() => { });
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=download.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"download.js","sourceRoot":"","sources":["../../src/lib/download.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Template Substitution
|
|
3
|
+
*
|
|
4
|
+
* Personalizes a starter project's docs.json with the user's project name.
|
|
5
|
+
* Only modifies name and description — all other fields preserved as-is.
|
|
6
|
+
*/
|
|
7
|
+
/** Replace the starter template's name and description with the user's project name. */
|
|
8
|
+
export declare function personalizeDocsJson(targetDir: string, projectName: string): Promise<void>;
|
|
9
|
+
/**
|
|
10
|
+
* Convert kebab-case, snake_case, or camelCase to Title Case.
|
|
11
|
+
* "my-docs" → "My Docs", "acme_api" → "Acme Api", "myDocs" → "My Docs"
|
|
12
|
+
*/
|
|
13
|
+
export declare function titleCase(str: string): string;
|
|
14
|
+
//# sourceMappingURL=template-substitution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-substitution.d.ts","sourceRoot":"","sources":["../../src/lib/template-substitution.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,wFAAwF;AACxF,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAWf;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAK7C"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Template Substitution
|
|
3
|
+
*
|
|
4
|
+
* Personalizes a starter project's docs.json with the user's project name.
|
|
5
|
+
* Only modifies name and description — all other fields preserved as-is.
|
|
6
|
+
*/
|
|
7
|
+
import fs from 'fs-extra';
|
|
8
|
+
import path from 'path';
|
|
9
|
+
/** Replace the starter template's name and description with the user's project name. */
|
|
10
|
+
export async function personalizeDocsJson(targetDir, projectName) {
|
|
11
|
+
const docsJsonPath = path.join(targetDir, 'docs.json');
|
|
12
|
+
if (!fs.existsSync(docsJsonPath))
|
|
13
|
+
return;
|
|
14
|
+
const config = await fs.readJson(docsJsonPath);
|
|
15
|
+
config.name = titleCase(projectName);
|
|
16
|
+
config.description = `Documentation for ${titleCase(projectName)}`;
|
|
17
|
+
await fs.writeJson(docsJsonPath, config, { spaces: 2 });
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Convert kebab-case, snake_case, or camelCase to Title Case.
|
|
21
|
+
* "my-docs" → "My Docs", "acme_api" → "Acme Api", "myDocs" → "My Docs"
|
|
22
|
+
*/
|
|
23
|
+
export function titleCase(str) {
|
|
24
|
+
return str
|
|
25
|
+
.replace(/[-_]/g, ' ')
|
|
26
|
+
.replace(/([a-z])([A-Z])/g, '$1 $2')
|
|
27
|
+
.replace(/\b\w/g, (c) => c.toUpperCase());
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=template-substitution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-substitution.js","sourceRoot":"","sources":["../../src/lib/template-substitution.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,wFAAwF;AACxF,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,SAAiB,EACjB,WAAmB;IAEnB,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAEvD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC;QAAE,OAAO;IAEzC,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAE/C,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;IACrC,MAAM,CAAC,WAAW,GAAG,qBAAqB,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;IAEnE,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;AAC1D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,GAAW;IACnC,OAAO,GAAG;SACP,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;SACrB,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC;SACnC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AAC9C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-checker.d.ts","sourceRoot":"","sources":["../../src/utils/update-checker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"update-checker.d.ts","sourceRoot":"","sources":["../../src/utils/update-checker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAkBH,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAWvE;AAuDD;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,cAAc,EAAE,MAAM,EACtB,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CAqD/D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAUvC"}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* - Respects CI and JAMDESK_NO_UPDATE_CHECK environments
|
|
9
9
|
* - Shows styled update notice when new version available
|
|
10
10
|
*/
|
|
11
|
-
import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'fs';
|
|
11
|
+
import { readFileSync, writeFileSync, existsSync, mkdirSync, unlinkSync } from 'fs';
|
|
12
12
|
import { homedir } from 'os';
|
|
13
13
|
import { join } from 'path';
|
|
14
14
|
import chalk from 'chalk';
|
|
@@ -16,6 +16,7 @@ const CACHE_DIR = join(homedir(), '.jamdesk');
|
|
|
16
16
|
const CACHE_FILE = join(CACHE_DIR, 'update-cache.json');
|
|
17
17
|
const CHECK_INTERVAL = 24 * 60 * 60 * 1000; // 24 hours
|
|
18
18
|
const NPM_REGISTRY = 'https://registry.npmjs.org/jamdesk';
|
|
19
|
+
let memoryCache = null;
|
|
19
20
|
/**
|
|
20
21
|
* Compare semantic versions
|
|
21
22
|
* Returns true if latest is newer than current
|
|
@@ -49,20 +50,30 @@ function printUpdateNotice(current, latest) {
|
|
|
49
50
|
* Read cached version info
|
|
50
51
|
*/
|
|
51
52
|
function readCache() {
|
|
53
|
+
if (memoryCache) {
|
|
54
|
+
return memoryCache;
|
|
55
|
+
}
|
|
52
56
|
try {
|
|
53
57
|
if (existsSync(CACHE_FILE)) {
|
|
54
|
-
|
|
58
|
+
const parsed = JSON.parse(readFileSync(CACHE_FILE, 'utf-8'));
|
|
59
|
+
memoryCache = parsed;
|
|
60
|
+
return parsed;
|
|
55
61
|
}
|
|
56
62
|
}
|
|
57
63
|
catch {
|
|
58
64
|
// Ignore cache read errors
|
|
59
65
|
}
|
|
60
|
-
|
|
66
|
+
const emptyCache = { lastCheck: 0, latestVersion: null };
|
|
67
|
+
memoryCache = emptyCache;
|
|
68
|
+
return emptyCache;
|
|
61
69
|
}
|
|
62
70
|
/**
|
|
63
71
|
* Write version info to cache
|
|
64
72
|
*/
|
|
65
73
|
function writeCache(cache) {
|
|
74
|
+
// Always keep an in-memory cache so repeated calls in the same process
|
|
75
|
+
// don't depend on filesystem write permissions.
|
|
76
|
+
memoryCache = cache;
|
|
66
77
|
try {
|
|
67
78
|
if (!existsSync(CACHE_DIR)) {
|
|
68
79
|
mkdirSync(CACHE_DIR, { recursive: true });
|
|
@@ -129,9 +140,9 @@ export async function checkForUpdates(currentVersion, options = {}) {
|
|
|
129
140
|
* Clear update cache (useful for testing)
|
|
130
141
|
*/
|
|
131
142
|
export function clearUpdateCache() {
|
|
143
|
+
memoryCache = null;
|
|
132
144
|
try {
|
|
133
145
|
if (existsSync(CACHE_FILE)) {
|
|
134
|
-
const { unlinkSync } = require('fs');
|
|
135
146
|
unlinkSync(CACHE_FILE);
|
|
136
147
|
}
|
|
137
148
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-checker.js","sourceRoot":"","sources":["../../src/utils/update-checker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"update-checker.js","sourceRoot":"","sources":["../../src/utils/update-checker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AACpF,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,KAAK,MAAM,OAAO,CAAC;AAO1B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC;AAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;AACxD,MAAM,cAAc,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,WAAW;AACvD,MAAM,YAAY,GAAG,oCAAoC,CAAC;AAC1D,IAAI,WAAW,GAAuB,IAAI,CAAC;AAO3C;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,MAAc,EAAE,OAAe;IAC5D,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAClD,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAEpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC9B,MAAM,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QACvB,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,OAAe,EAAE,MAAc;IACxD,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,6DAA6D,CAAC,CAAC,CAAC;IACzF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,sBAAsB,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,kBAAkB,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IACrJ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,mDAAmD,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IACxI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,GAAG,sBAAsB,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IACtI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,6DAA6D,CAAC,CAAC,CAAC;IACzF,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,SAAS;IAChB,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,IAAI,CAAC;QACH,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAgB,CAAC;YAC5E,WAAW,GAAG,MAAM,CAAC;YACrB,OAAO,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,2BAA2B;IAC7B,CAAC;IACD,MAAM,UAAU,GAAG,EAAE,SAAS,EAAE,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;IACzD,WAAW,GAAG,UAAU,CAAC;IACzB,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,SAAS,UAAU,CAAC,KAAkB;IACpC,uEAAuE;IACvE,gDAAgD;IAChD,WAAW,GAAG,KAAK,CAAC;IAEpB,IAAI,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,CAAC;QACD,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IACnD,CAAC;IAAC,MAAM,CAAC;QACP,4BAA4B;IAC9B,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,cAAsB,EACtB,UAAwB,EAAE;IAE1B,MAAM,EAAE,KAAK,GAAG,KAAK,EAAE,MAAM,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;IAElD,0BAA0B;IAC1B,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,CAAC;QAC1D,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;IACnD,CAAC;IAED,MAAM,KAAK,GAAG,SAAS,EAAE,CAAC;IAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAEvB,4BAA4B;IAC5B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,cAAc,EAAE,CAAC;QAC1E,IAAI,KAAK,CAAC,aAAa,IAAI,cAAc,CAAC,KAAK,CAAC,aAAa,EAAE,cAAc,CAAC,EAAE,CAAC;YAC/E,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,iBAAiB,CAAC,cAAc,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;YACzD,CAAC;YACD,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC;QACjE,CAAC;QACD,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC;IAClE,CAAC;IAED,oDAAoD;IACpD,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa;QAEzE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,YAAY,EAAE;YACzC,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,OAAO,EAAE,EAAE,QAAQ,EAAE,kBAAkB,EAAE;SAC1C,CAAC,CAAC;QACH,YAAY,CAAC,OAAO,CAAC,CAAC;QAEtB,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;YAChB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAA2C,CAAC;YAC5E,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,MAAM,IAAI,IAAI,CAAC;YAExD,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC,CAAC;YAE9C,IAAI,aAAa,IAAI,cAAc,CAAC,aAAa,EAAE,cAAc,CAAC,EAAE,CAAC;gBACnE,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,iBAAiB,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;gBACnD,CAAC;gBACD,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;YAC5C,CAAC;YACD,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC;QAC7C,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,wCAAwC;QACxC,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;AACnD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,WAAW,GAAG,IAAI,CAAC;IAEnB,IAAI,CAAC;QACH,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3B,UAAU,CAAC,UAAU,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,gBAAgB;IAClB,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jamdesk",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.7",
|
|
4
4
|
"description": "CLI for Jamdesk — build, preview, and deploy documentation sites from MDX. Dev server with hot reload, 50+ components, OpenAPI support, AI search, and Mintlify migration",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"jamdesk",
|
|
@@ -99,7 +99,8 @@
|
|
|
99
99
|
"commander": "^14.0.3",
|
|
100
100
|
"fastest-levenshtein": "^1.0.16",
|
|
101
101
|
"fs-extra": "^11.2.0",
|
|
102
|
-
"glob": "^13.0.
|
|
102
|
+
"glob": "^13.0.3",
|
|
103
|
+
"gray-matter": "^4.0.3",
|
|
103
104
|
"json5": "^2.2.3",
|
|
104
105
|
"ora": "^9.3.0"
|
|
105
106
|
},
|
|
@@ -107,7 +108,6 @@
|
|
|
107
108
|
"@mdx-js/mdx": "^3.1.1",
|
|
108
109
|
"@types/fs-extra": "^11.0.0",
|
|
109
110
|
"@types/node": "^25.2.3",
|
|
110
|
-
"gray-matter": "^4.0.3",
|
|
111
111
|
"typescript": "^5.3.0",
|
|
112
112
|
"vitest": "^4.0.18"
|
|
113
113
|
},
|
|
@@ -41,6 +41,7 @@ import { getLatexRemarkPlugins, getLatexRehypePlugins } from '@/lib/latex-config
|
|
|
41
41
|
import { getTypographyRemarkPlugins } from '@/lib/typography-config';
|
|
42
42
|
import { recmaCompoundComponents } from '@/lib/recma-compound-components';
|
|
43
43
|
import { extractInlineComponents } from '@/lib/process-mdx-with-exports';
|
|
44
|
+
import { mdxSecurityOptions } from '@/lib/mdx-security-options';
|
|
44
45
|
import fs from 'fs';
|
|
45
46
|
import path from 'path';
|
|
46
47
|
import matter from 'gray-matter';
|
|
@@ -445,7 +446,7 @@ export default async function DocPage({ params }: PageProps) {
|
|
|
445
446
|
|
|
446
447
|
// Preprocess MDX content to strip snippet imports
|
|
447
448
|
// (snippets are injected globally via AllComponents)
|
|
448
|
-
const content = preprocessMdx(rawContent);
|
|
449
|
+
const content = preprocessMdx(rawContent, { assetVersion: config.assetVersion });
|
|
449
450
|
|
|
450
451
|
// Extract and compile inline component exports from MDX
|
|
451
452
|
// Only pass MDXComponents (server-compatible) to inline extraction
|
|
@@ -597,6 +598,8 @@ export default async function DocPage({ params }: PageProps) {
|
|
|
597
598
|
source={content}
|
|
598
599
|
components={AllComponentsWithInline}
|
|
599
600
|
options={{
|
|
601
|
+
// Keep expression props (e.g. cols={2}) compatible under next-mdx-remote v6.
|
|
602
|
+
...mdxSecurityOptions,
|
|
600
603
|
mdxOptions: {
|
|
601
604
|
remarkPlugins: [remarkGfm, ...getTypographyRemarkPlugins(config), ...getLatexRemarkPlugins(config)],
|
|
602
605
|
rehypePlugins: [rehypeNoZoomToData, rehypeClassToClassName, rehypeCodeMeta, createShikiRehypePlugin(highlighter, config), rehypeRestoreDataTitle, ...getLatexRehypePlugins(config), rehypeSlug],
|
|
@@ -620,6 +623,8 @@ export default async function DocPage({ params }: PageProps) {
|
|
|
620
623
|
source={content}
|
|
621
624
|
components={AllComponentsWithInline}
|
|
622
625
|
options={{
|
|
626
|
+
// Keep expression props (e.g. cols={2}) compatible under next-mdx-remote v6.
|
|
627
|
+
...mdxSecurityOptions,
|
|
623
628
|
mdxOptions: {
|
|
624
629
|
remarkPlugins: [remarkGfm, ...getTypographyRemarkPlugins(config), ...getLatexRemarkPlugins(config)],
|
|
625
630
|
rehypePlugins: [rehypeNoZoomToData, rehypeClassToClassName, rehypeCodeMeta, createShikiRehypePlugin(highlighter, config), rehypeRestoreDataTitle, ...getLatexRehypePlugins(config), rehypeSlug],
|
|
@@ -109,11 +109,12 @@ async function getDocsPath(project: string, originalHost: string): Promise<strin
|
|
|
109
109
|
|
|
110
110
|
/**
|
|
111
111
|
* Get the base URL for a project.
|
|
112
|
-
* Uses
|
|
112
|
+
* Uses the resolved host for custom/forwarded domains, falls back to project.jamdesk.app.
|
|
113
113
|
*/
|
|
114
|
-
function getBaseUrl(project: string,
|
|
115
|
-
|
|
116
|
-
|
|
114
|
+
function getBaseUrl(project: string, resolvedHost: string): string {
|
|
115
|
+
const hostname = resolvedHost.split(':')[0];
|
|
116
|
+
return isCustomDomain(hostname)
|
|
117
|
+
? `https://${hostname}`
|
|
117
118
|
: `https://${project}.jamdesk.app`;
|
|
118
119
|
}
|
|
119
120
|
|
|
@@ -251,7 +252,11 @@ export async function POST(
|
|
|
251
252
|
if (rateLimitResponse) return rateLimitResponse;
|
|
252
253
|
|
|
253
254
|
const { project } = await context.params;
|
|
254
|
-
|
|
255
|
+
// Prefer forwarded host (from Cloudflare Worker proxy) for correct URLs,
|
|
256
|
+
// fall back to x-original-host set by middleware rewrite
|
|
257
|
+
const originalHost = request.headers.get('x-jamdesk-forwarded-host')
|
|
258
|
+
|| request.headers.get('x-original-host')
|
|
259
|
+
|| '';
|
|
255
260
|
|
|
256
261
|
let body: JsonRpcRequest;
|
|
257
262
|
try {
|